diff --git a/integration_tests/configs/sequencer/sequencer_config.json b/integration_tests/configs/sequencer/sequencer_config.json index 1548bb5b..ff01f2a5 100644 --- a/integration_tests/configs/sequencer/sequencer_config.json +++ b/integration_tests/configs/sequencer/sequencer_config.json @@ -19,40 +19,7 @@ ], "initial_commitments": [ { - "npk": [ - 63, - 202, - 178, - 231, - 183, - 82, - 237, - 212, - 216, - 221, - 215, - 255, - 153, - 101, - 177, - 161, - 254, - 210, - 128, - 122, - 54, - 190, - 230, - 151, - 183, - 64, - 225, - 229, - 113, - 1, - 228, - 97 - ], + "npk": [13, 25, 40, 5, 198, 248, 210, 248, 237, 121, 124, 145, 186, 142, 253, 216, 236, 69, 193, 32, 166, 167, 49, 133, 172, 111, 159, 46, 84, 17, 157, 23], "account": { "program_owner": [ 0, @@ -70,40 +37,7 @@ } }, { - "npk": [ - 192, - 251, - 166, - 243, - 167, - 236, - 84, - 249, - 35, - 136, - 130, - 172, - 219, - 225, - 161, - 139, - 229, - 89, - 243, - 125, - 194, - 213, - 209, - 30, - 23, - 174, - 100, - 244, - 124, - 74, - 140, - 47 - ], + "npk": [32, 67, 72, 164, 106, 53, 66, 239, 141, 15, 52, 230, 136, 177, 2, 236, 207, 243, 134, 135, 210, 143, 87, 232, 215, 128, 194, 120, 113, 224, 4, 165], "account": { "program_owner": [ 0, @@ -155,4 +89,4 @@ 37, 37 ] -} \ No newline at end of file +} diff --git a/integration_tests/configs/wallet/wallet_config.json b/integration_tests/configs/wallet/wallet_config.json index 2dd8aac9..9200810e 100644 --- a/integration_tests/configs/wallet/wallet_config.json +++ b/integration_tests/configs/wallet/wallet_config.json @@ -87,7 +87,7 @@ }, { "Private": { - "account_id": "HPA6RHTmRUTf2D49UHrsejkFZkeME8oxqZtSfWBCdyfE", + "account_id": "2ECgkFTaXzwjJBXR7ZKmXYQtpHbvTTHK9Auma4NL9AUo", "account": { "program_owner": [ 0, @@ -104,19 +104,19 @@ "nonce": 0 }, "key_chain": { - "secret_spending_key": [196, 236, 51, 176, 156, 24, 26, 234, 21, 244, 173, 27, 4, 252, 99, 166, 106, 160, 56, 106, 122, 118, 63, 29, 37, 252, 121, 201, 139, 148, 219, 67], + "secret_spending_key": [112, 17, 152, 192, 217, 201, 142, 92, 111, 68, 85, 222, 107, 73, 78, 196, 118, 226, 37, 17, 185, 177, 149, 182, 9, 85, 187, 152, 163, 144, 68, 121], "private_key_holder": { - "nullifier_secret_key": [82, 238, 58, 161, 96, 201, 25, 193, 53, 101, 100, 173, 183, 167, 165, 141, 252, 214, 214, 3, 176, 186, 62, 112, 56, 54, 6, 197, 29, 178, 88, 214], - "viewing_secret_key": [14, 114, 31, 116, 147, 114, 62, 111, 176, 100, 211, 68, 38, 47, 250, 34, 224, 249, 25, 40, 35, 37, 237, 224, 161, 58, 228, 154, 44, 162, 128, 138] + "nullifier_secret_key": [52, 33, 235, 245, 42, 132, 163, 182, 114, 56, 144, 187, 147, 23, 184, 227, 128, 12, 180, 142, 217, 110, 188, 177, 155, 141, 23, 127, 216, 185, 33, 126], + "viewing_secret_key": [44, 81, 165, 166, 34, 188, 192, 240, 40, 9, 83, 189, 215, 184, 246, 154, 247, 227, 155, 16, 121, 238, 4, 245, 63, 135, 192, 213, 222, 247, 120, 86] }, - "nullifer_public_key": [40, 104, 183, 124, 101, 11, 61, 45, 140, 53, 3, 155, 139, 134, 105, 108, 60, 229, 165, 195, 187, 246, 14, 88, 76, 69, 137, 154, 29, 113, 205, 153], - "viewing_public_key": [3, 243, 200, 219, 91, 171, 128, 76, 173, 117, 255, 212, 233, 71, 205, 204, 89, 104, 92, 187, 249, 154, 197, 102, 241, 66, 15, 55, 194, 189, 16, 124, 176] + "nullifer_public_key": [13, 25, 40, 5, 198, 248, 210, 248, 237, 121, 124, 145, 186, 142, 253, 216, 236, 69, 193, 32, 166, 167, 49, 133, 172, 111, 159, 46, 84, 17, 157, 23], + "viewing_public_key": [3, 43, 116, 165, 161, 27, 150, 158, 175, 198, 215, 27, 121, 126, 158, 224, 249, 92, 168, 163, 173, 115, 120, 122, 89, 173, 133, 94, 39, 238, 62, 52, 193] } } }, { "Private": { - "account_id": "4k4Wsbzqs4vLw9QsCEturGKfdmG8rMT4XrTh3mZqnV5i", + "account_id": "E8HwiTyQe4H9HK7icTvn95HQMnzx49mP9A2ddtMLpNaN", "account": { "program_owner": [ 0, @@ -133,13 +133,13 @@ "nonce": 0 }, "key_chain": { - "secret_spending_key": [19, 36, 184, 185, 157, 16, 188, 150, 54, 162, 211, 113, 17, 169, 24, 125, 238, 91, 162, 221, 128, 149, 11, 141, 0, 93, 110, 29, 156, 164, 155, 48], + "secret_spending_key": [48, 175, 124, 10, 230, 240, 166, 14, 249, 254, 157, 226, 208, 124, 122, 177, 203, 139, 192, 180, 43, 120, 55, 151, 50, 21, 113, 22, 254, 83, 148, 56], "private_key_holder": { - "nullifier_secret_key": [218, 3, 90, 97, 159, 247, 176, 10, 94, 11, 208, 181, 85, 241, 221, 57, 27, 85, 42, 1, 154, 208, 107, 186, 151, 43, 58, 61, 53, 70, 138, 41], - "viewing_secret_key": [91, 28, 90, 197, 47, 25, 7, 211, 201, 30, 15, 145, 46, 138, 226, 186, 154, 228, 137, 179, 205, 64, 235, 29, 9, 61, 210, 118, 244, 24, 236, 37] + "nullifier_secret_key": [99, 82, 190, 140, 234, 10, 61, 163, 15, 211, 179, 54, 70, 166, 87, 5, 182, 68, 117, 244, 217, 23, 99, 9, 4, 177, 230, 125, 109, 91, 160, 30], + "viewing_secret_key": [205, 32, 76, 251, 255, 236, 96, 119, 61, 111, 65, 100, 75, 218, 12, 22, 17, 170, 55, 226, 21, 154, 161, 34, 208, 74, 27, 1, 119, 13, 88, 128] }, - "nullifer_public_key": [2, 9, 93, 209, 212, 58, 34, 166, 27, 192, 143, 112, 169, 89, 134, 247, 95, 226, 219, 238, 35, 43, 35, 154, 237, 153, 158, 118, 214, 211, 74, 247], - "viewing_public_key": [3, 123, 93, 15, 99, 185, 28, 149, 2, 31, 8, 86, 2, 253, 198, 171, 160, 145, 116, 162, 138, 96, 160, 34, 69, 137, 193, 254, 230, 13, 83, 18, 170] + "nullifer_public_key": [32, 67, 72, 164, 106, 53, 66, 239, 141, 15, 52, 230, 136, 177, 2, 236, 207, 243, 134, 135, 210, 143, 87, 232, 215, 128, 194, 120, 113, 224, 4, 165], + "viewing_public_key": [2, 79, 110, 46, 203, 29, 206, 205, 18, 86, 27, 189, 104, 103, 113, 181, 110, 53, 78, 172, 11, 171, 190, 18, 126, 214, 81, 77, 192, 154, 58, 195, 238] } } } diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 12d718ec..bde435b7 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -24,8 +24,8 @@ pub const TIME_TO_WAIT_FOR_BLOCK_SECONDS: u64 = 12; pub const ACC_SENDER: &str = "BLgCRDXYdQPMMWVHYRFGQZbgeHx9frkipa8GtpG2Syqy"; pub const ACC_RECEIVER: &str = "Gj1mJy5W7J5pfmLRujmQaLfLMWidNxQ6uwnhb666ZwHw"; -pub const ACC_SENDER_PRIVATE: &str = "3oCG8gqdKLMegw4rRfyaMQvuPHpcASt7xwttsmnZLSkw"; -pub const ACC_RECEIVER_PRIVATE: &str = "AKTcXgJ1xoynta1Ec7y6Jso1z1JQtHqd7aPQ1h9er6xX"; +pub const ACC_SENDER_PRIVATE: &str = "2ECgkFTaXzwjJBXR7ZKmXYQtpHbvTTHK9Auma4NL9AUo"; +pub const ACC_RECEIVER_PRIVATE: &str = "E8HwiTyQe4H9HK7icTvn95HQMnzx49mP9A2ddtMLpNaN"; pub const NSSA_PROGRAM_FOR_TEST_DATA_CHANGER: &str = "data_changer.bin"; diff --git a/key_protocol/src/key_management/key_tree/keys_private.rs b/key_protocol/src/key_management/key_tree/keys_private.rs index 03ba020e..1ff7095e 100644 --- a/key_protocol/src/key_management/key_tree/keys_private.rs +++ b/key_protocol/src/key_management/key_tree/keys_private.rs @@ -1,8 +1,6 @@ -use common::HashType; use k256::{Scalar, elliptic_curve::PrimeField}; use nssa_core::{NullifierPublicKey, encryption::ViewingPublicKey}; use serde::{Deserialize, Serialize}; -use sha2::{Digest, digest::FixedOutput}; use crate::key_management::{ KeyChain, @@ -31,21 +29,10 @@ impl KeyNode for ChildKeysPrivate { .last_chunk::<32>() .expect("hash_value is 64 bytes, must be safe to get last 32"); - // TODO: check these generations - let nsk = ssk.generate_nullifier_secret_key(); - let vsk = ssk.generate_viewing_secret_key(); - - let npk: NullifierPublicKey = { - let mut hasher = sha2::Sha256::new(); - - hasher.update("LEE/keys"); - hasher.update(nsk); - hasher.update([7u8]); - hasher.update([0u8; 23]); - - NullifierPublicKey(::from(hasher.finalize_fixed())) - }; + let nsk = ssk.generate_nullifier_secret_key(None); + let vsk = ssk.generate_viewing_secret_key(None); + let npk = NullifierPublicKey::from(&nsk); let vpk = ViewingPublicKey::from_scalar(vsk); Self { @@ -89,20 +76,10 @@ impl KeyNode for ChildKeysPrivate { .last_chunk::<32>() .expect("hash_value is 64 bytes, must be safe to get last 32"); - let nsk = ssk.generate_child_nullifier_secret_key(cci); - let vsk = ssk.generate_child_viewing_secret_key(cci); - - let npk: NullifierPublicKey = { - let mut hasher = sha2::Sha256::new(); - - hasher.update("LEE/chain"); - hasher.update(nsk); - hasher.update([7u8]); - hasher.update([0u8; 22]); - - NullifierPublicKey(::from(hasher.finalize_fixed())) - }; + let nsk = ssk.generate_nullifier_secret_key(Some(cci)); + let vsk = ssk.generate_viewing_secret_key(Some(cci)); + let npk = NullifierPublicKey::from(&nsk); let vpk = ViewingPublicKey::from_scalar(vsk); Self { @@ -221,22 +198,21 @@ mod tests { ]; let expected_nsk: NullifierSecretKey = [ - 82, 238, 58, 161, 96, 201, 25, 193, 53, 101, 100, 173, 183, 167, 165, 141, 252, 214, - 214, 3, 176, 186, 62, 112, 56, 54, 6, 197, 29, 178, 88, 214, + 19, 100, 119, 73, 191, 225, 234, 219, 129, 88, 40, 229, 63, 225, 189, 136, 69, 172, + 221, 186, 147, 83, 150, 207, 70, 17, 228, 70, 113, 87, 227, 31, ]; - let expected_npk: NullifierPublicKey = nssa_core::NullifierPublicKey([ - 40, 104, 183, 124, 101, 11, 61, 45, 140, 53, 3, 155, 139, 134, 105, 108, 60, 229, 165, - 195, 187, 246, 14, 88, 76, 69, 137, 154, 29, 113, 205, 153, + 133, 235, 223, 151, 12, 69, 26, 222, 60, 125, 235, 125, 167, 212, 201, 168, 101, 242, + 111, 239, 1, 228, 12, 252, 146, 53, 75, 17, 187, 255, 122, 181, ]); let expected_vsk: ViewingSecretKey = [ - 14, 114, 31, 116, 147, 114, 62, 111, 176, 100, 211, 68, 38, 47, 250, 34, 224, 249, 25, - 40, 35, 37, 237, 224, 161, 58, 228, 154, 44, 162, 128, 138, + 218, 219, 193, 132, 160, 6, 178, 194, 139, 248, 199, 81, 17, 133, 37, 201, 58, 104, 49, + 222, 187, 46, 156, 93, 14, 118, 209, 243, 38, 101, 77, 45, ]; let expected_vpk_as_bytes: [u8; 33] = [ - 3, 243, 200, 219, 91, 171, 128, 76, 173, 117, 255, 212, 233, 71, 205, 204, 89, 104, 92, - 187, 249, 154, 197, 102, 241, 66, 15, 55, 194, 189, 16, 124, 176, + 3, 164, 65, 167, 88, 167, 179, 51, 159, 27, 241, 174, 77, 174, 142, 106, 128, 96, 69, + 74, 117, 231, 42, 193, 235, 153, 206, 116, 102, 7, 101, 192, 45, ]; assert!(expected_ccc == child_node.ccc); diff --git a/key_protocol/src/key_management/mod.rs b/key_protocol/src/key_management/mod.rs index 4856673f..d46dcf35 100644 --- a/key_protocol/src/key_management/mod.rs +++ b/key_protocol/src/key_management/mod.rs @@ -27,7 +27,7 @@ impl KeyChain { let seed_holder = SeedHolder::new_os_random(); let secret_spending_key = seed_holder.produce_top_secret_key_holder(); - let private_key_holder = secret_spending_key.produce_private_key_holder(); + let private_key_holder = secret_spending_key.produce_private_key_holder(None); let nullifer_public_key = private_key_holder.generate_nullifier_public_key(); let viewing_public_key = private_key_holder.generate_viewing_public_key(); @@ -46,7 +46,7 @@ impl KeyChain { let seed_holder = SeedHolder::new_mnemonic(passphrase); let secret_spending_key = seed_holder.produce_top_secret_key_holder(); - let private_key_holder = secret_spending_key.produce_private_key_holder(); + let private_key_holder = secret_spending_key.produce_private_key_holder(None); let nullifer_public_key = private_key_holder.generate_nullifier_public_key(); let viewing_public_key = private_key_holder.generate_viewing_public_key(); @@ -64,7 +64,7 @@ impl KeyChain { ephemeral_public_key_sender: EphemeralPublicKey, ) -> SharedSecretKey { SharedSecretKey::new( - &self.secret_spending_key.generate_viewing_secret_key(), + &self.secret_spending_key.generate_viewing_secret_key(None), &ephemeral_public_key_sender, ) } @@ -110,7 +110,7 @@ mod tests { let seed_holder = SeedHolder::new_os_random(); let top_secret_key_holder = seed_holder.produce_top_secret_key_holder(); - let utxo_secret_key_holder = top_secret_key_holder.produce_private_key_holder(); + let utxo_secret_key_holder = top_secret_key_holder.produce_private_key_holder(None); let nullifer_public_key = utxo_secret_key_holder.generate_nullifier_public_key(); let viewing_public_key = utxo_secret_key_holder.generate_viewing_public_key(); diff --git a/key_protocol/src/key_management/secret_holders.rs b/key_protocol/src/key_management/secret_holders.rs index 75ac0d75..0a0ff3af 100644 --- a/key_protocol/src/key_management/secret_holders.rs +++ b/key_protocol/src/key_management/secret_holders.rs @@ -74,70 +74,52 @@ impl SeedHolder { } impl SecretSpendingKey { - pub fn generate_nullifier_secret_key(&self) -> NullifierSecretKey { - let mut hasher = sha2::Sha256::new(); + pub fn generate_nullifier_secret_key(&self, index: Option) -> NullifierSecretKey { + let index = match index { + None => 0u32, + _ => index.expect("Expect a valid u32"), + }; - hasher.update("LEE/keys"); + const PREFIX: &[u8; 8] = b"LEE/keys"; + const SUFFIX_1: &[u8; 1] = &[1]; + const SUFFIX_2: &[u8; 19] = &[0; 19]; + + let mut hasher = sha2::Sha256::new(); + hasher.update(PREFIX); hasher.update(self.0); - hasher.update([1u8]); - hasher.update([0u8; 23]); + hasher.update(SUFFIX_1); + hasher.update(index.to_le_bytes()); + hasher.update(SUFFIX_2); ::from(hasher.finalize_fixed()) } - pub fn generate_viewing_secret_key(&self) -> ViewingSecretKey { - let mut hasher = sha2::Sha256::new(); + pub fn generate_viewing_secret_key(&self, index: Option) -> ViewingSecretKey { + let index = match index { + None => 0u32, + _ => index.expect("Expect a valid u32"), + }; + const PREFIX: &[u8; 8] = b"LEE/keys"; + const SUFFIX_1: &[u8; 1] = &[2]; + const SUFFIX_2: &[u8; 19] = &[0; 19]; - hasher.update("LEE/keys"); + let mut hasher = sha2::Sha256::new(); + hasher.update(PREFIX); hasher.update(self.0); - hasher.update([2u8]); - hasher.update([0u8; 23]); + hasher.update(SUFFIX_1); + hasher.update(index.to_le_bytes()); + hasher.update(SUFFIX_2); ::from(hasher.finalize_fixed()) } - pub fn produce_private_key_holder(&self) -> PrivateKeyHolder { + // TODO: this should use index + pub fn produce_private_key_holder(&self, index: Option) -> PrivateKeyHolder { PrivateKeyHolder { - nullifier_secret_key: self.generate_nullifier_secret_key(), - viewing_secret_key: self.generate_viewing_secret_key(), + nullifier_secret_key: self.generate_nullifier_secret_key(index), + viewing_secret_key: self.generate_viewing_secret_key(index), } } - - pub fn generate_child_nullifier_secret_key(&self, cci: u32) -> NullifierSecretKey { - let mut key = vec![]; - key.extend_from_slice(b"LEE/chain"); - - let mut input = vec![]; - - input.extend_from_slice(&self.0); - input.extend_from_slice(&[1u8]); - input.extend_from_slice(&cci.to_le_bytes()); - input.extend_from_slice(&[0u8; 22]); - - let hash_value = hmac_sha512::HMAC::mac(input, key); - - *hash_value - .first_chunk::<32>() - .expect("hash_value is 64 bytes, must be safe to get first 32") - } - - pub fn generate_child_viewing_secret_key(&self, cci: u32) -> ViewingSecretKey { - let mut key = vec![]; - key.extend_from_slice(b"LEE/chain"); - - let mut input = vec![]; - - input.extend_from_slice(&self.0); - input.extend_from_slice(&[2u8]); - input.extend_from_slice(&cci.to_le_bytes()); - input.extend_from_slice(&[0u8; 22]); - - let hash_value = hmac_sha512::HMAC::mac(input, key); - - *hash_value - .first_chunk::<32>() - .expect("hash_value is 64 bytes, must be safe to get first 32") - } } impl PrivateKeyHolder { @@ -179,7 +161,7 @@ mod tests { let top_secret_key_holder = seed_holder.produce_top_secret_key_holder(); - let _ = top_secret_key_holder.generate_viewing_secret_key(); + let _ = top_secret_key_holder.generate_viewing_secret_key(None); } #[test] diff --git a/nssa/core/src/nullifier.rs b/nssa/core/src/nullifier.rs index e734c8c7..1fe0f467 100644 --- a/nssa/core/src/nullifier.rs +++ b/nssa/core/src/nullifier.rs @@ -29,9 +29,9 @@ impl AsRef<[u8]> for NullifierPublicKey { impl From<&NullifierSecretKey> for NullifierPublicKey { fn from(value: &NullifierSecretKey) -> Self { let mut bytes = Vec::new(); - const PREFIX: &[u8; 9] = b"LEE/chain"; + const PREFIX: &[u8; 8] = b"LEE/keys"; const SUFFIX_1: &[u8; 1] = &[7]; - const SUFFIX_2: &[u8; 22] = &[0; 22]; + const SUFFIX_2: &[u8; 23] = &[0; 23]; bytes.extend_from_slice(PREFIX); bytes.extend_from_slice(value); bytes.extend_from_slice(SUFFIX_1); diff --git a/wallet/configs/debug/wallet_config.json b/wallet/configs/debug/wallet_config.json index 4ccd8433..f6e90b05 100644 --- a/wallet/configs/debug/wallet_config.json +++ b/wallet/configs/debug/wallet_config.json @@ -84,9 +84,9 @@ ] } }, - { + { "Private": { - "account_id": "3oCG8gqdKLMegw4rRfyaMQvuPHpcASt7xwttsmnZLSkw", + "account_id": "2ECgkFTaXzwjJBXR7ZKmXYQtpHbvTTHK9Auma4NL9AUo", "account": { "program_owner": [ 0, @@ -103,185 +103,19 @@ "nonce": 0 }, "key_chain": { - "secret_spending_key": [ - 251, - 82, - 235, - 1, - 146, - 96, - 30, - 81, - 162, - 234, - 33, - 15, - 123, - 129, - 116, - 0, - 84, - 136, - 176, - 70, - 190, - 224, - 161, - 54, - 134, - 142, - 154, - 1, - 18, - 251, - 242, - 189 - ], + "secret_spending_key": [112, 17, 152, 192, 217, 201, 142, 92, 111, 68, 85, 222, 107, 73, 78, 196, 118, 226, 37, 17, 185, 177, 149, 182, 9, 85, 187, 152, 163, 144, 68, 121], "private_key_holder": { - "nullifier_secret_key": [ - 29, - 250, - 10, - 187, - 35, - 123, - 180, - 250, - 246, - 97, - 216, - 153, - 44, - 156, - 16, - 93, - 241, - 26, - 174, - 219, - 72, - 84, - 34, - 247, - 112, - 101, - 217, - 243, - 189, - 173, - 75, - 20 - ], - "viewing_secret_key": [ - 251, - 201, - 22, - 154, - 100, - 165, - 218, - 108, - 163, - 190, - 135, - 91, - 145, - 84, - 69, - 241, - 46, - 117, - 217, - 110, - 197, - 248, - 91, - 193, - 14, - 104, - 88, - 103, - 67, - 153, - 182, - 158 - ] + "nullifier_secret_key": [52, 33, 235, 245, 42, 132, 163, 182, 114, 56, 144, 187, 147, 23, 184, 227, 128, 12, 180, 142, 217, 110, 188, 177, 155, 141, 23, 127, 216, 185, 33, 126], + "viewing_secret_key": [44, 81, 165, 166, 34, 188, 192, 240, 40, 9, 83, 189, 215, 184, 246, 154, 247, 227, 155, 16, 121, 238, 4, 245, 63, 135, 192, 213, 222, 247, 120, 86] }, - "nullifer_public_key": [ - 63, - 202, - 178, - 231, - 183, - 82, - 237, - 212, - 216, - 221, - 215, - 255, - 153, - 101, - 177, - 161, - 254, - 210, - 128, - 122, - 54, - 190, - 230, - 151, - 183, - 64, - 225, - 229, - 113, - 1, - 228, - 97 - ], - "viewing_public_key": [ - 3, - 235, - 139, - 131, - 237, - 177, - 122, - 189, - 6, - 177, - 167, - 178, - 202, - 117, - 246, - 58, - 28, - 65, - 132, - 79, - 220, - 139, - 119, - 243, - 187, - 160, - 212, - 121, - 61, - 247, - 116, - 72, - 205 - ] + "nullifer_public_key": [13, 25, 40, 5, 198, 248, 210, 248, 237, 121, 124, 145, 186, 142, 253, 216, 236, 69, 193, 32, 166, 167, 49, 133, 172, 111, 159, 46, 84, 17, 157, 23], + "viewing_public_key": [3, 43, 116, 165, 161, 27, 150, 158, 175, 198, 215, 27, 121, 126, 158, 224, 249, 92, 168, 163, 173, 115, 120, 122, 89, 173, 133, 94, 39, 238, 62, 52, 193] } } }, { "Private": { - "account_id": "AKTcXgJ1xoynta1Ec7y6Jso1z1JQtHqd7aPQ1h9er6xX", + "account_id": "E8HwiTyQe4H9HK7icTvn95HQMnzx49mP9A2ddtMLpNaN", "account": { "program_owner": [ 0, @@ -298,179 +132,13 @@ "nonce": 0 }, "key_chain": { - "secret_spending_key": [ - 238, - 171, - 241, - 69, - 111, - 217, - 85, - 64, - 19, - 82, - 18, - 189, - 32, - 91, - 78, - 175, - 107, - 7, - 109, - 60, - 52, - 44, - 243, - 230, - 72, - 244, - 192, - 92, - 137, - 33, - 118, - 254 - ], + "secret_spending_key": [48, 175, 124, 10, 230, 240, 166, 14, 249, 254, 157, 226, 208, 124, 122, 177, 203, 139, 192, 180, 43, 120, 55, 151, 50, 21, 113, 22, 254, 83, 148, 56], "private_key_holder": { - "nullifier_secret_key": [ - 25, - 211, - 215, - 119, - 57, - 223, - 247, - 37, - 245, - 144, - 122, - 29, - 118, - 245, - 83, - 228, - 23, - 9, - 101, - 120, - 88, - 33, - 238, - 207, - 128, - 61, - 110, - 2, - 89, - 62, - 164, - 13 - ], - "viewing_secret_key": [ - 193, - 181, - 14, - 196, - 142, - 84, - 15, - 65, - 128, - 101, - 70, - 196, - 241, - 47, - 130, - 221, - 23, - 146, - 161, - 237, - 221, - 40, - 19, - 126, - 59, - 15, - 169, - 236, - 25, - 105, - 104, - 231 - ] + "nullifier_secret_key": [99, 82, 190, 140, 234, 10, 61, 163, 15, 211, 179, 54, 70, 166, 87, 5, 182, 68, 117, 244, 217, 23, 99, 9, 4, 177, 230, 125, 109, 91, 160, 30], + "viewing_secret_key": [205, 32, 76, 251, 255, 236, 96, 119, 61, 111, 65, 100, 75, 218, 12, 22, 17, 170, 55, 226, 21, 154, 161, 34, 208, 74, 27, 1, 119, 13, 88, 128] }, - "nullifer_public_key": [ - 192, - 251, - 166, - 243, - 167, - 236, - 84, - 249, - 35, - 136, - 130, - 172, - 219, - 225, - 161, - 139, - 229, - 89, - 243, - 125, - 194, - 213, - 209, - 30, - 23, - 174, - 100, - 244, - 124, - 74, - 140, - 47 - ], - "viewing_public_key": [ - 2, - 181, - 98, - 93, - 216, - 241, - 241, - 110, - 58, - 198, - 119, - 174, - 250, - 184, - 1, - 204, - 200, - 173, - 44, - 238, - 37, - 247, - 170, - 156, - 100, - 254, - 116, - 242, - 28, - 183, - 187, - 77, - 255 - ] + "nullifer_public_key": [32, 67, 72, 164, 106, 53, 66, 239, 141, 15, 52, 230, 136, 177, 2, 236, 207, 243, 134, 135, 210, 143, 87, 232, 215, 128, 194, 120, 113, 224, 4, 165], + "viewing_public_key": [2, 79, 110, 46, 203, 29, 206, 205, 18, 86, 27, 189, 104, 103, 113, 181, 110, 53, 78, 172, 11, 171, 190, 18, 126, 214, 81, 77, 192, 154, 58, 195, 238] } } }