mirror of
https://github.com/pezkuwichain/pezkuwi-wasm.git
synced 2026-10-27 22:09:50 +00:00
Check every crypto export against recorded known answers
kat.txt holds 166 deterministic outputs (hashes, pbkdf2, scrypt, bip39, sr25519 keys, hard and soft derivation, agreement, VRF outputs, ed25519 and secp256k1 keys and signatures, recovery) and 24 sr25519/VRF signatures, all produced by the 7.5.20 crate set. A later crate set has to reproduce the first byte for byte and verify the second.
This commit is contained in:
1 parent
72bb42bdb5
commit
39675ddfbf
3 files changed
+414
No files matched your search
@@ -22,3 +22,6 @@ pub mod sr25519;
|
||||
|
||||
#[path = "rs/vrf.rs"]
|
||||
pub mod vrf;
|
||||
|
||||
#[path = "rs/kat.rs"]
|
||||
pub mod kat;
|
||||
@@ -0,0 +1,221 @@
|
||||
// Copyright 2019-2025 @pezkuwi/wasm-crypto authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
//! Known-answer vectors for every exported function.
|
||||
//!
|
||||
//! `kat.txt` was produced by an earlier build and is checked in. Any change to
|
||||
//! the crypto crates must leave every deterministic output byte-equal, and the
|
||||
//! randomised signatures (sr25519, VRF proofs) recorded there must still
|
||||
//! verify. Regenerate only on purpose:
|
||||
//!
|
||||
//! KAT_WRITE=src/rs/kat.txt cargo test --release kat_ -- --nocapture
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use crate::bip39::*;
|
||||
use crate::ed25519::*;
|
||||
use crate::hashing::*;
|
||||
use crate::secp256k1::*;
|
||||
use crate::sr25519::*;
|
||||
use crate::vrf::*;
|
||||
|
||||
const VECTORS: &str = include_str!("kat.txt");
|
||||
|
||||
const PHRASES: [&str; 3] = [
|
||||
"bottom drive obey lake curtain smoke basket hold race lonely fit walk",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title",
|
||||
];
|
||||
|
||||
fn to_hex(data: &[u8]) -> String {
|
||||
data.iter().map(|b| format!("{:02x}", b)).collect()
|
||||
}
|
||||
|
||||
fn from_hex(s: &str) -> Vec<u8> {
|
||||
(0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect()
|
||||
}
|
||||
|
||||
fn pattern(len: usize, mul: usize) -> Vec<u8> {
|
||||
(0..len).map(|i| ((i * mul + 7) % 251) as u8).collect()
|
||||
}
|
||||
|
||||
fn datas() -> Vec<Vec<u8>> {
|
||||
vec![vec![], b"abc".to_vec(), pattern(1000, 31)]
|
||||
}
|
||||
|
||||
fn seeds() -> Vec<Vec<u8>> {
|
||||
vec![vec![0u8; 32], pattern(32, 1), pattern(32, 97), b"12345678901234567890123456789012".to_vec()]
|
||||
}
|
||||
|
||||
fn chain_codes() -> Vec<Vec<u8>> {
|
||||
// "Alice" as a SCALE-encoded string, zero padded, as util-crypto builds it
|
||||
let mut alice = vec![0u8; 32];
|
||||
|
||||
alice[0] = 5 << 2;
|
||||
alice[1..6].copy_from_slice(b"Alice");
|
||||
|
||||
vec![alice, pattern(32, 13)]
|
||||
}
|
||||
|
||||
fn messages() -> Vec<Vec<u8>> {
|
||||
vec![vec![], b"this is a message".to_vec(), pattern(300, 7)]
|
||||
}
|
||||
|
||||
/// Every deterministic output, as `name hex` lines.
|
||||
fn deterministic() -> Vec<(String, Vec<u8>)> {
|
||||
let mut out: Vec<(String, Vec<u8>)> = Vec::new();
|
||||
|
||||
for (d, data) in datas().iter().enumerate() {
|
||||
for size in [32u32, 64] {
|
||||
out.push((format!("blake2b/{}/{}", d, size), ext_blake2b(data, &[], size)));
|
||||
out.push((format!("blake2b-key/{}/{}", d, size), ext_blake2b(data, b"key", size)));
|
||||
}
|
||||
|
||||
out.push((format!("keccak256/{}", d), ext_keccak256(data)));
|
||||
out.push((format!("keccak512/{}", d), ext_keccak512(data)));
|
||||
out.push((format!("sha256/{}", d), ext_sha256(data)));
|
||||
out.push((format!("sha512/{}", d), ext_sha512(data)));
|
||||
out.push((format!("hmac256/{}", d), ext_hmac_sha256(b"key", data)));
|
||||
out.push((format!("hmac512/{}", d), ext_hmac_sha512(b"key", data)));
|
||||
|
||||
for rounds in [1u32, 2, 4] {
|
||||
out.push((format!("twox/{}/{}", d, rounds), ext_twox(data, rounds)));
|
||||
}
|
||||
|
||||
for rounds in [1u32, 2048] {
|
||||
out.push((format!("pbkdf2/{}/{}", d, rounds), ext_pbkdf2(data, b"salt", rounds)));
|
||||
}
|
||||
|
||||
out.push((format!("scrypt/{}", d), ext_scrypt(data, b"salt", 10, 8, 1)));
|
||||
}
|
||||
|
||||
for (p, phrase) in PHRASES.iter().enumerate() {
|
||||
out.push((format!("bip39-valid/{}", p), vec![ext_bip39_validate(phrase) as u8]));
|
||||
out.push((format!("bip39-entropy/{}", p), ext_bip39_to_entropy(phrase)));
|
||||
|
||||
for (w, password) in ["", "password"].iter().enumerate() {
|
||||
out.push((format!("bip39-mini/{}/{}", p, w), ext_bip39_to_mini_secret(phrase, password)));
|
||||
out.push((format!("bip39-seed/{}/{}", p, w), ext_bip39_to_seed(phrase, password)));
|
||||
}
|
||||
}
|
||||
|
||||
out.push(("bip39-valid/bad-checksum".into(), vec![ext_bip39_validate(&PHRASES[1].replace("about", "abandon")) as u8]));
|
||||
|
||||
let pairs: Vec<Vec<u8>> = seeds().iter().map(|s| ext_sr_from_seed(s)).collect();
|
||||
|
||||
for (s, pair) in pairs.iter().enumerate() {
|
||||
out.push((format!("sr-from-seed/{}", s), pair.clone()));
|
||||
|
||||
for (c, cc) in chain_codes().iter().enumerate() {
|
||||
let soft = ext_sr_derive_keypair_soft(pair, cc);
|
||||
|
||||
out.push((format!("sr-derive-hard/{}/{}", s, c), ext_sr_derive_keypair_hard(pair, cc)));
|
||||
// schnorrkel draws the nonce half of a soft-derived secret at random
|
||||
out.push((format!("sr-derive-soft/{}/{}", s, c), [&soft[..32], &soft[64..]].concat()));
|
||||
out.push((format!("sr-derive-public-soft/{}/{}", s, c), ext_sr_derive_public_soft(&pair[64..], cc)));
|
||||
|
||||
// the public derivation must land on the public half of the soft pair
|
||||
assert_eq!(ext_sr_derive_public_soft(&pair[64..], cc), soft[64..].to_vec());
|
||||
}
|
||||
|
||||
for (o, other) in pairs.iter().enumerate() {
|
||||
out.push((format!("sr-agree/{}/{}", s, o), ext_sr_agree(&other[64..], &pair[..64])));
|
||||
}
|
||||
|
||||
for (m, msg) in messages().iter().enumerate() {
|
||||
// the VRF output (not the proof) is a function of key and input only
|
||||
out.push((format!("vrf-output/{}/{}", s, m), ext_vrf_sign(&pair[..64], b"ctx", msg, b"extra")[..32].to_vec()));
|
||||
}
|
||||
}
|
||||
|
||||
for (s, seed) in seeds().iter().enumerate() {
|
||||
let ed = ext_ed_from_seed(seed);
|
||||
|
||||
out.push((format!("ed-from-seed/{}", s), ed.clone()));
|
||||
|
||||
for (m, msg) in messages().iter().enumerate() {
|
||||
out.push((format!("ed-sign/{}/{}", s, m), ext_ed_sign(&ed[32..], &ed[..32], msg)));
|
||||
}
|
||||
}
|
||||
|
||||
// a zero scalar is not a secp256k1 secret key
|
||||
for (s, seed) in seeds().iter().enumerate().skip(1) {
|
||||
let secp = ext_secp_from_seed(seed);
|
||||
|
||||
out.push((format!("secp-from-seed/{}", s), secp.clone()));
|
||||
out.push((format!("secp-expand/{}", s), ext_secp_pub_expand(&secp[32..])));
|
||||
out.push((format!("secp-compress/{}", s), ext_secp_pub_compress(&ext_secp_pub_expand(&secp[32..]))));
|
||||
|
||||
for (m, msg) in messages().iter().enumerate() {
|
||||
let hash = ext_keccak256(msg);
|
||||
let sig = ext_secp_sign(&hash, &secp[..32]);
|
||||
|
||||
out.push((format!("secp-sign/{}/{}", s, m), sig.clone()));
|
||||
out.push((format!("secp-recover/{}/{}", s, m), ext_secp_recover(&hash, &sig[..64], sig[64] as i32)));
|
||||
}
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
/// Randomised signatures: `kind pubkey msg sig` lines that any later build must verify.
|
||||
fn randomised() -> Vec<String> {
|
||||
let mut out = Vec::new();
|
||||
|
||||
for seed in seeds().iter() {
|
||||
let pair = ext_sr_from_seed(seed);
|
||||
|
||||
for msg in messages().iter() {
|
||||
out.push(format!("sr-sig {} {} {}", to_hex(&pair[64..]), to_hex(msg), to_hex(&ext_sr_sign(&pair[64..], &pair[..64], msg))));
|
||||
out.push(format!("vrf-sig {} {} {}", to_hex(&pair[64..]), to_hex(msg), to_hex(&ext_vrf_sign(&pair[..64], b"ctx", msg, b"extra"))));
|
||||
}
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn kat_vectors() {
|
||||
if let Ok(path) = std::env::var("KAT_WRITE") {
|
||||
let mut lines: Vec<String> = deterministic().iter().map(|(n, v)| format!("{} {}", n, to_hex(v))).collect();
|
||||
|
||||
lines.extend(randomised());
|
||||
std::fs::write(&path, lines.join("\n") + "\n").unwrap();
|
||||
println!("wrote {} vectors to {}", lines.len(), path);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let mut expected = std::collections::HashMap::new();
|
||||
let mut signatures = 0;
|
||||
|
||||
for line in VECTORS.lines() {
|
||||
let parts: Vec<&str> = line.split(' ').collect();
|
||||
|
||||
match parts[0] {
|
||||
"sr-sig" => {
|
||||
assert!(ext_sr_verify(&from_hex(parts[3]), &from_hex(parts[2]), &from_hex(parts[1])), "{}", line);
|
||||
signatures += 1;
|
||||
},
|
||||
"vrf-sig" => {
|
||||
assert!(ext_vrf_verify(&from_hex(parts[1]), b"ctx", &from_hex(parts[2]), b"extra", &from_hex(parts[3])), "{}", line);
|
||||
signatures += 1;
|
||||
},
|
||||
name => {
|
||||
expected.insert(name.to_string(), parts[1].to_string());
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
let actual = deterministic();
|
||||
|
||||
assert_eq!(actual.len(), expected.len(), "vector count");
|
||||
|
||||
for (name, value) in actual.iter() {
|
||||
assert_eq!(&to_hex(value), expected.get(name).expect(name), "{}", name);
|
||||
}
|
||||
|
||||
assert!(signatures > 0);
|
||||
println!("{} deterministic vectors equal, {} recorded signatures verify", actual.len(), signatures);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
blake2b/0/32 0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8
|
||||
blake2b-key/0/32 e65edfce5a36261cd824cb0f0da736b1109dcf20d2b831d598f337bb3552a3e4
|
||||
blake2b/0/64 786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce
|
||||
blake2b-key/0/64 5b3cfd8f422b490b764b55eceb330b500c79cbefa9a928ad00202b8b3c5dd778a81122570434a2e3b8bfd028d105dfefd0a9576e88ed66de742ca9fbb5f8d2b6
|
||||
keccak256/0 c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
|
||||
keccak512/0 0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e
|
||||
sha256/0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
sha512/0 cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
|
||||
hmac256/0 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0
|
||||
hmac512/0 84fa5aa0279bbc473267d05a53ea03310a987cecc4c1535ff29b6d76b8f1444a728df3aadb89d4a9a6709e1998f373566e8f824a8ca93b1821f0b69bc2a2f65e
|
||||
twox/0/1 99e9d85137db46ef
|
||||
twox/0/2 99e9d85137db46ef4bbea33613baafd5
|
||||
twox/0/4 99e9d85137db46ef4bbea33613baafd56f963c64b1f3685a4eb4abd67ff6203a
|
||||
pbkdf2/0/1 00ef42cdbfc98d29db20976608e455567fdddf141f6eb03b5a85addd25974f5d2375bd5082b803e8f4cfa88ae1bd25256fcbddd2318676566ff2797792302aee
|
||||
pbkdf2/0/2048 35f714d09fc952c6a401e07081ac644e1e090de3c8744c28af0dd19396faee9de002d4eb6dbc1d09f1ffb96652d8a24680349622bed48aba991cd81436b3702a
|
||||
scrypt/0 8356b146b42af574e460300b44136b284c796d7e73d81b1e5069b265f9da1439b3577a0604829f1223e68820075799a47b37bb86f0ca88aded76c4e97a7e9f1c
|
||||
blake2b/1/32 bddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319
|
||||
blake2b-key/1/32 0330531d097355a3f72e80d55c1245ccf79f1704431c6e3887938320442c23c0
|
||||
blake2b/1/64 ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923
|
||||
blake2b-key/1/64 5c6a9a4ae911c02fb7e71a991eb9aea371ae993d4842d206e6020d46f5e41358c6d5c277c110ef86c959ed63e6ecaaaceaaff38019a43264ae06acf73b9550b1
|
||||
keccak256/1 4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
|
||||
keccak512/1 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96
|
||||
sha256/1 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
|
||||
sha512/1 ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
|
||||
hmac256/1 9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab
|
||||
hmac512/1 3926a207c8c42b0c41792cbd3e1a1aaaf5f7a25704f62dfc939c4987dd7ce060009c5bb1c2447355b3216f10b537e9afa7b64a4e5391b0d631172d07939e087a
|
||||
twox/1/1 990977adf52cbc44
|
||||
twox/1/2 990977adf52cbc440889329981caa9be
|
||||
twox/1/4 990977adf52cbc440889329981caa9bef7da5770b2b8a05303b75d95360dd62b
|
||||
pbkdf2/1/1 ed5eaa90fc29599df803befca3c4305baac330ee54dc648a8850eb233c0edd5c835b721009aefa870e81bbb026fd265fe7316096998299dce1689e8942651223
|
||||
pbkdf2/1/2048 a81678b52a3db3a13e307c5ec8e2d0c77b4be2fb3eaecde640acd14ca6b7f94da769cbd3391aa9221f8c90221eaa21916e455cd67c1818c4f3023a2e3fb42ede
|
||||
scrypt/1 057f3a65a87ea4d7358e38387ed115ccd48329f3860aa2a038af4669fabb2a0e3ad24b499cfa1f99eb9b62e180039aa4210e5735793807689642c13a95c2113e
|
||||
blake2b/2/32 a1442fdad4d4e5214e4086836e6accd66cc62d4cf3445dae60006ba025c070d7
|
||||
blake2b-key/2/32 7d866f7bcac37163a15a32a822d6ad569c8429a994e12ff94b80780a09bf9718
|
||||
blake2b/2/64 d9d6d77e0408eef086662db306f66af8852e2c70cebbf2e43ccb33c99499687b7a43897b49716c13096986f090042091052ff2c30a095c246fd4c56f16dd1ee8
|
||||
blake2b-key/2/64 9d42ae2a54bf6638b443c5f1c9935c74e5f894501cdc46cae9cd0cc19f536c3996d53cd993449519bba88f95c9be66d833c103c5f36e8b6d076886540628eefe
|
||||
keccak256/2 d9317789b18e31eda7f125c541e8eca191f4b6f429970b2e23def6bebc9000d2
|
||||
keccak512/2 5345c3dadf2c61016fbb23a14ce532d75dd6ae3d7112ebaec258680acc8f70b7591ed4b66688e5501b7126182be2ef48f560ca451c60451d3d480a7c7edd92f6
|
||||
sha256/2 008549d94fa71e7a0a483d84380d05a923a4b18e79ba1f8a8ddac923956d32ef
|
||||
sha512/2 6e980832aa820e5fe6c6ce011c36cd3cbe95596c9069c6067fab48bade8bbeb4e6413acb61bb1286c67c28a07e3f4099f1805a2b199cc0fe51aa5cfb1b66a40e
|
||||
hmac256/2 df667edcc6df9bb665b74643b50a7a7bddc394e8acc2a0bf16d000330d39db73
|
||||
hmac512/2 7df02b56487c0448f88d6e44c729dc6ded0b0a3add5e7e97e2b5fb8981416fbaea03e991f3c779cfa790eb69ca6c08f596b7e3b9af36b293fe68fadfd5d3b70c
|
||||
twox/2/1 8dc5e3cdc100339e
|
||||
twox/2/2 8dc5e3cdc100339e6e7ef29bc88dfcd7
|
||||
twox/2/4 8dc5e3cdc100339e6e7ef29bc88dfcd7c877b13a6b38c137d269ec9a21c100ce
|
||||
pbkdf2/2/1 3f4ed9a95e4b71232c3746d036eb7df2e3e469e2a78f7b4fb593c1a766805dba0bdbbfd349b63438c9dd4c555d36e9d3ce91f3d709d7d7d2d499a2b263da4f63
|
||||
pbkdf2/2/2048 5275d2231e2fe9ec731f790a679641fec34b2e92806d8aca37b6c87e4b8049579c6e6eae5cf2679280617f2480f81e39f9c4ddf1e4d7292117eaca48af422838
|
||||
scrypt/2 4ec391c472568d379316c8a14a69128a2aaa27d5d66635e7c682a90af07be9a2ec09d618f6dbf222bbe676883c8b2bf52a3f3600b6bea403ce04f9c123de166d
|
||||
bip39-valid/0 01
|
||||
bip39-entropy/0 1a486a5fbe53639984cb64b070755f7b
|
||||
bip39-mini/0/0 fac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e
|
||||
bip39-seed/0/0 02d5cd1db85b4d1397d78978062a1160e76e94cc5aaad3089644846865bb18fc
|
||||
bip39-mini/0/1 7093ab08d7abbb67ff41479a98ef998e4be773901f13668a012f51d207577a88
|
||||
bip39-seed/0/1 a6a63e14e4aab9ea6d031a84fd49650b337cc06916f8c8e7bb1e6b3a47024867
|
||||
bip39-valid/1 01
|
||||
bip39-entropy/1 00000000000000000000000000000000
|
||||
bip39-mini/1/0 4ed8d4b17698ddeaa1f1559f152f87b5d472f725ca86d341bd0276f1b61197e2
|
||||
bip39-seed/1/0 5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc1
|
||||
bip39-mini/1/1 452cf529afdeea38864bda6a771ec77c165498e57c8b53270a918e2a95d6e384
|
||||
bip39-seed/1/1 319a85221b9c4ce9a2896ed8cb2c0ea205c44c512d9214c9d80e663b8aa97f09
|
||||
bip39-valid/2 01
|
||||
bip39-entropy/2 7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f
|
||||
bip39-mini/2/0 f02cdc109954e34cd3f0c60fdb0c97ffb3a934ad1cc9a4df87b8417024b8bdbe
|
||||
bip39-seed/2/0 761914478ebf6fe16185749372e91549361af22b386de46322cf8b1ba7e92e80
|
||||
bip39-mini/2/1 91ae31651bbded60d4abbd2aaeada3fc32dc4883aa42bf74aaba714a7cc370b6
|
||||
bip39-seed/2/1 78eb30f9eb2e381142f81fb2f91af8009a7bae045353c81d41b9965e79753042
|
||||
bip39-valid/bad-checksum 00
|
||||
sr-from-seed/0 5046adc1dba838867b2bbbfdd0c3423e58b57970b5267a90f57960924a87f1560a6a85eaa642dac835424b5d7c8d637c00408c7a73da672b7f498521420b6dd3def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627
|
||||
sr-derive-hard/0/0 5044f1b94dc23e1422b8ff1d16e5c185acd6b1ab0b045edaf52da481e6060f4aeba185d47626304c56ce22f661d7e04bc060bf92367a240487ad3368dfa4f0587eb473cf3ffb7f799a5e7e8a3d864bc9fb558ad77ffd45354f5a64733a8dcc5b
|
||||
sr-derive-soft/0/0 90a1831445febebaa7ad670736e7e1a7bc7a40c860d11a0d45a834552241e70182cbd8a1cbc65ae31b6606f759c2774846b051c4ec605652d96c39525fbcfd14
|
||||
sr-derive-public-soft/0/0 82cbd8a1cbc65ae31b6606f759c2774846b051c4ec605652d96c39525fbcfd14
|
||||
sr-derive-hard/0/1 f028af100e19eb2d977031a7a119d61b3b74d230566da8047b5dfab057d199605ba3dce88aad5127a2d9c2d9e15fffb12cf00a6539b4c5a8ab1f6cf1193028ddeef10a01961b20f466467b28afd462be66cc747df9dd2a5c932eb7a05bc1af41
|
||||
sr-derive-soft/0/1 d06e1aab2adca5772c61a9b1b290aa850ceda6c68dddb7cea89cccece53eac0cac99e7d9f2b492a0f87a976817f6608b24aaf14206b5e7d5dfd7713a10795620
|
||||
sr-derive-public-soft/0/1 ac99e7d9f2b492a0f87a976817f6608b24aaf14206b5e7d5dfd7713a10795620
|
||||
sr-agree/0/0 167b3784188f948efda66d3e08b71354f258db1665b4e63abf903b6319372668
|
||||
sr-agree/0/1 6cae5cd4b5ed7f11ddb9a0c20d3acbb51c6027ec291fa2f8b9b23e86a4903112
|
||||
sr-agree/0/2 eec62f77e9c050cc1da6920441ec7fd30fc2471c5633ecc0151265068fa2021d
|
||||
sr-agree/0/3 dc75f9d7da57ff15e65def295e1a416a53577701b15b3de904c38031297b8d7d
|
||||
vrf-output/0/0 8034451570f66a23cd631f06a53a32683eb187aa00545bfe9653a255a0e36b49
|
||||
vrf-output/0/1 301103529195cb77dc71efdcf5247817d40fb3d17c2a66a433a98e8a005e155e
|
||||
vrf-output/0/2 74bed1f7eede4ac3f11ccd72094732987b897994e31f106dc42844bd1146d112
|
||||
sr-from-seed/1 10174084cbded240bf5356f2f95f5dde0f8db69ccad7d59e70b871887e597a628b9567dc8368839e2346f9553b4968c6fe856d5a7669f1c54e96f65cfda4b039de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f
|
||||
sr-derive-hard/1/0 e03363daba6aa72fcf612b75fa6332c0293f23eb7fc3867832f1ff6dc00500525f2be6935ae55cd6ab40e1c4f278972b31e2331cb15193ae01c58b61545077fff0af6c7273314323ecd59b7751f6af00535e91be0c706a55c7e171706ec4d006
|
||||
sr-derive-soft/1/0 28b95df54828b985d5e0097049bd347fcc711b44fe0850d4db84c14d5ad27d17f66f661828ec788ca585703c0a14cc13a4d385299cfdfb148f4f554a1791f12e
|
||||
sr-derive-public-soft/1/0 f66f661828ec788ca585703c0a14cc13a4d385299cfdfb148f4f554a1791f12e
|
||||
sr-derive-hard/1/1 2881967aef71dc5c5385863b7ae78d901f2c48dcc0a6d3a0d1d3aaf62e2e935429943d0a1042cf3392ed094bbedb495c988401d753de3d67f8359513243a0b9d6ec838a4b1373518b303544d098c0636dbabc63703c8bb5b24e5f36ba5cc527c
|
||||
sr-derive-soft/1/1 087a06cb2153ded6faf219db4aa987b36beeaa1b7fa0602bca6e5eec92b098627454f8850f657d7d6ce095fd95cf960b5a3805746269e7ebb04d346bfb850208
|
||||
sr-derive-public-soft/1/1 7454f8850f657d7d6ce095fd95cf960b5a3805746269e7ebb04d346bfb850208
|
||||
sr-agree/1/0 6cae5cd4b5ed7f11ddb9a0c20d3acbb51c6027ec291fa2f8b9b23e86a4903112
|
||||
sr-agree/1/1 924c672d1fab64258297edf443ca56d08c214cff4a01f42a1386ea5ec7a56133
|
||||
sr-agree/1/2 2a799825b0bedcacc2b612057beb92d27ce3373fc98e90a6fae94e61ab0a656b
|
||||
sr-agree/1/3 66d68f1a30ddc58cec6c823c6d9508bb2dd9e48ffc892aee4236d9f1d2646807
|
||||
vrf-output/1/0 82efcfd875532dd24499defd3ffd0c1d4940111cd5e780b96027c799ef390648
|
||||
vrf-output/1/1 7c6d026b220fb01a1301bb704d0c30c6e640a69ef52e0d35ef442670e26fc97b
|
||||
vrf-output/1/2 3084beefb7ac40f766731657c5e776f4a15e20beca9eef8842121e2b3910dd22
|
||||
sr-from-seed/2 18b5f3e9309e299a29105131170fa7be75d1dd8b3a89074a3ee24e564deb6b5b433878ae7fe6b5e12e48d14574ef972534a02797c5f4a4ae4bde996256f619b16203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d
|
||||
sr-derive-hard/2/0 407f24ae017ce772e36bf577ab705547658cfed7b34d4afe3734be5476119a69f8fcdaff281ff8c13cc1419d7c841028c1ce21b55f2ba51dc646154356cf6cf894e23f5a2546a3a1a2677ff796b0e0e920da3cecc952ab1a8021519775352d5e
|
||||
sr-derive-soft/2/0 282441e695a327a73028d4ca68749bfa995887f9fc8b73826efef7cf627ec07542581161e52bd1f724155363bffe777eecc177bf1fdbf26b592708a4db4f902e
|
||||
sr-derive-public-soft/2/0 42581161e52bd1f724155363bffe777eecc177bf1fdbf26b592708a4db4f902e
|
||||
sr-derive-hard/2/1 6893644ead32fee42054765cfdfd6782dd05fe71aa42e5f2a0b3a72818e04c5d4dde56050f646d29415387517e9b3408887e86cede78b5ce83e303255f20e994dc824fcc74ce2b393e73f5f18cd2e29dba66d5411da3860399d74f8556eccb71
|
||||
sr-derive-soft/2/1 5807278a18c2e1a4507293abe3fd236e519375e4e624555e787ea34596917a74362e7c82958a3a5cae8a8cd990164988b51a4cfde7003de403c98602fa878d4f
|
||||
sr-derive-public-soft/2/1 362e7c82958a3a5cae8a8cd990164988b51a4cfde7003de403c98602fa878d4f
|
||||
sr-agree/2/0 eec62f77e9c050cc1da6920441ec7fd30fc2471c5633ecc0151265068fa2021d
|
||||
sr-agree/2/1 2a799825b0bedcacc2b612057beb92d27ce3373fc98e90a6fae94e61ab0a656b
|
||||
sr-agree/2/2 1a6103aa0dcb2e6bcc500b2a15a4e7523e831e61d85daa30630c25241e74187e
|
||||
sr-agree/2/3 f4ba4a535cb371f26f1abc39d0b02911f9fc70daee91f7c12fcfa3113adcf033
|
||||
vrf-output/2/0 60976686251d496cacbb2f4e0659aa4fd056b29fed678528d08f6535b1edf469
|
||||
vrf-output/2/1 94ba6bcd758ccfae3808ecea73d5c490e9c5c114dfcb5264a5190d808e3d600f
|
||||
vrf-output/2/2 c467f93dbc5f425b6a506e2749dc8b29851587f7611aaff248ee291c65c48a35
|
||||
sr-from-seed/3 f0106660c3dda23f16daa9ac5b811b963077f5bc0af89f85804f0de8e424f050f98d66f39442506ff947fd911f18c7a7a5da639a63e8d3b4e233f74143d951c1741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63
|
||||
sr-derive-hard/3/0 30db0fea8835bd5baf649a7bcefe3896b1155771d3e1a7629137d9c679fe4a43f53fe39df0fbcda94acf7386ebf8311c286559864c03f4379d2d40ffc874a87a0460ff03efdc8f3eeae36ad282d41a8398e20703c5504fbc18ec238df4b9855b
|
||||
sr-derive-soft/3/0 78e2c707b9a946a6afe82cee0bef0c7db1983f5e050de868337f62eb978e492a68d447f32488ba7a1a65e3a0ffa11e747dae52aea4a18b789980f23477c52356
|
||||
sr-derive-public-soft/3/0 68d447f32488ba7a1a65e3a0ffa11e747dae52aea4a18b789980f23477c52356
|
||||
sr-derive-hard/3/1 a8bf865205c69ebcdb1efe9edec3b96ea65dd9a071f01e76c91c2af940645f44e96cf7443b19c1866b66535cbcff7afc4b135971ab2ce3bac1ab5e4e4b0e9640106bf4e2d66af916c7b893c7f377ee7c55bc7b63dbbf86f0b65696fe71afcc26
|
||||
sr-derive-soft/3/1 00223435066f51ece75129f67ba4ec74bc86dfdc951d43f93164d061d3ba7a53f869cd2226b3e1d4648e90c2ab8ed9db5243e23e9d12a814f060b5c447fda835
|
||||
sr-derive-public-soft/3/1 f869cd2226b3e1d4648e90c2ab8ed9db5243e23e9d12a814f060b5c447fda835
|
||||
sr-agree/3/0 dc75f9d7da57ff15e65def295e1a416a53577701b15b3de904c38031297b8d7d
|
||||
sr-agree/3/1 66d68f1a30ddc58cec6c823c6d9508bb2dd9e48ffc892aee4236d9f1d2646807
|
||||
sr-agree/3/2 f4ba4a535cb371f26f1abc39d0b02911f9fc70daee91f7c12fcfa3113adcf033
|
||||
sr-agree/3/3 12769eae8157152c1a69e4459a7fd7b1c4ce55d8a5eb68aaac9324df08c7dd1f
|
||||
vrf-output/3/0 148beca7e06f7af6b57afaede17362acfc6ffe64a341274428daec2673391023
|
||||
vrf-output/3/1 de4cb325ffb4c4b4f71c2992dddc16822614ab8095e30c5abe22b125ac480110
|
||||
vrf-output/3/2 ccda5008c43516b79733d6d8eb3634f0450d1b9ccfca0b205420dd78bcb32d66
|
||||
ed-from-seed/0 00000000000000000000000000000000000000000000000000000000000000003b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29
|
||||
ed-sign/0/0 8f895b3cafe2c9506039d0e2a66382568004674fe8d237785092e40d6aaf483e4fc60168705f31f101596138ce21aa357c0d32a064f423dc3ee4aa3abf53f803
|
||||
ed-sign/0/1 b17a3d196768eb182c746cdc592ecd5ba54b815a300a08efaf08893a0fcaf7bb2c2d0b9e7f108f0e257d79db7a79786445db8631c42ee7693cd75477737f0c00
|
||||
ed-sign/0/2 8b7e54ff43aa6385f57ded8b5a903549c7c6783d28b3492ed542f29dd8a2ab387542ddc24b770758c5909ec56caa4901ed90013e338d28fe753f2b1f6b601908
|
||||
ed-from-seed/1 0708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252600d05a1d1ea251396d557afbd4588b3c6d99dbeb972fed10a32562ea26dcdcfa
|
||||
ed-sign/1/0 26caf293a0b11c2c88f2f9e98efdb42e32374943589bfa449998a1738f93a3d4773ecf386def504ff8f5febd5118a28ae5747ac92c656609d0a3631d5d59a90b
|
||||
ed-sign/1/1 1317bf325ad62aba070e8fb9cfb3886e31750c6865b78355fcc4d75a6b810041fdcf756d5bc6e144f7f9cad4b893719af6432233acf7c8daf21414ef72b9b703
|
||||
ed-sign/1/2 fc354b2898a0d700924879de329b5ab6f6fc2d0c3d2579633b7ee8c0e81897e1eee10efd7e7d0b98ce889cdeb266ccaf837d20b4aa82dfa3ed73bc38820b4805
|
||||
ed-from-seed/2 0768c92f90f157b81e7fe046a70d6ecf3596f75dbe2485e64cad1374d53b9c029ab3e3b7fabda8a899c3a93b711ce3e9c092793491a49ab3f93331db7a1a0f8c
|
||||
ed-sign/2/0 dacab8d76acb5a01d013adf2ddd496e40219c6bfbd900de355eb15acb4bce2ae0b7430fe49f710415b392d6280f2490ee7a58c775d661796fe79adc1b6dd1e0e
|
||||
ed-sign/2/1 c590b0f69cd4249904292ccd6730a454dd51bafcafa1844a01c5ea64ac162c17b9bd7041faa0eec85f92674c86cb3cda027634c6c4e17837991135865be03901
|
||||
ed-sign/2/2 9f115cbe6ff1829400c2ed3cc90a325d0a48cf180fde0cb148064800911d6b81e0a38a62b4c7e12fd630c5588e2fb90814c33e1ca2fade665da245e2251e6200
|
||||
ed-from-seed/3 31323334353637383930313233343536373839303132333435363738393031322f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee
|
||||
ed-sign/3/0 9307490e912de0ee8eba762e2dab214b142d9943469db0698274ccb3a091a5df24dc0bed309a808c4cd7ba1addd17a5ede576283566f22915884d3c361db400d
|
||||
ed-sign/3/1 90588f3f512496f2dd40571d162e8182860081c74e2085316e7c4396918f07da412ee029978e4dd714057fe973bd9e7d645148bf7b66680d67c93227cde95202
|
||||
ed-sign/3/2 e5d1b0dfa9cf77a5a36e6d67c65ae9241d4fa08dcda94da4d294870bae05561f2a78f7053f5082d2b4a889307eff3dc909e36edfc05656806d4594542e5f9c0f
|
||||
secp-from-seed/1 0708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526029fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55
|
||||
secp-expand/1 049fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55f0ca1d755158126236856b08e5ef1c7f58953fa09c681d33fe63f02e07d0af26
|
||||
secp-compress/1 029fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55
|
||||
secp-sign/1/0 f835e88462a652882078de1c490788ef2bcf5c3654f46ab2dd57d75732420ffa1e345a225a4f6b4159344e96179390e50ec2deda161f0c21a80aa45880cf5fdc01
|
||||
secp-recover/1/0 029fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55
|
||||
secp-sign/1/1 20d00d17b9beb4920f1f2b868ff4f97f37d81305bfdd5251c4ad1166f8b1f74303f816436197dc2d0548a188224f20515e19d1214a2eb84acb660fd797925b6800
|
||||
secp-recover/1/1 029fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55
|
||||
secp-sign/1/2 6b5e6b28801042beb245714ae0e637b6f9eecda27872eedb89662f3a9eb7a7f877323adbd8630226700325f379db189ae11abf7f701e25899f11d9d93203315e01
|
||||
secp-recover/1/2 029fc3f04c2c6e14d06fe30048fb902506d674f5f7543dfde498b1d26e1a6c1f55
|
||||
secp-from-seed/2 0768c92f90f157b81e7fe046a70d6ecf3596f75dbe2485e64cad1374d53b9c02027854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc535
|
||||
secp-expand/2 047854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc5350d083efb4c1199c119862d8d48741a4e471778b892e929e61d083494790b7f16
|
||||
secp-compress/2 027854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc535
|
||||
secp-sign/2/0 a4ce55a43e3483b38cb0c3423e16caab5d3c4ef754a22dd57de2488ea06a8d4c3be5ea6c3a17ac80f44bc6fb16d42983fb1903a7c762ba2bd97a771e5258b03101
|
||||
secp-recover/2/0 027854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc535
|
||||
secp-sign/2/1 6a2fc029d7732e9a4c148f06456493552ae117f2a9bc16362b204a11541cff202b7bb6fa926d3f2060a1d01c43c1ec194deb7dd397161ef16c11a906147c16ee01
|
||||
secp-recover/2/1 027854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc535
|
||||
secp-sign/2/2 61013addf85a6c17db744c01806151eba601c78f94676116684f8f18503c68822a6bfc7fe4bac84f1327d067d1e412a1c752961f9cd3f172010d9f035e43157f01
|
||||
secp-recover/2/2 027854493edced8484912d36f6b8ac3aaf28fe5b7db24341ff5b489b84679fc535
|
||||
secp-from-seed/3 3132333435363738393031323334353637383930313233343536373839303132035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9
|
||||
secp-expand/3 045676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba995840f3de562156558efbfdac3f16af0065e5f66795f4dd8262a228ef8c6d813
|
||||
secp-compress/3 035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9
|
||||
secp-sign/3/0 c4d4c1a10f58684a3e3c7fb67a8548bd590f80af64dfd48bcc6536e2154e4d3e70723a81f9632f374e695cecdb8a0fe0454b1ff286eae33718de64bb5e356ba501
|
||||
secp-recover/3/0 035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9
|
||||
secp-sign/3/1 ffe654ea46d9d27cd83ea6910975ed177f02e9a18638faf42dde95d62bd37c387b91c7eba9c5f13f1c57ca1b58eb1af0d5a82838d75b1661c444db6cd367696201
|
||||
secp-recover/3/1 035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9
|
||||
secp-sign/3/2 531bb640dae78253cd466cd851e6d7a9b4354b37113916b5c3c3e2574bb3e58e6008c7a5eed95d50619b7b6b2a79218edc23a96379228d6d40be9038701614a700
|
||||
secp-recover/3/2 035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9
|
||||
sr-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 489ef0f010a64a29fe278249fdf508a2ce10343c870d355b3924808dd578105ac62a7d03c0bddcc4ce18a37ef11c3f8e9c368359ed5651a6cbc158045e55e38f
|
||||
vrf-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 8034451570f66a23cd631f06a53a32683eb187aa00545bfe9653a255a0e36b4966c32822d053d2b22d117e93ed487dff3e87fd0f5a24f4b1819689e4ad105805e816caa25dee6b2a5cdfbf0f0a729e4b1eb13ef68fbaaafcddbaf28cb6e13d02
|
||||
sr-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 746869732069732061206d657373616765 6227fc211d63e52f0c503c9e83b6cb08dc4b425549ff1353a278ec96bf8e092adf00d9abc61bc5813b5c51c0b880962c9dd090432fd6a50d8169bdb449c54f84
|
||||
vrf-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 746869732069732061206d657373616765 301103529195cb77dc71efdcf5247817d40fb3d17c2a66a433a98e8a005e155ec45289f04e912c7fe023aa8de6bd18ca1c6a4503f4cba42e28b9b347d3d04b0d0467674d5bb81a64e61bb76dc8faf0d329503bee350f9c11eae39b50cfcbb10a
|
||||
sr-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c 92c5e8af927f2a6f05f4d0c2e98216fec55be4ef04d3056713518bc92d9cb930ebc461d3856268f0f5ce309a0f253d331b04140a8b86f32820d1ff14a9888f8a
|
||||
vrf-sig def12e42f3e487e9b14095aa8d5cc16a33491f1b50dadcf8811d1480f3fa8627 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c 74bed1f7eede4ac3f11ccd72094732987b897994e31f106dc42844bd1146d1120eccdb5e58fbd8670f34994b1799d1abbac05a94c71acbcd9307028647289e0c31099af1dbe439980a9ceb9ec13d0d02697cbfba563e9821d5f92ecd2cf7c007
|
||||
sr-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 80ebf0b599bbd01d981b56f80b79ab85a31fc1b055f839d8b10d5bf67d9e3d21316161bf3f1898160960e94d2cd174f4dff9f42b4bc35dc29c7059480b47ab85
|
||||
vrf-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 82efcfd875532dd24499defd3ffd0c1d4940111cd5e780b96027c799ef390648d88bfa89260ecd557638dfe76d1c4c94b908c7a31464595e912f889ace79c30f77b14188af3d46dc57efbe09a7852ecfb62bfcdcf119c3657a23fa899a3f4508
|
||||
sr-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 746869732069732061206d657373616765 a8f97775d5a0576cf5530a8eb6baa63e2d2ecf610c9db682cb06c52d40931f323e446a5284e9966ccd2643dc6e91341adf6a097733904704feb0c517108ca38a
|
||||
vrf-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 746869732069732061206d657373616765 7c6d026b220fb01a1301bb704d0c30c6e640a69ef52e0d35ef442670e26fc97b8a8e371e84fd521267123a09fad8ac4d872dfa422d8aaa3336ac8a181b1c3a0dcf2b60ecdec3ae5ef4d173dd18bc5af5f7d6567f78a709e1294c1f59e2d81f06
|
||||
sr-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c e82217ad07422ca25fb31f55d4d5cf42bee685805d6df610b80e1a3a8a1db34b3ce20bafeba409f16897796ccf003c49d180b4c0385c268eef708246eead2183
|
||||
vrf-sig de4ffab050e3f3f1f982b872c5ec0455294fd16afd9075f75e9379a3bbde725f 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c 3084beefb7ac40f766731657c5e776f4a15e20beca9eef8842121e2b3910dd224a56473e60302b2d75debce2ee9c58a96d4aa51a925a5fa9b329a2a017821e00df68f265212c530894ca79f7e34645b2e6231f988556079eaf42c917d9a48309
|
||||
sr-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 5a26f5322c87182853d2dd53efe8ebf99e5af4f91eec877b70a04480a461c87f4f5dca4524ed4a402f44d3f7df25e9d7b774d3faf72e55aa4b1f21434ed43283
|
||||
vrf-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 60976686251d496cacbb2f4e0659aa4fd056b29fed678528d08f6535b1edf46917918ece5448de5c785e68fd87c55a51479c8c73b924993beb7ab3e5df0d9c048438dc24fa5e55a5d5da664352200abdabf24c9ff2c48c30ee96ea068a62090b
|
||||
sr-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 746869732069732061206d657373616765 fca168d5fbd24de746a8355bd7b7ccf63be6004d409f57cbd5cbc4417d7cd62a1744ab46e8727f07d97d4c3d365c45a1fdea956c3ee8cb06ef2c76bd7f1a5185
|
||||
vrf-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 746869732069732061206d657373616765 94ba6bcd758ccfae3808ecea73d5c490e9c5c114dfcb5264a5190d808e3d600f84f43f5e35779d0b1e7d0a7363bdd956bc2fd307a2848ec453ee1f4c24363a042c1089a2384872bf1bad1150836275e6c46d33d6c0c5212b2db4ca123e14e703
|
||||
sr-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c 8cae0772e5b1a61f20b470b4ad6c1e39ae7a0b6c1df91ec2a2400c266260233211ce9642733d8dcea1c379a7bf7fae26ad61b08010f403293999885c329dbd82
|
||||
vrf-sig 6203b67c5d1c658dee4b31a11cfe03d92552b2797c2a133c8a19682cf24b190d 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c c467f93dbc5f425b6a506e2749dc8b29851587f7611aaff248ee291c65c48a350e013366e544e139aaaed170e8e6f0d286e0da524e63113e4833101bf8d2320b34734ec4aaa25bec04efccc58769c7025e6206be845e6d1e31e4d694c4f8b308
|
||||
sr-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 06ca2e9488b09c7c04da6aa1c76d21d9a8d46b76e6aa9de90fdd0fce5a631b480e17f117b91a40078b860187c1f73a826a990307e6274964b3c56a48a86d6d83
|
||||
vrf-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 148beca7e06f7af6b57afaede17362acfc6ffe64a341274428daec2673391023156cd7ab6b592e06b7db0730a03087daf1db0b2cca53a8003b4320808167ac07832d70afe11d94053a5e4797bdda84e0648d36cea531f6106fe7959a47bcc20d
|
||||
sr-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 746869732069732061206d657373616765 04702b7b88ae806032fb95a8d8e9ad49dda9cc0750e75b44ee5693b0869be64108454fc72fc7344aa32663f369c6bc6a916a0b82910ad6c56ef4a15d25ce1b83
|
||||
vrf-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 746869732069732061206d657373616765 de4cb325ffb4c4b4f71c2992dddc16822614ab8095e30c5abe22b125ac48011075ac32720223d70f2b89b8fa95f94851dd14f14bf1baca89431895f4cf12fd0ef6176912c3d8a5d526fe33adc0dac19a974d3205eba3f9415e4e2e05d554e807
|
||||
sr-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c 3afa41b7c10ae063c807fd2cbe8eaf63a25bd8a3af26a1f6685b0896190f5b481a29aa6ab2a2560ebdb3792739aa609c8cf183a77b3d9c81bc8be8c716916e8c
|
||||
vrf-sig 741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63 070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c636a71787f868d949ba2a9b0b7bec5ccd3dae1e8eff6020910171e252c333a41484f565d646b727980878e959ca3aab1b8bfc6cdd4dbe2e9f0f7030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8040b121920272e353c434a51585f666d747b828990979ea5acb3bac1c8cfd6dde4ebf2f9050c131a21282f363d444b525960676e757c838a91989fa6adb4bbc2c9d0d7dee5ecf3fa060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef501080f161d242b323940474e555c ccda5008c43516b79733d6d8eb3634f0450d1b9ccfca0b205420dd78bcb32d665bb235b82980d7913df4bc52d257a08d4b4affc3273e8f10dc9840561a5be7003ba4937bed0d3e124dfe2047f11b91422c7578ac727904f53402bec72d44b00e
|
||||
Reference in new issue
Block a user