Add zk_token_sdk_enabled feature to gate Zk Token proof program and sol_zk_token_elgamal_op syscalls

This commit is contained in:
Michael Vines
2022-01-04 22:55:26 -08:00
parent 98e7fada15
commit bb3a1b6b31
17 changed files with 482 additions and 15 deletions

141
programs/bpf/Cargo.lock generated
View File

@@ -27,6 +27,42 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "aead"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877"
dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "aes"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
dependencies = [
"cfg-if 1.0.0",
"cipher",
"cpufeatures 0.2.1",
"opaque-debug",
]
[[package]]
name = "aes-gcm-siv"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc"
dependencies = [
"aead",
"aes",
"cipher",
"ctr",
"polyval",
"subtle",
"zeroize",
]
[[package]]
name = "ahash"
version = "0.4.7"
@@ -409,6 +445,15 @@ dependencies = [
"chrono",
]
[[package]]
name = "cipher"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
dependencies = [
"generic-array 0.14.4",
]
[[package]]
name = "clap"
version = "2.33.3"
@@ -594,6 +639,15 @@ dependencies = [
"subtle",
]
[[package]]
name = "ctr"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
dependencies = [
"cipher",
]
[[package]]
name = "curve25519-dalek"
version = "2.1.0"
@@ -616,6 +670,7 @@ dependencies = [
"byteorder 1.4.3",
"digest 0.9.0",
"rand_core 0.5.1",
"serde",
"subtle",
"zeroize",
]
@@ -1568,6 +1623,18 @@ dependencies = [
"autocfg",
]
[[package]]
name = "merlin"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42"
dependencies = [
"byteorder 1.4.3",
"keccak",
"rand_core 0.5.1",
"zeroize",
]
[[package]]
name = "mime"
version = "0.3.16"
@@ -1870,6 +1937,18 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
[[package]]
name = "polyval"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures 0.2.1",
"opaque-debug",
"universal-hash",
]
[[package]]
name = "ppv-lite86"
version = "0.2.8"
@@ -2584,6 +2663,7 @@ dependencies = [
"solana-measure",
"solana-program-runtime",
"solana-sdk",
"solana-zk-token-sdk",
"solana_rbpf",
"thiserror",
]
@@ -2924,6 +3004,14 @@ dependencies = [
"solana-program 1.10.0",
]
[[package]]
name = "solana-bpf-rust-zk_token_elgamal"
version = "1.10.0"
dependencies = [
"solana-program 1.10.0",
"solana-zk-token-sdk",
]
[[package]]
name = "solana-bucket-map"
version = "1.10.0"
@@ -3381,6 +3469,8 @@ dependencies = [
"solana-sdk",
"solana-stake-program",
"solana-vote-program",
"solana-zk-token-proof-program",
"solana-zk-token-sdk",
"symlink",
"tar",
"tempfile",
@@ -3549,6 +3639,47 @@ dependencies = [
"thiserror",
]
[[package]]
name = "solana-zk-token-proof-program"
version = "1.10.0"
dependencies = [
"bytemuck",
"getrandom 0.1.14",
"num-derive",
"num-traits",
"solana-program-runtime",
"solana-sdk",
"solana-zk-token-sdk",
]
[[package]]
name = "solana-zk-token-sdk"
version = "1.10.0"
dependencies = [
"aes-gcm-siv",
"arrayref",
"base64 0.13.0",
"bincode",
"bytemuck",
"byteorder 1.4.3",
"cipher",
"curve25519-dalek 3.2.0",
"getrandom 0.1.14",
"lazy_static",
"merlin",
"num-derive",
"num-traits",
"rand 0.7.3",
"serde",
"serde_json",
"sha3 0.9.1",
"solana-program 1.10.0",
"solana-sdk",
"subtle",
"thiserror",
"zeroize",
]
[[package]]
name = "solana_rbpf"
version = "0.2.21"
@@ -4056,6 +4187,16 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]]
name = "universal-hash"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05"
dependencies = [
"generic-array 0.14.4",
"subtle",
]
[[package]]
name = "unreachable"
version = "1.0.0"

View File

@@ -86,6 +86,7 @@ members = [
"rust/sysvar",
"rust/upgradeable",
"rust/upgraded",
"rust/zk_token_elgamal",
]
[package.metadata.docs.rs]

View File

@@ -95,6 +95,7 @@ fn main() {
"spoof1_system",
"upgradeable",
"upgraded",
"zk_token_elgamal",
];
for program in rust_programs.iter() {
println!(

View File

@@ -0,0 +1,20 @@
[package]
name = "solana-bpf-rust-zk_token_elgamal"
version = "1.10.0"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
documentation = "https://docs.rs/solana-bpf-rust-zktoken_crypto"
edition = "2018"
[dependencies]
solana-program = { path = "../../../../sdk/program", version = "=1.10.0" }
solana-zk-token-sdk = { path = "../../../../zk-token-sdk", version = "=1.10.0" }
[lib]
crate-type = ["cdylib"]
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -0,0 +1,53 @@
//! @brief zk_token_elgamal syscall tests
extern crate solana_program;
use {
solana_program::{custom_panic_default, msg},
solana_zk_token_sdk::zk_token_elgamal::{
ops,
pod::{ElGamalCiphertext, Zeroable},
},
};
#[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {
let zero = ElGamalCiphertext::zeroed();
msg!("add_to");
let one = ops::add_to(&zero, 1).expect("add_to");
msg!("subtract_from");
assert_eq!(zero, ops::subtract_from(&one, 1).expect("subtract_from"));
msg!("add");
assert_eq!(one, ops::add(&zero, &one).expect("add"));
msg!("subtract");
assert_eq!(zero, ops::subtract(&one, &one).expect("subtract"));
msg!("add_with_lo_hi");
assert_eq!(
one,
ops::add_with_lo_hi(
&one,
&ElGamalCiphertext::zeroed(),
&ElGamalCiphertext::zeroed()
)
.expect("add_with_lo_hi")
);
msg!("subtract_with_lo_hi");
assert_eq!(
one,
ops::subtract_with_lo_hi(
&one,
&ElGamalCiphertext::zeroed(),
&ElGamalCiphertext::zeroed()
)
.expect("subtract_with_lo_hi")
);
0
}
custom_panic_default!();

View File

@@ -484,6 +484,7 @@ fn test_program_bpf_sanity() {
("solana_bpf_rust_sanity", true),
("solana_bpf_rust_secp256k1_recover", true),
("solana_bpf_rust_sha", true),
("solana_bpf_rust_zk_token_elgamal", true),
]);
}