Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 20150510 | 625 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SAGVerifier
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-06-22
*/
// SPDX-License-Identifier: MIT
// Developed by Cypher Lab (https://www.cypherlab.org/)
// see https://github.com/Cypher-Laboratory/evm-verifier
pragma solidity ^0.8.20;
contract SAGVerifier {
// Field size
uint256 constant pp =
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F;
// Base point (generator) G
uint256 constant Gx =
0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798;
uint256 constant Gy =
0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8;
// Order of G
uint256 constant nn =
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141;
constructor() {}
/**
* @dev Verifies a non-linkable ring signature generated with the evmCompatibilty parameters
*
* @param message - keccack256 message hash
* @param ring - ring of public keys [pkX0, pkY0, pkX1, pkY1, ..., pkXn, pkYn]
* @param responses - ring of responses [r0, r1, ..., rn]
* @param c - signature seed
*
* @return true if the signature is valid, false otherwise
*/
function verifyRingSignature(
uint256 message,
uint256[] memory ring,
uint256[] memory responses,
uint256 c // signature seed
) public pure returns (bool) {
// check if ring.length is even
require(
ring.length > 0 && ring.length % 2 == 0,
"Ring length must be even and greater than 1"
);
// check if responses.length = ring.length / 2
require(
responses.length == ring.length / 2,
"Responses length must be equal to ring length / 2"
);
// compute c1' (message is added to the hash)
uint256 cp = computeC1(message, responses[0], c, ring[0], ring[1]);
uint256 j = 2;
// compute c2', c3', ..., cn', c0'
for (uint256 i = 1; i < responses.length; i++) {
cp = computeC(responses[i], cp, ring[j], ring[j + 1]);
j += 2;
}
// check if c0' == c0
return (c == cp);
}
/**
* @dev Computes a ci value (i != 1)
*
* @param response - previous response
* @param previousC - previous c value
* @param xPreviousPubKey - previous public key x coordinate
* @param yPreviousPubKey - previous public key y coordinate
*
* @return ci value
*/
function computeC(
uint256 response,
uint256 previousC,
uint256 xPreviousPubKey,
uint256 yPreviousPubKey
) internal pure returns (uint256) {
// check if [ring[0], ring[1]] is on the curve
isOnSECP25K1(xPreviousPubKey, yPreviousPubKey);
// compute [rG + previousPubKey * c] by tweaking ecRecover
address computedPubKey = sbmul_add_smul(
response,
xPreviousPubKey,
yPreviousPubKey,
previousC
);
// keccack256(message, [rG + previousPubKey * c])
bytes memory data = abi.encode(uint256(uint160(computedPubKey)));
return uint256(keccak256(data));
}
/**
* @dev Computes the c1 value
*
* @param message - keccack256 message hash
* @param response - response[0]
* @param previousC - previous c value
* @param xPreviousPubKey - previous public key x coordinate
* @param yPreviousPubKey - previous public key y coordinate
*
* @return c1 value
*/
function computeC1(
uint256 message,
uint256 response,
uint256 previousC,
uint256 xPreviousPubKey,
uint256 yPreviousPubKey
) internal pure returns (uint256) {
// check if [ring[0], ring[1]] is on the curve
isOnSECP25K1(xPreviousPubKey, yPreviousPubKey);
// compute [rG + previousPubKey * c] by tweaking ecRecover
address computedPubKey = sbmul_add_smul(
response,
xPreviousPubKey,
yPreviousPubKey,
previousC
);
// keccack256(message, [rG + previousPubKey * c])
bytes memory data = abi.encode(
message,
uint256(uint160(computedPubKey))
);
return uint256(keccak256(data));
}
/**
* @dev Computs response * G + challenge * (x, y) by tweaking ecRecover (response and challenge are scalars)
*
* @param response - response value
* @param x - previousPubKey.x
* @param y - previousPubKey.y
* @param challenge - previousC value
*
* @return computedPubKey - the ethereum address derived from the point [response * G + challenge * (x, y)]
*/
function sbmul_add_smul(
uint256 response,
uint256 x,
uint256 y,
uint256 challenge
) internal pure returns (address) {
response = mulmod((nn - response) % nn, x, nn);
return
ecrecover(
bytes32(response), // 'msghash'
y % 2 != 0 ? 28 : 27, // v
bytes32(x), // r
bytes32(mulmod(challenge, x, nn)) // s
);
}
/**
* @dev Computes (value * mod) % mod
*
* @param value - value to be modulated
* @param mod - mod value
*
* @return result - the result of the modular operation
*/
function modulo(
uint256 value,
uint256 mod
) internal pure returns (uint256) {
uint256 result = value % mod;
if (result < 0) {
result += mod;
}
return result;
}
/**
* @dev Checks if a point is on the secp256k1 curve
*
* Revert if the point is not on the curve
*
* @param x - point x coordinate
* @param y - point y coordinate
*/
function isOnSECP25K1(uint256 x, uint256 y) internal pure {
if (
mulmod(y, y, pp) != addmod(mulmod(x, mulmod(x, x, pp), pp), 7, pp)
) {
revert("Point is not on curve");
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"message","type":"uint256"},{"internalType":"uint256[]","name":"ring","type":"uint256[]"},{"internalType":"uint256[]","name":"responses","type":"uint256[]"},{"internalType":"uint256","name":"c","type":"uint256"}],"name":"verifyRingSignature","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50610bff806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806332503eb114610030575b600080fd5b61004a600480360381019061004591906106e7565b610060565b60405161005791906107a1565b60405180910390f35b600080845111801561007f575060006002855161007d91906107eb565b145b6100be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b59061089f565b60405180910390fd5b600284516100cc91906108ee565b83511461010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010590610991565b60405180910390fd5b600061016e8685600081518110610128576101276109b1565b5b60200260200101518588600081518110610145576101446109b1565b5b602002602001015189600181518110610161576101606109b1565b5b6020026020010151610220565b90506000600290506000600190505b8551811015610210576101ec86828151811061019c5761019b6109b1565b5b6020026020010151848985815181106101b8576101b76109b1565b5b60200260200101518a6001876101ce91906109e0565b815181106101df576101de6109b1565b5b6020026020010151610290565b92506002826101fb91906109e0565b9150808061020890610a14565b91505061017d565b5081841492505050949350505050565b600061022c83836102fd565b600061023a86858588610408565b90506000878273ffffffffffffffffffffffffffffffffffffffff16604051602001610267929190610a6b565b6040516020818303038152906040529050808051906020012060001c9250505095945050505050565b600061029c83836102fd565b60006102aa86858588610408565b905060008173ffffffffffffffffffffffffffffffffffffffff166040516020016102d59190610a94565b6040516020818303038152906040529050808051906020012060001c92505050949350505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061032c5761032b6107bc565b5b60077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061035d5761035c6107bc565b5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061038c5761038b6107bc565b5b8586098509087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f806103c1576103c06107bc565b5b82830914610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610afb565b60405180910390fd5b5050565b60007ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036414180610439576104386107bc565b5b847ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141877ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd03641416104879190610b1b565b61049191906107eb565b09945060018560001b60006002866104a991906107eb565b036104b557601b6104b8565b601c5b8660001b7ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141806104eb576104ea6107bc565b5b88870960001b6040516000815260200160405260405161050e9493929190610b84565b6020604051602081039080840390855afa158015610530573d6000803e3d6000fd5b505050602060405103519050949350505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61056b81610558565b811461057657600080fd5b50565b60008135905061058881610562565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105dc82610593565b810181811067ffffffffffffffff821117156105fb576105fa6105a4565b5b80604052505050565b600061060e610544565b905061061a82826105d3565b919050565b600067ffffffffffffffff82111561063a576106396105a4565b5b602082029050602081019050919050565b600080fd5b600061066361065e8461061f565b610604565b905080838252602082019050602084028301858111156106865761068561064b565b5b835b818110156106af578061069b8882610579565b845260208401935050602081019050610688565b5050509392505050565b600082601f8301126106ce576106cd61058e565b5b81356106de848260208601610650565b91505092915050565b600080600080608085870312156107015761070061054e565b5b600061070f87828801610579565b945050602085013567ffffffffffffffff8111156107305761072f610553565b5b61073c878288016106b9565b935050604085013567ffffffffffffffff81111561075d5761075c610553565b5b610769878288016106b9565b925050606061077a87828801610579565b91505092959194509250565b60008115159050919050565b61079b81610786565b82525050565b60006020820190506107b66000830184610792565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006107f682610558565b915061080183610558565b925082610811576108106107bc565b5b828206905092915050565b600082825260208201905092915050565b7f52696e67206c656e677468206d757374206265206576656e20616e642067726560008201527f61746572207468616e2031000000000000000000000000000000000000000000602082015250565b6000610889602b8361081c565b91506108948261082d565b604082019050919050565b600060208201905081810360008301526108b88161087c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f982610558565b915061090483610558565b925082610914576109136107bc565b5b828204905092915050565b7f526573706f6e736573206c656e677468206d75737420626520657175616c207460008201527f6f2072696e67206c656e677468202f2032000000000000000000000000000000602082015250565b600061097b60318361081c565b91506109868261091f565b604082019050919050565b600060208201905081810360008301526109aa8161096e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109eb82610558565b91506109f683610558565b9250828201905080821115610a0e57610a0d6108bf565b5b92915050565b6000610a1f82610558565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a5157610a506108bf565b5b600182019050919050565b610a6581610558565b82525050565b6000604082019050610a806000830185610a5c565b610a8d6020830184610a5c565b9392505050565b6000602082019050610aa96000830184610a5c565b92915050565b7f506f696e74206973206e6f74206f6e2063757276650000000000000000000000600082015250565b6000610ae560158361081c565b9150610af082610aaf565b602082019050919050565b60006020820190508181036000830152610b1481610ad8565b9050919050565b6000610b2682610558565b9150610b3183610558565b9250828203905081811115610b4957610b486108bf565b5b92915050565b6000819050919050565b610b6281610b4f565b82525050565b600060ff82169050919050565b610b7e81610b68565b82525050565b6000608082019050610b996000830187610b59565b610ba66020830186610b75565b610bb36040830185610b59565b610bc06060830184610b59565b9594505050505056fea264697066735822122094446db24d3289e2083dc50fd7b3a28a991c3dc1ed4882663ab6c1ed68f3993364736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806332503eb114610030575b600080fd5b61004a600480360381019061004591906106e7565b610060565b60405161005791906107a1565b60405180910390f35b600080845111801561007f575060006002855161007d91906107eb565b145b6100be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b59061089f565b60405180910390fd5b600284516100cc91906108ee565b83511461010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010590610991565b60405180910390fd5b600061016e8685600081518110610128576101276109b1565b5b60200260200101518588600081518110610145576101446109b1565b5b602002602001015189600181518110610161576101606109b1565b5b6020026020010151610220565b90506000600290506000600190505b8551811015610210576101ec86828151811061019c5761019b6109b1565b5b6020026020010151848985815181106101b8576101b76109b1565b5b60200260200101518a6001876101ce91906109e0565b815181106101df576101de6109b1565b5b6020026020010151610290565b92506002826101fb91906109e0565b9150808061020890610a14565b91505061017d565b5081841492505050949350505050565b600061022c83836102fd565b600061023a86858588610408565b90506000878273ffffffffffffffffffffffffffffffffffffffff16604051602001610267929190610a6b565b6040516020818303038152906040529050808051906020012060001c9250505095945050505050565b600061029c83836102fd565b60006102aa86858588610408565b905060008173ffffffffffffffffffffffffffffffffffffffff166040516020016102d59190610a94565b6040516020818303038152906040529050808051906020012060001c92505050949350505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061032c5761032b6107bc565b5b60077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061035d5761035c6107bc565b5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8061038c5761038b6107bc565b5b8586098509087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f806103c1576103c06107bc565b5b82830914610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610afb565b60405180910390fd5b5050565b60007ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036414180610439576104386107bc565b5b847ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141877ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd03641416104879190610b1b565b61049191906107eb565b09945060018560001b60006002866104a991906107eb565b036104b557601b6104b8565b601c5b8660001b7ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141806104eb576104ea6107bc565b5b88870960001b6040516000815260200160405260405161050e9493929190610b84565b6020604051602081039080840390855afa158015610530573d6000803e3d6000fd5b505050602060405103519050949350505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61056b81610558565b811461057657600080fd5b50565b60008135905061058881610562565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105dc82610593565b810181811067ffffffffffffffff821117156105fb576105fa6105a4565b5b80604052505050565b600061060e610544565b905061061a82826105d3565b919050565b600067ffffffffffffffff82111561063a576106396105a4565b5b602082029050602081019050919050565b600080fd5b600061066361065e8461061f565b610604565b905080838252602082019050602084028301858111156106865761068561064b565b5b835b818110156106af578061069b8882610579565b845260208401935050602081019050610688565b5050509392505050565b600082601f8301126106ce576106cd61058e565b5b81356106de848260208601610650565b91505092915050565b600080600080608085870312156107015761070061054e565b5b600061070f87828801610579565b945050602085013567ffffffffffffffff8111156107305761072f610553565b5b61073c878288016106b9565b935050604085013567ffffffffffffffff81111561075d5761075c610553565b5b610769878288016106b9565b925050606061077a87828801610579565b91505092959194509250565b60008115159050919050565b61079b81610786565b82525050565b60006020820190506107b66000830184610792565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006107f682610558565b915061080183610558565b925082610811576108106107bc565b5b828206905092915050565b600082825260208201905092915050565b7f52696e67206c656e677468206d757374206265206576656e20616e642067726560008201527f61746572207468616e2031000000000000000000000000000000000000000000602082015250565b6000610889602b8361081c565b91506108948261082d565b604082019050919050565b600060208201905081810360008301526108b88161087c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f982610558565b915061090483610558565b925082610914576109136107bc565b5b828204905092915050565b7f526573706f6e736573206c656e677468206d75737420626520657175616c207460008201527f6f2072696e67206c656e677468202f2032000000000000000000000000000000602082015250565b600061097b60318361081c565b91506109868261091f565b604082019050919050565b600060208201905081810360008301526109aa8161096e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109eb82610558565b91506109f683610558565b9250828201905080821115610a0e57610a0d6108bf565b5b92915050565b6000610a1f82610558565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a5157610a506108bf565b5b600182019050919050565b610a6581610558565b82525050565b6000604082019050610a806000830185610a5c565b610a8d6020830184610a5c565b9392505050565b6000602082019050610aa96000830184610a5c565b92915050565b7f506f696e74206973206e6f74206f6e2063757276650000000000000000000000600082015250565b6000610ae560158361081c565b9150610af082610aaf565b602082019050919050565b60006020820190508181036000830152610b1481610ad8565b9050919050565b6000610b2682610558565b9150610b3183610558565b9250828203905081811115610b4957610b486108bf565b5b92915050565b6000819050919050565b610b6281610b4f565b82525050565b600060ff82169050919050565b610b7e81610b68565b82525050565b6000608082019050610b996000830187610b59565b610ba66020830186610b75565b610bb36040830185610b59565b610bc06060830184610b59565b9594505050505056fea264697066735822122094446db24d3289e2083dc50fd7b3a28a991c3dc1ed4882663ab6c1ed68f3993364736f6c63430008140033
Deployed Bytecode Sourcemap
182:6005:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1153:1017;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1343:4;1439:1;1425:4;:11;:15;:39;;;;;1463:1;1458;1444:4;:11;:15;;;;:::i;:::-;:20;1425:39;1403:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;1660:1;1646:4;:11;:15;;;;:::i;:::-;1626:9;:16;:35;1604:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;1806:10;1819:53;1829:7;1838:9;1848:1;1838:12;;;;;;;;:::i;:::-;;;;;;;;1852:1;1855:4;1860:1;1855:7;;;;;;;;:::i;:::-;;;;;;;;1864:4;1869:1;1864:7;;;;;;;;:::i;:::-;;;;;;;;1819:9;:53::i;:::-;1806:66;;1885:9;1897:1;1885:13;;1960:9;1972:1;1960:13;;1955:148;1979:9;:16;1975:1;:20;1955:148;;;2022:48;2031:9;2041:1;2031:12;;;;;;;;:::i;:::-;;;;;;;;2045:2;2049:4;2054:1;2049:7;;;;;;;;:::i;:::-;;;;;;;;2058:4;2067:1;2063;:5;;;;:::i;:::-;2058:11;;;;;;;;:::i;:::-;;;;;;;;2022:8;:48::i;:::-;2017:53;;2090:1;2085:6;;;;;:::i;:::-;;;1997:3;;;;;:::i;:::-;;;;1955:148;;;;2159:2;2154:1;:7;2146:16;;;;1153:1017;;;;;;:::o;3583:790::-;3781:7;3857:46;3870:15;3887;3857:12;:46::i;:::-;3982:22;4007:132;4036:8;4059:15;4089;4119:9;4007:14;:132::i;:::-;3982:157;;4211:17;4256:7;4294:14;4278:32;;4231:90;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4211:110;;4359:4;4349:15;;;;;;4341:24;;4334:31;;;;3583:790;;;;;;;:::o;2499:719::-;2670:7;2746:46;2759:15;2776;2746:12;:46::i;:::-;2873:22;2898:132;2927:8;2950:15;2980;3010:9;2898:14;:132::i;:::-;2873:157;;3102:17;3149:14;3133:32;;3122:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;3102:64;;3204:4;3194:15;;;;;;3186:24;;3179:31;;;;2499:719;;;;;;:::o;5954:230::-;260:66;6061:46;;;;;:::i;:::-;;6101:1;260:66;6068:31;;;;;:::i;:::-;;260:66;6078:16;;;;;:::i;:::-;;6088:1;6085;6078:16;6075:1;6068:31;6061:46;260:66;6041:16;;;;;:::i;:::-;;6051:1;6048;6041:16;:66;6023:154;;6134:31;;;;;;;;;;:::i;:::-;;;;;;;;6023:154;5954:230;;:::o;4798:474::-;4947:7;628:66;4988:35;;;;;:::i;:::-;;5017:1;628:66;5001:8;628:66;4996:13;;;;:::i;:::-;4995:20;;;;:::i;:::-;4988:35;4977:46;;5056:208;5092:8;5084:17;;5142:1;5137;5133;:5;;;;:::i;:::-;:10;:20;;5151:2;5133:20;;;5146:2;5133:20;5185:1;5177:10;;628:66;5219:24;;;;;:::i;:::-;;5237:1;5226:9;5219:24;5211:33;;5056:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5036:228;;4798:474;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:311::-;1606:4;1696:18;1688:6;1685:30;1682:56;;;1718:18;;:::i;:::-;1682:56;1768:4;1760:6;1756:17;1748:25;;1828:4;1822;1818:15;1810:23;;1529:311;;;:::o;1846:117::-;1955:1;1952;1945:12;1986:710;2082:5;2107:81;2123:64;2180:6;2123:64;:::i;:::-;2107:81;:::i;:::-;2098:90;;2208:5;2237:6;2230:5;2223:21;2271:4;2264:5;2260:16;2253:23;;2324:4;2316:6;2312:17;2304:6;2300:30;2353:3;2345:6;2342:15;2339:122;;;2372:79;;:::i;:::-;2339:122;2487:6;2470:220;2504:6;2499:3;2496:15;2470:220;;;2579:3;2608:37;2641:3;2629:10;2608:37;:::i;:::-;2603:3;2596:50;2675:4;2670:3;2666:14;2659:21;;2546:144;2530:4;2525:3;2521:14;2514:21;;2470:220;;;2474:21;2088:608;;1986:710;;;;;:::o;2719:370::-;2790:5;2839:3;2832:4;2824:6;2820:17;2816:27;2806:122;;2847:79;;:::i;:::-;2806:122;2964:6;2951:20;2989:94;3079:3;3071:6;3064:4;3056:6;3052:17;2989:94;:::i;:::-;2980:103;;2796:293;2719:370;;;;:::o;3095:1185::-;3231:6;3239;3247;3255;3304:3;3292:9;3283:7;3279:23;3275:33;3272:120;;;3311:79;;:::i;:::-;3272:120;3431:1;3456:53;3501:7;3492:6;3481:9;3477:22;3456:53;:::i;:::-;3446:63;;3402:117;3586:2;3575:9;3571:18;3558:32;3617:18;3609:6;3606:30;3603:117;;;3639:79;;:::i;:::-;3603:117;3744:78;3814:7;3805:6;3794:9;3790:22;3744:78;:::i;:::-;3734:88;;3529:303;3899:2;3888:9;3884:18;3871:32;3930:18;3922:6;3919:30;3916:117;;;3952:79;;:::i;:::-;3916:117;4057:78;4127:7;4118:6;4107:9;4103:22;4057:78;:::i;:::-;4047:88;;3842:303;4184:2;4210:53;4255:7;4246:6;4235:9;4231:22;4210:53;:::i;:::-;4200:63;;4155:118;3095:1185;;;;;;;:::o;4286:90::-;4320:7;4363:5;4356:13;4349:21;4338:32;;4286:90;;;:::o;4382:109::-;4463:21;4478:5;4463:21;:::i;:::-;4458:3;4451:34;4382:109;;:::o;4497:210::-;4584:4;4622:2;4611:9;4607:18;4599:26;;4635:65;4697:1;4686:9;4682:17;4673:6;4635:65;:::i;:::-;4497:210;;;;:::o;4713:180::-;4761:77;4758:1;4751:88;4858:4;4855:1;4848:15;4882:4;4879:1;4872:15;4899:176;4931:1;4948:20;4966:1;4948:20;:::i;:::-;4943:25;;4982:20;5000:1;4982:20;:::i;:::-;4977:25;;5021:1;5011:35;;5026:18;;:::i;:::-;5011:35;5067:1;5064;5060:9;5055:14;;4899:176;;;;:::o;5081:169::-;5165:11;5199:6;5194:3;5187:19;5239:4;5234:3;5230:14;5215:29;;5081:169;;;;:::o;5256:230::-;5396:34;5392:1;5384:6;5380:14;5373:58;5465:13;5460:2;5452:6;5448:15;5441:38;5256:230;:::o;5492:366::-;5634:3;5655:67;5719:2;5714:3;5655:67;:::i;:::-;5648:74;;5731:93;5820:3;5731:93;:::i;:::-;5849:2;5844:3;5840:12;5833:19;;5492:366;;;:::o;5864:419::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6117:9;6111:4;6107:20;6103:1;6092:9;6088:17;6081:47;6145:131;6271:4;6145:131;:::i;:::-;6137:139;;5864:419;;;:::o;6289:180::-;6337:77;6334:1;6327:88;6434:4;6431:1;6424:15;6458:4;6455:1;6448:15;6475:185;6515:1;6532:20;6550:1;6532:20;:::i;:::-;6527:25;;6566:20;6584:1;6566:20;:::i;:::-;6561:25;;6605:1;6595:35;;6610:18;;:::i;:::-;6595:35;6652:1;6649;6645:9;6640:14;;6475:185;;;;:::o;6666:236::-;6806:34;6802:1;6794:6;6790:14;6783:58;6875:19;6870:2;6862:6;6858:15;6851:44;6666:236;:::o;6908:366::-;7050:3;7071:67;7135:2;7130:3;7071:67;:::i;:::-;7064:74;;7147:93;7236:3;7147:93;:::i;:::-;7265:2;7260:3;7256:12;7249:19;;6908:366;;;:::o;7280:419::-;7446:4;7484:2;7473:9;7469:18;7461:26;;7533:9;7527:4;7523:20;7519:1;7508:9;7504:17;7497:47;7561:131;7687:4;7561:131;:::i;:::-;7553:139;;7280:419;;;:::o;7705:180::-;7753:77;7750:1;7743:88;7850:4;7847:1;7840:15;7874:4;7871:1;7864:15;7891:191;7931:3;7950:20;7968:1;7950:20;:::i;:::-;7945:25;;7984:20;8002:1;7984:20;:::i;:::-;7979:25;;8027:1;8024;8020:9;8013:16;;8048:3;8045:1;8042:10;8039:36;;;8055:18;;:::i;:::-;8039:36;7891:191;;;;:::o;8088:233::-;8127:3;8150:24;8168:5;8150:24;:::i;:::-;8141:33;;8196:66;8189:5;8186:77;8183:103;;8266:18;;:::i;:::-;8183:103;8313:1;8306:5;8302:13;8295:20;;8088:233;;;:::o;8327:118::-;8414:24;8432:5;8414:24;:::i;:::-;8409:3;8402:37;8327:118;;:::o;8451:332::-;8572:4;8610:2;8599:9;8595:18;8587:26;;8623:71;8691:1;8680:9;8676:17;8667:6;8623:71;:::i;:::-;8704:72;8772:2;8761:9;8757:18;8748:6;8704:72;:::i;:::-;8451:332;;;;;:::o;8789:222::-;8882:4;8920:2;8909:9;8905:18;8897:26;;8933:71;9001:1;8990:9;8986:17;8977:6;8933:71;:::i;:::-;8789:222;;;;:::o;9017:171::-;9157:23;9153:1;9145:6;9141:14;9134:47;9017:171;:::o;9194:366::-;9336:3;9357:67;9421:2;9416:3;9357:67;:::i;:::-;9350:74;;9433:93;9522:3;9433:93;:::i;:::-;9551:2;9546:3;9542:12;9535:19;;9194:366;;;:::o;9566:419::-;9732:4;9770:2;9759:9;9755:18;9747:26;;9819:9;9813:4;9809:20;9805:1;9794:9;9790:17;9783:47;9847:131;9973:4;9847:131;:::i;:::-;9839:139;;9566:419;;;:::o;9991:194::-;10031:4;10051:20;10069:1;10051:20;:::i;:::-;10046:25;;10085:20;10103:1;10085:20;:::i;:::-;10080:25;;10129:1;10126;10122:9;10114:17;;10153:1;10147:4;10144:11;10141:37;;;10158:18;;:::i;:::-;10141:37;9991:194;;;;:::o;10191:77::-;10228:7;10257:5;10246:16;;10191:77;;;:::o;10274:118::-;10361:24;10379:5;10361:24;:::i;:::-;10356:3;10349:37;10274:118;;:::o;10398:86::-;10433:7;10473:4;10466:5;10462:16;10451:27;;10398:86;;;:::o;10490:112::-;10573:22;10589:5;10573:22;:::i;:::-;10568:3;10561:35;10490:112;;:::o;10608:545::-;10781:4;10819:3;10808:9;10804:19;10796:27;;10833:71;10901:1;10890:9;10886:17;10877:6;10833:71;:::i;:::-;10914:68;10978:2;10967:9;10963:18;10954:6;10914:68;:::i;:::-;10992:72;11060:2;11049:9;11045:18;11036:6;10992:72;:::i;:::-;11074;11142:2;11131:9;11127:18;11118:6;11074:72;:::i;:::-;10608:545;;;;;;;:::o
Swarm Source
ipfs://94446db24d3289e2083dc50fd7b3a28a991c3dc1ed4882663ab6c1ed68f39933
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.