Skip to content

Commit 9f49d2d

Browse files
committed
Include data_hash in nullifier computation
Update nullifier formula from Poseidon(verification_id, private_key) to Poseidon(verification_id, private_key, data_hash) where data_hash is Poseidon(issuer_hashed, credential_pubkey). This binds the nullifier to the credential's on-chain data commitment, ensuring the nullifier is unique per credential and issuer combination.
1 parent 28815ea commit 9f49d2d

9 files changed

Lines changed: 132 additions & 157 deletions

File tree

zk/zk-id/CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Zero-knowledge identity verification using Groth16 proofs with compressed accoun
66

77
- Issuers create credentials for users; users prove credential ownership without revealing the credential
88
- Credential keypair: private key = `Sha256(sign("CREDENTIAL"))` truncated to 248 bits; public key = `Poseidon(private_key)`
9-
- Nullifier = `Poseidon(verification_id, credential_private_key)` - prevents double-use per verification context
9+
- Nullifier = `Poseidon(verification_id, credential_private_key, data_hash)` where `data_hash = Poseidon(issuer_hashed, credential_public_key)` - prevents double-use per verification context and binds to credential's on-chain data
1010
- ZK circuit verifies 26-level Merkle proof of credential account inclusion
1111

1212
## [README](README.md)
@@ -78,8 +78,8 @@ derive_address(&[seed_prefix, identifier], &address_tree_pubkey, &program_id)
7878

7979
**Circuit flow**:
8080
1. Derive `credential_pubkey = Poseidon(privateKey)` via `Keypair` template
81-
2. Verify `nullifier = Poseidon(verification_id, privateKey)`
82-
3. Compute `data_hash = Poseidon(issuer_hashed, credential_pubkey)`
81+
2. Compute `data_hash = Poseidon(issuer_hashed, credential_pubkey)`
82+
3. Verify `nullifier = Poseidon(verification_id, privateKey, data_hash)`
8383
4. Compute account hash via `CompressedAccountHash` (adds discriminator domain `+36893488147419103232`)
8484
5. Verify 26-level Merkle proof against `expectedRoot`
8585
6. Verify `public_encrypted_data_hash === encrypted_data_hash`

zk/zk-id/Cargo.lock

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zk/zk-id/Cargo.toml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,31 @@
1+
[package]
2+
name = "zk-id-tests"
3+
version = "0.1.0"
4+
edition = "2021"
5+
publish = false
6+
17
[workspace]
28
members = ["programs/zk-id"]
39
resolver = "2"
410

11+
[dependencies]
12+
zk-id = { path = "programs/zk-id" }
13+
14+
[dev-dependencies]
15+
circom-prover = "0.1"
16+
rust-witness = "0.1"
17+
num-bigint = "0.4"
18+
serde_json = "1.0"
19+
solana-sdk = "2.2"
20+
light-hasher = { version = "5.0.0", features = ["sha256", "keccak", "poseidon"] }
21+
light-compressed-account = { version = "0.7.0", features = ["new-unique"] }
22+
light-merkle-tree-reference = "4.0.0"
23+
groth16-solana = { git = "https://github.com/Lightprotocol/groth16-solana", features = ["vk", "circom"], rev = "66c0dc87d0808c4d2aadb53c61435b6edb8ddfd9" }
24+
25+
[build-dependencies]
26+
rust-witness = "0.1"
27+
groth16-solana = { git = "https://github.com/Lightprotocol/groth16-solana", features = ["vk"], rev = "66c0dc87d0808c4d2aadb53c61435b6edb8ddfd9" }
28+
529
[profile.release]
630
overflow-checks = true
731
lto = "fat"

