Contract Overview
Balance:
0 AVAX
My Name Tag:
Not Available
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x51cf68ce918cae4574ecebc3e4a75e3a5ffa90b19b72c13238936b562f216f01 | 0x60806040 | 6997387 | 76 days 12 hrs ago | 0x209484169c126f69db7c83df8d7cd0cb3db22519 | IN | Create: TreeUpdateVerifier | 0 AVAX | 0.217419975 |
[ Download CSV Export ]
Contract Name:
TreeUpdateVerifier
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at testnet.snowtrace.io on 2022-04-14 */ // TreeUpdateVerifier.sol Flattened /* Avacash.Finance: Privacy-focused Investments in Avalanche Visit https://avacash.finance Check Audits in https://docs.avacash.finance/ V.1.1 █████╗ ██╗ ██╗ █████╗ ██████╗ █████╗ ███████╗██╗ ██╗ ██╔══██╗██║ ██║██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██║ ███████║██║ ██║███████║██║ ███████║███████╗███████║ ██╔══██║╚██╗ ██╔╝██╔══██║██║ ██╔══██║╚════██║██╔══██║ ██║ ██║ ╚████╔╝ ██║ ██║╚██████╗██║ ██║███████║██║ ██║ ╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ███████╗██╗███╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗ ██╔════╝██║████╗ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝ █████╗ ██║██╔██╗ ██║███████║██╔██╗ ██║██║ █████╗ ██╔══╝ ██║██║╚██╗██║██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║██║ ╚████║██║ ██║██║ ╚████║╚██████╗███████╗ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝ */ // File: contracts/verifiers/TreeUpdateVerifier.sol // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; library Pairing { uint256 constant PRIME_Q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; struct G1Point { uint256 X; uint256 Y; } // Encoding of field elements is: X[0] * z + X[1] struct G2Point { uint256[2] X; uint256[2] Y; } /* * @return The negation of p, i.e. p.plus(p.negate()) should be zero */ function negate(G1Point memory p) internal pure returns (G1Point memory) { // The prime q in the base field F_q for G1 if (p.X == 0 && p.Y == 0) { return G1Point(0, 0); } else { return G1Point(p.X, PRIME_Q - (p.Y % PRIME_Q)); } } /* * @return r the sum of two points of G1 */ function plus( G1Point memory p1, G1Point memory p2 ) internal view returns (G1Point memory r) { uint256[4] memory input = [ p1.X, p1.Y, p2.X, p2.Y ]; bool success; // solium-disable-next-line security/no-inline-assembly assembly { success := staticcall(sub(gas(), 2000), 6, input, 0xc0, r, 0x60) // Use "invalid" to make gas estimation work switch success case 0 { invalid() } } require(success, "pairing-add-failed"); } /* * @return r the product of a point on G1 and a scalar, i.e. * p == p.scalarMul(1) and p.plus(p) == p.scalarMul(2) for all * points p. */ function scalarMul(G1Point memory p, uint256 s) internal view returns (G1Point memory r) { uint256[3] memory input = [p.X, p.Y, s]; bool success; // solium-disable-next-line security/no-inline-assembly assembly { success := staticcall(sub(gas(), 2000), 7, input, 0x80, r, 0x60) // Use "invalid" to make gas estimation work switch success case 0 { invalid() } } require(success, "pairing-mul-failed"); } /* @return The result of computing the pairing check * e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1 * For example, * pairing([P1(), P1().negate()], [P2(), P2()]) should return true. */ function pairing( G1Point memory a1, G2Point memory a2, G1Point memory b1, G2Point memory b2, G1Point memory c1, G2Point memory c2, G1Point memory d1, G2Point memory d2 ) internal view returns (bool) { uint256[24] memory input = [ a1.X, a1.Y, a2.X[0], a2.X[1], a2.Y[0], a2.Y[1], b1.X, b1.Y, b2.X[0], b2.X[1], b2.Y[0], b2.Y[1], c1.X, c1.Y, c2.X[0], c2.X[1], c2.Y[0], c2.Y[1], d1.X, d1.Y, d2.X[0], d2.X[1], d2.Y[0], d2.Y[1] ]; uint256[1] memory out; bool success; // solium-disable-next-line security/no-inline-assembly assembly { success := staticcall(sub(gas(), 2000), 8, input, mul(24, 0x20), out, 0x20) // Use "invalid" to make gas estimation work switch success case 0 { invalid() } } require(success, "pairing-opcode-failed"); return out[0] != 0; } } contract TreeUpdateVerifier { uint256 constant SNARK_SCALAR_FIELD = 21888242871839275222246405745257275088548364400416034343698204186575808495617; uint256 constant PRIME_Q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; using Pairing for *; struct VerifyingKey { Pairing.G1Point alfa1; Pairing.G2Point beta2; Pairing.G2Point gamma2; Pairing.G2Point delta2; Pairing.G1Point[5] IC; } function verifyingKey() internal pure returns (VerifyingKey memory vk) { vk.alfa1 = Pairing.G1Point(uint256(3664066767948966626721593074410523504750081653020983005319283739651830239658), uint256(5721214620732995756499852381736936016024932670933331588236004969175006037996)); vk.beta2 = Pairing.G2Point([uint256(3790215625843812961978911652770592932007517856922747978527926706514217434695), uint256(1740235995081792065855274144390422820118184965104548996991755866617053974967)], [uint256(6165988665974246541084808240629148405805368452349434517299207934174510397449), uint256(16034017485072495648726603091509033961790552241947133696703251815831385124340)]); vk.gamma2 = Pairing.G2Point([uint256(6136503651572829468070415592681731486750345331784722290168198207750471503511), uint256(17155573750315003615285937756005190696467896828984436200373036720127167376579)], [uint256(20271177287287788482139429136125975170988312925163808612462749447029949724355), uint256(2807311044090903086908579792203534180982214587181893041516830197719100999668)]); vk.delta2 = Pairing.G2Point([uint256(4267977840077790175628097397628429921136841017304043286835271366026140129833), uint256(21186561435195000282771141635546250843045512930682178345965012031733568307304)], [uint256(18448509423891788285213538599531121667089515773749017310735470654177768947257), uint256(13824035851606331611877613768498505548716994037964734269023290397675282690772)]); vk.IC[0] = Pairing.G1Point(uint256(2003337398852492813540461712262313294207108051326299817043310484224564974696), uint256(16045453964494737888473539609875214502702372895181553892784236590596004222805)); vk.IC[1] = Pairing.G1Point(uint256(14075532166274610130680482840912460899262398324138646377332486692472310860950), uint256(3685672928591896718507683078712569831861965070288470611593509945932511268628)); vk.IC[2] = Pairing.G1Point(uint256(17847036921708597439717366338586413452058371644164967868446945723191565493446), uint256(15227387043300197630097555025840859960079855561502244581701683050431414467068)); vk.IC[3] = Pairing.G1Point(uint256(21351109994044319193672897395450272255771733858986935168891886948583996722762), uint256(12911322091038947302662750665759776720041421384888809834389321460975681473245)); vk.IC[4] = Pairing.G1Point(uint256(15373563149705882573463517025165153708909109884526707025394743272369789946278), uint256(339578758580338369632185682059761985787435721402065500473097245416867760606)); } /* * @returns Whether the proof is valid given the hardcoded verifying key * above and the public inputs */ function verifyProof( bytes memory proof, uint256[4] memory input ) public view returns (bool) { uint256[8] memory p = abi.decode(proof, (uint256[8])); for (uint8 i = 0; i < p.length; i++) { // Make sure that each element in the proof is less than the prime q require(p[i] < PRIME_Q, "verifier-proof-element-gte-prime-q"); } Pairing.G1Point memory proofA = Pairing.G1Point(p[0], p[1]); Pairing.G2Point memory proofB = Pairing.G2Point([p[2], p[3]], [p[4], p[5]]); Pairing.G1Point memory proofC = Pairing.G1Point(p[6], p[7]); VerifyingKey memory vk = verifyingKey(); // Compute the linear combination vkX Pairing.G1Point memory vkX = vk.IC[0]; for (uint256 i = 0; i < input.length; i++) { // Make sure that every input is less than the snark scalar field require(input[i] < SNARK_SCALAR_FIELD, "verifier-input-gte-snark-scalar-field"); vkX = Pairing.plus(vkX, Pairing.scalarMul(vk.IC[i + 1], input[i])); } return Pairing.pairing( Pairing.negate(proofA), proofB, vk.alfa1, vk.beta2, vkX, vk.gamma2, proofC, vk.delta2 ); } }
[{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[4]","name":"input","type":"uint256[4]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061108d806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636bf062b214610030575b600080fd5b61012a600480360360a081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080608001906004806020026040519081016040528092919082600460200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610142565b60405180821515815260200191505060405180910390f35b600061014c610e88565b8380602001905161010081101561016257600080fd5b8101908091905050905060005b60088160ff161015610213577f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828260ff16600881106101ab57fe5b602002015110610206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806110366022913960400191505060405180910390fd5b808060010191505061016f565b5061021c610eab565b60405180604001604052808360006008811061023457fe5b602002015181526020018360016008811061024b57fe5b6020020151815250905061025d610ec5565b604051806040016040528060405180604001604052808660026008811061028057fe5b602002015181526020018660036008811061029757fe5b602002015181525081526020016040518060400160405280866004600881106102bc57fe5b60200201518152602001866005600881106102d357fe5b602002015181525081525090506102e8610eab565b60405180604001604052808560066008811061030057fe5b602002015181526020018560076008811061031757fe5b60200201518152509050610329610eeb565b610331610467565b905061033b610eab565b816080015160006005811061034c57fe5b6020020151905060005b6004811015610430577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000189826004811061038c57fe5b6020020151106103e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806110116025913960400191505060405180910390fd5b6104218261041c8560800151600185016005811061040157fe5b60200201518c856004811061041257fe5b6020020151610943565b610a16565b91508080600101915050610356565b5061045961043d86610af7565b8584600001518560200151858760400151898960600151610baa565b965050505050505092915050565b61046f610eeb565b60405180604001604052807f0819c9cdec0beb660b42630952fd96924a317ad1dd75446cb8cd093749c4d1aa81526020017f0ca617bc9b339d016fb98964de29529548a766671669ca18b7f099be11bfc7ec8152508160000181905250604051806040016040528060405180604001604052807f08612f9f1e3cbfaeeb7ea2f98398eb5367fb4dd906ba422a746d4714a0147e4781526020017f03d8f04c90e8abde5c8625f62c12ca942fa74c73b4385cb5672bbbf83db011b7815250815260200160405180604001604052807f0da1d36ed95875a1c954c0b9ba769d67f48add362cfe3aa3d73933230547380981526020017f2372eeaac233fa1b3d20937228342e1be6278e3a62bd10b4346800312623adf48152508152508160200181905250604051806040016040528060405180604001604052807f0d912352e19cb8357612fd1059689ebbceac1c4477ec2db33d58cfe37b754e9781526020017f25edb5ecbb7e9f1cd7654d2ea08560329635eb74d41722ebee452cc49d9f2cc3815250815260200160405180604001604052807f2cd1146ac1bfa02ef9281c61ef9a0c0fa489282480b02a378bab967fcb17f6c381526020017f0634e1b9ea95b84fa7dcf3ef18e3e073af920de48d57bb2958692312be8ac7f48152508152508160400181905250604051806040016040528060405180604001604052807f096f97008ddc387c470d7fe44fe25a57200e98667f1ac0802bde00a6051d1a2981526020017f2ed72b37df989864434f1f0d58660312f18bc25219f195f7f728d773c8f30068815250815260200160405180604001604052807f28c97c7e42da40d1bf8698607256b995bcb0370578487c0c63c4bc600cd4be3981526020017f1e90208414bd7c0b5a9f71f5e0bb2872677fda0d8bd8c561f7441b511ceef2d4815250815250816060018190525060405180604001604052807f046dd94a046b063e5b71e76a74ac0b48f947bde400fe328ede8a4257aefad46881526020017f237967b55b5475e8933f21467a3084ae3627daac1f88f1325d053b47a8c79755815250816080015160006005811061078157fe5b602002018190525060405180604001604052807f1f1e7808da7b5314f7dc4b7b34b30e17277efbf9ad7f6a03884111f9dc420c9681526020017f08260456f62843016af3306ffbc39f07241f914d8d941bcc596ee862de814f1481525081608001516001600581106107ef57fe5b602002018190525060405180604001604052807f2775109f37291043e3045834ebd24d328c599c3e71d3b1fb8f1ee726a6d424c681526020017f21aa6548cc8fe0d7a126b1cd42aeff2e20879540f13940bf1c2a135bda16f9fc815250816080015160026005811061085d57fe5b602002018190525060405180604001604052807f2f344ccd239deedddff0352bc86c40270106e2ccad9206f2ceec28147c350e4a81526020017f1c8b8ca122c90f2e6c82af29609881195d1c3a454e1b1030b662134309d90add81525081608001516003600581106108cb57fe5b602002018190525060405180604001604052807f21fd20ddedbfa42c366fb99573a916bc0c730fa303e6702d486ef679f53949a681526020017ec031dc331ee09802c7851beee53a2de5da55e725e333772a2513fe89b409de815250816080015160046005811061093857fe5b602002018190525090565b61094b610eab565b610953610f38565b60405180606001604052808560000151815260200185602001518152602001848152509050600060608360808460076107d05a03fa905080600081146109985761099a565bfe5b5080610a0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f70616972696e672d6d756c2d6661696c6564000000000000000000000000000081525060200191505060405180910390fd5b505092915050565b610a1e610eab565b610a26610f5a565b604051806080016040528085600001518152602001856020015181526020018460000151815260200184602001518152509050600060608360c08460066107d05a03fa90508060008114610a7957610a7b565bfe5b5080610aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f70616972696e672d6164642d6661696c6564000000000000000000000000000081525060200191505060405180910390fd5b505092915050565b610aff610eab565b60008260000151148015610b17575060008260200151145b15610b3a5760405180604001604052806000815260200160008152509050610ba5565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015181610b7c57fe5b067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470381525090505b919050565b6000610bb4610f7c565b6040518061030001604052808b6000015181526020018b6020015181526020018a60000151600060028110610be557fe5b602002015181526020018a60000151600160028110610c0057fe5b602002015181526020018a60200151600060028110610c1b57fe5b602002015181526020018a60200151600160028110610c3657fe5b6020020151815260200189600001518152602001896020015181526020018860000151600060028110610c6557fe5b602002015181526020018860000151600160028110610c8057fe5b602002015181526020018860200151600060028110610c9b57fe5b602002015181526020018860200151600160028110610cb657fe5b6020020151815260200187600001518152602001876020015181526020018660000151600060028110610ce557fe5b602002015181526020018660000151600160028110610d0057fe5b602002015181526020018660200151600060028110610d1b57fe5b602002015181526020018660200151600160028110610d3657fe5b6020020151815260200185600001518152602001856020015181526020018460000151600060028110610d6557fe5b602002015181526020018460000151600160028110610d8057fe5b602002015181526020018460200151600060028110610d9b57fe5b602002015181526020018460200151600160028110610db657fe5b60200201518152509050610dc8610f9f565b600060208260206018028560086107d05a03fa90508060008114610deb57610ded565bfe5b5080610e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f70616972696e672d6f70636f64652d6661696c6564000000000000000000000081525060200191505060405180910390fd5b600082600060018110610e7057fe5b60200201511415935050505098975050505050505050565b604051806101000160405280600890602082028036833780820191505090505090565b604051806040016040528060008152602001600081525090565b6040518060400160405280610ed8610fc1565b8152602001610ee5610fc1565b81525090565b6040518060a00160405280610efe610eab565b8152602001610f0b610ec5565b8152602001610f18610ec5565b8152602001610f25610ec5565b8152602001610f32610fe3565b81525090565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060800160405280600490602082028036833780820191505090505090565b604051806103000160405280601890602082028036833780820191505090505090565b6040518060200160405280600190602082028036833780820191505090505090565b6040518060400160405280600290602082028036833780820191505090505090565b6040518060a001604052806005905b610ffa610eab565b815260200190600190039081610ff2579050509056fe76657269666965722d696e7075742d6774652d736e61726b2d7363616c61722d6669656c6476657269666965722d70726f6f662d656c656d656e742d6774652d7072696d652d71a2646970667358221220f937ab1829819f55c15bbb3f178b7f8dd09e6cbdf429a6e39ade780f9ba4afe464736f6c634300060c0033
Deployed ByteCode Sourcemap
5475:4509:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8645:1336;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8757:4;8774:19;;:::i;:::-;8807:5;8796:31;;;;;;;;;;;;;;;;;;;;;;;8774:53;;8843:7;8838:207;8860:8;8856:1;:12;;;8838:207;;;5659:77;8980:1;8982;8980:4;;;;;;;;;;;;;:14;8972:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8870:3;;;;;;;8838:207;;;;9055:29;;:::i;:::-;9087:27;;;;;;;;9103:1;9105;9103:4;;;;;;;;;;;9087:27;;;;9109:1;9111;9109:4;;;;;;;;;;;9087:27;;;9055:59;;9125:29;;:::i;:::-;9157:43;;;;;;;;;;;;;;;;9174:1;9176;9174:4;;;;;;;;;;;9157:43;;;;9180:1;9182;9180:4;;;;;;;;;;;9157:43;;;;;;;;;;;;;;;9188:1;9190;9188:4;;;;;;;;;;;9157:43;;;;9194:1;9196;9194:4;;;;;;;;;;;9157:43;;;;;;9125:75;;9211:29;;:::i;:::-;9243:27;;;;;;;;9259:1;9261;9259:4;;;;;;;;;;;9243:27;;;;9265:1;9267;9265:4;;;;;;;;;;;9243:27;;;9211:59;;9283:22;;:::i;:::-;9308:14;:12;:14::i;:::-;9283:39;;9380:26;;:::i;:::-;9409:2;:5;;;9415:1;9409:8;;;;;;;;;;;9380:37;;9433:9;9428:309;9452:12;9448:1;:16;9428:309;;;5548:77;9573:5;9579:1;9573:8;;;;;;;;;;;:29;9565:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9665:60;9678:3;9683:41;9701:2;:5;;;9711:1;9707;:5;9701:12;;;;;;;;;;;9715:5;9721:1;9715:8;;;;;;;;;;;9683:17;:41::i;:::-;9665:12;:60::i;:::-;9659:66;;9466:3;;;;;;;9428:309;;;;9756:217;9786:22;9801:6;9786:14;:22::i;:::-;9823:6;9844:2;:8;;;9867:2;:8;;;9890:3;9908:2;:9;;;9932:6;9953:2;:9;;;9756:15;:217::i;:::-;9749:224;;;;;;;;8645:1336;;;;:::o;5969:2528::-;6016:22;;:::i;:::-;6062:189;;;;;;;;6086:76;6062:189;;;;6173:76;6062:189;;;6051:2;:8;;:200;;;;6273:368;;;;;;;;;;;;;;;;6298:76;6273:368;;;;6385:76;6273:368;;;;;;;;;;;;;;;6474:76;6273:368;;;;6561:77;6273:368;;;;;;6262:2;:8;;:379;;;;6664:369;;;;;;;;;;;;;;;;6689:76;6664:369;;;;6776:77;6664:369;;;;;;;;;;;;;;;6866:77;6664:369;;;;6954:76;6664:369;;;;;;6652:2;:9;;:381;;;;7056:370;;;;;;;;;;;;;;;;7081:76;7056:370;;;;7168:77;7056:370;;;;;;;;;;;;;;;7258:77;7056:370;;;;7346:77;7056:370;;;;;;7044:2;:9;;:382;;;;7448:190;;;;;;;;7472:76;7448:190;;;;7559:77;7448:190;;;7437:2;:5;;;7443:1;7437:8;;;;;;;;;;:201;;;;7660:190;;;;;;;;7684:77;7660:190;;;;7772:76;7660:190;;;7649:2;:5;;;7655:1;7649:8;;;;;;;;;;:201;;;;7872:191;;;;;;;;7896:77;7872:191;;;;7984:77;7872:191;;;7861:2;:5;;;7867:1;7861:8;;;;;;;;;;:202;;;;8085:191;;;;;;;;8109:77;8085:191;;;;8197:77;8085:191;;;8074:2;:5;;;8080:1;8074:8;;;;;;;;;;:202;;;;8298:189;;;;;;;;8322:77;8298:189;;;;8410:75;8298:189;;;8287:2;:5;;;8293:1;8287:8;;;;;;;;;;:200;;;;5969:2528;:::o;3706:504::-;3777:16;;:::i;:::-;3806:23;;:::i;:::-;:39;;;;;;;;3833:1;:3;;;3806:39;;;;3838:1;:3;;;3806:39;;;;3843:1;3806:39;;;;;3856:12;4029:4;4026:1;4020:4;4013:5;4010:1;4003:4;3996:5;3992:16;3981:53;3970:64;;4113:7;4126:1;4121:20;;;;4106:35;;4121:20;4130:9;4106:35;;4172:7;4164:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3706:504;;;;;;:::o;2932:581::-;3032:16;;:::i;:::-;3061:23;;:::i;:::-;:87;;;;;;;;3102:2;:4;;;3061:87;;;;3108:2;:4;;;3061:87;;;;3127:2;:4;;;3061:87;;;;3133:2;:4;;;3061:87;;;;;3159:12;3332:4;3329:1;3323:4;3316:5;3313:1;3306:4;3299:5;3295:16;3284:53;3273:64;;3416:7;3429:1;3424:20;;;;3409:35;;3424:20;3433:9;3409:35;;3475:7;3467:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:581;;;;;;:::o;2565:296::-;2622:14;;:::i;:::-;2713:1;2706;:3;;;:8;:20;;;;;2725:1;2718;:3;;;:8;2706:20;2702:152;;;2750:13;;;;;;;;2758:1;2750:13;;;;2761:1;2750:13;;;2743:20;;;;2702:152;2803:39;;;;;;;;2811:1;:3;;;2803:39;;;;2185:77;2827:1;:3;;;:13;;;;;;2185:77;2816:25;2803:39;;;2796:46;;2565:296;;;;:::o;4458:1010::-;4729:4;4746:24;;:::i;:::-;:282;;;;;;;;4788:2;:4;;;4746:282;;;;4794:2;:4;;;4746:282;;;;4800:2;:4;;;4805:1;4800:7;;;;;;;;;;;4746:282;;;;4809:2;:4;;;4814:1;4809:7;;;;;;;;;;;4746:282;;;;4818:2;:4;;;4823:1;4818:7;;;;;;;;;;;4746:282;;;;4827:2;:4;;;4832:1;4827:7;;;;;;;;;;;4746:282;;;;4849:2;:4;;;4746:282;;;;4855:2;:4;;;4746:282;;;;4861:2;:4;;;4866:1;4861:7;;;;;;;;;;;4746:282;;;;4870:2;:4;;;4875:1;4870:7;;;;;;;;;;;4746:282;;;;4879:2;:4;;;4884:1;4879:7;;;;;;;;;;;4746:282;;;;4888:2;:4;;;4893:1;4888:7;;;;;;;;;;;4746:282;;;;4910:2;:4;;;4746:282;;;;4916:2;:4;;;4746:282;;;;4922:2;:4;;;4927:1;4922:7;;;;;;;;;;;4746:282;;;;4931:2;:4;;;4936:1;4931:7;;;;;;;;;;;4746:282;;;;4940:2;:4;;;4945:1;4940:7;;;;;;;;;;;4746:282;;;;4949:2;:4;;;4954:1;4949:7;;;;;;;;;;;4746:282;;;;4971:2;:4;;;4746:282;;;;4977:2;:4;;;4746:282;;;;4983:2;:4;;;4988:1;4983:7;;;;;;;;;;;4746:282;;;;4992:2;:4;;;4997:1;4992:7;;;;;;;;;;;4746:282;;;;5001:2;:4;;;5006:1;5001:7;;;;;;;;;;;4746:282;;;;5010:2;:4;;;5015:1;5010:7;;;;;;;;;;;4746:282;;;;;5039:21;;:::i;:::-;5071:12;5255:4;5250:3;5243:4;5239:2;5235:13;5228:5;5225:1;5218:4;5211:5;5207:16;5196:64;5185:75;;5339:7;5352:1;5347:20;;;;5332:35;;5347:20;5356:9;5332:35;;5398:7;5390:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5459:1;5449:3;5453:1;5449:6;;;;;;;;;;;:11;;5442:18;;;;;4458:1010;;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://f937ab1829819f55c15bbb3f178b7f8dd09e6cbdf429a6e39ade780f9ba4afe4
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|