forked from Dshield-xyz/Dshield
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshielded_pool.json
More file actions
1 lines (1 loc) · 9.27 KB
/
Copy pathshielded_pool.json
File metadata and controls
1 lines (1 loc) · 9.27 KB
1
{"noir_version":"1.0.0-beta.9+6abff2f16e1c1314ba30708d1cf032a536de3d19","hash":"4957844198121705744","abi":{"parameters":[{"name":"root","type":{"kind":"field"},"visibility":"public"},{"name":"nullifier_hash","type":{"kind":"field"},"visibility":"public"},{"name":"nullifier","type":{"kind":"field"},"visibility":"private"},{"name":"secret","type":{"kind":"field"},"visibility":"private"},{"name":"path_siblings","type":{"kind":"array","length":20,"type":{"kind":"field"}},"visibility":"private"},{"name":"path_bits","type":{"kind":"array","length":20,"type":{"kind":"field"}},"visibility":"private"}],"return_type":null,"error_types":{}},"bytecode":"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","debug_symbols":"pZjNbttADITfRWcflktyf/oqRRE4iVIYMJzAtQsUQd69UnZGSQ4SAu+Ja0kzXn4iKUGvw+N4f/19dzg9Pf8Zfvx8He7Ph+Px8Pvu+PywvxyeT9PR17fdwJ93l/M4ToeGT+cn1cv+PJ4uw4/T9XjcDX/3x+v7RX9e9qf3eNmfp7NhN4ynxylOhk+H4ziv3nYf6rAuLaoQF8+L3L/qZV0vkqAXi2v6uK5Xj9Br/fT/5Yte1/UxChOIMaY1B9vIIFbyEw11zcHXHWokg6r1lh2IMYcJZ7qJQg4LhWJrDmVjD9mNe8hZ1xxqJ4UNvYSwUAiWbsmhfNzJGlZz2OqGvHRDXa1m0c52EOvsB/HuUpj32VkLkrtv5uYuuu9mDc6KjL52M7b0zhxqXZ2NcWM4aqWBfR4s3zewWGlgcpOBCw3S+g62ZlMlwxjiTQalLAbaa1BuYrDUkdWbDFzZ1O7rd6F2TgUNvU9J6Z4KGrungmrnI2LL4JtjZTON742VzXpYKjKtl7Tm3noovfVQu+vBQnc9mPS+OEl3PWym0f2YkSCLQ9CvA+LX9Gv/cDh/ee0fwlwCu0FaiC3ovJfdYPOc2w0+hamC0hSmg7mF0kKdC2CSTzbzi6NIKxaJTSPaLhNDdMQEXUYs0NcWY2j6KO36GBHhF63poiMm6DJigb626zUgwk9j06kiWtOpI6amV2SrSFfhZ6HpTBBj05kiWtMb8jXAM/hZgQ78HPxcEMHPka+Dn8PPwc/Bz8HPwS+BX0K+CfwS/BL4JfBL4JfAL4FfQr4Z/DL8Mvhl8Mvgl8Evg19Gvhn8MvwK+BXwK+BXwK+AX0G+BfwKqw/8CvhV8KvgV8GvIt8KfhV+Ffwq+FXwq+A3NTMKOCBjCZEL1nQwFr9zkSjPXBT6IHORwAWdBTBFlAtjOzkXACqSqSpc0DkCqkThAlglKhcAK5GdGBMXdI6Fcna3sr1VuFganDSULa50Vja5ssuVba7kbORspGHkbMvsIGcjZyNnI2cjZyMNJ2ens5Ozk7OTs5Ozk7OThpOz0zmRcyLnRM6JnOcGs/lF/+/+fNjfH0d8Y3m6nh4+fXK5/HvhGX6UeTk/P4yP1/M4z+n3c9Pk/g8=","file_map":{"50":{"source":"use dep::poseidon::poseidon2::Poseidon2;\n\nglobal TREE_DEPTH: u32 = 20;\n\nfn hash2(a: Field, b: Field) -> Field {\n Poseidon2::hash([a, b], 2)\n}\n\nfn constrain_bit(bit: Field) {\n assert(bit * (1 - bit) == 0);\n}\n\nfn compute_root(leaf: Field, path_siblings: [Field; TREE_DEPTH], path_bits: [Field; TREE_DEPTH]) -> Field {\n let mut cur = leaf;\n for i in 0..TREE_DEPTH {\n let sib = path_siblings[i];\n let bit = path_bits[i];\n constrain_bit(bit);\n let left = bit == 0;\n if left {\n cur = hash2(cur, sib);\n } else {\n cur = hash2(sib, cur);\n }\n }\n cur\n}\n\npub fn main(\n root: pub Field,\n nullifier_hash: pub Field,\n nullifier: Field,\n secret: Field,\n path_siblings: [Field; TREE_DEPTH],\n path_bits: [Field; TREE_DEPTH],\n) {\n let leaf = hash2(nullifier, secret);\n\n let nf = hash2(nullifier, 0);\n assert(nf == nullifier_hash);\n\n let computed_root = compute_root(leaf, path_siblings, path_bits);\n assert(computed_root == root);\n}\n","path":"/home/caxton/work/Dshield/circuits/shielded_pool/src/main.nr"},"58":{"source":"use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n","path":"/home/caxton/nargo/github.com/noir-lang/poseidon/v0.2.0/src/poseidon2.nr"}},"names":["main"],"brillig_names":["directive_invert"]}