Feature Tip: Add private address tag to any address under My Name Tag !
Latest 25 from a total of 132 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deploy | 12250870 | 1757 days ago | IN | 0 ETH | 0.0140124 | ||||
| Deploy | 10587380 | 2013 days ago | IN | 0 ETH | 0.102939 | ||||
| Deploy And Fund | 9279033 | 2215 days ago | IN | 0 ETH | 0.00025646 | ||||
| Deploy And Fund | 9254223 | 2219 days ago | IN | 0 ETH | 0.00040621 | ||||
| Deploy And Fund | 9253443 | 2219 days ago | IN | 0 ETH | 0.00046627 | ||||
| Deploy And Fund | 9249436 | 2219 days ago | IN | 0 ETH | 0.00046633 | ||||
| Deploy And Fund | 9245509 | 2220 days ago | IN | 0 ETH | 0.00023316 | ||||
| Deploy And Fund | 9244670 | 2220 days ago | IN | 0 ETH | 0.00023316 | ||||
| Deploy And Fund | 9243906 | 2220 days ago | IN | 0 ETH | 0.00111912 | ||||
| Deploy And Fund | 9241309 | 2221 days ago | IN | 0 ETH | 0.00093266 | ||||
| Deploy And Fund | 9241212 | 2221 days ago | IN | 0 ETH | 0.00046633 | ||||
| Deploy And Fund | 9241084 | 2221 days ago | IN | 0 ETH | 0.00128241 | ||||
| Deploy And Fund | 9241008 | 2221 days ago | IN | 0 ETH | 0.00116567 | ||||
| Deploy And Fund | 9240458 | 2221 days ago | IN | 0 ETH | 0.00039635 | ||||
| Deploy And Fund | 9233729 | 2222 days ago | IN | 0 ETH | 0.0004663 | ||||
| Deploy And Fund | 9232748 | 2222 days ago | IN | 0 ETH | 0.00023316 | ||||
| Deploy And Fund | 9230760 | 2222 days ago | IN | 0 ETH | 0.00023316 | ||||
| Deploy And Fund | 9227428 | 2223 days ago | IN | 0 ETH | 0.0004663 | ||||
| Deploy And Fund | 9227389 | 2223 days ago | IN | 0 ETH | 0.00023316 | ||||
| Deploy And Fund | 9226408 | 2223 days ago | IN | 0 ETH | 0.00048961 | ||||
| Withdraw | 9131898 | 2240 days ago | IN | 0 ETH | 0.00029106 | ||||
| Withdraw | 9131894 | 2240 days ago | IN | 0 ETH | 0.00009557 | ||||
| Withdraw | 9131863 | 2240 days ago | IN | 0 ETH | 0.00016632 | ||||
| Deploy And Fund | 9121420 | 2243 days ago | IN | 0 ETH | 0.00303096 | ||||
| Deploy And Fund | 9116409 | 2244 days ago | IN | 0 ETH | 0.00116591 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
IdentityFactory
Compiler Version
v0.5.6+commit.b259423e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-05-09
*/
pragma solidity ^0.5.6;
pragma experimental ABIEncoderV2;
interface GeneralERC20 {
function transfer(address to, uint256 value) external;
function transferFrom(address from, address to, uint256 value) external;
function approve(address spender, uint256 value) external;
function balanceOf(address spender) external view returns (uint);
}
library SafeERC20 {
function checkSuccess()
private
pure
returns (bool)
{
uint256 returnValue = 0;
assembly {
// check number of bytes returned from last function call
switch returndatasize
// no bytes returned: assume success
case 0x0 {
returnValue := 1
}
// 32 bytes returned: check if non-zero
case 0x20 {
// copy 32 bytes into scratch space
returndatacopy(0x0, 0x0, 0x20)
// load those bytes into returnValue
returnValue := mload(0x0)
}
// not sure what was returned: don't mark as success
default { }
}
return returnValue != 0;
}
function transfer(address token, address to, uint256 amount) internal {
GeneralERC20(token).transfer(to, amount);
require(checkSuccess());
}
function transferFrom(address token, address from, address to, uint256 amount) internal {
GeneralERC20(token).transferFrom(from, to, amount);
require(checkSuccess());
}
function approve(address token, address spender, uint256 amount) internal {
GeneralERC20(token).approve(spender, amount);
require(checkSuccess());
}
}
library SafeMath {
function mul(uint a, uint b) internal pure returns (uint) {
uint c = a * b;
require(a == 0 || c / a == b);
return c;
}
function div(uint a, uint b) internal pure returns (uint) {
require(b > 0);
uint c = a / b;
require(a == b * c + a % b);
return c;
}
function sub(uint a, uint b) internal pure returns (uint) {
require(b <= a);
return a - b;
}
function add(uint a, uint b) internal pure returns (uint) {
uint c = a + b;
require(c >= a);
return c;
}
function max64(uint64 a, uint64 b) internal pure returns (uint64) {
return a >= b ? a : b;
}
function min64(uint64 a, uint64 b) internal pure returns (uint64) {
return a < b ? a : b;
}
function max256(uint a, uint b) internal pure returns (uint) {
return a >= b ? a : b;
}
function min256(uint a, uint b) internal pure returns (uint) {
return a < b ? a : b;
}
}
library SignatureValidator {
enum SignatureMode {
NO_SIG,
EIP712,
GETH,
TREZOR,
ADEX
}
function recoverAddr(bytes32 hash, bytes32[3] memory signature) internal pure returns (address) {
SignatureMode mode = SignatureMode(uint8(signature[0][0]));
if (mode == SignatureMode.NO_SIG) {
return address(0x0);
}
uint8 v = uint8(signature[0][1]);
if (mode == SignatureMode.GETH) {
hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
} else if (mode == SignatureMode.TREZOR) {
hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n\x20", hash));
} else if (mode == SignatureMode.ADEX) {
hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n108By signing this message, you acknowledge signing an AdEx bid with the hash:\n", hash));
}
return ecrecover(hash, v, signature[1], signature[2]);
}
/// @dev Validates that a hash was signed by a specified signer.
/// @param hash Hash which was signed.
/// @param signer Address of the signer.
/// @param signature ECDSA signature along with the mode [{mode}{v}, {r}, {s}]
/// @return Returns whether signature is from a specified user.
function isValidSignature(bytes32 hash, address signer, bytes32[3] memory signature) internal pure returns (bool) {
return recoverAddr(hash, signature) == signer;
}
}
library ChannelLibrary {
uint constant MAX_VALIDITY = 365 days;
// Both numbers are inclusive
uint constant MIN_VALIDATOR_COUNT = 2;
// This is an arbitrary number, but we impose this limit to restrict on-chain load; also to ensure the *3 operation is safe
uint constant MAX_VALIDATOR_COUNT = 25;
enum State {
Unknown,
Active,
Expired
}
struct Channel {
address creator;
address tokenAddr;
uint tokenAmount;
uint validUntil;
address[] validators;
// finally, arbitrary bytes32 that allows to... @TODO document that this acts as a nonce
bytes32 spec;
}
function hash(Channel memory channel)
internal
view
returns (bytes32)
{
// In this version of solidity, we can no longer keccak256() directly
return keccak256(abi.encode(
address(this),
channel.creator,
channel.tokenAddr,
channel.tokenAmount,
channel.validUntil,
channel.validators,
channel.spec
));
}
function isValid(Channel memory channel, uint currentTime)
internal
pure
returns (bool)
{
// NOTE: validators[] can be sybil'd by passing the same addr a few times
// this does not matter since you can sybil validators[] anyway, and that is mitigated off-chain
if (channel.validators.length < MIN_VALIDATOR_COUNT) {
return false;
}
if (channel.validators.length > MAX_VALIDATOR_COUNT) {
return false;
}
if (channel.validUntil < currentTime) {
return false;
}
if (channel.validUntil > (currentTime + MAX_VALIDITY)) {
return false;
}
return true;
}
function isSignedBySupermajority(Channel memory channel, bytes32 toSign, bytes32[3][] memory signatures)
internal
pure
returns (bool)
{
// NOTE: each element of signatures[] must signed by the elem with the same index in validators[]
// In case someone didn't sign, pass SignatureMode.NO_SIG
if (signatures.length != channel.validators.length) {
return false;
}
uint signs = 0;
uint sigLen = signatures.length;
for (uint i=0; i<sigLen; i++) {
// NOTE: if a validator has not signed, you can just use SignatureMode.NO_SIG
if (SignatureValidator.isValidSignature(toSign, channel.validators[i], signatures[i])) {
signs++;
}
}
return signs*3 >= channel.validators.length*2;
}
}
contract ValidatorRegistry {
// The contract will probably just use a mapping, but this is a generic interface
function whitelisted(address) view external returns (bool);
}
contract Identity {
using SafeMath for uint;
// Storage
// WARNING: be careful when modifying this
// privileges and routineAuthorizations must always be 0th and 1th thing in storage
mapping (address => uint8) public privileges;
// Routine authorizations
mapping (bytes32 => bool) public routineAuthorizations;
// The next allowed nonce
uint public nonce = 0;
// Routine operations are authorized at once for a period, fee is paid once
mapping (bytes32 => uint256) public routinePaidFees;
// Constants
bytes4 private constant CHANNEL_WITHDRAW_SELECTOR = bytes4(keccak256('channelWithdraw((address,address,uint256,uint256,address[],bytes32),bytes32,bytes32[3][],bytes32[],uint256)'));
bytes4 private constant CHANNEL_WITHDRAW_EXPIRED_SELECTOR = bytes4(keccak256('channelWithdrawExpired((address,address,uint256,uint256,address[],bytes32))'));
bytes4 private constant CHANNEL_OPEN_SELECTOR = bytes4(keccak256('channelOpen((address,address,uint256,uint256,address[],bytes32))'));
uint256 private constant CHANNEL_MAX_VALIDITY = 90 days;
enum PrivilegeLevel {
None,
Routines,
Transactions,
WithdrawTo
}
enum RoutineOp {
ChannelWithdraw,
ChannelWithdrawExpired,
ChannelOpen,
Withdraw
}
// Events
event LogPrivilegeChanged(address indexed addr, uint8 privLevel);
event LogRoutineAuth(bytes32 hash, bool authorized);
// Transaction structure
// Those can be executed by keys with >= PrivilegeLevel.Transactions
// Even though the contract cannot receive ETH, we are able to send ETH (.value), cause ETH might've been sent to the contract address before it's deployed
struct Transaction {
// replay protection
address identityContract;
uint nonce;
// tx fee, in tokens
address feeTokenAddr;
uint feeAmount;
// all the regular txn data
address to;
uint value;
bytes data;
}
// RoutineAuthorizations allow the user to authorize (via keys >= PrivilegeLevel.Routines) a particular relayer to do any number of routines
// those routines are safe: e.g. withdrawing channels to the identity, or from the identity to the pre-approved withdraw (>= PrivilegeLevel.Withdraw) address
// while the fee will be paid only ONCE per auth, the authorization can be used until validUntil
// while the routines are safe, there is some level of implied trust as the relayer may run executeRoutines without any routines to claim the fee
struct RoutineAuthorization {
address relayer;
address outpace;
address registry;
uint validUntil;
address feeTokenAddr;
uint weeklyFeeAmount;
}
struct RoutineOperation {
RoutineOp mode;
bytes data;
}
constructor(address[] memory addrs, uint8[] memory privLevels)
public
{
uint len = privLevels.length;
for (uint i=0; i<len; i++) {
privileges[addrs[i]] = privLevels[i];
emit LogPrivilegeChanged(addrs[i], privLevels[i]);
}
}
function setAddrPrivilege(address addr, uint8 privLevel)
external
{
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
privileges[addr] = privLevel;
emit LogPrivilegeChanged(addr, privLevel);
}
function setRoutineAuth(bytes32 hash, bool authorized)
external
{
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
routineAuthorizations[hash] = authorized;
emit LogRoutineAuth(hash, authorized);
}
function execute(Transaction[] memory txns, bytes32[3][] memory signatures)
public
{
address feeTokenAddr = txns[0].feeTokenAddr;
uint feeAmount = 0;
uint len = txns.length;
for (uint i=0; i<len; i++) {
Transaction memory txn = txns[i];
require(txn.identityContract == address(this), 'TRANSACTION_NOT_FOR_CONTRACT');
require(txn.feeTokenAddr == feeTokenAddr, 'EXECUTE_NEEDS_SINGLE_TOKEN');
require(txn.nonce == nonce, 'WRONG_NONCE');
// If we use the naive abi.encode(txn) and have a field of type `bytes`,
// there is a discrepancy between ethereumjs-abi and solidity
// if we enter every field individually, in order, there is no discrepancy
//bytes32 hash = keccak256(abi.encode(txn));
bytes32 hash = keccak256(abi.encode(txn.identityContract, txn.nonce, txn.feeTokenAddr, txn.feeAmount, txn.to, txn.value, txn.data));
address signer = SignatureValidator.recoverAddr(hash, signatures[i]);
require(privileges[signer] >= uint8(PrivilegeLevel.Transactions), 'INSUFFICIENT_PRIVILEGE_TRANSACTION');
nonce = nonce.add(1);
feeAmount = feeAmount.add(txn.feeAmount);
executeCall(txn.to, txn.value, txn.data);
// The actual anti-bricking mechanism - do not allow a signer to drop his own priviledges
require(privileges[signer] >= uint8(PrivilegeLevel.Transactions), 'PRIVILEGE_NOT_DOWNGRADED');
}
if (feeAmount > 0) {
SafeERC20.transfer(feeTokenAddr, msg.sender, feeAmount);
}
}
function executeBySender(Transaction[] memory txns)
public
{
require(privileges[msg.sender] >= uint8(PrivilegeLevel.Transactions), 'INSUFFICIENT_PRIVILEGE_SENDER');
uint len = txns.length;
for (uint i=0; i<len; i++) {
Transaction memory txn = txns[i];
require(txn.nonce == nonce, 'WRONG_NONCE');
nonce = nonce.add(1);
executeCall(txn.to, txn.value, txn.data);
}
// The actual anti-bricking mechanism - do not allow the sender to drop his own priviledges
require(privileges[msg.sender] >= uint8(PrivilegeLevel.Transactions), 'PRIVILEGE_NOT_DOWNGRADED');
}
function executeRoutines(RoutineAuthorization memory auth, RoutineOperation[] memory operations)
public
{
require(auth.relayer == msg.sender, 'ONLY_RELAYER_CAN_CALL');
require(auth.validUntil >= now, 'AUTHORIZATION_EXPIRED');
bytes32 hash = keccak256(abi.encode(auth));
require(routineAuthorizations[hash], 'NOT_AUTHORIZED');
uint len = operations.length;
for (uint i=0; i<len; i++) {
RoutineOperation memory op = operations[i];
if (op.mode == RoutineOp.ChannelWithdraw) {
// Channel: Withdraw
executeCall(auth.outpace, 0, abi.encodePacked(CHANNEL_WITHDRAW_SELECTOR, op.data));
} else if (op.mode == RoutineOp.ChannelWithdrawExpired) {
// Channel: Withdraw Expired
executeCall(auth.outpace, 0, abi.encodePacked(CHANNEL_WITHDRAW_EXPIRED_SELECTOR, op.data));
} else if (op.mode == RoutineOp.ChannelOpen) {
// Channel: open
(ChannelLibrary.Channel memory channel) = abi.decode(op.data, (ChannelLibrary.Channel));
// Ensure validity is sane
require(channel.validUntil <= (now + CHANNEL_MAX_VALIDITY), 'CHANNEL_EXCEEDED_MAX_VALID');
// Ensure all validators are whitelisted
uint validatorsLen = channel.validators.length;
for (uint j=0; j<validatorsLen; j++) {
require(
ValidatorRegistry(auth.registry).whitelisted(channel.validators[j]),
"VALIDATOR_NOT_WHITELISTED"
);
}
SafeERC20.approve(channel.tokenAddr, auth.outpace, 0);
SafeERC20.approve(channel.tokenAddr, auth.outpace, channel.tokenAmount);
executeCall(auth.outpace, 0, abi.encodePacked(CHANNEL_OPEN_SELECTOR, op.data));
} else if (op.mode == RoutineOp.Withdraw) {
// Withdraw from identity
(address tokenAddr, address to, uint amount) = abi.decode(op.data, (address, address, uint));
require(privileges[to] >= uint8(PrivilegeLevel.WithdrawTo), 'INSUFFICIENT_PRIVILEGE_WITHDRAW');
SafeERC20.transfer(tokenAddr, to, amount);
} else {
revert('INVALID_MODE');
}
}
if (auth.weeklyFeeAmount > 0 && (now - routinePaidFees[hash]) >= 7 days) {
routinePaidFees[hash] = now;
SafeERC20.transfer(auth.feeTokenAddr, msg.sender, auth.weeklyFeeAmount);
}
}
// we shouldn't use address.call(), cause: https://github.com/ethereum/solidity/issues/2884
// copied from https://github.com/uport-project/uport-identity/blob/develop/contracts/Proxy.sol
// there's also
// https://github.com/gnosis/MultiSigWallet/commit/e1b25e8632ca28e9e9e09c81bd20bf33fdb405ce
// https://github.com/austintgriffith/bouncer-proxy/blob/master/BouncerProxy/BouncerProxy.sol
// https://github.com/gnosis/safe-contracts/blob/7e2eeb3328bb2ae85c36bc11ea6afc14baeb663c/contracts/base/Executor.sol
function executeCall(address to, uint256 value, bytes memory data)
internal
{
assembly {
let result := call(gas, to, value, add(data, 0x20), mload(data), 0, 0)
switch result case 0 {
let size := returndatasize
let ptr := mload(0x40)
returndatacopy(ptr, 0, size)
revert(ptr, size)
}
default {}
}
}
}
contract IdentityFactory {
event LogDeployed(address addr, uint256 salt);
address public relayer;
constructor(address relayerAddr) public {
relayer = relayerAddr;
}
function deploy(bytes memory code, uint256 salt) public {
address addr;
assembly { addr := create2(0, add(code, 0x20), mload(code), salt) }
require(addr != address(0), "FAILED_DEPLOYING");
emit LogDeployed(addr, salt);
}
function deployAndFund(bytes memory code, uint256 salt, address tokenAddr, uint256 tokenAmount) public {
require(msg.sender == relayer, "ONLY_RELAYER");
address addr;
assembly { addr := create2(0, add(code, 0x20), mload(code), salt) }
require(addr != address(0), "FAILED_DEPLOYING");
SafeERC20.transfer(tokenAddr, addr, tokenAmount);
emit LogDeployed(addr, salt);
}
function deployAndExecute(bytes memory code, uint256 salt, Identity.Transaction[] memory txns, bytes32[3][] memory signatures) public {
address addr;
assembly { addr := create2(0, add(code, 0x20), mload(code), salt) }
require(addr != address(0), "FAILED_DEPLOYING");
Identity(addr).execute(txns, signatures);
emit LogDeployed(addr, salt);
}
function withdraw(address tokenAddr, address to, uint256 tokenAmount) public {
require(msg.sender == relayer, "ONLY_RELAYER");
SafeERC20.transfer(tokenAddr, to, tokenAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"code","type":"bytes"},{"name":"salt","type":"uint256"},{"components":[{"name":"identityContract","type":"address"},{"name":"nonce","type":"uint256"},{"name":"feeTokenAddr","type":"address"},{"name":"feeAmount","type":"uint256"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"txns","type":"tuple[]"},{"name":"signatures","type":"bytes32[3][]"}],"name":"deployAndExecute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"relayer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"code","type":"bytes"},{"name":"salt","type":"uint256"},{"name":"tokenAddr","type":"address"},{"name":"tokenAmount","type":"uint256"}],"name":"deployAndFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"code","type":"bytes"},{"name":"salt","type":"uint256"}],"name":"deploy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"to","type":"address"},{"name":"tokenAmount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"relayerAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"salt","type":"uint256"}],"name":"LogDeployed","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50604051602080611214833981018060405261002f9190810190610089565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100e4565b600061008182516100b2565b905092915050565b60006020828403121561009b57600080fd5b60006100a984828501610075565b91505092915050565b60006100bd826100c4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b611121806100f36000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80634b7028f91461005c5780638406c079146100785780638a976282146100965780639c4ae2d0146100b2578063d9caed12146100ce575b600080fd5b610076600480360361007191908101906109e3565b6100ea565b005b610080610215565b60405161008d9190610d90565b60405180910390f35b6100b060048036036100ab9190810190610968565b61023a565b005b6100cc60048036036100c79190810190610914565b610392565b005b6100e860048036036100e391908101906108c5565b61044e565b005b6000838551602087016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015f90610e2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663951a02af84846040518363ffffffff1660e01b81526004016101a3929190610dd4565b600060405180830381600087803b1580156101bd57600080fd5b505af11580156101d1573d6000803e3d6000fd5b505050507fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8185604051610206929190610dab565b60405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c090610e0b565b60405180910390fd5b6000838551602087016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033e90610e2b565b60405180910390fd5b6103528382846104ed565b7fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8185604051610383929190610dab565b60405180910390a15050505050565b6000818351602085016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610e2b565b60405180910390fd5b7fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8183604051610441929190610dab565b60405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d490610e0b565b60405180910390fd5b6104e88383836104ed565b505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610528929190610dab565b600060405180830381600087803b15801561054257600080fd5b505af1158015610556573d6000803e3d6000fd5b50505050610562610570565b61056b57600080fd5b505050565b600080600090503d6000811461058d5760208114610596576105a2565b600191506105a2565b60206000803e60005191505b50600081141591505090565b60006105ba823561104e565b905092915050565b600082601f8301126105d357600080fd5b81356105e66105e182610e78565b610e4b565b9150818183526020840193506020810190508385606084028201111561060b57600080fd5b60005b8381101561063b57816106218882610645565b84526020840193506060830192505060018101905061060e565b5050505092915050565b600082601f83011261065657600080fd5b600361066961066482610ea0565b610e4b565b9150818385602084028201111561067f57600080fd5b60005b838110156106af5781610695888261072d565b845260208401935060208301925050600181019050610682565b5050505092915050565b600082601f8301126106ca57600080fd5b81356106dd6106d882610ec2565b610e4b565b9150818183526020840193506020810190508360005b83811015610723578135860161070988826107e9565b8452602084019350602083019250506001810190506106f3565b5050505092915050565b60006107398235611060565b905092915050565b600082601f83011261075257600080fd5b813561076561076082610eea565b610e4b565b9150808252602083016020830185838301111561078157600080fd5b61078c838284611094565b50505092915050565b600082601f8301126107a657600080fd5b81356107b96107b482610f16565b610e4b565b915080825260208301602083018583830111156107d557600080fd5b6107e0838284611094565b50505092915050565b600060e082840312156107fb57600080fd5b61080560e0610e4b565b90506000610815848285016105ae565b6000830152506020610829848285016108b1565b602083015250604061083d848285016105ae565b6040830152506060610851848285016108b1565b6060830152506080610865848285016105ae565b60808301525060a0610879848285016108b1565b60a08301525060c082013567ffffffffffffffff81111561089957600080fd5b6108a584828501610741565b60c08301525092915050565b60006108bd823561108a565b905092915050565b6000806000606084860312156108da57600080fd5b60006108e8868287016105ae565b93505060206108f9868287016105ae565b925050604061090a868287016108b1565b9150509250925092565b6000806040838503121561092757600080fd5b600083013567ffffffffffffffff81111561094157600080fd5b61094d85828601610795565b925050602061095e858286016108b1565b9150509250929050565b6000806000806080858703121561097e57600080fd5b600085013567ffffffffffffffff81111561099857600080fd5b6109a487828801610795565b94505060206109b5878288016108b1565b93505060406109c6878288016105ae565b92505060606109d7878288016108b1565b91505092959194509250565b600080600080608085870312156109f957600080fd5b600085013567ffffffffffffffff811115610a1357600080fd5b610a1f87828801610795565b9450506020610a30878288016108b1565b935050604085013567ffffffffffffffff811115610a4d57600080fd5b610a59878288016106b9565b925050606085013567ffffffffffffffff811115610a7657600080fd5b610a82878288016105c2565b91505092959194509250565b6000610a9a8383610b4a565b60608301905092915050565b6000610ab28383610c0e565b60208301905092915050565b6000610aca8383610cd6565b905092915050565b610adb81611008565b82525050565b610aea81611008565b82525050565b6000610afb82610f66565b610b058185610fb9565b9350610b1083610f42565b60005b82811015610b3e57610b26868351610a8e565b9550610b3182610f92565b9150600181019050610b13565b50849250505092915050565b610b5381610f71565b610b5d8184610fca565b9250610b6882610f4f565b60005b82811015610b9657610b7e858351610aa6565b9450610b8982610f9f565b9150600181019050610b6b565b5050505050565b6000610ba882610f7c565b610bb28185610fd5565b935083602082028501610bc485610f59565b60005b84811015610bfd578383038852610bdf838351610abe565b9250610bea82610fac565b9150602088019750600181019050610bc7565b508196508694505050505092915050565b610c178161101a565b82525050565b6000610c2882610f87565b610c328185610fe6565b9350610c428185602086016110a3565b610c4b816110d6565b840191505092915050565b6000610c63600c83610ff7565b91507f4f4e4c595f52454c4159455200000000000000000000000000000000000000006000830152602082019050919050565b6000610ca3601083610ff7565b91507f4641494c45445f4445504c4f59494e47000000000000000000000000000000006000830152602082019050919050565b600060e083016000830151610cee6000860182610ad2565b506020830151610d016020860182610d72565b506040830151610d146040860182610ad2565b506060830151610d276060860182610d72565b506080830151610d3a6080860182610ad2565b5060a0830151610d4d60a0860182610d72565b5060c083015184820360c0860152610d658282610c1d565b9150508091505092915050565b610d7b81611044565b82525050565b610d8a81611044565b82525050565b6000602082019050610da56000830184610ae1565b92915050565b6000604082019050610dc06000830185610ae1565b610dcd6020830184610d81565b9392505050565b60006040820190508181036000830152610dee8185610b9d565b90508181036020830152610e028184610af0565b90509392505050565b60006020820190508181036000830152610e2481610c56565b9050919050565b60006020820190508181036000830152610e4481610c96565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715610e6e57600080fd5b8060405250919050565b600067ffffffffffffffff821115610e8f57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610eb757600080fd5b602082029050919050565b600067ffffffffffffffff821115610ed957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610f0157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610f2d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b600081519050919050565b600060039050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061101382611024565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006110598261106a565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156110c15780820151818401526020810190506110a6565b838111156110d0576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a72305820bf80654414cf95f454c4a8a32a197b9da79abe4a33293e351ddf669c3c270a106c6578706572696d656e74616cf50037000000000000000000000000942f9ce5d9a33a82f88d233aeb3292e680230348
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c80634b7028f91461005c5780638406c079146100785780638a976282146100965780639c4ae2d0146100b2578063d9caed12146100ce575b600080fd5b610076600480360361007191908101906109e3565b6100ea565b005b610080610215565b60405161008d9190610d90565b60405180910390f35b6100b060048036036100ab9190810190610968565b61023a565b005b6100cc60048036036100c79190810190610914565b610392565b005b6100e860048036036100e391908101906108c5565b61044e565b005b6000838551602087016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015f90610e2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663951a02af84846040518363ffffffff1660e01b81526004016101a3929190610dd4565b600060405180830381600087803b1580156101bd57600080fd5b505af11580156101d1573d6000803e3d6000fd5b505050507fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8185604051610206929190610dab565b60405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c090610e0b565b60405180910390fd5b6000838551602087016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033e90610e2b565b60405180910390fd5b6103528382846104ed565b7fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8185604051610383929190610dab565b60405180910390a15050505050565b6000818351602085016000f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610e2b565b60405180910390fd5b7fecef66cbb4d4c8dd18157def75d46290ddc298395ea46f7ff64321c1a912cbad8183604051610441929190610dab565b60405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d490610e0b565b60405180910390fd5b6104e88383836104ed565b505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610528929190610dab565b600060405180830381600087803b15801561054257600080fd5b505af1158015610556573d6000803e3d6000fd5b50505050610562610570565b61056b57600080fd5b505050565b600080600090503d6000811461058d5760208114610596576105a2565b600191506105a2565b60206000803e60005191505b50600081141591505090565b60006105ba823561104e565b905092915050565b600082601f8301126105d357600080fd5b81356105e66105e182610e78565b610e4b565b9150818183526020840193506020810190508385606084028201111561060b57600080fd5b60005b8381101561063b57816106218882610645565b84526020840193506060830192505060018101905061060e565b5050505092915050565b600082601f83011261065657600080fd5b600361066961066482610ea0565b610e4b565b9150818385602084028201111561067f57600080fd5b60005b838110156106af5781610695888261072d565b845260208401935060208301925050600181019050610682565b5050505092915050565b600082601f8301126106ca57600080fd5b81356106dd6106d882610ec2565b610e4b565b9150818183526020840193506020810190508360005b83811015610723578135860161070988826107e9565b8452602084019350602083019250506001810190506106f3565b5050505092915050565b60006107398235611060565b905092915050565b600082601f83011261075257600080fd5b813561076561076082610eea565b610e4b565b9150808252602083016020830185838301111561078157600080fd5b61078c838284611094565b50505092915050565b600082601f8301126107a657600080fd5b81356107b96107b482610f16565b610e4b565b915080825260208301602083018583830111156107d557600080fd5b6107e0838284611094565b50505092915050565b600060e082840312156107fb57600080fd5b61080560e0610e4b565b90506000610815848285016105ae565b6000830152506020610829848285016108b1565b602083015250604061083d848285016105ae565b6040830152506060610851848285016108b1565b6060830152506080610865848285016105ae565b60808301525060a0610879848285016108b1565b60a08301525060c082013567ffffffffffffffff81111561089957600080fd5b6108a584828501610741565b60c08301525092915050565b60006108bd823561108a565b905092915050565b6000806000606084860312156108da57600080fd5b60006108e8868287016105ae565b93505060206108f9868287016105ae565b925050604061090a868287016108b1565b9150509250925092565b6000806040838503121561092757600080fd5b600083013567ffffffffffffffff81111561094157600080fd5b61094d85828601610795565b925050602061095e858286016108b1565b9150509250929050565b6000806000806080858703121561097e57600080fd5b600085013567ffffffffffffffff81111561099857600080fd5b6109a487828801610795565b94505060206109b5878288016108b1565b93505060406109c6878288016105ae565b92505060606109d7878288016108b1565b91505092959194509250565b600080600080608085870312156109f957600080fd5b600085013567ffffffffffffffff811115610a1357600080fd5b610a1f87828801610795565b9450506020610a30878288016108b1565b935050604085013567ffffffffffffffff811115610a4d57600080fd5b610a59878288016106b9565b925050606085013567ffffffffffffffff811115610a7657600080fd5b610a82878288016105c2565b91505092959194509250565b6000610a9a8383610b4a565b60608301905092915050565b6000610ab28383610c0e565b60208301905092915050565b6000610aca8383610cd6565b905092915050565b610adb81611008565b82525050565b610aea81611008565b82525050565b6000610afb82610f66565b610b058185610fb9565b9350610b1083610f42565b60005b82811015610b3e57610b26868351610a8e565b9550610b3182610f92565b9150600181019050610b13565b50849250505092915050565b610b5381610f71565b610b5d8184610fca565b9250610b6882610f4f565b60005b82811015610b9657610b7e858351610aa6565b9450610b8982610f9f565b9150600181019050610b6b565b5050505050565b6000610ba882610f7c565b610bb28185610fd5565b935083602082028501610bc485610f59565b60005b84811015610bfd578383038852610bdf838351610abe565b9250610bea82610fac565b9150602088019750600181019050610bc7565b508196508694505050505092915050565b610c178161101a565b82525050565b6000610c2882610f87565b610c328185610fe6565b9350610c428185602086016110a3565b610c4b816110d6565b840191505092915050565b6000610c63600c83610ff7565b91507f4f4e4c595f52454c4159455200000000000000000000000000000000000000006000830152602082019050919050565b6000610ca3601083610ff7565b91507f4641494c45445f4445504c4f59494e47000000000000000000000000000000006000830152602082019050919050565b600060e083016000830151610cee6000860182610ad2565b506020830151610d016020860182610d72565b506040830151610d146040860182610ad2565b506060830151610d276060860182610d72565b506080830151610d3a6080860182610ad2565b5060a0830151610d4d60a0860182610d72565b5060c083015184820360c0860152610d658282610c1d565b9150508091505092915050565b610d7b81611044565b82525050565b610d8a81611044565b82525050565b6000602082019050610da56000830184610ae1565b92915050565b6000604082019050610dc06000830185610ae1565b610dcd6020830184610d81565b9392505050565b60006040820190508181036000830152610dee8185610b9d565b90508181036020830152610e028184610af0565b90509392505050565b60006020820190508181036000830152610e2481610c56565b9050919050565b60006020820190508181036000830152610e4481610c96565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715610e6e57600080fd5b8060405250919050565b600067ffffffffffffffff821115610e8f57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610eb757600080fd5b602082029050919050565b600067ffffffffffffffff821115610ed957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610f0157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610f2d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b600081519050919050565b600060039050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061101382611024565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006110598261106a565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156110c15780820151818401526020810190506110a6565b838111156110d0576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a72305820bf80654414cf95f454c4a8a32a197b9da79abe4a33293e351ddf669c3c270a106c6578706572696d656e74616cf50037
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000942f9ce5d9a33a82f88d233aeb3292e680230348
-----Decoded View---------------
Arg [0] : relayerAddr (address): 0x942f9CE5D9a33a82F88D233AEb3292E680230348
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000942f9ce5d9a33a82f88d233aeb3292e680230348
Deployed Bytecode Sourcemap
15006:1360:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15006:1360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15817:357;;;;;;;;;;;;;;;;:::i;:::-;;15086:22;;;:::i;:::-;;;;;;;;;;;;;;;;15427:385;;;;;;;;;;;;;;;;:::i;:::-;;15188:234;;;;;;;;;;;;;;;;:::i;:::-;;16179:184;;;;;;;;;;;;;;;;:::i;:::-;;15817:357;15956:12;16033:4;16026;16020:11;16013:4;16007;16003:15;16000:1;15992:46;15984:54;;16068:1;16052:18;;:4;:18;;;;16044:47;;;;;;;;;;;;;;;;;;;;;;16105:4;16096:22;;;16119:4;16125:10;16096:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16096:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16096:40:0;;;;16146:23;16158:4;16164;16146:23;;;;;;;;;;;;;;;;15817:357;;;;;:::o;15086:22::-;;;;;;;;;;;;;:::o;15427:385::-;15557:7;;;;;;;;;;;15543:21;;:10;:21;;;15535:46;;;;;;;;;;;;;;;;;;;;;;15586:12;15663:4;15656;15650:11;15643:4;15637;15633:15;15630:1;15622:46;15614:54;;15698:1;15682:18;;:4;:18;;;;15674:47;;;;;;;;;;;;;;;;;;;;;;15726:48;15745:9;15756:4;15762:11;15726:18;:48::i;:::-;15784:23;15796:4;15802;15784:23;;;;;;;;;;;;;;;;15427:385;;;;;:::o;15188:234::-;15249:12;15326:4;15319;15313:11;15306:4;15300;15296:15;15293:1;15285:46;15277:54;;15361:1;15345:18;;:4;:18;;;;15337:47;;;;;;;;;;;;;;;;;;;;;;15394:23;15406:4;15412;15394:23;;;;;;;;;;;;;;;;15188:234;;;:::o;16179:184::-;16283:7;;;;;;;;;;;16269:21;;:10;:21;;;16261:46;;;;;;;;;;;;;;;;;;;;;;16312;16331:9;16342:2;16346:11;16312:18;:46::i;:::-;16179:184;;;:::o;997:148::-;1085:5;1072:28;;;1101:2;1105:6;1072:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1072:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1072:40:0;;;;1125:14;:12;:14::i;:::-;1117:23;;;;;;997:148;;;:::o;376:616::-;431:4;444:19;466:1;444:23;;558:14;625:3;620:38;;;;714:4;709:169;;;;551:402;;620:38;651:1;636:16;;620:38;;709:169;792:4;787:3;782;767:30;868:3;862:10;847:25;;551:402;;986:1;971:11;:16;;964:23;;;376:616;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;151:764;;287:3;280:4;272:6;268:17;264:27;254:2;;305:1;302;295:12;254:2;342:6;329:20;364:99;379:83;455:6;379:83;;;364:99;;;355:108;;480:5;505:6;498:5;491:21;535:4;527:6;523:17;513:27;;557:4;552:3;548:14;541:21;;610:6;657:3;649:4;641:6;637:17;632:3;628:27;625:36;622:2;;;674:1;671;664:12;622:2;699:1;684:225;709:6;706:1;703:13;684:225;;;767:3;789:56;841:3;829:10;789:56;;;784:3;777:69;869:4;864:3;860:14;853:21;;897:4;892:3;888:14;881:21;;741:168;731:1;728;724:9;719:14;;684:225;;;688:14;247:668;;;;;;;;942:607;;1053:3;1046:4;1038:6;1034:17;1030:27;1020:2;;1071:1;1068;1061:12;1020:2;1095:3;1113:74;1128:58;1179:6;1128:58;;;1113:74;;;1104:83;;1204:5;1263:6;1310:3;1302:4;1294:6;1290:17;1285:3;1281:27;1278:36;1275:2;;;1327:1;1324;1317:12;1275:2;1352:1;1337:206;1362:6;1359:1;1356:13;1337:206;;;1420:3;1442:37;1475:3;1463:10;1442:37;;;1437:3;1430:50;1503:4;1498:3;1494:14;1487:21;;1531:4;1526:3;1522:14;1515:21;;1394:149;1384:1;1381;1377:9;1372:14;;1337:206;;;1341:14;1013:536;;;;;;;;1595:750;;1736:3;1729:4;1721:6;1717:17;1713:27;1703:2;;1754:1;1751;1744:12;1703:2;1791:6;1778:20;1813:104;1828:88;1909:6;1828:88;;;1813:104;;;1804:113;;1934:5;1959:6;1952:5;1945:21;1989:4;1981:6;1977:17;1967:27;;2011:4;2006:3;2002:14;1995:21;;2064:6;2097:1;2082:257;2107:6;2104:1;2101:13;2082:257;;;2190:3;2177:17;2169:6;2165:30;2214:61;2271:3;2259:10;2214:61;;;2209:3;2202:74;2299:4;2294:3;2290:14;2283:21;;2327:4;2322:3;2318:14;2311:21;;2139:200;2129:1;2126;2122:9;2117:14;;2082:257;;;2086:14;1696:649;;;;;;;;2353:118;;2420:46;2458:6;2445:20;2420:46;;;2411:55;;2405:66;;;;;2479:432;;2576:3;2569:4;2561:6;2557:17;2553:27;2543:2;;2594:1;2591;2584:12;2543:2;2631:6;2618:20;2653:60;2668:44;2705:6;2668:44;;;2653:60;;;2644:69;;2733:6;2726:5;2719:21;2769:4;2761:6;2757:17;2802:4;2795:5;2791:16;2837:3;2828:6;2823:3;2819:16;2816:25;2813:2;;;2854:1;2851;2844:12;2813:2;2864:41;2898:6;2893:3;2888;2864:41;;;2536:375;;;;;;;;2920:440;;3021:3;3014:4;3006:6;3002:17;2998:27;2988:2;;3039:1;3036;3029:12;2988:2;3076:6;3063:20;3098:64;3113:48;3154:6;3113:48;;;3098:64;;;3089:73;;3182:6;3175:5;3168:21;3218:4;3210:6;3206:17;3251:4;3244:5;3240:16;3286:3;3277:6;3272:3;3268:16;3265:25;3262:2;;;3303:1;3300;3293:12;3262:2;3313:41;3347:6;3342:3;3337;3313:41;;;2981:379;;;;;;;;3402:1304;;3515:4;3503:9;3498:3;3494:19;3490:30;3487:2;;;3533:1;3530;3523:12;3487:2;3551:20;3566:4;3551:20;;;3542:29;;3633:1;3664:49;3709:3;3700:6;3689:9;3685:22;3664:49;;;3658:3;3651:5;3647:15;3640:74;3581:144;3776:2;3809:49;3854:3;3845:6;3834:9;3830:22;3809:49;;;3802:4;3795:5;3791:16;3784:75;3735:135;3928:2;3961:49;4006:3;3997:6;3986:9;3982:22;3961:49;;;3954:4;3947:5;3943:16;3936:75;3880:142;4077:2;4110:49;4155:3;4146:6;4135:9;4131:22;4110:49;;;4103:4;4096:5;4092:16;4085:75;4032:139;4219:3;4253:49;4298:3;4289:6;4278:9;4274:22;4253:49;;;4246:4;4239:5;4235:16;4228:75;4181:133;4365:3;4399:49;4444:3;4435:6;4424:9;4420:22;4399:49;;;4392:4;4385:5;4381:16;4374:75;4324:136;4538:3;4527:9;4523:19;4510:33;4563:18;4555:6;4552:30;4549:2;;;4595:1;4592;4585:12;4549:2;4630:54;4680:3;4671:6;4660:9;4656:22;4630:54;;;4623:4;4616:5;4612:16;4605:80;4470:226;3481:1225;;;;;4713:118;;4780:46;4818:6;4805:20;4780:46;;;4771:55;;4765:66;;;;;4838:491;;;;4976:2;4964:9;4955:7;4951:23;4947:32;4944:2;;;4992:1;4989;4982:12;4944:2;5027:1;5044:53;5089:7;5080:6;5069:9;5065:22;5044:53;;;5034:63;;5006:97;5134:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;;;5142:63;;5113:98;5242:2;5260:53;5305:7;5296:6;5285:9;5281:22;5260:53;;;5250:63;;5221:98;4938:391;;;;;;5336:470;;;5466:2;5454:9;5445:7;5441:23;5437:32;5434:2;;;5482:1;5479;5472:12;5434:2;5545:1;5534:9;5530:17;5517:31;5568:18;5560:6;5557:30;5554:2;;;5600:1;5597;5590:12;5554:2;5620:62;5674:7;5665:6;5654:9;5650:22;5620:62;;;5610:72;;5496:192;5719:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;;;5727:63;;5698:98;5428:378;;;;;;5813:721;;;;;5977:3;5965:9;5956:7;5952:23;5948:33;5945:2;;;5994:1;5991;5984:12;5945:2;6057:1;6046:9;6042:17;6029:31;6080:18;6072:6;6069:30;6066:2;;;6112:1;6109;6102:12;6066:2;6132:62;6186:7;6177:6;6166:9;6162:22;6132:62;;;6122:72;;6008:192;6231:2;6249:53;6294:7;6285:6;6274:9;6270:22;6249:53;;;6239:63;;6210:98;6339:2;6357:53;6402:7;6393:6;6382:9;6378:22;6357:53;;;6347:63;;6318:98;6447:2;6465:53;6510:7;6501:6;6490:9;6486:22;6465:53;;;6455:63;;6426:98;5939:595;;;;;;;;6541:1079;;;;;6798:3;6786:9;6777:7;6773:23;6769:33;6766:2;;;6815:1;6812;6805:12;6766:2;6878:1;6867:9;6863:17;6850:31;6901:18;6893:6;6890:30;6887:2;;;6933:1;6930;6923:12;6887:2;6953:62;7007:7;6998:6;6987:9;6983:22;6953:62;;;6943:72;;6829:192;7052:2;7070:53;7115:7;7106:6;7095:9;7091:22;7070:53;;;7060:63;;7031:98;7188:2;7177:9;7173:18;7160:32;7212:18;7204:6;7201:30;7198:2;;;7244:1;7241;7234:12;7198:2;7264:102;7358:7;7349:6;7338:9;7334:22;7264:102;;;7254:112;;7139:233;7431:2;7420:9;7416:18;7403:32;7455:18;7447:6;7444:30;7441:2;;;7487:1;7484;7477:12;7441:2;7507:97;7596:7;7587:6;7576:9;7572:22;7507:97;;;7497:107;;7382:228;6760:860;;;;;;;;7628:251;;7752:87;7835:3;7828:5;7752:87;;;7868:4;7863:3;7859:14;7845:28;;7745:134;;;;;7888:171;;7974:45;8015:3;8008:5;7974:45;;;8048:4;8043:3;8039:14;8025:28;;7967:92;;;;;8068:251;;8216:97;8309:3;8302:5;8216:97;;;8202:111;;8195:124;;;;;8327:110;8400:31;8425:5;8400:31;;;8395:3;8388:44;8382:55;;;8444:120;8527:31;8552:5;8527:31;;;8522:3;8515:44;8509:55;;;8608:773;;8791:73;8858:5;8791:73;;;8877:105;8975:6;8970:3;8877:105;;;8870:112;;9002:75;9071:5;9002:75;;;9098:1;9083:276;9108:6;9105:1;9102:13;9083:276;;;9155:101;9252:3;9243:6;9237:13;9155:101;;;9148:108;;9273:79;9345:6;9273:79;;;9263:89;;9130:1;9127;9123:9;9118:14;;9083:276;;;9087:14;9372:3;9365:10;;8770:611;;;;;;;9422:555;9541:48;9583:5;9541:48;;;9602:74;9669:6;9664:3;9602:74;;;9595:81;;9696:50;9740:5;9696:50;;;9767:1;9752:213;9777:6;9774:1;9771:13;9752:213;;;9824:63;9883:3;9874:6;9868:13;9824:63;;;9817:70;;9904:54;9951:6;9904:54;;;9894:64;;9799:1;9796;9792:9;9787:14;;9752:213;;;9756:14;9520:457;;;;;10056:971;;10249:78;10321:5;10249:78;;;10340:110;10443:6;10438:3;10340:110;;;10333:117;;10473:3;10515:4;10507:6;10503:17;10498:3;10494:27;10541:80;10615:5;10541:80;;;10642:1;10627:361;10652:6;10649:1;10646:13;10627:361;;;10714:9;10708:4;10704:20;10699:3;10692:33;10740:112;10847:4;10838:6;10832:13;10740:112;;;10732:120;;10869:84;10946:6;10869:84;;;10859:94;;10976:4;10971:3;10967:14;10960:21;;10674:1;10671;10667:9;10662:14;;10627:361;;;10631:14;11001:4;10994:11;;11018:3;11011:10;;10228:799;;;;;;;;;11035:110;11108:31;11133:5;11108:31;;;11103:3;11096:44;11090:55;;;11152:315;;11248:34;11276:5;11248:34;;;11294:60;11347:6;11342:3;11294:60;;;11287:67;;11359:52;11404:6;11399:3;11392:4;11385:5;11381:16;11359:52;;;11432:29;11454:6;11432:29;;;11427:3;11423:39;11416:46;;11228:239;;;;;;11475:364;;11635:67;11699:2;11694:3;11635:67;;;11628:74;;11735:66;11731:1;11726:3;11722:11;11715:87;11830:2;11825:3;11821:12;11814:19;;11621:218;;;;11848:364;;12008:67;12072:2;12067:3;12008:67;;;12001:74;;12108:66;12104:1;12099:3;12095:11;12088:87;12203:2;12198:3;12194:12;12187:19;;11994:218;;;;12285:1336;;12428:4;12423:3;12419:14;12522:3;12515:5;12511:15;12505:22;12533:61;12589:3;12584;12580:13;12567:11;12533:61;;;12448:152;12673:4;12666:5;12662:16;12656:23;12685:62;12741:4;12736:3;12732:14;12719:11;12685:62;;;12610:143;12833:4;12826:5;12822:16;12816:23;12845:62;12901:4;12896:3;12892:14;12879:11;12845:62;;;12763:150;12990:4;12983:5;12979:16;12973:23;13002:62;13058:4;13053:3;13049:14;13036:11;13002:62;;;12923:147;13140:4;13133:5;13129:16;13123:23;13152:62;13208:4;13203:3;13199:14;13186:11;13152:62;;;13080:140;13293:4;13286:5;13282:16;13276:23;13305:62;13361:4;13356:3;13352:14;13339:11;13305:62;;;13230:143;13445:4;13438:5;13434:16;13428:23;13497:3;13491:4;13487:14;13480:4;13475:3;13471:14;13464:38;13517:66;13578:4;13565:11;13517:66;;;13509:74;;13383:212;13612:4;13605:11;;12401:1220;;;;;;13628:110;13701:31;13726:5;13701:31;;;13696:3;13689:44;13683:55;;;13745:120;13828:31;13853:5;13828:31;;;13823:3;13816:44;13810:55;;;13872:213;;13990:2;13979:9;13975:18;13967:26;;14004:71;14072:1;14061:9;14057:17;14048:6;14004:71;;;13961:124;;;;;14092:324;;14238:2;14227:9;14223:18;14215:26;;14252:71;14320:1;14309:9;14305:17;14296:6;14252:71;;;14334:72;14402:2;14391:9;14387:18;14378:6;14334:72;;;14209:207;;;;;;14423:792;;14755:2;14744:9;14740:18;14732:26;;14805:9;14799:4;14795:20;14791:1;14780:9;14776:17;14769:47;14830:156;14981:4;14972:6;14830:156;;;14822:164;;15034:9;15028:4;15024:20;15019:2;15008:9;15004:18;14997:48;15059:146;15200:4;15191:6;15059:146;;;15051:154;;14726:489;;;;;;15222:407;;15413:2;15402:9;15398:18;15390:26;;15463:9;15457:4;15453:20;15449:1;15438:9;15434:17;15427:47;15488:131;15614:4;15488:131;;;15480:139;;15384:245;;;;15636:407;;15827:2;15816:9;15812:18;15804:26;;15877:9;15871:4;15867:20;15863:1;15852:9;15848:17;15841:47;15902:131;16028:4;15902:131;;;15894:139;;15798:245;;;;16050:256;;16112:2;16106:9;16096:19;;16150:4;16142:6;16138:17;16249:6;16237:10;16234:22;16213:18;16201:10;16198:34;16195:62;16192:2;;;16270:1;16267;16260:12;16192:2;16290:10;16286:2;16279:22;16090:216;;;;;16313:277;;16491:18;16483:6;16480:30;16477:2;;;16523:1;16520;16513:12;16477:2;16552:4;16544:6;16540:17;16532:25;;16580:4;16574;16570:15;16562:23;;16414:176;;;;16597:229;;16750:18;16742:6;16739:30;16736:2;;;16782:1;16779;16772:12;16736:2;16811:4;16803:6;16799:17;16791:25;;16673:153;;;;16833:282;;17016:18;17008:6;17005:30;17002:2;;;17048:1;17045;17038:12;17002:2;17077:4;17069:6;17065:17;17057:25;;17105:4;17099;17095:15;17087:23;;16939:176;;;;17122:254;;17261:18;17253:6;17250:30;17247:2;;;17293:1;17290;17283:12;17247:2;17337:4;17333:9;17326:4;17318:6;17314:17;17310:33;17302:41;;17366:4;17360;17356:15;17348:23;;17184:192;;;;17383:258;;17526:18;17518:6;17515:30;17512:2;;;17558:1;17555;17548:12;17512:2;17602:4;17598:9;17591:4;17583:6;17579:17;17575:33;17567:41;;17631:4;17625;17621:15;17613:23;;17449:192;;;;17650:140;;17778:4;17770:6;17766:17;17755:28;;17747:43;;;;17801:104;;17892:6;17881:17;;17873:32;;;;17916:145;;18049:4;18041:6;18037:17;18026:28;;18018:43;;;;18070:126;;18185:5;18179:12;18169:22;;18163:33;;;;18203:92;;18287:3;18277:13;;18271:24;;;;18302:131;;18422:5;18416:12;18406:22;;18400:33;;;;18440:87;;18516:5;18510:12;18500:22;;18494:33;;;;18535:141;;18665:4;18657:6;18653:17;18642:28;;18635:41;;;;18685:116;;18790:4;18782:6;18778:17;18767:28;;18760:41;;;;18810:146;;18945:4;18937:6;18933:17;18922:28;;18915:41;;;;18965:197;;19114:6;19109:3;19102:19;19151:4;19146:3;19142:14;19127:29;;19095:67;;;;;19171:130;;19292:3;19277:18;;19270:31;;;;;19310:202;;19464:6;19459:3;19452:19;19501:4;19496:3;19492:14;19477:29;;19445:67;;;;;19521:152;;19625:6;19620:3;19613:19;19662:4;19657:3;19653:14;19638:29;;19606:67;;;;;19682:163;;19797:6;19792:3;19785:19;19834:4;19829:3;19825:14;19810:29;;19778:67;;;;;19853:105;;19922:31;19947:5;19922:31;;;19911:42;;19905:53;;;;19965:79;;20034:5;20023:16;;20017:27;;;;20051:128;;20131:42;20124:5;20120:54;20109:65;;20103:76;;;;20186:79;;20255:5;20244:16;;20238:27;;;;20272:105;;20341:31;20366:5;20341:31;;;20330:42;;20324:53;;;;20384:79;;20453:5;20442:16;;20436:27;;;;20470:128;;20550:42;20543:5;20539:54;20528:65;;20522:76;;;;20605:79;;20674:5;20663:16;;20657:27;;;;20692:145;20773:6;20768:3;20763;20750:30;20829:1;20820:6;20815:3;20811:16;20804:27;20743:94;;;;20846:268;20911:1;20918:101;20932:6;20929:1;20926:13;20918:101;;;21008:1;21003:3;20999:11;20993:18;20989:1;20984:3;20980:11;20973:39;20954:2;20951:1;20947:10;20942:15;;20918:101;;;21034:6;21031:1;21028:13;21025:2;;;21099:1;21090:6;21085:3;21081:16;21074:27;21025:2;20895:219;;;;;21122:97;;21210:2;21206:7;21201:2;21194:5;21190:14;21186:28;21176:38;;21170:49;;;
Swarm Source
bzzr://bf80654414cf95f454c4a8a32a197b9da79abe4a33293e351ddf669c3c270a10
Loading...
Loading
Loading...
Loading
OVERVIEW
The deployer address for AdEx's contract.Net Worth in USD
$271.34
Net Worth in ETH
0.131043
Token Allocations
SAI
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $10.95 | 24.78 | $271.34 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.