Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552596 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH | ||||
| 107552545 | 985 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TransferVerifier
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
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;
input[0] = p1.X;
input[1] = p1.Y;
input[2] = p2.X;
input[3] = 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.scalar_mul(1) and p.plus(p) == p.scalar_mul(2) for all
* points p.
*/
function scalar_mul(G1Point memory p, uint256 s) internal view returns (G1Point memory r) {
uint256[3] memory input;
input[0] = p.X;
input[1] = p.Y;
input[2] = 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)
{
G1Point[4] memory p1 = [a1, b1, c1, d1];
G2Point[4] memory p2 = [a2, b2, c2, d2];
uint256 inputSize = 24;
uint256[] memory input = new uint256[](inputSize);
for (uint256 i = 0; i < 4; i++) {
uint256 j = i * 6;
input[j + 0] = p1[i].X;
input[j + 1] = p1[i].Y;
input[j + 2] = p2[i].X[0];
input[j + 3] = p2[i].X[1];
input[j + 4] = p2[i].Y[0];
input[j + 5] = p2[i].Y[1];
}
uint256[1] memory out;
bool success;
// solium-disable-next-line security/no-inline-assembly
assembly {
success := staticcall(sub(gas(), 2000), 8, add(input, 0x20), mul(inputSize, 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 TransferVerifier {
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[6] IC;
}
struct Proof {
Pairing.G1Point A;
Pairing.G2Point B;
Pairing.G1Point C;
}
function verifyingKey() internal pure returns (VerifyingKey memory vk) {
vk.alfa1 = Pairing.G1Point(
17259644642628619054198707088350178151915223546531204588599012585652862256289,
6538916430504110934790598121254623711490867458521598147771684120236145100336
);
vk.beta2 = Pairing.G2Point(
[
uint256(11097434194162826858949644387544008701579694224939913271486290330733219134420),
6010942275679443033856179065724641913553695310529001864983746063540149145812
],
[
uint256(19013261012401115818773510381885163557486260979365651129010452890236255493703),
11314427763437581543307480788475949801872673194176472756000669236569465847384
]
);
vk.gamma2 = Pairing.G2Point(
[
uint256(11559732032986387107991004021392285783925812861821192530917403151452391805634),
10857046999023057135944570762232829481370756359578518086990519993285655852781
],
[
uint256(4082367875863433681332203403145435568316851327593401208105741076214120093531),
8495653923123431417604973247489272438418190587263600148770280649306958101930
]
);
vk.delta2 = Pairing.G2Point(
[
uint256(18423987291968971239578001872085724771290921842285100359710316985575986166742),
7450373544559680085640870549460861848228753225332217077587909382204549485740
],
[
uint256(14546106862273780852380541990647904233979512856038180721838086990706784580791),
11764284714870120245619544741973483651026859462573491091739755304150190866020
]
);
vk.IC[0] = Pairing.G1Point(
6022690279576701967700939930549416332882035871731987826600176966197770327986,
13211922586700016170154920103356971642096193319206092346563280217165266338375
);
vk.IC[1] = Pairing.G1Point(
12656010021638130374544751608367308147652398841229146391750372999223977472627,
6097802916879157910919689310035915815126050278839846888084130930778103255644
);
vk.IC[2] = Pairing.G1Point(
13025760272413740765163372087115247802875100685343452493823036523107908187556,
6386538804803039919018573915864226946973288227753088648819359340311462795888
);
vk.IC[3] = Pairing.G1Point(
14150560204844217826745733083852297514199137441377019824598974901482516655831,
18495855973518081366759135506514124230319591139744706666478206827280107404907
);
vk.IC[4] = Pairing.G1Point(
13728203604263399070412765415971093962322458880033547572104319988519302253193,
17941329588589657782744903855538576601561450833293831316032474930373424267626
);
vk.IC[5] = Pairing.G1Point(
11757052607808062879180261379200609730904279947080518073582213181864321504601,
5606142802020413103915078393134363563092395563550606569170076315674079622043
);
}
/*
* @returns Whether the proof is valid given the hardcoded verifying key
* above and the public inputs
*/
function verifyProof(uint256[5] memory input, uint256[8] memory p) public view returns (bool) {
// Make sure that each element in the proof is less than the prime q
for (uint8 i = 0; i < p.length; i++) {
require(p[i] < PRIME_Q, "verifier-proof-element-gte-prime-q");
}
Proof memory _proof;
_proof.A = Pairing.G1Point(p[0], p[1]);
_proof.B = Pairing.G2Point([p[3], p[2]], [p[5], p[4]]);
_proof.C = Pairing.G1Point(p[6], p[7]);
VerifyingKey memory vk = verifyingKey();
// Compute the linear combination vk_x
Pairing.G1Point memory vk_x = Pairing.G1Point(0, 0);
vk_x = Pairing.plus(vk_x, vk.IC[0]);
// Make sure that every input is less than the snark scalar field
for (uint256 i = 0; i < input.length; i++) {
require(input[i] < SNARK_SCALAR_FIELD, "verifier-gte-snark-scalar-field");
vk_x = Pairing.plus(vk_x, Pairing.scalar_mul(vk.IC[i + 1], input[i]));
}
return Pairing.pairing(
Pairing.negate(_proof.A), _proof.B, vk.alfa1, vk.beta2, vk_x, vk.gamma2, _proof.C, vk.delta2
);
}
}{
"remappings": [
"@base58-solidity/=lib/base58-solidity/contracts/",
"@gnosis/=lib/@gnosis/",
"@gnosis/auction/=lib/@gnosis/auction/contracts/",
"@openzeppelin/=lib/@openzeppelin/contracts/",
"@openzeppelin/contracts/=lib/@openzeppelin/contracts/contracts/",
"@uniswap/=lib/@uniswap/",
"base58-solidity/=lib/base58-solidity/contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "istanbul",
"libraries": {
"lib/base58-solidity/contracts/Base58.sol": {
"Base58": "0x716bb495284e0e22ff975021e0945b9183d902d7"
},
"src/libraries/ZkAddress.sol": {
"ZkAddress": "0x61a57f1c82da40e632c075d7812af375db23367c"
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256[5]","name":"input","type":"uint256[5]"},{"internalType":"uint256[8]","name":"p","type":"uint256[8]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50610de2806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806368444dc714610030575b600080fd5b6100b060048036036101a081101561004757600080fd5b810190808060a0019060058060200260405190810160405280929190826005602002808284376000920191909152505060408051610100818101909252929594938181019392509060089083908390808284376000920191909152509194506100c49350505050565b604080519115158252519081900360200190f35b6000805b60088160ff16101561014d577f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47838260ff166008811061010457fe5b6020020151106101455760405162461bcd60e51b8152600401808060200182810382526022815260200180610d8b6022913960400191505060405180910390fd5b6001016100c8565b50610156610bd8565b6040805180820182528451815260208086015181830152908352815160808082018452606080880151838601908152888601519184019190915282528351808501855260a08801518152908701518184015281830152838201528151808301835260c0860151815260e086015191810191909152908201526101d6610c0a565b6101de610335565b90506101e8610c51565b6040518060400160405280600081526020016000815250905061022081836080015160006006811061021657fe5b60200201516107ad565b905060005b60058110156102f6577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187826005811061025b57fe5b6020020151106102b2576040805162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6102ec826102e7856080015184600101600681106102cc57fe5b60200201518a85600581106102dd57fe5b602002015161084d565b6107ad565b9150600101610225565b5061032b61030784600001516108d3565b8460200151846000015185602001518587604001518960400151896060015161097a565b9695505050505050565b61033d610c0a565b6040805180820182527f26289cd8abd1fa2a98d463c99b2c27f4d93fc00e39380d234ac13221ae9b04a181527f0e74e5426db6b07b4c5fdeb9c845cd7ad268e017ec852d569c7b7889a121c6306020808301919091529083528151608080820184527f1888ecd7b2c8cfeb687ad2a234c85b829156a830e7ec17e8f8fa3670191fbbd48285019081527f0d4a12a09a90d343c5bf278dac62a5bbdfd23e79600f9199470e1d25e871d0d4606080850191909152908352845180860186527f2a091fd6eb117e394f56d1728002cbc2ac0d80b181a4c765df0e6df8e1c85e4781527f1903bd3a843a21c30f289c0c16840b09d059bf7c46298c59d3e3f14182367e58818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835180820185527f28bb9b75d5e8b3215a843eb23ec1b53c2264b6cc1bbcbb47a9f70f22cd4bfbd68186019081527f1078c311c3953fae2fff7734cbfc62c96279fc5ffa282fef0ea766b764a7d4ac828501528152845180860186527f2028ce026bc83d3fe9ab5ed8d8b0502e1bd59834eb1d2f8d8edcc809d69fb4b781527f1a0259643a74aa5bb30eb2d3bfee4417eff35c6e95e94e11f5f8e5965d0d3e64818601528185015282860152835180850185527f0d50b8ce497318b90465d656dc9442823e02c7ec85acd1f695329ee650fa17b281527f1d35aee535be79857a62e59bd74732eba440ebf2b030aec5e4bd016744d6c24781850152818601805191909152845180860186527f1bfb0c3e277ad4656e8386c264a1ea6e74f44109c3c527255f4902b66e04727381527f0d7b3bf0d9848b535bf3472dcb73ed6db7d52dd07fcef7beefd5fec464d2925c818601528151850152845180860186527f1ccc51ad32bb3596a276c57055c2b5fd28642b8df13eb1d4fae818bff191f5a481527f0e1ea72229ee5b5505d68ff74527ef8dab3b2054778adef57a3183548c23da70818601528151860152845180860186527f1f48eee9798d097387141842caa49b38a876a23b3568bbc2bec89ef01e002ed781527f28e44893645b6413b102d11c965217ef231e2d7d8c6ef2d4ae2ed3177ba17e6b81860152815190930192909252835180850185527f1e59e34c77ddf057ef1c5e3422455c47b77cfaf7c90942c6250b42cf4256ca8981527f27aa6ec49d75373ee36a6ec312d7f3dce59ddbb0b5827e6637feb1cda9ff416a8185015282519091015282518084019093527f19fe418677e743503ed243fb4ef313976dd310e073665abec562146ebe68555983527f0c64f6e1a0fd0e0f38603df60a84dde299d70f74ac8348d435e07202cc57739b918301919091525160a0015290565b6107b5610c51565b6107bd610c6b565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa90508080156107fb576107fd565bfe5b5080610845576040805162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b604482015290519081900360640190fd5b505092915050565b610855610c51565b61085d610c89565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa90508080156107fb575080610845576040805162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604482015290519081900360640190fd5b6108db610c51565b81511580156108ec57506020820151155b1561090b57506040805180820190915260008082526020820152610975565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001518161094d57fe5b067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703905290505b919050565b6000610984610ca7565b60405180608001604052808b81526020018981526020018781526020018581525090506109af610cd4565b50604080516080810182528a81526020810189905280820187905260608082018690528251601880825261032082019094529192918281602001602082028036833701905050905060005b6004811015610b515760068102858260048110610a1357fe5b6020020151518351849083908110610a2757fe5b602002602001018181525050858260048110610a3f57fe5b602002015160200151838260010181518110610a5757fe5b602002602001018181525050848260048110610a6f57fe5b602002015151518351849060028401908110610a8757fe5b602002602001018181525050848260048110610a9f57fe5b60200201515160016020020151838260030181518110610abb57fe5b602002602001018181525050848260048110610ad357fe5b602002015160200151600060028110610ae857fe5b6020020151838260040181518110610afc57fe5b602002602001018181525050848260048110610b1457fe5b602002015160200151600160028110610b2957fe5b6020020151838260050181518110610b3d57fe5b6020908102919091010152506001016109fa565b50610b5a610d01565b6000602082602086026020860160086107d05a03fa90508080156107fb575080610bc3576040805162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604482015290519081900360640190fd5b505115159d9c50505050505050505050505050565b6040518060600160405280610beb610c51565b8152602001610bf8610d1f565b8152602001610c05610c51565b905290565b6040518060a00160405280610c1d610c51565b8152602001610c2a610d1f565b8152602001610c37610d1f565b8152602001610c44610d1f565b8152602001610c05610d3f565b604051806040016040528060008152602001600081525090565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004905b610cbe610c51565b815260200190600190039081610cb65790505090565b60405180608001604052806004905b610ceb610d1f565b815260200190600190039081610ce35790505090565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280610d32610d6c565b8152602001610c05610d6c565b6040518060c001604052806006905b610d56610c51565b815260200190600190039081610d4e5790505090565b6040518060400160405280600290602082028036833750919291505056fe76657269666965722d70726f6f662d656c656d656e742d6774652d7072696d652d71a2646970667358221220965f1ac72e45c71aea1a613e466262c13892bad0e880ee0f43a3873aed1186bd64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806368444dc714610030575b600080fd5b6100b060048036036101a081101561004757600080fd5b810190808060a0019060058060200260405190810160405280929190826005602002808284376000920191909152505060408051610100818101909252929594938181019392509060089083908390808284376000920191909152509194506100c49350505050565b604080519115158252519081900360200190f35b6000805b60088160ff16101561014d577f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47838260ff166008811061010457fe5b6020020151106101455760405162461bcd60e51b8152600401808060200182810382526022815260200180610d8b6022913960400191505060405180910390fd5b6001016100c8565b50610156610bd8565b6040805180820182528451815260208086015181830152908352815160808082018452606080880151838601908152888601519184019190915282528351808501855260a08801518152908701518184015281830152838201528151808301835260c0860151815260e086015191810191909152908201526101d6610c0a565b6101de610335565b90506101e8610c51565b6040518060400160405280600081526020016000815250905061022081836080015160006006811061021657fe5b60200201516107ad565b905060005b60058110156102f6577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187826005811061025b57fe5b6020020151106102b2576040805162461bcd60e51b815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6102ec826102e7856080015184600101600681106102cc57fe5b60200201518a85600581106102dd57fe5b602002015161084d565b6107ad565b9150600101610225565b5061032b61030784600001516108d3565b8460200151846000015185602001518587604001518960400151896060015161097a565b9695505050505050565b61033d610c0a565b6040805180820182527f26289cd8abd1fa2a98d463c99b2c27f4d93fc00e39380d234ac13221ae9b04a181527f0e74e5426db6b07b4c5fdeb9c845cd7ad268e017ec852d569c7b7889a121c6306020808301919091529083528151608080820184527f1888ecd7b2c8cfeb687ad2a234c85b829156a830e7ec17e8f8fa3670191fbbd48285019081527f0d4a12a09a90d343c5bf278dac62a5bbdfd23e79600f9199470e1d25e871d0d4606080850191909152908352845180860186527f2a091fd6eb117e394f56d1728002cbc2ac0d80b181a4c765df0e6df8e1c85e4781527f1903bd3a843a21c30f289c0c16840b09d059bf7c46298c59d3e3f14182367e58818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835180820185527f28bb9b75d5e8b3215a843eb23ec1b53c2264b6cc1bbcbb47a9f70f22cd4bfbd68186019081527f1078c311c3953fae2fff7734cbfc62c96279fc5ffa282fef0ea766b764a7d4ac828501528152845180860186527f2028ce026bc83d3fe9ab5ed8d8b0502e1bd59834eb1d2f8d8edcc809d69fb4b781527f1a0259643a74aa5bb30eb2d3bfee4417eff35c6e95e94e11f5f8e5965d0d3e64818601528185015282860152835180850185527f0d50b8ce497318b90465d656dc9442823e02c7ec85acd1f695329ee650fa17b281527f1d35aee535be79857a62e59bd74732eba440ebf2b030aec5e4bd016744d6c24781850152818601805191909152845180860186527f1bfb0c3e277ad4656e8386c264a1ea6e74f44109c3c527255f4902b66e04727381527f0d7b3bf0d9848b535bf3472dcb73ed6db7d52dd07fcef7beefd5fec464d2925c818601528151850152845180860186527f1ccc51ad32bb3596a276c57055c2b5fd28642b8df13eb1d4fae818bff191f5a481527f0e1ea72229ee5b5505d68ff74527ef8dab3b2054778adef57a3183548c23da70818601528151860152845180860186527f1f48eee9798d097387141842caa49b38a876a23b3568bbc2bec89ef01e002ed781527f28e44893645b6413b102d11c965217ef231e2d7d8c6ef2d4ae2ed3177ba17e6b81860152815190930192909252835180850185527f1e59e34c77ddf057ef1c5e3422455c47b77cfaf7c90942c6250b42cf4256ca8981527f27aa6ec49d75373ee36a6ec312d7f3dce59ddbb0b5827e6637feb1cda9ff416a8185015282519091015282518084019093527f19fe418677e743503ed243fb4ef313976dd310e073665abec562146ebe68555983527f0c64f6e1a0fd0e0f38603df60a84dde299d70f74ac8348d435e07202cc57739b918301919091525160a0015290565b6107b5610c51565b6107bd610c6b565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa90508080156107fb576107fd565bfe5b5080610845576040805162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5859190b59985a5b195960721b604482015290519081900360640190fd5b505092915050565b610855610c51565b61085d610c89565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa90508080156107fb575080610845576040805162461bcd60e51b81526020600482015260126024820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604482015290519081900360640190fd5b6108db610c51565b81511580156108ec57506020820151155b1561090b57506040805180820190915260008082526020820152610975565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001518161094d57fe5b067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703905290505b919050565b6000610984610ca7565b60405180608001604052808b81526020018981526020018781526020018581525090506109af610cd4565b50604080516080810182528a81526020810189905280820187905260608082018690528251601880825261032082019094529192918281602001602082028036833701905050905060005b6004811015610b515760068102858260048110610a1357fe5b6020020151518351849083908110610a2757fe5b602002602001018181525050858260048110610a3f57fe5b602002015160200151838260010181518110610a5757fe5b602002602001018181525050848260048110610a6f57fe5b602002015151518351849060028401908110610a8757fe5b602002602001018181525050848260048110610a9f57fe5b60200201515160016020020151838260030181518110610abb57fe5b602002602001018181525050848260048110610ad357fe5b602002015160200151600060028110610ae857fe5b6020020151838260040181518110610afc57fe5b602002602001018181525050848260048110610b1457fe5b602002015160200151600160028110610b2957fe5b6020020151838260050181518110610b3d57fe5b6020908102919091010152506001016109fa565b50610b5a610d01565b6000602082602086026020860160086107d05a03fa90508080156107fb575080610bc3576040805162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604482015290519081900360640190fd5b505115159d9c50505050505050505050505050565b6040518060600160405280610beb610c51565b8152602001610bf8610d1f565b8152602001610c05610c51565b905290565b6040518060a00160405280610c1d610c51565b8152602001610c2a610d1f565b8152602001610c37610d1f565b8152602001610c44610d1f565b8152602001610c05610d3f565b604051806040016040528060008152602001600081525090565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004905b610cbe610c51565b815260200190600190039081610cb65790505090565b60405180608001604052806004905b610ceb610d1f565b815260200190600190039081610ce35790505090565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280610d32610d6c565b8152602001610c05610d6c565b6040518060c001604052806006905b610d56610c51565b815260200190600190039081610d4e5790505090565b6040518060400160405280600290602082028036833750919291505056fe76657269666965722d70726f6f662d656c656d656e742d6774652d7072696d652d71a2646970667358221220965f1ac72e45c71aea1a613e466262c13892bad0e880ee0f43a3873aed1186bd64736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 32 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.