zk/zk-id/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ fn main() {
66

77
// Generate the verifying key Rust file from the JSON
88
let vk_json_path = "./build/verification_key.json";
9-
let output_dir = "./src";
9+
let output_dir = "./programs/zk-id/src";
1010
let output_file = "verifying_key.rs";
1111

1212
if std::path::Path::new(vk_json_path).exists() {

zk/zk-id/circuits/compressed_account_merkle_proof.circom

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,23 @@ template CompressedAccountMerkleProof(levels) {
4949
keypair.privateKey <== credentialPrivateKey;
5050
signal credential_pubkey_commitment <== keypair.publicKey;
5151

52-
// Step 2: Compute and verify nullifier
53-
// Nullifier = Poseidon(verification_id, credentialPrivateKey)
54-
// This ensures each credential can only be used once per verification_id
55-
// without leaking information about the credential itself.
56-
component nullifierHasher = Poseidon(2);
57-
nullifierHasher.inputs[0] <== verification_id;
58-
nullifierHasher.inputs[1] <== credentialPrivateKey;
59-
nullifier === nullifierHasher.out;
60-
61-
// Step 3: Compute the credential data hash (used internally for account hash)
52+
// Step 2: Compute the credential data hash
53+
// data_hash = Poseidon(issuer_hashed, credential_pubkey_commitment)
6254
component data_hasher = Poseidon(2);
6355
data_hasher.inputs[0] <== issuer_hashed;
6456
data_hasher.inputs[1] <== credential_pubkey_commitment;
6557
signal data_hash <== data_hasher.out;
6658

59+
// Step 3: Compute and verify nullifier
60+
// Nullifier = Poseidon(verification_id, credentialPrivateKey, data_hash)
61+
// This ensures each credential can only be used once per verification_id
62+
// and binds the nullifier to the credential's on-chain data commitment.
63+
component nullifierHasher = Poseidon(3);
64+
nullifierHasher.inputs[0] <== verification_id;
65+
nullifierHasher.inputs[1] <== credentialPrivateKey;
66+
nullifierHasher.inputs[2] <== data_hash;
67+
nullifier === nullifierHasher.out;
68+
6769
// Step 4: Compute compressed account hash
6870
component accountHasher = CompressedAccountHash();
6971
accountHasher.owner_hashed <== owner_hashed;
Lines changed: 16 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,25 @@
11
use groth16_solana::groth16::Groth16Verifyingkey;
22

33
pub const VERIFYINGKEY: Groth16Verifyingkey = Groth16Verifyingkey {
4-
nr_pubinputs: 8,
4+
nr_pubinputs: 8,
55

6-
vk_alpha_g1: [
7-
45u8, 77u8, 154u8, 167u8, 227u8, 2u8, 217u8, 223u8, 65u8, 116u8, 157u8, 85u8, 7u8, 148u8,
8-
157u8, 5u8, 219u8, 234u8, 51u8, 251u8, 177u8, 108u8, 100u8, 59u8, 34u8, 245u8, 153u8,
9-
162u8, 190u8, 109u8, 242u8, 226u8, 20u8, 190u8, 221u8, 80u8, 60u8, 55u8, 206u8, 176u8,
10-
97u8, 216u8, 236u8, 96u8, 32u8, 159u8, 227u8, 69u8, 206u8, 137u8, 131u8, 10u8, 25u8, 35u8,
11-
3u8, 1u8, 240u8, 118u8, 202u8, 255u8, 0u8, 77u8, 25u8, 38u8,
12-
],
6+
vk_alpha_g1: [45u8, 77u8, 154u8, 167u8, 227u8, 2u8, 217u8, 223u8, 65u8, 116u8, 157u8, 85u8, 7u8, 148u8, 157u8, 5u8, 219u8, 234u8, 51u8, 251u8, 177u8, 108u8, 100u8, 59u8, 34u8, 245u8, 153u8, 162u8, 190u8, 109u8, 242u8, 226u8, 20u8, 190u8, 221u8, 80u8, 60u8, 55u8, 206u8, 176u8, 97u8, 216u8, 236u8, 96u8, 32u8, 159u8, 227u8, 69u8, 206u8, 137u8, 131u8, 10u8, 25u8, 35u8, 3u8, 1u8, 240u8, 118u8, 202u8, 255u8, 0u8, 77u8, 25u8, 38u8],
137

14-
vk_beta_g2: [
15-
9u8, 103u8, 3u8, 47u8, 203u8, 247u8, 118u8, 209u8, 175u8, 201u8, 133u8, 248u8, 136u8,
16-
119u8, 241u8, 130u8, 211u8, 132u8, 128u8, 166u8, 83u8, 242u8, 222u8, 202u8, 169u8, 121u8,
17-
76u8, 188u8, 59u8, 243u8, 6u8, 12u8, 14u8, 24u8, 120u8, 71u8, 173u8, 76u8, 121u8, 131u8,
18-
116u8, 208u8, 214u8, 115u8, 43u8, 245u8, 1u8, 132u8, 125u8, 214u8, 139u8, 192u8, 224u8,
19-
113u8, 36u8, 30u8, 2u8, 19u8, 188u8, 127u8, 193u8, 61u8, 183u8, 171u8, 48u8, 76u8, 251u8,
20-
209u8, 224u8, 138u8, 112u8, 74u8, 153u8, 245u8, 232u8, 71u8, 217u8, 63u8, 140u8, 60u8,
21-
170u8, 253u8, 222u8, 196u8, 107u8, 122u8, 13u8, 55u8, 157u8, 166u8, 154u8, 77u8, 17u8,
22-
35u8, 70u8, 167u8, 23u8, 57u8, 193u8, 177u8, 164u8, 87u8, 168u8, 199u8, 49u8, 49u8, 35u8,
23-
210u8, 77u8, 47u8, 145u8, 146u8, 248u8, 150u8, 183u8, 198u8, 62u8, 234u8, 5u8, 169u8,
24-
213u8, 127u8, 6u8, 84u8, 122u8, 208u8, 206u8, 200u8,
25-
],
8+
vk_beta_g2: [9u8, 103u8, 3u8, 47u8, 203u8, 247u8, 118u8, 209u8, 175u8, 201u8, 133u8, 248u8, 136u8, 119u8, 241u8, 130u8, 211u8, 132u8, 128u8, 166u8, 83u8, 242u8, 222u8, 202u8, 169u8, 121u8, 76u8, 188u8, 59u8, 243u8, 6u8, 12u8, 14u8, 24u8, 120u8, 71u8, 173u8, 76u8, 121u8, 131u8, 116u8, 208u8, 214u8, 115u8, 43u8, 245u8, 1u8, 132u8, 125u8, 214u8, 139u8, 192u8, 224u8, 113u8, 36u8, 30u8, 2u8, 19u8, 188u8, 127u8, 193u8, 61u8, 183u8, 171u8, 48u8, 76u8, 251u8, 209u8, 224u8, 138u8, 112u8, 74u8, 153u8, 245u8, 232u8, 71u8, 217u8, 63u8, 140u8, 60u8, 170u8, 253u8, 222u8, 196u8, 107u8, 122u8, 13u8, 55u8, 157u8, 166u8, 154u8, 77u8, 17u8, 35u8, 70u8, 167u8, 23u8, 57u8, 193u8, 177u8, 164u8, 87u8, 168u8, 199u8, 49u8, 49u8, 35u8, 210u8, 77u8, 47u8, 145u8, 146u8, 248u8, 150u8, 183u8, 198u8, 62u8, 234u8, 5u8, 169u8, 213u8, 127u8, 6u8, 84u8, 122u8, 208u8, 206u8, 200u8],
269

27-
vk_gamma_g2: [
28-
25u8, 142u8, 147u8, 147u8, 146u8, 13u8, 72u8, 58u8, 114u8, 96u8, 191u8, 183u8, 49u8, 251u8,
29-
93u8, 37u8, 241u8, 170u8, 73u8, 51u8, 53u8, 169u8, 231u8, 18u8, 151u8, 228u8, 133u8, 183u8,
30-
174u8, 243u8, 18u8, 194u8, 24u8, 0u8, 222u8, 239u8, 18u8, 31u8, 30u8, 118u8, 66u8, 106u8,
31-
0u8, 102u8, 94u8, 92u8, 68u8, 121u8, 103u8, 67u8, 34u8, 212u8, 247u8, 94u8, 218u8, 221u8,
32-
70u8, 222u8, 189u8, 92u8, 217u8, 146u8, 246u8, 237u8, 9u8, 6u8, 137u8, 208u8, 88u8, 95u8,
33-
240u8, 117u8, 236u8, 158u8, 153u8, 173u8, 105u8, 12u8, 51u8, 149u8, 188u8, 75u8, 49u8,
34-
51u8, 112u8, 179u8, 142u8, 243u8, 85u8, 172u8, 218u8, 220u8, 209u8, 34u8, 151u8, 91u8,
35-
18u8, 200u8, 94u8, 165u8, 219u8, 140u8, 109u8, 235u8, 74u8, 171u8, 113u8, 128u8, 141u8,
36-
203u8, 64u8, 143u8, 227u8, 209u8, 231u8, 105u8, 12u8, 67u8, 211u8, 123u8, 76u8, 230u8,
37-
204u8, 1u8, 102u8, 250u8, 125u8, 170u8,
38-
],
10+
vk_gamma_g2: [25u8, 142u8, 147u8, 147u8, 146u8, 13u8, 72u8, 58u8, 114u8, 96u8, 191u8, 183u8, 49u8, 251u8, 93u8, 37u8, 241u8, 170u8, 73u8, 51u8, 53u8, 169u8, 231u8, 18u8, 151u8, 228u8, 133u8, 183u8, 174u8, 243u8, 18u8, 194u8, 24u8, 0u8, 222u8, 239u8, 18u8, 31u8, 30u8, 118u8, 66u8, 106u8, 0u8, 102u8, 94u8, 92u8, 68u8, 121u8, 103u8, 67u8, 34u8, 212u8, 247u8, 94u8, 218u8, 221u8, 70u8, 222u8, 189u8, 92u8, 217u8, 146u8, 246u8, 237u8, 9u8, 6u8, 137u8, 208u8, 88u8, 95u8, 240u8, 117u8, 236u8, 158u8, 153u8, 173u8, 105u8, 12u8, 51u8, 149u8, 188u8, 75u8, 49u8, 51u8, 112u8, 179u8, 142u8, 243u8, 85u8, 172u8, 218u8, 220u8, 209u8, 34u8, 151u8, 91u8, 18u8, 200u8, 94u8, 165u8, 219u8, 140u8, 109u8, 235u8, 74u8, 171u8, 113u8, 128u8, 141u8, 203u8, 64u8, 143u8, 227u8, 209u8, 231u8, 105u8, 12u8, 67u8, 211u8, 123u8, 76u8, 230u8, 204u8, 1u8, 102u8, 250u8, 125u8, 170u8],
3911

40-
vk_delta_g2: [
41-
10u8, 104u8, 69u8, 40u8, 96u8, 13u8, 219u8, 182u8, 41u8, 197u8, 5u8, 185u8, 131u8, 71u8,
42-
64u8, 239u8, 140u8, 193u8, 51u8, 15u8, 116u8, 127u8, 45u8, 46u8, 195u8, 199u8, 198u8, 40u8,
43-
189u8, 252u8, 142u8, 157u8, 11u8, 220u8, 65u8, 180u8, 90u8, 206u8, 239u8, 55u8, 44u8,
44-
235u8, 94u8, 119u8, 34u8, 208u8, 67u8, 207u8, 87u8, 34u8, 183u8, 228u8, 11u8, 247u8, 88u8,
45-
51u8, 178u8, 109u8, 124u8, 112u8, 210u8, 231u8, 166u8, 41u8, 16u8, 217u8, 121u8, 56u8,
46-
158u8, 27u8, 53u8, 77u8, 158u8, 168u8, 195u8, 155u8, 77u8, 68u8, 233u8, 83u8, 129u8, 198u8,
47-
179u8, 76u8, 42u8, 79u8, 223u8, 157u8, 45u8, 23u8, 170u8, 14u8, 38u8, 242u8, 225u8, 191u8,
48-
6u8, 45u8, 178u8, 234u8, 57u8, 138u8, 248u8, 4u8, 11u8, 1u8, 250u8, 173u8, 52u8, 50u8,
49-
254u8, 24u8, 37u8, 79u8, 143u8, 33u8, 186u8, 29u8, 230u8, 72u8, 179u8, 90u8, 236u8, 250u8,
50-
135u8, 132u8, 22u8, 111u8,
51-
],
12+
vk_delta_g2: [19u8, 0u8, 41u8, 194u8, 65u8, 186u8, 187u8, 214u8, 67u8, 182u8, 241u8, 23u8, 235u8, 209u8, 98u8, 120u8, 92u8, 95u8, 28u8, 72u8, 144u8, 231u8, 232u8, 49u8, 131u8, 85u8, 220u8, 109u8, 198u8, 39u8, 144u8, 24u8, 14u8, 34u8, 232u8, 106u8, 184u8, 21u8, 71u8, 25u8, 43u8, 183u8, 111u8, 217u8, 54u8, 164u8, 197u8, 179u8, 17u8, 43u8, 228u8, 192u8, 128u8, 50u8, 101u8, 6u8, 153u8, 48u8, 65u8, 187u8, 125u8, 157u8, 153u8, 110u8, 10u8, 243u8, 250u8, 146u8, 172u8, 87u8, 143u8, 2u8, 229u8, 234u8, 84u8, 82u8, 231u8, 102u8, 2u8, 194u8, 160u8, 249u8, 147u8, 117u8, 162u8, 123u8, 20u8, 30u8, 248u8, 78u8, 112u8, 113u8, 167u8, 26u8, 26u8, 163u8, 33u8, 185u8, 173u8, 177u8, 28u8, 123u8, 244u8, 174u8, 57u8, 186u8, 25u8, 204u8, 214u8, 172u8, 27u8, 224u8, 24u8, 233u8, 5u8, 13u8, 42u8, 140u8, 113u8, 159u8, 246u8, 215u8, 201u8, 165u8, 199u8, 93u8, 97u8, 186u8],
5213

53-
vk_ic: &[
54-
[
55-
4u8, 90u8, 11u8, 151u8, 69u8, 42u8, 114u8, 212u8, 111u8, 206u8, 148u8, 104u8, 65u8,
56-
166u8, 159u8, 137u8, 171u8, 77u8, 109u8, 234u8, 55u8, 135u8, 203u8, 77u8, 67u8, 182u8,
57-
227u8, 12u8, 202u8, 57u8, 113u8, 13u8, 31u8, 182u8, 157u8, 8u8, 213u8, 65u8, 49u8,
58-
36u8, 11u8, 76u8, 223u8, 18u8, 37u8, 52u8, 113u8, 212u8, 75u8, 181u8, 222u8, 133u8,
59-
170u8, 168u8, 234u8, 180u8, 8u8, 110u8, 4u8, 142u8, 160u8, 230u8, 138u8, 175u8,
60-
],
61-
[
62-
6u8, 192u8, 93u8, 129u8, 197u8, 162u8, 187u8, 150u8, 148u8, 208u8, 31u8, 46u8, 2u8,
63-
172u8, 162u8, 123u8, 81u8, 134u8, 38u8, 219u8, 60u8, 57u8, 111u8, 148u8, 4u8, 41u8,
64-
227u8, 248u8, 38u8, 44u8, 175u8, 139u8, 18u8, 142u8, 35u8, 202u8, 131u8, 3u8, 138u8,
65-
65u8, 62u8, 66u8, 141u8, 192u8, 137u8, 210u8, 64u8, 58u8, 168u8, 102u8, 162u8, 204u8,
66-
187u8, 123u8, 225u8, 235u8, 197u8, 167u8, 28u8, 220u8, 183u8, 101u8, 16u8, 186u8,
67-
],
68-
[
69-
8u8, 193u8, 155u8, 163u8, 55u8, 80u8, 175u8, 199u8, 139u8, 31u8, 49u8, 208u8, 96u8,
70-
144u8, 174u8, 203u8, 159u8, 203u8, 160u8, 63u8, 135u8, 45u8, 19u8, 133u8, 103u8, 80u8,
71-
186u8, 102u8, 152u8, 180u8, 149u8, 18u8, 4u8, 33u8, 182u8, 15u8, 44u8, 189u8, 0u8,
72-
113u8, 253u8, 12u8, 194u8, 38u8, 183u8, 95u8, 252u8, 215u8, 178u8, 46u8, 83u8, 195u8,
73-
153u8, 75u8, 202u8, 14u8, 111u8, 237u8, 198u8, 161u8, 107u8, 187u8, 4u8, 55u8,
74-
],
75-
[
76-
46u8, 10u8, 95u8, 159u8, 76u8, 32u8, 246u8, 107u8, 45u8, 235u8, 75u8, 185u8, 109u8,
77-
26u8, 24u8, 129u8, 208u8, 166u8, 64u8, 199u8, 252u8, 251u8, 193u8, 51u8, 19u8, 88u8,
78-
156u8, 129u8, 114u8, 120u8, 122u8, 32u8, 26u8, 83u8, 113u8, 210u8, 130u8, 243u8, 39u8,
79-
58u8, 142u8, 18u8, 194u8, 142u8, 184u8, 158u8, 199u8, 113u8, 196u8, 191u8, 215u8, 77u8,
80-
21u8, 66u8, 162u8, 25u8, 201u8, 70u8, 148u8, 247u8, 173u8, 199u8, 191u8, 131u8,
81-
],
82-
[
83-
16u8, 79u8, 230u8, 65u8, 92u8, 49u8, 63u8, 19u8, 215u8, 29u8, 92u8, 70u8, 81u8, 252u8,
84-
134u8, 116u8, 115u8, 66u8, 113u8, 76u8, 135u8, 44u8, 188u8, 236u8, 72u8, 218u8, 47u8,
85-
3u8, 70u8, 85u8, 130u8, 31u8, 40u8, 64u8, 154u8, 29u8, 126u8, 193u8, 234u8, 223u8,
86-
171u8, 140u8, 166u8, 217u8, 211u8, 241u8, 59u8, 3u8, 20u8, 217u8, 110u8, 174u8, 132u8,
87-
10u8, 42u8, 121u8, 87u8, 169u8, 37u8, 10u8, 59u8, 167u8, 194u8, 106u8,
88-
],
89-
[
90-
44u8, 136u8, 199u8, 234u8, 22u8, 38u8, 206u8, 40u8, 223u8, 162u8, 56u8, 216u8, 109u8,
91-
180u8, 5u8, 169u8, 225u8, 203u8, 204u8, 153u8, 140u8, 24u8, 116u8, 123u8, 68u8, 220u8,
92-
131u8, 114u8, 20u8, 137u8, 230u8, 148u8, 28u8, 10u8, 38u8, 24u8, 120u8, 216u8, 11u8,
93-
243u8, 26u8, 233u8, 114u8, 85u8, 0u8, 3u8, 27u8, 225u8, 6u8, 41u8, 85u8, 100u8, 148u8,
94-
97u8, 60u8, 23u8, 64u8, 255u8, 64u8, 34u8, 115u8, 81u8, 235u8, 103u8,
95-
],
96-
[
97-
12u8, 140u8, 197u8, 237u8, 220u8, 64u8, 41u8, 28u8, 134u8, 122u8, 249u8, 54u8, 127u8,
98-
114u8, 225u8, 243u8, 158u8, 245u8, 164u8, 146u8, 238u8, 253u8, 73u8, 44u8, 88u8, 253u8,
99-
220u8, 76u8, 231u8, 243u8, 190u8, 184u8, 36u8, 187u8, 51u8, 119u8, 254u8, 79u8, 21u8,
100-
186u8, 122u8, 154u8, 95u8, 191u8, 113u8, 194u8, 251u8, 85u8, 139u8, 247u8, 155u8,
101-
237u8, 48u8, 185u8, 216u8, 105u8, 206u8, 92u8, 120u8, 26u8, 188u8, 117u8, 69u8, 224u8,
102-
],
103-
[
104-
23u8, 119u8, 153u8, 159u8, 239u8, 111u8, 103u8, 220u8, 195u8, 184u8, 64u8, 255u8,
105-
239u8, 78u8, 188u8, 37u8, 193u8, 254u8, 226u8, 63u8, 140u8, 124u8, 70u8, 6u8, 188u8,
106-
113u8, 37u8, 98u8, 54u8, 10u8, 182u8, 37u8, 9u8, 31u8, 241u8, 30u8, 102u8, 7u8, 244u8,
107-
97u8, 153u8, 56u8, 35u8, 254u8, 73u8, 54u8, 161u8, 123u8, 61u8, 157u8, 48u8, 66u8, 4u8,
108-
31u8, 143u8, 142u8, 86u8, 58u8, 162u8, 156u8, 144u8, 116u8, 170u8, 85u8,
109-
],
110-
[
111-
6u8, 144u8, 191u8, 115u8, 83u8, 103u8, 157u8, 108u8, 167u8, 218u8, 159u8, 203u8, 111u8,
112-
63u8, 129u8, 144u8, 213u8, 133u8, 69u8, 22u8, 56u8, 228u8, 46u8, 147u8, 0u8, 70u8,
113-
96u8, 85u8, 157u8, 72u8, 158u8, 141u8, 33u8, 26u8, 152u8, 246u8, 49u8, 94u8, 88u8,
114-
145u8, 79u8, 194u8, 171u8, 203u8, 149u8, 178u8, 138u8, 241u8, 125u8, 228u8, 29u8, 39u8,
115-
74u8, 210u8, 195u8, 67u8, 43u8, 35u8, 149u8, 225u8, 94u8, 140u8, 224u8, 83u8,
116-
],
117-
],
14+
vk_ic: &[
15+
[6u8, 116u8, 25u8, 196u8, 168u8, 139u8, 50u8, 234u8, 24u8, 80u8, 72u8, 23u8, 1u8, 43u8, 230u8, 178u8, 165u8, 176u8, 101u8, 164u8, 240u8, 6u8, 228u8, 49u8, 213u8, 82u8, 106u8, 117u8, 102u8, 23u8, 57u8, 101u8, 6u8, 0u8, 22u8, 209u8, 170u8, 16u8, 2u8, 213u8, 10u8, 138u8, 98u8, 195u8, 189u8, 38u8, 61u8, 204u8, 249u8, 53u8, 98u8, 199u8, 88u8, 168u8, 175u8, 253u8, 183u8, 49u8, 46u8, 214u8, 46u8, 22u8, 20u8, 9u8],
16+
[13u8, 221u8, 187u8, 171u8, 240u8, 78u8, 162u8, 23u8, 234u8, 32u8, 105u8, 191u8, 86u8, 204u8, 31u8, 214u8, 84u8, 22u8, 120u8, 70u8, 144u8, 122u8, 215u8, 127u8, 216u8, 149u8, 239u8, 74u8, 185u8, 2u8, 147u8, 164u8, 34u8, 238u8, 33u8, 206u8, 139u8, 82u8, 64u8, 206u8, 243u8, 191u8, 84u8, 63u8, 216u8, 199u8, 125u8, 154u8, 86u8, 80u8, 44u8, 178u8, 22u8, 156u8, 128u8, 249u8, 100u8, 55u8, 165u8, 160u8, 31u8, 78u8, 83u8, 68u8],
17+
[43u8, 76u8, 131u8, 233u8, 121u8, 94u8, 117u8, 36u8, 121u8, 55u8, 64u8, 127u8, 145u8, 255u8, 102u8, 135u8, 55u8, 68u8, 113u8, 27u8, 67u8, 241u8, 109u8, 31u8, 175u8, 63u8, 165u8, 56u8, 19u8, 134u8, 234u8, 121u8, 44u8, 171u8, 222u8, 10u8, 13u8, 87u8, 190u8, 105u8, 216u8, 104u8, 36u8, 85u8, 97u8, 66u8, 129u8, 2u8, 137u8, 196u8, 48u8, 167u8, 118u8, 232u8, 5u8, 215u8, 87u8, 13u8, 135u8, 125u8, 159u8, 116u8, 86u8, 67u8],
18+
[19u8, 142u8, 242u8, 236u8, 76u8, 140u8, 97u8, 35u8, 86u8, 205u8, 20u8, 168u8, 70u8, 9u8, 250u8, 3u8, 49u8, 94u8, 8u8, 224u8, 96u8, 18u8, 163u8, 69u8, 176u8, 33u8, 254u8, 86u8, 2u8, 209u8, 227u8, 61u8, 15u8, 135u8, 181u8, 253u8, 64u8, 195u8, 56u8, 76u8, 225u8, 192u8, 167u8, 233u8, 108u8, 252u8, 3u8, 177u8, 160u8, 224u8, 183u8, 203u8, 75u8, 131u8, 176u8, 112u8, 125u8, 148u8, 121u8, 119u8, 111u8, 57u8, 125u8, 168u8],
19+
[7u8, 152u8, 186u8, 253u8, 239u8, 252u8, 239u8, 44u8, 124u8, 128u8, 115u8, 96u8, 18u8, 122u8, 90u8, 34u8, 220u8, 190u8, 223u8, 151u8, 158u8, 218u8, 50u8, 253u8, 25u8, 229u8, 119u8, 201u8, 161u8, 223u8, 178u8, 130u8, 19u8, 126u8, 235u8, 91u8, 131u8, 138u8, 103u8, 7u8, 26u8, 13u8, 203u8, 168u8, 157u8, 140u8, 119u8, 151u8, 239u8, 214u8, 41u8, 231u8, 229u8, 103u8, 234u8, 198u8, 88u8, 249u8, 131u8, 68u8, 229u8, 163u8, 99u8, 41u8],
20+
[37u8, 58u8, 169u8, 29u8, 158u8, 74u8, 77u8, 127u8, 202u8, 187u8, 181u8, 170u8, 44u8, 94u8, 0u8, 214u8, 60u8, 127u8, 104u8, 198u8, 212u8, 0u8, 178u8, 107u8, 109u8, 133u8, 127u8, 196u8, 61u8, 122u8, 122u8, 42u8, 11u8, 1u8, 147u8, 194u8, 208u8, 97u8, 68u8, 193u8, 255u8, 251u8, 141u8, 71u8, 179u8, 93u8, 218u8, 145u8, 239u8, 38u8, 121u8, 23u8, 203u8, 219u8, 186u8, 172u8, 120u8, 223u8, 128u8, 207u8, 171u8, 134u8, 138u8, 162u8],
21+
[40u8, 188u8, 141u8, 174u8, 217u8, 229u8, 72u8, 52u8, 232u8, 100u8, 30u8, 241u8, 1u8, 223u8, 99u8, 28u8, 92u8, 174u8, 57u8, 226u8, 1u8, 248u8, 128u8, 113u8, 182u8, 58u8, 158u8, 203u8, 148u8, 254u8, 239u8, 244u8, 18u8, 100u8, 144u8, 201u8, 214u8, 77u8, 169u8, 224u8, 59u8, 121u8, 163u8, 151u8, 16u8, 148u8, 39u8, 2u8, 224u8, 123u8, 35u8, 102u8, 204u8, 233u8, 93u8, 76u8, 101u8, 111u8, 134u8, 229u8, 26u8, 122u8, 215u8, 151u8],
22+
[23u8, 165u8, 206u8, 29u8, 47u8, 19u8, 149u8, 232u8, 48u8, 112u8, 50u8, 201u8, 139u8, 236u8, 226u8, 197u8, 196u8, 56u8, 89u8, 146u8, 41u8, 46u8, 89u8, 82u8, 37u8, 150u8, 132u8, 32u8, 149u8, 44u8, 222u8, 131u8, 33u8, 96u8, 209u8, 108u8, 151u8, 147u8, 48u8, 101u8, 230u8, 25u8, 214u8, 140u8, 213u8, 36u8, 230u8, 174u8, 147u8, 71u8, 156u8, 44u8, 80u8, 171u8, 47u8, 45u8, 65u8, 213u8, 224u8, 147u8, 196u8, 223u8, 20u8, 230u8],
23+
[14u8, 5u8, 129u8, 121u8, 109u8, 169u8, 0u8, 255u8, 184u8, 100u8, 232u8, 96u8, 112u8, 158u8, 194u8, 213u8, 77u8, 115u8, 130u8, 240u8, 160u8, 240u8, 243u8, 129u8, 8u8, 46u8, 239u8, 65u8, 188u8, 28u8, 236u8, 222u8, 4u8, 104u8, 112u8, 160u8, 235u8, 48u8, 64u8, 159u8, 177u8, 251u8, 42u8, 11u8, 252u8, 133u8, 19u8, 169u8, 77u8, 173u8, 99u8, 145u8, 171u8, 116u8, 203u8, 34u8, 179u8, 218u8, 18u8, 120u8, 163u8, 75u8, 157u8, 15u8],
24+
]
11825
};

0 commit comments

Comments
 (0)