Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Tokens | 6070315 | 2373 days ago | IN | 0 ETH | 0.00005367 | ||||
Add Kyc Verified... | 6069869 | 2373 days ago | IN | 0 ETH | 0.00007313 | ||||
Transfer | 6069371 | 2373 days ago | IN | 0.0024 ETH | 0.00013535 | ||||
Add Kyc Verified... | 6069064 | 2374 days ago | IN | 0 ETH | 0.0000354 | ||||
Add Kyc Verified... | 6056965 | 2376 days ago | IN | 0 ETH | 0.00004765 | ||||
Add Kyc Verified... | 6040975 | 2378 days ago | IN | 0 ETH | 0.00003218 | ||||
Add Kyc Verified... | 6038755 | 2379 days ago | IN | 0 ETH | 0.00009437 | ||||
Buy Tokens Via B... | 6021291 | 2382 days ago | IN | 0 ETH | 0.0001208 | ||||
Transfer | 6021237 | 2382 days ago | IN | 0.001 ETH | 0.00005884 | ||||
Transfer | 6021133 | 2382 days ago | IN | 0.15 ETH | 0.00020303 | ||||
Add Kyc Verified... | 6021068 | 2382 days ago | IN | 0 ETH | 0.00006424 | ||||
Transfer | 6017776 | 2382 days ago | IN | 0.15 ETH | 0.00020303 | ||||
Transfer | 6017194 | 2382 days ago | IN | 0.154 ETH | 0.00020303 | ||||
Transfer | 6017189 | 2382 days ago | IN | 0.005 ETH | 0.00028937 | ||||
Transfer | 6017008 | 2382 days ago | IN | 0.01 ETH | 0.00039071 | ||||
Add Kyc Verified... | 6016731 | 2382 days ago | IN | 0 ETH | 0.00023592 | ||||
Add Backend | 6011985 | 2383 days ago | IN | 0 ETH | 0.000094 | ||||
Add Kyc Verified... | 6011440 | 2383 days ago | IN | 0 ETH | 0.00009636 | ||||
Add Kyc Verified... | 6011440 | 2383 days ago | IN | 0 ETH | 0.00010599 | ||||
Add Kyc Verified... | 6011397 | 2383 days ago | IN | 0 ETH | 0.00015549 | ||||
Add Backend | 6011249 | 2383 days ago | IN | 0 ETH | 0.00009387 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
VeraCrowdsale
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-22 */ pragma solidity ^0.4.24; /** * @title Math * @dev Assorted math operations */ library Math { 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(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure 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 a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @title Roles * @author Francisco Giordano (@frangio) * @dev Library for managing addresses assigned to a Role. * See RBAC.sol for example usage. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an address access to this role */ function add(Role storage role, address addr) internal { role.bearer[addr] = true; } /** * @dev remove an address' access to this role */ function remove(Role storage role, address addr) internal { role.bearer[addr] = false; } /** * @dev check if an address has this role * // reverts */ function check(Role storage role, address addr) view internal { require(has(role, addr)); } /** * @dev check if an address has this role * @return bool */ function has(Role storage role, address addr) view internal returns (bool) { return role.bearer[addr]; } } /** * @title RBAC (Role-Based Access Control) * @author Matt Condon (@Shrugs) * @dev Stores and provides setters and getters for roles and addresses. * @dev Supports unlimited numbers of roles and addresses. * @dev See //contracts/mocks/RBACMock.sol for an example of usage. * This RBAC method uses strings to key roles. It may be beneficial * for you to write your own implementation of this interface using Enums or similar. * It's also recommended that you define constants in the contract, like ROLE_ADMIN below, * to avoid typos. */ contract RBAC { using Roles for Roles.Role; mapping (string => Roles.Role) private roles; event RoleAdded(address addr, string roleName); event RoleRemoved(address addr, string roleName); /** * @dev reverts if addr does not have role * @param addr address * @param roleName the name of the role * // reverts */ function checkRole(address addr, string roleName) view public { roles[roleName].check(addr); } /** * @dev determine if addr has role * @param addr address * @param roleName the name of the role * @return bool */ function hasRole(address addr, string roleName) view public returns (bool) { return roles[roleName].has(addr); } /** * @dev add a role to an address * @param addr address * @param roleName the name of the role */ function addRole(address addr, string roleName) internal { roles[roleName].add(addr); emit RoleAdded(addr, roleName); } /** * @dev remove a role from an address * @param addr address * @param roleName the name of the role */ function removeRole(address addr, string roleName) internal { roles[roleName].remove(addr); emit RoleRemoved(addr, roleName); } /** * @dev modifier to scope access to a single role (uses msg.sender as addr) * @param roleName the name of the role * // reverts */ modifier onlyRole(string roleName) { checkRole(msg.sender, roleName); _; } } /** * @title Interface of Price oracle * @dev Implements methods of price oracle used in the crowdsale * @author OnGrid Systems */ contract PriceOracleIface { uint256 public ethPriceInCents; function getUsdCentsFromWei(uint256 _wei) public view returns (uint256) { } } /** * @title Interface of ERC-20 token * @dev Implements transfer methods and event used throughout crowdsale * @author OnGrid Systems */ contract TransferableTokenIface { function transfer(address to, uint256 value) public returns (bool) { } function balanceOf(address who) public view returns (uint256) { } event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title CrowdSale contract for Vera.jobs * @dev Keep the list of investors passed KYC, receive ethers to fallback, * calculate correspinding amount of tokens, add bonus (depending on the deposit size) * then transfers tokens to the investor's account * @author OnGrid Systems */ contract VeraCrowdsale is RBAC { using SafeMath for uint256; // Price of one token (1.00000...) in USD cents uint256 public tokenPriceInCents = 200; // Minimal amount of USD cents to invest. Transactions of less value will be reverted. uint256 public minDepositInCents = 100; // Amount of USD cents raised. Continuously increments on each transaction. // Note: may be irrelevant because the actual amount of harvested ethers depends on ETH/USD price at the moment. uint256 public centsRaised; // Amount of tokens distributed by this contract. // Note: doesn't include previous phases of tokensale. uint256 public tokensSold; // Address of VERA ERC-20 token contract TransferableTokenIface public token; // Address of ETH price feed PriceOracleIface public priceOracle; // Wallet address collecting received ETH address public wallet; // constants defining roles for access control string public constant ROLE_ADMIN = "admin"; string public constant ROLE_BACKEND = "backend"; string public constant ROLE_KYC_VERIFIED_INVESTOR = "kycVerified"; // Value bonus configuration struct AmountBonus { // To understand which bonuses were applied bonus contains binary flag. // If several bonuses applied ids get summarized in resulting event. // Use values with a single 1-bit like 0x01, 0x02, 0x04, 0x08 uint256 id; // amountFrom and amountTo define deposit value range. // Bonus percentage applies if deposit amount in cents is within the boundaries uint256 amountFrom; uint256 amountTo; uint256 bonusPercent; } // The list of available bonuses. Filled by the constructor on contract initialization AmountBonus[] public amountBonuses; /** * Event for token purchase logging * @param investor who received tokens * @param ethPriceInCents ETH price at the moment of purchase * @param valueInCents deposit calculated to USD cents * @param bonusPercent total bonus percent (sum of all bonuses) * @param bonusIds flags of all the bonuses applied to the purchase */ event TokenPurchase( address indexed investor, uint256 ethPriceInCents, uint256 valueInCents, uint256 bonusPercent, uint256 bonusIds ); /** * @dev modifier to scope access to admins * // reverts if called not by admin */ modifier onlyAdmin() { checkRole(msg.sender, ROLE_ADMIN); _; } /** * @dev modifier to scope access of backend keys stored on * investor's portal * // reverts if called not by backend */ modifier onlyBackend() { checkRole(msg.sender, ROLE_BACKEND); _; } /** * @dev modifier allowing calls from investors successfully passed KYC verification * // reverts if called by investor who didn't pass KYC via investor's portal */ modifier onlyKYCVerifiedInvestor() { checkRole(msg.sender, ROLE_KYC_VERIFIED_INVESTOR); _; } /** * @dev Constructor initializing Crowdsale contract * @param _token address of the token ERC-20 contract. * @param _priceOracle ETH price feed * @param _wallet address where received ETH get forwarded */ constructor( TransferableTokenIface _token, PriceOracleIface _priceOracle, address _wallet ) public { require(_token != address(0), "Need token contract address"); require(_priceOracle != address(0), "Need price oracle contract address"); require(_wallet != address(0), "Need wallet address"); addRole(msg.sender, ROLE_ADMIN); token = _token; priceOracle = _priceOracle; wallet = _wallet; // solium-disable-next-line arg-overflow amountBonuses.push(AmountBonus(0x1, 800000, 1999999, 20)); // solium-disable-next-line arg-overflow amountBonuses.push(AmountBonus(0x2, 2000000, 2**256 - 1, 30)); } /** * @dev Fallback function receiving ETH sent to the contract address * sender must be KYC (Know Your Customer) verified investor. */ function () external payable onlyKYCVerifiedInvestor { uint256 valueInCents = priceOracle.getUsdCentsFromWei(msg.value); buyTokens(msg.sender, valueInCents); wallet.transfer(msg.value); } /** * @dev Withdraws all remaining (not sold) tokens from the crowdsale contract * @param _to address of tokens receiver */ function withdrawTokens(address _to) public onlyAdmin { uint256 amount = token.balanceOf(address(this)); require(amount > 0, "no tokens on the contract"); token.transfer(_to, amount); } /** * @dev Called when investor's portal (backend) receives non-ethereum payment * @param _investor address of investor * @param _cents received deposit amount in cents */ function buyTokensViaBackend(address _investor, uint256 _cents) public onlyBackend { if (! RBAC.hasRole(_investor, ROLE_KYC_VERIFIED_INVESTOR)) { addKycVerifiedInvestor(_investor); } buyTokens(_investor, _cents); } /** * @dev Computes total bonuses amount by value * @param _cents deposit amount in USD cents * @return total bonus percent (sum of applied bonus percents), bonusIds (sum of applied bonus flags) */ function computeBonuses(uint256 _cents) public view returns (uint256, uint256) { uint256 bonusTotal; uint256 bonusIds; for (uint i = 0; i < amountBonuses.length; i++) { if (_cents >= amountBonuses[i].amountFrom && _cents <= amountBonuses[i].amountTo) { bonusTotal += amountBonuses[i].bonusPercent; bonusIds += amountBonuses[i].id; } } return (bonusTotal, bonusIds); } /** * @dev Calculates amount of tokens by cents * @param _cents deposit amount in USD cents * @return amount of tokens investor receive for the deposit */ function computeTokens(uint256 _cents) public view returns (uint256) { uint256 tokens = _cents.mul(10 ** 18).div(tokenPriceInCents); (uint256 bonusPercent, ) = computeBonuses(_cents); uint256 bonusTokens = tokens.mul(bonusPercent).div(100); if (_cents >= minDepositInCents) { return tokens.add(bonusTokens); } } /** * @dev Add admin role to an address * @param addr address */ function addAdmin(address addr) public onlyAdmin { addRole(addr, ROLE_ADMIN); } /** * @dev Revoke admin privileges from an address * @param addr address */ function delAdmin(address addr) public onlyAdmin { removeRole(addr, ROLE_ADMIN); } /** * @dev Add backend privileges to an address * @param addr address */ function addBackend(address addr) public onlyAdmin { addRole(addr, ROLE_BACKEND); } /** * @dev Revoke backend privileges from an address * @param addr address */ function delBackend(address addr) public onlyAdmin { removeRole(addr, ROLE_BACKEND); } /** * @dev Mark investor's address as KYC-verified person * @param addr address */ function addKycVerifiedInvestor(address addr) public onlyBackend { addRole(addr, ROLE_KYC_VERIFIED_INVESTOR); } /** * @dev Revoke KYC verification from the person * @param addr address */ function delKycVerifiedInvestor(address addr) public onlyBackend { removeRole(addr, ROLE_KYC_VERIFIED_INVESTOR); } /** * @dev Calculates and applies bonuses and implements actual token transfer and events * @param _investor address of the beneficiary receiving tokens * @param _cents amount of deposit in cents */ function buyTokens(address _investor, uint256 _cents) internal { (uint256 bonusPercent, uint256 bonusIds) = computeBonuses(_cents); uint256 tokens = computeTokens(_cents); require(tokens > 0, "value is not enough"); token.transfer(_investor, tokens); centsRaised = centsRaised.add(_cents); tokensSold = tokensSold.add(tokens); emit TokenPurchase( _investor, priceOracle.ethPriceInCents(), _cents, bonusPercent, bonusIds ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"addBackend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_BACKEND","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"centsRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"delAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_KYC_VERIFIED_INVESTOR","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minDepositInCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"addKycVerifiedInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"delBackend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"},{"name":"_cents","type":"uint256"}],"name":"buyTokensViaBackend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cents","type":"uint256"}],"name":"computeTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceInCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"amountBonuses","outputs":[{"name":"id","type":"uint256"},{"name":"amountFrom","type":"uint256"},{"name":"amountTo","type":"uint256"},{"name":"bonusPercent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_ADMIN","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cents","type":"uint256"}],"name":"computeBonuses","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"delKycVerifiedInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_priceOracle","type":"address"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"},{"indexed":false,"name":"ethPriceInCents","type":"uint256"},{"indexed":false,"name":"valueInCents","type":"uint256"},{"indexed":false,"name":"bonusPercent","type":"uint256"},{"indexed":false,"name":"bonusIds","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"roleName","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"roleName","type":"string"}],"name":"RoleRemoved","type":"event"}]
Contract Creation Code
608060405260c860015560646002553480156200001b57600080fd5b50604051606080620017df833981016040908152815160208301519190920151600160a060020a0383161515620000b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e65656420746f6b656e20636f6e747261637420616464726573730000000000604482015290519081900360640190fd5b600160a060020a03821615156200015157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4e656564207072696365206f7261636c6520636f6e747261637420616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0381161515620001c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e6565642077616c6c6574206164647265737300000000000000000000000000604482015290519081900360640190fd5b62000219336040805190810160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062000393640100000000026401000000009004565b60058054600160a060020a03948516600160a060020a03199182161790915560068054938516938216939093179092556007805491909316911617905560408051608081810183526001808352620c35006020808501918252621e847f858701908152601460608088019182526008805480880182556000828152995160049182027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee38181019290925597517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee4808a019190915595517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee5808a019190915594517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee6988901558b51998a018c5260028a52621e8480968a019687526000199b8a019b8c52601e938a019384528254988901835591909952965195909702958601949094559051908401559351908201559051910155620004ee565b6200040f826000836040518082805190602001908083835b60208310620003cc5780518252601f199092019160209182019101620003ab565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050640100000000620004c981026200122e1704565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620004895781810151838201526020016200046f565b50505050905090810190601f168015620004b75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6112e180620004fe6000396000f3006080604052600436106101325763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c811461023c578063217fe6c6146102a55780632630c12f146103205780632ac016ad146103515780632e0025c11461037257806349df728c146103fc578063518ab2a81461041d578063521eb273146104445780635259fcb41461045957806362d918551461046e5780637025b3ac1461048f57806370480275146104a45780637488ad7c146104c55780637dabb4d6146104da57806399b22701146104fb578063a3fc81cb1461051c578063aebf1e3d14610540578063c7a1f22114610558578063d036261f1461056d578063d391014b146105ab578063e6f02bf9146105c0578063f22b683e146105f1578063fc0c546a14610612575b6000610161336040805190810160405280600b8152602001600080516020611296833981519152815250610627565b600654604080517f0c7e30b70000000000000000000000000000000000000000000000000000000081523460048201529051600160a060020a0390921691630c7e30b7916024808201926020929091908290030181600087803b1580156101c757600080fd5b505af11580156101db573d6000803e3d6000fd5b505050506040513d60208110156101f157600080fd5b505190506101ff3382610695565b600754604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610238573d6000803e3d6000fd5b5050005b34801561024857600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102a3958335600160a060020a03169536956044949193909101919081908401838280828437509497506106279650505050505050565b005b3480156102b157600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261030c958335600160a060020a03169536956044949193909101919081908401838280828437509497506108c39650505050505050565b604080519115158252519081900360200190f35b34801561032c57600080fd5b50610335610938565b60408051600160a060020a039092168252519081900360200190f35b34801561035d57600080fd5b506102a3600160a060020a0360043516610947565b34801561037e57600080fd5b506103876109a1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103c15781810151838201526020016103a9565b50505050905090810190601f1680156103ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040857600080fd5b506102a3600160a060020a03600435166109c6565b34801561042957600080fd5b50610432610b94565b60408051918252519081900360200190f35b34801561045057600080fd5b50610335610b9a565b34801561046557600080fd5b50610432610ba9565b34801561047a57600080fd5b506102a3600160a060020a0360043516610baf565b34801561049b57600080fd5b50610387610c03565b3480156104b057600080fd5b506102a3600160a060020a0360043516610c28565b3480156104d157600080fd5b50610432610c7c565b3480156104e657600080fd5b506102a3600160a060020a0360043516610c82565b34801561050757600080fd5b506102a3600160a060020a0360043516610cdc565b34801561052857600080fd5b506102a3600160a060020a0360043516602435610d33565b34801561054c57600080fd5b50610432600435610da6565b34801561056457600080fd5b50610432610e23565b34801561057957600080fd5b50610585600435610e29565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105b757600080fd5b50610387610e61565b3480156105cc57600080fd5b506105d8600435610e83565b6040805192835260208301919091528051918290030190f35b3480156105fd57600080fd5b506102a3600160a060020a0360043516610f44565b34801561061e57600080fd5b50610335610f9e565b610691826000836040518082805190602001908083835b6020831061065d5780518252601f19909201916020918201910161063e565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610fad565b5050565b60008060006106a384610e83565b925092506106b084610da6565b90506000811161072157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f76616c7565206973206e6f7420656e6f75676800000000000000000000000000604482015290519081900360640190fd5b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050506040513d60208110156107ba57600080fd5b50506003546107cf908563ffffffff610fc216565b6003556004546107e5908263ffffffff610fc216565b6004908155600654604080517f3edfe35e0000000000000000000000000000000000000000000000000000000081529051600160a060020a03808a16947f8fd7c1cf2b9cceb829553742c07a11ee82ed91a2e2d4791328461df6aa6e8a899490911692633edfe35e92818301926020928290030181600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b505050506040513d602081101561089557600080fd5b5051604080519182526020820188905281810187905260608201869052519081900360800190a25050505050565b600061092f836000846040518082805190602001908083835b602083106108fb5780518252601f1990920191602091820191016108dc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610fcf565b90505b92915050565b600654600160a060020a031681565b6109713360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e81604080519081016040528060078152602001600080516020611276833981519152815250610fee565b50565b6040805180820190915260078152600080516020611276833981519152602082015281565b60006109f23360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b505050506040513d6020811015610a8257600080fd5b5051905060008111610af557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f20746f6b656e73206f6e2074686520636f6e747261637400000000000000604482015290519081900360640190fd5b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50505050565b60045481565b600754600160a060020a031681565b60035481565b610bd93360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806005815260200160d960020a6430b236b4b70281525061110f565b60408051808201909152600b8152600080516020611296833981519152602082015281565b610c523360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806005815260200160d960020a6430b236b4b702815250610fee565b60025481565b610caf33604080519081016040528060078152602001600080516020611276833981519152815250610627565b61099e816040805190810160405280600b8152602001600080516020611296833981519152815250610fee565b610d063360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806007815260200160008051602061127683398151915281525061110f565b610d6033604080519081016040528060078152602001600080516020611276833981519152815250610627565b610d8d826040805190810160405280600b81526020016000805160206112968339815191528152506108c3565b1515610d9c57610d9c82610c82565b6106918282610695565b600080600080610dd9600154610dcd670de0b6b3a7640000886111f090919063ffffffff16565b9063ffffffff61121916565b9250610de485610e83565b509150610dfc6064610dcd858563ffffffff6111f016565b6002549091508510610e1b57610e18838263ffffffff610fc216565b93505b505050919050565b60015481565b6008805482908110610e3757fe5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b604080518082019091526005815260d960020a6430b236b4b702602082015281565b6000808080805b600854811015610f39576008805482908110610ea257fe5b9060005260206000209060040201600101548610158015610ee257506008805482908110610ecc57fe5b9060005260206000209060040201600201548611155b15610f31576008805482908110610ef557fe5b90600052602060002090600402016003015483019250600881815481101515610f1a57fe5b906000526020600020906004020160000154820191505b600101610e8a565b509094909350915050565b610f7133604080519081016040528060078152602001600080516020611276833981519152815250610627565b61099e816040805190810160405280600b815260200160008051602061129683398151915281525061110f565b600554600160a060020a031681565b610fb78282610fcf565b151561069157600080fd5b8181018281101561093257fe5b600160a060020a03166000908152602091909152604090205460ff1690565b611058826000836040518082805190602001908083835b602083106110245780518252601f199092019160209182019101611005565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061122e565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156110d05781810151838201526020016110b8565b50505050905090810190601f1680156110fd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b611179826000836040518082805190602001908083835b602083106111455780518252601f199092019160209182019101611126565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611253565b7fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a82826040518083600160a060020a0316600160a060020a031681526020018060200182810382528381815181526020019150805190602001908083836000838110156110d05781810151838201526020016110b8565b600082151561120157506000610932565b5081810281838281151561121157fe5b041461093257fe5b6000818381151561122657fe5b049392505050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0316600090815260209190915260409020805460ff1916905556006261636b656e64000000000000000000000000000000000000000000000000006b79635665726966696564000000000000000000000000000000000000000000a165627a7a723058201bcb6b2e4731bfe9044fd571e371be8ea4254c0429f35f783325d8c42faa5ef40029000000000000000000000000f90f1648926005a8bb3ed8ec883164de7f7687430000000000000000000000005f243c098ca59501c153c1fa5e2a3bfd4d61bdf700000000000000000000000074610eedcf3167c267ab0b1365007f1a9f6a303f
Deployed Bytecode
0x6080604052600436106101325763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c811461023c578063217fe6c6146102a55780632630c12f146103205780632ac016ad146103515780632e0025c11461037257806349df728c146103fc578063518ab2a81461041d578063521eb273146104445780635259fcb41461045957806362d918551461046e5780637025b3ac1461048f57806370480275146104a45780637488ad7c146104c55780637dabb4d6146104da57806399b22701146104fb578063a3fc81cb1461051c578063aebf1e3d14610540578063c7a1f22114610558578063d036261f1461056d578063d391014b146105ab578063e6f02bf9146105c0578063f22b683e146105f1578063fc0c546a14610612575b6000610161336040805190810160405280600b8152602001600080516020611296833981519152815250610627565b600654604080517f0c7e30b70000000000000000000000000000000000000000000000000000000081523460048201529051600160a060020a0390921691630c7e30b7916024808201926020929091908290030181600087803b1580156101c757600080fd5b505af11580156101db573d6000803e3d6000fd5b505050506040513d60208110156101f157600080fd5b505190506101ff3382610695565b600754604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610238573d6000803e3d6000fd5b5050005b34801561024857600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102a3958335600160a060020a03169536956044949193909101919081908401838280828437509497506106279650505050505050565b005b3480156102b157600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261030c958335600160a060020a03169536956044949193909101919081908401838280828437509497506108c39650505050505050565b604080519115158252519081900360200190f35b34801561032c57600080fd5b50610335610938565b60408051600160a060020a039092168252519081900360200190f35b34801561035d57600080fd5b506102a3600160a060020a0360043516610947565b34801561037e57600080fd5b506103876109a1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103c15781810151838201526020016103a9565b50505050905090810190601f1680156103ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040857600080fd5b506102a3600160a060020a03600435166109c6565b34801561042957600080fd5b50610432610b94565b60408051918252519081900360200190f35b34801561045057600080fd5b50610335610b9a565b34801561046557600080fd5b50610432610ba9565b34801561047a57600080fd5b506102a3600160a060020a0360043516610baf565b34801561049b57600080fd5b50610387610c03565b3480156104b057600080fd5b506102a3600160a060020a0360043516610c28565b3480156104d157600080fd5b50610432610c7c565b3480156104e657600080fd5b506102a3600160a060020a0360043516610c82565b34801561050757600080fd5b506102a3600160a060020a0360043516610cdc565b34801561052857600080fd5b506102a3600160a060020a0360043516602435610d33565b34801561054c57600080fd5b50610432600435610da6565b34801561056457600080fd5b50610432610e23565b34801561057957600080fd5b50610585600435610e29565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105b757600080fd5b50610387610e61565b3480156105cc57600080fd5b506105d8600435610e83565b6040805192835260208301919091528051918290030190f35b3480156105fd57600080fd5b506102a3600160a060020a0360043516610f44565b34801561061e57600080fd5b50610335610f9e565b610691826000836040518082805190602001908083835b6020831061065d5780518252601f19909201916020918201910161063e565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610fad565b5050565b60008060006106a384610e83565b925092506106b084610da6565b90506000811161072157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f76616c7565206973206e6f7420656e6f75676800000000000000000000000000604482015290519081900360640190fd5b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050506040513d60208110156107ba57600080fd5b50506003546107cf908563ffffffff610fc216565b6003556004546107e5908263ffffffff610fc216565b6004908155600654604080517f3edfe35e0000000000000000000000000000000000000000000000000000000081529051600160a060020a03808a16947f8fd7c1cf2b9cceb829553742c07a11ee82ed91a2e2d4791328461df6aa6e8a899490911692633edfe35e92818301926020928290030181600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b505050506040513d602081101561089557600080fd5b5051604080519182526020820188905281810187905260608201869052519081900360800190a25050505050565b600061092f836000846040518082805190602001908083835b602083106108fb5780518252601f1990920191602091820191016108dc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610fcf565b90505b92915050565b600654600160a060020a031681565b6109713360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e81604080519081016040528060078152602001600080516020611276833981519152815250610fee565b50565b6040805180820190915260078152600080516020611276833981519152602082015281565b60006109f23360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b505050506040513d6020811015610a8257600080fd5b5051905060008111610af557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f20746f6b656e73206f6e2074686520636f6e747261637400000000000000604482015290519081900360640190fd5b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50505050565b60045481565b600754600160a060020a031681565b60035481565b610bd93360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806005815260200160d960020a6430b236b4b70281525061110f565b60408051808201909152600b8152600080516020611296833981519152602082015281565b610c523360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806005815260200160d960020a6430b236b4b702815250610fee565b60025481565b610caf33604080519081016040528060078152602001600080516020611276833981519152815250610627565b61099e816040805190810160405280600b8152602001600080516020611296833981519152815250610fee565b610d063360408051908101604052806005815260200160d960020a6430b236b4b702815250610627565b61099e8160408051908101604052806007815260200160008051602061127683398151915281525061110f565b610d6033604080519081016040528060078152602001600080516020611276833981519152815250610627565b610d8d826040805190810160405280600b81526020016000805160206112968339815191528152506108c3565b1515610d9c57610d9c82610c82565b6106918282610695565b600080600080610dd9600154610dcd670de0b6b3a7640000886111f090919063ffffffff16565b9063ffffffff61121916565b9250610de485610e83565b509150610dfc6064610dcd858563ffffffff6111f016565b6002549091508510610e1b57610e18838263ffffffff610fc216565b93505b505050919050565b60015481565b6008805482908110610e3757fe5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b604080518082019091526005815260d960020a6430b236b4b702602082015281565b6000808080805b600854811015610f39576008805482908110610ea257fe5b9060005260206000209060040201600101548610158015610ee257506008805482908110610ecc57fe5b9060005260206000209060040201600201548611155b15610f31576008805482908110610ef557fe5b90600052602060002090600402016003015483019250600881815481101515610f1a57fe5b906000526020600020906004020160000154820191505b600101610e8a565b509094909350915050565b610f7133604080519081016040528060078152602001600080516020611276833981519152815250610627565b61099e816040805190810160405280600b815260200160008051602061129683398151915281525061110f565b600554600160a060020a031681565b610fb78282610fcf565b151561069157600080fd5b8181018281101561093257fe5b600160a060020a03166000908152602091909152604090205460ff1690565b611058826000836040518082805190602001908083835b602083106110245780518252601f199092019160209182019101611005565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061122e565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156110d05781810151838201526020016110b8565b50505050905090810190601f1680156110fd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b611179826000836040518082805190602001908083835b602083106111455780518252601f199092019160209182019101611126565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611253565b7fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a82826040518083600160a060020a0316600160a060020a031681526020018060200182810382528381815181526020019150805190602001908083836000838110156110d05781810151838201526020016110b8565b600082151561120157506000610932565b5081810281838281151561121157fe5b041461093257fe5b6000818381151561122657fe5b049392505050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0316600090815260209190915260409020805460ff1916905556006261636b656e64000000000000000000000000000000000000000000000000006b79635665726966696564000000000000000000000000000000000000000000a165627a7a723058201bcb6b2e4731bfe9044fd571e371be8ea4254c0429f35f783325d8c42faa5ef40029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f90f1648926005a8bb3ed8ec883164de7f7687430000000000000000000000005f243c098ca59501c153c1fa5e2a3bfd4d61bdf700000000000000000000000074610eedcf3167c267ab0b1365007f1a9f6a303f
-----Decoded View---------------
Arg [0] : _token (address): 0xf90f1648926005A8bb3ed8ec883164De7F768743
Arg [1] : _priceOracle (address): 0x5f243C098cA59501c153C1fa5E2a3BFD4d61bdf7
Arg [2] : _wallet (address): 0x74610EedCF3167c267aB0b1365007f1A9F6a303f
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f90f1648926005a8bb3ed8ec883164de7f768743
Arg [1] : 0000000000000000000000005f243c098ca59501c153c1fa5e2a3bfd4d61bdf7
Arg [2] : 00000000000000000000000074610eedcf3167c267ab0b1365007f1a9f6a303f
Swarm Source
bzzr://1bcb6b2e4731bfe9044fd571e371be8ea4254c0429f35f783325d8c42faa5ef4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.