false
true
0
PulseChain
Blockchain
Blocks
Blocks
Uncles
Forked Blocks (Reorgs)
Transactions
Confirmed
Pending
Verified contracts
Tokens
All
PLS
APIs
GraphQL
RPC
Eth RPC
Apps
PulseChain Beacon Explorer
PulseX
PulseChain Bridge
Become a Validator
PulseChain
Mainnets
PulseChain Mainnet
Testnets
Testnet V4
/
Search
/
Search
Connection Lost
New Solidity Smart Contract Verification
Contract Address
The 0x address supplied on contract creation.
Is Yul contract
No
Yes
Select Yes if you want to verify Yul contract.
Contract Name
Must match the name specified in the code. For example, in
contract MyContract {..}
MyContract
is the contract name.
Include nightly builds
No
Yes
Select yes if you want to show nightly builds.
Compiler
v0.8.35-pre.1+commit.a99b6d8c
v0.8.34+commit.80d5c536
v0.8.33+commit.64118f21
v0.8.32+commit.ebbd65e5
v0.8.31+commit.fd3a2265
v0.8.31-pre.1+commit.b59566f6
v0.8.30+commit.73712a01
v0.8.29+commit.ab55807c
v0.8.28+commit.7893614a
v0.8.27+commit.40a35a09
v0.8.26+commit.8a97fa7a
v0.8.25+commit.b61c2a91
v0.8.24+commit.e11b9ed9
v0.8.23+commit.f704f362
v0.8.22+commit.4fc1097e
v0.8.21+commit.d9974bed
v0.8.20+commit.a1b79de6
v0.8.19+commit.7dd6d404
v0.8.18+commit.87f61d96
v0.8.17+commit.8df45f5f
v0.8.16+commit.07a7930e
v0.8.15+commit.e14f2714
v0.8.14+commit.80d49f37
v0.8.13+commit.abaa5c0e
v0.8.12+commit.f00d7308
v0.8.11+commit.d7f03943
v0.8.10+commit.fc410830
v0.8.9+commit.e5eed63a
v0.8.8+commit.dddeac2f
v0.8.7+commit.e28d00a7
v0.8.6+commit.11564f7e
v0.8.5+commit.a4f2e591
v0.8.4+commit.c7e474f2
v0.8.3+commit.8d00100c
v0.8.2+commit.661d1103
v0.8.1+commit.df193b15
v0.8.0+commit.c7dfd78e
v0.7.6+commit.7338295f
v0.7.5+commit.eb77ed08
v0.7.4+commit.3f05b770
v0.7.3+commit.9bfce1f6
v0.7.2+commit.51b20bc0
v0.7.1+commit.f4a555be
v0.7.0+commit.9e61f92b
v0.6.12+commit.27d51765
v0.6.11+commit.5ef660b1
v0.6.10+commit.00c0fcaf
v0.6.9+commit.3e3065ac
v0.6.8+commit.0bbfe453
v0.6.7+commit.b8d736ae
v0.6.6+commit.6c089d02
v0.6.5+commit.f956cc89
v0.6.4+commit.1dca32f3
v0.6.3+commit.8dda9521
v0.6.2+commit.bacdbe57
v0.6.1+commit.e6f7d5a4
v0.6.0+commit.26b70077
v0.5.17+commit.d19bba13
v0.5.16+commit.9c3226ce
v0.5.15+commit.6a57276f
v0.5.14+commit.01f1aaa4
v0.5.13+commit.5b0b510c
v0.5.12+commit.7709ece9
v0.5.11+commit.22be8592
v0.5.10+commit.5a6ea5b1
v0.5.9+commit.c68bc34e
v0.5.8+commit.23d335f2
v0.5.7+commit.6da8b019
v0.5.6+commit.b259423e
v0.5.5+commit.47a71e8f
v0.5.4+commit.9549d8ff
v0.5.3+commit.10d17f24
v0.5.2+commit.1df8f40c
v0.5.1+commit.c8a2cb62
v0.5.0+commit.1d4f565a
v0.4.26+commit.4563c3fc
v0.4.25+commit.59dbf8f1
v0.4.24+commit.e67f0147
v0.4.23+commit.124ca40d
v0.4.22+commit.4cb486ee
v0.4.21+commit.dfe3193c
v0.4.20+commit.3155dd80
v0.4.19+commit.c4cbbb05
v0.4.18+commit.9cf6e910
v0.4.17+commit.bdeb9e52
v0.4.16+commit.d7661dd9
v0.4.15+commit.8b45bddb
v0.4.14+commit.c2215d46
v0.4.13+commit.0fb4cb1a
v0.4.12+commit.194ff033
v0.4.11+commit.68ef5810
v0.4.10+commit.9e8cc01b
The compiler version is specified in
pragma solidity X.X.X
. Use the compiler version rather than the nightly build. If using the Solidity compiler, run
solc —version
to check.
EVM Version
homestead
tangerineWhistle
spuriousDragon
byzantium
constantinople
petersburg
istanbul
berlin
london
paris
shanghai
default
The EVM version the contract is written for. If the bytecode does not match the version, we try to verify using the latest EVM version.
EVM version details
.
Optimization
No
Yes
If you enabled optimization during compilation, select yes.
Optimization runs
Enter the Solidity Contract Code
pragma solidity ^0.4.13; library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ContributorApprover { KyberContributorWhitelist public list; mapping(address=>uint) public participated; uint public cappedSaleStartTime; uint public openSaleStartTime; uint public openSaleEndTime; using SafeMath for uint; function ContributorApprover( KyberContributorWhitelist _whitelistContract, uint _cappedSaleStartTime, uint _openSaleStartTime, uint _openSaleEndTime ) { list = _whitelistContract; cappedSaleStartTime = _cappedSaleStartTime; openSaleStartTime = _openSaleStartTime; openSaleEndTime = _openSaleEndTime; require( list != KyberContributorWhitelist(0x0) ); require( cappedSaleStartTime < openSaleStartTime ); require( openSaleStartTime < openSaleEndTime ); } // this is a seperate function so user could query it before crowdsale starts function contributorCap( address contributor ) constant returns(uint) { return list.getCap( contributor ); } function eligible( address contributor, uint amountInWei ) constant returns(uint) { if( now < cappedSaleStartTime ) return 0; if( now >= openSaleEndTime ) return 0; uint cap = contributorCap( contributor ); if( cap == 0 ) return 0; if( now < openSaleStartTime ) { uint remainedCap = cap.sub( participated[ contributor ] ); if( remainedCap > amountInWei ) return amountInWei; else return remainedCap; } else { return amountInWei; } } function eligibleTestAndIncrement( address contributor, uint amountInWei ) internal returns(uint) { uint result = eligible( contributor, amountInWei ); participated[contributor] = participated[contributor].add( result ); return result; } function saleEnded() constant returns(bool) { return now > openSaleEndTime; } function saleStarted() constant returns(bool) { return now >= cappedSaleStartTime; } } contract KyberNetworkTokenSale is ContributorApprover { address public admin; address public kyberMultiSigWallet; KyberNetworkCrystal public token; uint public raisedWei; bool public haltSale; mapping(bytes32=>uint) public proxyPurchases; function KyberNetworkTokenSale( address _admin, address _kyberMultiSigWallet, KyberContributorWhitelist _whilteListContract, uint _totalTokenSupply, uint _premintedTokenSupply, uint _cappedSaleStartTime, uint _publicSaleStartTime, uint _publicSaleEndTime ) ContributorApprover( _whilteListContract, _cappedSaleStartTime, _publicSaleStartTime, _publicSaleEndTime ) { admin = _admin; kyberMultiSigWallet = _kyberMultiSigWallet; token = new KyberNetworkCrystal( _totalTokenSupply, _cappedSaleStartTime, _publicSaleEndTime + 7 days, _admin ); // transfer preminted tokens to company wallet token.transfer( kyberMultiSigWallet, _premintedTokenSupply ); } function setHaltSale( bool halt ) { require( msg.sender == admin ); haltSale = halt; } function() payable { buy( msg.sender ); } event ProxyBuy( bytes32 indexed _proxy, address _recipient, uint _amountInWei ); function proxyBuy( bytes32 proxy, address recipient ) payable returns(uint){ uint amount = buy( recipient ); proxyPurchases[proxy] = proxyPurchases[proxy].add(amount); ProxyBuy( proxy, recipient, amount ); return amount; } event Buy( address _buyer, uint _tokens, uint _payedWei ); function buy( address recipient ) payable returns(uint){ require( tx.gasprice <= 50000000000 wei ); require( ! haltSale ); require( saleStarted() ); require( ! saleEnded() ); uint weiPayment = eligibleTestAndIncrement( recipient, msg.value ); require( weiPayment > 0 ); // send to msg.sender, not to recipient if( msg.value > weiPayment ) { msg.sender.transfer( msg.value.sub( weiPayment ) ); } // send payment to wallet sendETHToMultiSig( weiPayment ); raisedWei = raisedWei.add( weiPayment ); uint recievedTokens = weiPayment.mul( 600 ); assert( token.transfer( recipient, recievedTokens ) ); Buy( recipient, recievedTokens, weiPayment ); return weiPayment; } function sendETHToMultiSig( uint value ) internal { kyberMultiSigWallet.transfer( value ); } event FinalizeSale(); // function is callable by everyone function finalizeSale() { require( saleEnded() ); require( msg.sender == admin ); // burn remaining tokens token.burn(token.balanceOf(this)); FinalizeSale(); } // ETH balance is always expected to be 0. // but in case something went wrong, we use this function to extract the eth. function emergencyDrain(ERC20 anyToken) returns(bool){ require( msg.sender == admin ); require( saleEnded() ); if( this.balance > 0 ) { sendETHToMultiSig( this.balance ); } if( anyToken != address(0x0) ) { assert( anyToken.transfer(kyberMultiSigWallet, anyToken.balanceOf(this)) ); } return true; } // just to check that funds goes to the right place // tokens are not given in return function debugBuy() payable { require( msg.value == 123 ); sendETHToMultiSig( msg.value ); } } contract Ownable { address public owner; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner { if (newOwner != address(0)) { owner = newOwner; } } } contract KyberContributorWhitelist is Ownable { // cap is in wei. The value of 7 is just a stub. // after kyc registration ends, we change it to the actual value with setSlackUsersCap uint public slackUsersCap = 7; mapping(address=>uint) public addressCap; function KyberContributorWhitelist() {} event ListAddress( address _user, uint _cap, uint _time ); // Owner can delist by setting cap = 0. // Onwer can also change it at any time function listAddress( address _user, uint _cap ) onlyOwner { addressCap[_user] = _cap; ListAddress( _user, _cap, now ); } // an optimization in case of network congestion function listAddresses( address[] _users, uint[] _cap ) onlyOwner { require(_users.length == _cap.length ); for( uint i = 0 ; i < _users.length ; i++ ) { listAddress( _users[i], _cap[i] ); } } function setSlackUsersCap( uint _cap ) onlyOwner { slackUsersCap = _cap; } function getCap( address _user ) constant returns(uint) { uint cap = addressCap[_user]; if( cap == 1 ) return slackUsersCap; else return cap; } function destroy() onlyOwner { selfdestruct(owner); } } contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) constant returns (uint256); function transfer(address to, uint256 value) returns (bool); // KYBER-NOTE! code changed to comply with ERC20 standard event Transfer(address indexed _from, address indexed _to, uint _value); //event Transfer(address indexed from, address indexed to, uint256 value); } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) returns (bool) { balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) constant returns (uint256 balance) { return balances[_owner]; } } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) constant returns (uint256); function transferFrom(address from, address to, uint256 value) returns (bool); function approve(address spender, uint256 value) returns (bool); // KYBER-NOTE! code changed to comply with ERC20 standard event Approval(address indexed _owner, address indexed _spender, uint _value); //event Approval(address indexed owner, address indexed spender, uint256 value); } contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amout of tokens to be transfered */ function transferFrom(address _from, address _to, uint256 _value) returns (bool) { var _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); // KYBER-NOTE! code changed to comply with ERC20 standard balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); //balances[_from] = balances[_from].sub(_value); // this was removed allowed[_from][msg.sender] = _allowance.sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) returns (bool) { // To change the approve amount you first have to reduce the addresses` // allowance to zero by calling `approve(_spender, 0)` if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifing the amount of tokens still avaible for the spender. */ function allowance(address _owner, address _spender) constant returns (uint256 remaining) { return allowed[_owner][_spender]; } } contract KyberNetworkCrystal is StandardToken, Ownable { string public constant name = "Kyber Network Crystal"; string public constant symbol = "KNC"; uint public constant decimals = 18; uint public saleStartTime; uint public saleEndTime; address public tokenSaleContract; modifier onlyWhenTransferEnabled() { if( now <= saleEndTime && now >= saleStartTime ) { require( msg.sender == tokenSaleContract ); } _; } modifier validDestination( address to ) { require(to != address(0x0)); require(to != address(this) ); _; } function KyberNetworkCrystal( uint tokenTotalAmount, uint startTime, uint endTime, address admin ) { // Mint all tokens. Then disable minting forever. balances[msg.sender] = tokenTotalAmount; totalSupply = tokenTotalAmount; Transfer(address(0x0), msg.sender, tokenTotalAmount); saleStartTime = startTime; saleEndTime = endTime; tokenSaleContract = msg.sender; transferOwnership(admin); // admin could drain tokens that were sent here by mistake } function transfer(address _to, uint _value) onlyWhenTransferEnabled validDestination(_to) returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint _value) onlyWhenTransferEnabled validDestination(_to) returns (bool) { return super.transferFrom(_from, _to, _value); } event Burn(address indexed _burner, uint _value); function burn(uint _value) onlyWhenTransferEnabled returns (bool){ balances[msg.sender] = balances[msg.sender].sub(_value); totalSupply = totalSupply.sub(_value); Burn(msg.sender, _value); Transfer(msg.sender, address(0x0), _value); return true; } // save some gas by making only one contract call function burnFrom(address _from, uint256 _value) onlyWhenTransferEnabled returns (bool) { assert( transferFrom( _from, msg.sender, _value ) ); return burn(_value); } function emergencyERC20Drain( ERC20 token, uint amount ) onlyOwner { token.transfer( owner, amount ); } }
We recommend using flattened code. This is necessary if your code utilizes a library or inherits dependencies. Use the
POA solidity flattener or the
truffle flattener
.
Try to fetch constructor arguments automatically
No
Yes
ABI-encoded Constructor Arguments (if required by the contract)
6060604052341561000f57600080fd5b604051608080610d4b833981016040528080519190602001805191906020018051919060200180519150505b5b60038054600160a060020a03191633600160a060020a03161790555b600160a060020a0333166000818152600160205260408082208790558682557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a36004839055600582905560068054600160a060020a03191633600160a060020a03161790556100e5816401000000006100ef810261097b1704565b5b5050505061013a565b60035433600160a060020a0390811691161461010a57600080fd5b600160a060020a038116156101355760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b610c02806101496000396000f300606060405236156100ee5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f3578063095ea7b31461017e57806318160ddd146101b45780631cbaee2d146101d957806323b872dd146101fe578063313ce5671461023a57806342966c681461025f5780635d5aa2771461028957806370a08231146102b857806379cc6790146102e95780638da5cb5b1461031f57806395d89b411461034e578063a9059cbb146103d9578063db0e16f11461040f578063dd62ed3e14610433578063ed338ff11461046a578063f2fde38b1461048f575b600080fd5b34156100fe57600080fd5b6101066104b0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101435780820151818401525b60200161012a565b50505050905090810190601f1680156101705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018957600080fd5b6101a0600160a060020a03600435166024356104e7565b604051901515815260200160405180910390f35b34156101bf57600080fd5b6101c761058e565b60405190815260200160405180910390f35b34156101e457600080fd5b6101c7610594565b60405190815260200160405180910390f35b341561020957600080fd5b6101a0600160a060020a036004358116906024351660443561059a565b604051901515815260200160405180910390f35b341561024557600080fd5b6101c7610620565b60405190815260200160405180910390f35b341561026a57600080fd5b6101a0600435610625565b604051901515815260200160405180910390f35b341561029457600080fd5b61029c61073b565b604051600160a060020a03909116815260200160405180910390f35b34156102c357600080fd5b6101c7600160a060020a036004351661074a565b60405190815260200160405180910390f35b34156102f457600080fd5b6101a0600160a060020a0360043516602435610769565b604051901515815260200160405180910390f35b341561032a57600080fd5b61029c6107c6565b604051600160a060020a03909116815260200160405180910390f35b341561035957600080fd5b6101066107d5565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101435780820151818401525b60200161012a565b50505050905090810190601f1680156101705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e457600080fd5b6101a0600160a060020a036004351660243561080c565b604051901515815260200160405180910390f35b341561041a57600080fd5b610431600160a060020a0360043516602435610890565b005b341561043e57600080fd5b6101c7600160a060020a0360043581169060243516610948565b60405190815260200160405180910390f35b341561047557600080fd5b6101c7610975565b60405190815260200160405180910390f35b341561049a57600080fd5b610431600160a060020a036004351661097b565b005b60408051908101604052601581527f4b79626572204e6574776f726b204372797374616c0000000000000000000000602082015281565b60008115806105195750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561052457600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b60045481565b600060055442111580156105b057506004544210155b156105d05760065433600160a060020a039081169116146105d057600080fd5b5b82600160a060020a03811615156105e757600080fd5b30600160a060020a031681600160a060020a03161415151561060857600080fd5b6106138585856109d3565b91505b5b505b9392505050565b601281565b6000600554421115801561063b57506004544210155b1561065b5760065433600160a060020a0390811691161461065b57600080fd5b5b600160a060020a033316600090815260016020526040902054610685908363ffffffff610ae516565b600160a060020a033316600090815260016020526040812091909155546106b2908363ffffffff610ae516565b600055600160a060020a0333167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a2600033600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b919050565b600654600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b6000600554421115801561077f57506004544210155b1561079f5760065433600160a060020a0390811691161461079f57600080fd5b5b6107ab83338461059a565b15156107b357fe5b6107bc82610625565b90505b5b92915050565b600354600160a060020a031681565b60408051908101604052600381527f4b4e430000000000000000000000000000000000000000000000000000000000602082015281565b6000600554421115801561082257506004544210155b156108425760065433600160a060020a0390811691161461084257600080fd5b5b82600160a060020a038116151561085957600080fd5b30600160a060020a031681600160a060020a03161415151561087a57600080fd5b6108848484610afc565b91505b5b505b92915050565b60035433600160a060020a039081169116146108ab57600080fd5b600354600160a060020a038084169163a9059cbb9116836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561092757600080fd5b6102c65a03f1151561093857600080fd5b505050604051805150505b5b5050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60055481565b60035433600160a060020a0390811691161461099657600080fd5b600160a060020a038116156109ce576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600160a060020a038084166000818152600260209081526040808320339095168352938152838220549282526001905291822054610a17908463ffffffff610ae516565b600160a060020a038087166000908152600160205260408082209390935590861681522054610a4c908463ffffffff610bbc16565b600160a060020a038516600090815260016020526040902055610a75818463ffffffff610ae516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600082821115610af157fe5b508082035b92915050565b600160a060020a033316600090815260016020526040812054610b25908363ffffffff610ae516565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b5a908363ffffffff610bbc16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610bcb57fe5b8091505b50929150505600a165627a7a723058207caf63297f1744c81dc22b3fcc78ec19977d0bb4d5160ae1fd8cb6aca1957bcc0029000000000000000000000000346fbe5d02c89fb4599f33bdce987981d573740a000000000000000000000000346fbe5d02c89fb4599f33bdce987981d573740a000000000000000000000000fe8cf10c6075c4c119e34226643bc454a1a0d822000000000000000000000000000000000000000000baf15c8c90e9c8220000000000000000000000000000000000000000000000005d78ae464874e4110000000000000000000000000000000000000000000000000000000000000059bb6c600000000000000000000000000000000000000000000000000000000059bcbde00000000000000000000000000000000000000000000000000000000059be0f60
Add arguments in
ABI hex encoded form
. Constructor arguments are written right to left, and will be found at the end of the input created bytecode. They may also be
parsed here.
Add Contract Libraries
Contract Libraries
Library 1 Name
A library name called in the .sol file. Multiple libraries (up to 10) may be added for each contract. Click the Add Library button to add an additional one.
Library 1 Address
The 0x library address. This can be found in the generated json file or Truffle output (if using truffle).
Library 2 Name
Library 2 Address
Library 3 Name
Library 3 Address
Library 4 Name
Library 4 Address
Library 5 Name
Library 5 Address
Library 6 Name
Library 6 Address
Library 7 Name
Library 7 Address
Library 8 Name
Library 8 Address
Library 9 Name
Library 9 Address
Library 10 Name
Library 10 Address
Add Library
Loading...
Verify & publish
Cancel
Ok
Ok
Ok
No
Yes