Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Confidential Tra... | 6804686 | 2623 days ago | IN | 0 ETH | 0.0009204 | ||||
| Confidential Tra... | 6716778 | 2638 days ago | IN | 0 ETH | 0.00294585 | ||||
| Confidential Tra... | 6716587 | 2638 days ago | IN | 0 ETH | 0.00099208 | ||||
| Confidential Tra... | 6716562 | 2638 days ago | IN | 0 ETH | 0.00396713 | ||||
| Confidential Tra... | 6716553 | 2638 days ago | IN | 0 ETH | 0.00396777 | ||||
| Confidential Tra... | 6716488 | 2638 days ago | IN | 0 ETH | 0.00540757 | ||||
| Confidential Tra... | 6716231 | 2638 days ago | IN | 0 ETH | 0.00555661 | ||||
| Confidential Tra... | 6715906 | 2638 days ago | IN | 0 ETH | 0.00640984 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
AZTECERC20Bridge
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-11-26
*/
pragma solidity ^0.4.23;
library AZTECInterface {
function validateJoinSplit(bytes32[6][], uint, uint, bytes32[4]) external pure returns (bool) {}
}
/**
* @title ERC20 interface
* @dev https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20Interface {
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value)
external returns (bool);
}
/**
* @title AZTEC token, providing a confidential representation of an ERC20 token
* @author Zachary Williamson, AZTEC
* Copyright AZTEC 2018. All rights reserved.
* We will be releasing AZTEC as an open-source protocol that provides efficient transaction privacy for Ethereum.
* This will include our bespoke AZTEC decentralized exchange, allowing for cross-asset transfers with full transaction privacy
* and interopability with public decentralized exchanges.
* Stay tuned for updates!
**/
contract AZTECERC20Bridge {
uint private constant groupModulusBoundary = 10944121435919637611123202872628637544274182200208017171849102093287904247808;
uint private constant groupModulus = 21888242871839275222246405745257275088548364400416034343698204186575808495617;
uint public scalingFactor;
mapping(bytes32 => address) public noteRegistry;
bytes32[4] setupPubKey;
bytes32 domainHash;
ERC20Interface token;
event Created(bytes32 domainHash, address contractAddress);
event ConfidentialTransfer();
/**
* @dev contract constructor.
* @param _setupPubKey the trusted setup public key (group element of group G2)
* @param _token the address of the ERC20 token being attached to
* @param _scalingFactor the mapping from note value -> ERC20 token value.
* AZTEC notes have a range between 0 and 2^{25}-1 and ERC20 tokens range between 0 and 2^{255} - 1
* so we don't want to directly map note value : token value
**/
constructor(bytes32[4] _setupPubKey, address _token, uint256 _scalingFactor) public {
setupPubKey = _setupPubKey;
token = ERC20Interface(_token);
scalingFactor = _scalingFactor;
// calculate the EIP712 domain hash, for hashing structured data
bytes32 _domainHash;
assembly {
let m := mload(0x40)
mstore(m, 0x8d4b25bfecb769291b71726cd5ec8a497664cc7292c02b1868a0534306741fd9)
mstore(add(m, 0x20), 0x87a23625953c9fb02b3570c86f75403039bbe5de82b48ca671c10157d91a991a) // name = "AZTEC_MAINNET_DOMAIN"
mstore(add(m, 0x40), 0x25130290f410620ec94e7cf11f1cdab5dea284e1039a83fa7b87f727031ff5f4) // version = "0.1.0"
mstore(add(m, 0x60), 1) // chain id
mstore(add(m, 0x80), 0x210db872dec2e06c375dd40a5a354307bb4ba52ba65bd84594554580ae6f0639)
mstore(add(m, 0xa0), address) // verifying contract
_domainHash := keccak256(m, 0xc0)
}
domainHash = _domainHash;
emit Created(_domainHash, this);
}
/**
* @dev Determine validity of an input note and remove from note registry
* 1. validate that the note is signed by the note owner
* 2. validate that the note exists in the note registry
*
* Note signature is EIP712 signature (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md) over the following struct
* struct AZTEC_NOTE_SIGNATURE {
* bytes32[4] note;
* uint256 challenge;
* address sender;
* };
* @param note AZTEC confidential note being destroyed
* @param signature ECDSA signature from note owner
* @param challenge AZTEC zero-knowledge proof challenge
* @param domainHashT Temporary holding ```domainHash``` (to minimize # of sload ops)
**/
function validateInputNote(bytes32[6] note, bytes32[3] signature, uint challenge, bytes32 domainHashT) internal {
bytes32 noteHash;
bytes32 signatureMessage;
assembly {
let m := mload(0x40)
mstore(m, mload(add(note, 0x40)))
mstore(add(m, 0x20), mload(add(note, 0x60)))
mstore(add(m, 0x40), mload(add(note, 0x80)))
mstore(add(m, 0x60), mload(add(note, 0xa0)))
noteHash := keccak256(m, 0x80)
mstore(m, 0x1aba5d08f7cd777136d3fa7eb7baa742ab84001b34c9de5b17d922fc2ca75cce) // keccak256 hash of "AZTEC_NOTE_SIGNATURE(bytes32[4] note,uint256 challenge,address sender)"
mstore(add(m, 0x20), noteHash)
mstore(add(m, 0x40), challenge)
mstore(add(m, 0x60), caller)
mstore(add(m, 0x40), keccak256(m, 0x80))
mstore(add(m, 0x20), domainHashT)
mstore(m, 0x1901)
signatureMessage := keccak256(add(m, 0x1e), 0x42)
}
address owner = ecrecover(signatureMessage, uint8(signature[0]), signature[1], signature[2]);
require(noteRegistry[noteHash] == owner, "expected input note to exist in registry");
noteRegistry[noteHash] = 0;
}
/**
* @dev Validate an output note from an AZTEC confidential transaction
* If the note does not already exist in ```noteRegistry```, create it
* @param note AZTEC confidential note to be created
* @param owner The address of the note owner
**/
function validateOutputNote(bytes32[6] note, address owner) internal {
bytes32 noteHash; // Construct a keccak256 hash of the note coordinates.
assembly {
let m := mload(0x40)
mstore(m, mload(add(note, 0x40)))
mstore(add(m, 0x20), mload(add(note, 0x60)))
mstore(add(m, 0x40), mload(add(note, 0x80)))
mstore(add(m, 0x60), mload(add(note, 0xa0)))
noteHash := keccak256(m, 0x80)
}
require(noteRegistry[noteHash] == 0, "expected output note to not exist in registry");
noteRegistry[noteHash] = owner;
}
/**
* @dev Perform a confidential transaction. Takes ```m``` input notes and ```notes.length - m``` output notes.
* ```notes, m, challenge``` constitute an AZTEC zero-knowledge proof that states the following:
* The sum of the values of the input notes is equal to a the sum of the values of the output notes + a public commitment value ```kPublic```
* \sum_{i=0}^{m-1}k_i = \sum_{i=m}^{n-1}k_i + k_{public} (mod p)
* notes[6][] contains value ```kPublic``` at notes[notes.length - 1][0].
* If ```kPublic``` is negative, this represents ```(GROUP_MODULUS - kPublic) * SCALING_FACTOR``` ERC20 tokens being converted into confidential note form.
* If ```kPublic``` is positive, this represents ```kPublic * SCALING_FACTOR``` worth of AZTEC notes being converted into ERC20 form
* @param notes defines AZTEC input notes and output notes. notes[0,...,m-1] = input notes. notes[m,...,notes.length-1] = output notes
* @param m where notes[0,..., m - 1] = input notes. notes[m,...,notes.length - 1] = output notes
* @param challenge AZTEC zero-knowledge proof challenge variable
* @param inputSignatures array of ECDSA signatures, one for each input note
* @param outputOwners addresses of owners, one for each output note
* Unnamed param is metadata: if AZTEC notes are assigned to stealth addresses, metadata should contain the ephemeral keys required for note owner to identify their note
*/
function confidentialTransfer(bytes32[6][] notes, uint256 m, uint256 challenge, bytes32[3][] inputSignatures, address[] outputOwners, bytes) external {
require(inputSignatures.length == m, "input signature length invalid");
require(inputSignatures.length + outputOwners.length == notes.length, "array length mismatch");
// validate AZTEC zero-knowledge proof
require(AZTECInterface.validateJoinSplit(notes, m, challenge, setupPubKey), "proof not valid!");
// extract variable kPublic from proof
uint256 kPublic = uint(notes[notes.length - 1][0]);
// iterate over the notes array and validate each input/output note
for (uint256 i = 0; i < notes.length; i++) {
// if i < m this is an input note
if (i < m) {
// call validateInputNote to check that the note exists and that we have a matching signature over the note.
// pass domainHash in as a function parameter to prevent multiple sloads
// this will remove the input notes from noteRegistry
validateInputNote(notes[i], inputSignatures[i], challenge, domainHash);
} else {
// if i >= m this is an output note
// validate that output notes, attached to the specified owners do not exist in noteRegistry.
// if all checks pass, add notes into note registry
validateOutputNote(notes[i], outputOwners[i - m]);
}
}
if (kPublic > 0) {
if (kPublic < groupModulusBoundary) {
// if value < the group modulus boundary then this public value represents a conversion from confidential note form to public form
// call token.transfer to send relevent tokens
require(token.transfer(msg.sender, kPublic * scalingFactor), "token transfer to user failed!");
} else {
// if value > group modulus boundary, this represents a commitment of a public value into confidential note form.
// only proceed if the required transferFrom call from msg.sender to this contract succeeds
require(token.transferFrom(msg.sender, this, (groupModulus - kPublic) * scalingFactor), "token transfer from user failed!");
}
}
// emit an event to mark this transaction. Can recover notes + metadata from input data
emit ConfidentialTransfer();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"noteRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"notes","type":"bytes32[6][]"},{"name":"m","type":"uint256"},{"name":"challenge","type":"uint256"},{"name":"inputSignatures","type":"bytes32[3][]"},{"name":"outputOwners","type":"address[]"},{"name":"","type":"bytes"}],"name":"confidentialTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"scalingFactor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_setupPubKey","type":"bytes32[4]"},{"name":"_token","type":"address"},{"name":"_scalingFactor","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"domainHash","type":"bytes32"},{"indexed":false,"name":"contractAddress","type":"address"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[],"name":"ConfidentialTransfer","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b5060405160c080610fe6833981018060405281019080919082608001805190602001909291908051906020019092919050505060008360029060046100569291906101d2565b5082600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816000819055506040517f8d4b25bfecb769291b71726cd5ec8a497664cc7292c02b1868a0534306741fd981527f87a23625953c9fb02b3570c86f75403039bbe5de82b48ca671c10157d91a991a60208201527f25130290f410620ec94e7cf11f1cdab5dea284e1039a83fa7b87f727031ff5f46040820152600160608201527f210db872dec2e06c375dd40a5a354307bb4ba52ba65bd84594554580ae6f063960808201523060a082015260c0812091505080600681600019169055507f6e765c1505df7edb32788588e8f625dd368914ea995e3d429094152b826977a781306040518083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050505061023d565b8260048101928215610207579160200282015b828111156102065782518290600019169055916020019190600101906101e5565b5b5090506102149190610218565b5090565b61023a91905b8082111561023657600081600090555060010161021e565b5090565b90565b610d9a8061024c6000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632a8cdfbb1461005c578063da98cb7b146100cd578063ed3437f814610164575b600080fd5b34801561006857600080fd5b5061008b600480360381019080803560001916906020019092919050505061018f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100d957600080fd5b5061016260048036038101908080359060200190820180359060200191909192939192939080359060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506101c2565b005b34801561017057600080fd5b5061017961093b565b6040518082815260200191505060405180910390f35b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080898888905014151561023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e707574207369676e6174757265206c656e67746820696e76616c6964000081525060200191505060405180910390fd5b8b8b90508686905089899050011415156102c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b73b729d78f799f62036a3b149e8d799bf109c214da63b5596a888d8d8d8d60026040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018581526020018481526020018360048015610348576020028201915b81546000191681526020019060010190808311610330575b50508281038252878782818152602001925060c002808284378201915050965050505050505060206040518083038186803b15801561038657600080fd5b505af415801561039a573d6000803e3d6000fd5b505050506040513d60208110156103b057600080fd5b81019080805190602001909291905050501515610435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70726f6f66206e6f742076616c6964210000000000000000000000000000000081525060200191505060405180910390fd5b8b8b60018e8e905003818110151561044957fe5b905060c00201600060068110151561045d57fe5b602002013560001916600190049150600090505b8b8b90508110156105835789811015610507576105028c8c83818110151561049557fe5b905060c002016006806020026040519081016040528092919082600660200280828437820191505050505089898481811015156104ce57fe5b905060600201600380602002604051908101604052809291908260036020028082843782019150505050508b600654610941565b610576565b6105758c8c83818110151561051857fe5b905060c002016006806020026040519081016040528092919082600660200280828437820191505050505087878d8503818110151561055357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610bef565b5b8080600101915050610471565b6000821115610901577f183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f800000082101561073157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360005485026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b8101908080519060200190929190505050151561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746f6b656e207472616e7366657220746f2075736572206661696c656421000081525060200191505060405180910390fd5b610900565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600054867f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103026040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561085057600080fd5b505af1158015610864573d6000803e3d6000fd5b505050506040513d602081101561087a57600080fd5b810190808051906020019092919050505015156108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f746f6b656e207472616e736665722066726f6d2075736572206661696c65642181525060200191505060405180910390fd5b5b5b7fc377ec77b2d4e164767d661c3543ed9afe3fd6656829a68e1edebd88ca8a3a6760405160405180910390a1505050505050505050505050565b60005481565b600080600060405160408801518152606088015160208201526080880151604082015260a088015160608201526080812093507f1aba5d08f7cd777136d3fa7eb7baa742ab84001b34c9de5b17d922fc2ca75cce815283602082015285604082015233606082015260808120604082015284602082015261190181526042601e8201209250506001828760006003811015156109d957fe5b6020020151600190048860016003811015156109f157fe5b6020020151896002600381101515610a0557fe5b6020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610a7b573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff1660016000856000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f657870656374656420696e707574206e6f746520746f20657869737420696e2081526020017f726567697374727900000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600060016000856000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050565b600060405160408401518152606084015160208201526080840151604082015260a0840151606082015260808120915050600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f6578706563746564206f7574707574206e6f746520746f206e6f74206578697381526020017f7420696e2072656769737472790000000000000000000000000000000000000081525060400191505060405180910390fd5b8160016000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505600a165627a7a7230582057d9f6efc85be09d15cb25c2a0d415ef41455b3cb1417e5e361739d414e715ba002901cf7cc93bfbf7b2c5f04a3bc9cb8b72bbcf2defcabdceb09860c493bdf1588d08d554bf59102bbb961ba81107ec71785ef9ce6638e5332b6c1a58b87447d181204e5d81d86c561f9344ad5f122a625f259996b065b80cbbe74a9ad97b6d7cc202cb2a424885c9e412b94c40905b359e3043275cd29f5b557f008cd0a3e0c0dc00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a23260359000000000000000000000000000000000000000000000000016345785d8a0000
Deployed Bytecode
0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632a8cdfbb1461005c578063da98cb7b146100cd578063ed3437f814610164575b600080fd5b34801561006857600080fd5b5061008b600480360381019080803560001916906020019092919050505061018f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100d957600080fd5b5061016260048036038101908080359060200190820180359060200191909192939192939080359060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506101c2565b005b34801561017057600080fd5b5061017961093b565b6040518082815260200191505060405180910390f35b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080898888905014151561023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e707574207369676e6174757265206c656e67746820696e76616c6964000081525060200191505060405180910390fd5b8b8b90508686905089899050011415156102c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b73b729d78f799f62036a3b149e8d799bf109c214da63b5596a888d8d8d8d60026040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018581526020018481526020018360048015610348576020028201915b81546000191681526020019060010190808311610330575b50508281038252878782818152602001925060c002808284378201915050965050505050505060206040518083038186803b15801561038657600080fd5b505af415801561039a573d6000803e3d6000fd5b505050506040513d60208110156103b057600080fd5b81019080805190602001909291905050501515610435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70726f6f66206e6f742076616c6964210000000000000000000000000000000081525060200191505060405180910390fd5b8b8b60018e8e905003818110151561044957fe5b905060c00201600060068110151561045d57fe5b602002013560001916600190049150600090505b8b8b90508110156105835789811015610507576105028c8c83818110151561049557fe5b905060c002016006806020026040519081016040528092919082600660200280828437820191505050505089898481811015156104ce57fe5b905060600201600380602002604051908101604052809291908260036020028082843782019150505050508b600654610941565b610576565b6105758c8c83818110151561051857fe5b905060c002016006806020026040519081016040528092919082600660200280828437820191505050505087878d8503818110151561055357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610bef565b5b8080600101915050610471565b6000821115610901577f183227397098d014dc2822db40c0ac2e9419f4243cdcb848a1f0fac9f800000082101561073157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360005485026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b8101908080519060200190929190505050151561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746f6b656e207472616e7366657220746f2075736572206661696c656421000081525060200191505060405180910390fd5b610900565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600054867f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103026040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561085057600080fd5b505af1158015610864573d6000803e3d6000fd5b505050506040513d602081101561087a57600080fd5b810190808051906020019092919050505015156108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f746f6b656e207472616e736665722066726f6d2075736572206661696c65642181525060200191505060405180910390fd5b5b5b7fc377ec77b2d4e164767d661c3543ed9afe3fd6656829a68e1edebd88ca8a3a6760405160405180910390a1505050505050505050505050565b60005481565b600080600060405160408801518152606088015160208201526080880151604082015260a088015160608201526080812093507f1aba5d08f7cd777136d3fa7eb7baa742ab84001b34c9de5b17d922fc2ca75cce815283602082015285604082015233606082015260808120604082015284602082015261190181526042601e8201209250506001828760006003811015156109d957fe5b6020020151600190048860016003811015156109f157fe5b6020020151896002600381101515610a0557fe5b6020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610a7b573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff1660016000856000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f657870656374656420696e707574206e6f746520746f20657869737420696e2081526020017f726567697374727900000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600060016000856000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050565b600060405160408401518152606084015160208201526080840151604082015260a0840151606082015260808120915050600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f6578706563746564206f7574707574206e6f746520746f206e6f74206578697381526020017f7420696e2072656769737472790000000000000000000000000000000000000081525060400191505060405180910390fd5b8160016000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505600a165627a7a7230582057d9f6efc85be09d15cb25c2a0d415ef41455b3cb1417e5e361739d414e715ba0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
01cf7cc93bfbf7b2c5f04a3bc9cb8b72bbcf2defcabdceb09860c493bdf1588d08d554bf59102bbb961ba81107ec71785ef9ce6638e5332b6c1a58b87447d181204e5d81d86c561f9344ad5f122a625f259996b065b80cbbe74a9ad97b6d7cc202cb2a424885c9e412b94c40905b359e3043275cd29f5b557f008cd0a3e0c0dc00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a23260359000000000000000000000000000000000000000000000000016345785d8a0000
-----Decoded View---------------
Arg [0] : _setupPubKey (bytes32[4]): System.Byte[],System.Byte[],System.Byte[],System.Byte[]
Arg [1] : _token (address): 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359
Arg [2] : _scalingFactor (uint256): 100000000000000000
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 01cf7cc93bfbf7b2c5f04a3bc9cb8b72bbcf2defcabdceb09860c493bdf1588d
Arg [1] : 08d554bf59102bbb961ba81107ec71785ef9ce6638e5332b6c1a58b87447d181
Arg [2] : 204e5d81d86c561f9344ad5f122a625f259996b065b80cbbe74a9ad97b6d7cc2
Arg [3] : 02cb2a424885c9e412b94c40905b359e3043275cd29f5b557f008cd0a3e0c0dc
Arg [4] : 00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a23260359
Arg [5] : 000000000000000000000000000000000000000000000000016345785d8a0000
Swarm Source
bzzr://57d9f6efc85be09d15cb25c2a0d415ef41455b3cb1417e5e361739d414e715ba
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 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.