Source Code
Latest 25 from a total of 165 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| 0xc6afd98a | 9808121 | 2156 days ago | IN | 0 ETH | 0.0000291 | ||||
| 0xc6afd98a | 9808121 | 2156 days ago | IN | 0 ETH | 0.0000291 | ||||
| 0xc6afd98a | 8945831 | 2296 days ago | IN | 0 ETH | 0.00005273 | ||||
| 0xc6afd98a | 8901361 | 2304 days ago | IN | 0 ETH | 0.00026336 | ||||
| 0xc6afd98a | 8898414 | 2304 days ago | IN | 0 ETH | 0.0000749 | ||||
| 0xc6afd98a | 8898414 | 2304 days ago | IN | 0 ETH | 0.0000749 | ||||
| 0xc6afd98a | 8896107 | 2305 days ago | IN | 0 ETH | 0.00005267 | ||||
| 0xc6afd98a | 8892995 | 2305 days ago | IN | 0 ETH | 0.00012484 | ||||
| 0xc6afd98a | 8888078 | 2306 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8887208 | 2306 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8885804 | 2306 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8869712 | 2309 days ago | IN | 0 ETH | 0.00010547 | ||||
| 0xc6afd98a | 8851088 | 2312 days ago | IN | 0 ETH | 0.00005273 | ||||
| 0xc6afd98a | 8766678 | 2325 days ago | IN | 0 ETH | 0.00005267 | ||||
| 0xc6afd98a | 8761324 | 2326 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8761302 | 2326 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8760887 | 2326 days ago | IN | 0 ETH | 0.00005273 | ||||
| 0xc6afd98a | 8747584 | 2328 days ago | IN | 0 ETH | 0.00002496 | ||||
| 0xc6afd98a | 8709161 | 2334 days ago | IN | 0 ETH | 0.00005273 | ||||
| 0xc6afd98a | 8587724 | 2353 days ago | IN | 0 ETH | 0.00100198 | ||||
| 0xc6afd98a | 8548602 | 2359 days ago | IN | 0 ETH | 0.00105472 | ||||
| 0xc6afd98a | 8225465 | 2410 days ago | IN | 0 ETH | 0.00005267 | ||||
| 0xc6afd98a | 8176660 | 2417 days ago | IN | 0 ETH | 0.00006773 | ||||
| 0xc6afd98a | 7837739 | 2470 days ago | IN | 0 ETH | 0.00007547 | ||||
| 0xc6afd98a | 7806116 | 2475 days ago | IN | 0 ETH | 0.00004479 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DRPSTokenConverter
Compiler Version
v0.4.15+commit.bbb8e64f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-11-01
*/
pragma solidity ^0.4.15;
/**
* @title Ownership interface
*
* Perminent ownership
*
* #created 01/10/2017
* #author Frank Bonnet
*/
contract IOwnership {
/**
* Returns true if `_account` is the current owner
*
* @param _account The address to test against
*/
function isOwner(address _account) constant returns (bool);
/**
* Gets the current owner
*
* @return address The current owner
*/
function getOwner() constant returns (address);
}
/**
* @title Ownership
*
* Perminent ownership
*
* #created 01/10/2017
* #author Frank Bonnet
*/
contract Ownership is IOwnership {
// Owner
address internal owner;
/**
* The publisher is the inital owner
*/
function Ownership() {
owner = msg.sender;
}
/**
* Access is restricted to the current owner
*/
modifier only_owner() {
require(msg.sender == owner);
_;
}
/**
* Returns true if `_account` is the current owner
*
* @param _account The address to test against
*/
function isOwner(address _account) public constant returns (bool) {
return _account == owner;
}
/**
* Gets the current owner
*
* @return address The current owner
*/
function getOwner() public constant returns (address) {
return owner;
}
}
/**
* @title Transferable ownership interface
*
* Enhances ownership by allowing the current owner to
* transfer ownership to a new owner
*
* #created 01/10/2017
* #author Frank Bonnet
*/
contract ITransferableOwnership {
/**
* Transfer ownership to `_newOwner`
*
* @param _newOwner The address of the account that will become the new owner
*/
function transferOwnership(address _newOwner);
}
/**
* @title Transferable ownership
*
* Enhances ownership by allowing the current owner to
* transfer ownership to a new owner
*
* #created 01/10/2017
* #author Frank Bonnet
*/
contract TransferableOwnership is ITransferableOwnership, Ownership {
/**
* Transfer ownership to `_newOwner`
*
* @param _newOwner The address of the account that will become the new owner
*/
function transferOwnership(address _newOwner) public only_owner {
owner = _newOwner;
}
}
/**
* @title Pausable interface
*
* Simple interface to pause and resume
*
* #created 11/10/2017
* #author Frank Bonnet
*/
contract IPausable {
/**
* Returns whether the implementing contract is
* currently paused or not
*
* @return Whether the paused state is active
*/
function isPaused() constant returns (bool);
/**
* Change the state to paused
*/
function pause();
/**
* Change the state to resume, undo the effects
* of calling pause
*/
function resume();
}
/**
* @title IAuthenticationManager
*
* Allows the authentication process to be enabled and disabled
*
* #created 15/10/2017
* #author Frank Bonnet
*/
contract IAuthenticationManager {
/**
* Returns true if authentication is enabled and false
* otherwise
*
* @return Whether the converter is currently authenticating or not
*/
function isAuthenticating() constant returns (bool);
/**
* Enable authentication
*/
function enableAuthentication();
/**
* Disable authentication
*/
function disableAuthentication();
}
/**
* @title IAuthenticator
*
* Authenticator interface
*
* #created 15/10/2017
* #author Frank Bonnet
*/
contract IAuthenticator {
/**
* Authenticate
*
* Returns whether `_account` is authenticated or not
*
* @param _account The account to authenticate
* @return whether `_account` is successfully authenticated
*/
function authenticate(address _account) constant returns (bool);
}
/**
* @title IWhitelist
*
* Whitelist authentication interface
*
* #created 04/10/2017
* #author Frank Bonnet
*/
contract IWhitelist is IAuthenticator {
/**
* Returns whether an entry exists for `_account`
*
* @param _account The account to check
* @return whether `_account` is has an entry in the whitelist
*/
function hasEntry(address _account) constant returns (bool);
/**
* Add `_account` to the whitelist
*
* If an account is currently disabled, the account is reenabled, otherwise
* a new entry is created
*
* @param _account The account to add
*/
function add(address _account);
/**
* Remove `_account` from the whitelist
*
* Will not actually remove the entry but disable it by updating
* the accepted record
*
* @param _account The account to remove
*/
function remove(address _account);
}
/**
* @title Token retrieve interface
*
* Allows tokens to be retrieved from a contract
*
* #created 29/09/2017
* #author Frank Bonnet
*/
contract ITokenRetriever {
/**
* Extracts tokens from the contract
*
* @param _tokenContract The address of ERC20 compatible token
*/
function retrieveTokens(address _tokenContract);
}
/**
* @title Token retrieve
*
* Allows tokens to be retrieved from a contract
*
* #created 18/10/2017
* #author Frank Bonnet
*/
contract TokenRetriever is ITokenRetriever {
/**
* Extracts tokens from the contract
*
* @param _tokenContract The address of ERC20 compatible token
*/
function retrieveTokens(address _tokenContract) public {
IToken tokenInstance = IToken(_tokenContract);
uint tokenBalance = tokenInstance.balanceOf(this);
if (tokenBalance > 0) {
tokenInstance.transfer(msg.sender, tokenBalance);
}
}
}
/**
* @title Token observer interface
*
* Allows a token smart-contract to notify observers
* when tokens are received
*
* #created 09/10/2017
* #author Frank Bonnet
*/
contract ITokenObserver {
/**
* Called by the observed token smart-contract in order
* to notify the token observer when tokens are received
*
* @param _from The address that the tokens where send from
* @param _value The amount of tokens that was received
*/
function notifyTokensReceived(address _from, uint _value);
}
/**
* @title Abstract token observer
*
* Allows observers to be notified by an observed token smart-contract
* when tokens are received
*
* #created 09/10/2017
* #author Frank Bonnet
*/
contract TokenObserver is ITokenObserver {
/**
* Called by the observed token smart-contract in order
* to notify the token observer when tokens are received
*
* @param _from The address that the tokens where send from
* @param _value The amount of tokens that was received
*/
function notifyTokensReceived(address _from, uint _value) public {
onTokensReceived(msg.sender, _from, _value);
}
/**
* Event handler
*
* Called by `_token` when a token amount is received
*
* @param _token The token contract that received the transaction
* @param _from The account or contract that send the transaction
* @param _value The value of tokens that where received
*/
function onTokensReceived(address _token, address _from, uint _value) internal;
}
/**
* @title ERC20 compatible token interface
*
* - Implements ERC 20 Token standard
* - Implements short address attack fix
*
* #created 29/09/2017
* #author Frank Bonnet
*/
contract IToken {
/**
* Get the total supply of tokens
*
* @return The total supply
*/
function totalSupply() constant returns (uint);
/**
* Get balance of `_owner`
*
* @param _owner The address from which the balance will be retrieved
* @return The balance
*/
function balanceOf(address _owner) constant returns (uint);
/**
* Send `_value` token to `_to` from `msg.sender`
*
* @param _to The address of the recipient
* @param _value The amount of token to be transferred
* @return Whether the transfer was successful or not
*/
function transfer(address _to, uint _value) returns (bool);
/**
* Send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
*
* @param _from The address of the sender
* @param _to The address of the recipient
* @param _value The amount of token to be transferred
* @return Whether the transfer was successful or not
*/
function transferFrom(address _from, address _to, uint _value) returns (bool);
/**
* `msg.sender` approves `_spender` to spend `_value` tokens
*
* @param _spender The address of the account able to transfer the tokens
* @param _value The amount of tokens to be approved for transfer
* @return Whether the approval was successful or not
*/
function approve(address _spender, uint _value) returns (bool);
/**
* Get the amount of remaining tokens that `_spender` is allowed to spend from `_owner`
*
* @param _owner The address of the account owning tokens
* @param _spender The address of the account able to transfer the tokens
* @return Amount of remaining tokens allowed to spent
*/
function allowance(address _owner, address _spender) constant returns (uint);
}
/**
* @title ManagedToken interface
*
* Adds the following functionality to the basic ERC20 token
* - Locking
* - Issuing
* - Burning
*
* #created 29/09/2017
* #author Frank Bonnet
*/
contract IManagedToken is IToken {
/**
* Returns true if the token is locked
*
* @return Whether the token is locked
*/
function isLocked() constant returns (bool);
/**
* Locks the token so that the transfering of value is disabled
*
* @return Whether the unlocking was successful or not
*/
function lock() returns (bool);
/**
* Unlocks the token so that the transfering of value is enabled
*
* @return Whether the unlocking was successful or not
*/
function unlock() returns (bool);
/**
* Issues `_value` new tokens to `_to`
*
* @param _to The address to which the tokens will be issued
* @param _value The amount of new tokens to issue
* @return Whether the tokens where sucessfully issued or not
*/
function issue(address _to, uint _value) returns (bool);
/**
* Burns `_value` tokens of `_from`
*
* @param _from The address that owns the tokens to be burned
* @param _value The amount of tokens to be burned
* @return Whether the tokens where sucessfully burned or not
*/
function burn(address _from, uint _value) returns (bool);
}
/**
* @title Token Changer interface
*
* Basic token changer public interface
*
* #created 06/10/2017
* #author Frank Bonnet
*/
contract ITokenChanger {
/**
* Returns true if '_token' is on of the tokens that are
* managed by this token changer
*
* @param _token The address being tested
* @return Whether the '_token' is part of this token changer
*/
function isToken(address _token) constant returns (bool);
/**
* Returns the address of the left token
*
* @return Left token address
*/
function getLeftToken() constant returns (address);
/**
* Returns the address of the right token
*
* @return Right token address
*/
function getRightToken() constant returns (address);
/**
* Returns the fee that is paid in tokens when using
* the token changer
*
* @return The percentage of tokens that is charged
*/
function getFee() constant returns (uint);
/**
* Returns the rate that is used to change between tokens
*
* @return The rate used when changing tokens
*/
function getRate() constant returns (uint);
/**
* Returns the precision of the rate and fee params
*
* @return The amount of decimals used
*/
function getPrecision() constant returns (uint);
/**
* Calculates and returns the fee based on `_value` of tokens
*
* @return The actual fee
*/
function calculateFee(uint _value) constant returns (uint);
}
/**
* @title Token Changer
*
* Provides a generic way to convert between two tokens using a fixed
* ratio and an optional fee.
*
* #created 06/10/2017
* #author Frank Bonnet
*/
contract TokenChanger is ITokenChanger, IPausable {
IManagedToken private tokenLeft; // tokenLeft = tokenRight * rate / precision
IManagedToken private tokenRight; // tokenRight = tokenLeft / rate * precision
uint private rate; // Ratio between tokens
uint private fee; // Percentage lost in transfer
uint private precision; // Precision
bool private paused; // Paused state
bool private burn; // Whether the changer should burn tokens
/**
* Only if '_token' is the left or right token
* that of the token changer
*/
modifier is_token(address _token) {
require(_token == address(tokenLeft) || _token == address(tokenRight));
_;
}
/**
* Construct token changer
*
* @param _tokenLeft Ref to the 'left' token smart-contract
* @param _tokenRight Ref to the 'right' token smart-contract
* @param _rate The rate used when changing tokens
* @param _fee The percentage of tokens that is charged
* @param _decimals The amount of decimals used for _rate and _fee
* @param _paused Whether the token changer starts in the paused state or not
* @param _burn Whether the changer should burn tokens or not
*/
function TokenChanger(address _tokenLeft, address _tokenRight, uint _rate, uint _fee, uint _decimals, bool _paused, bool _burn) {
tokenLeft = IManagedToken(_tokenLeft);
tokenRight = IManagedToken(_tokenRight);
rate = _rate;
fee = _fee;
precision = _decimals > 0 ? 10**_decimals : 1;
paused = _paused;
burn = _burn;
}
/**
* Returns true if '_token' is on of the tokens that are
* managed by this token changer
*
* @param _token The address being tested
* @return Whether the '_token' is part of this token changer
*/
function isToken(address _token) public constant returns (bool) {
return _token == address(tokenLeft) || _token == address(tokenRight);
}
/**
* Returns the address of the left token
*
* @return Left token address
*/
function getLeftToken() public constant returns (address) {
return tokenLeft;
}
/**
* Returns the address of the right token
*
* @return Right token address
*/
function getRightToken() public constant returns (address) {
return tokenRight;
}
/**
* Returns the fee that is paid in tokens when using
* the token changer
*
* @return The percentage of tokens that is charged
*/
function getFee() public constant returns (uint) {
return fee;
}
/**
* Returns the rate that is used to change between tokens
*
* @return The rate used when changing tokens
*/
function getRate() public constant returns (uint) {
return rate;
}
/**
* Returns the precision of the rate and fee params
*
* @return The amount of decimals used
*/
function getPrecision() public constant returns (uint) {
return precision;
}
/**
* Returns whether the token changer is currently
* paused or not. While being in the paused state
* the contract should revert the transaction instead
* of converting tokens
*
* @return Whether the token changer is in the paused state
*/
function isPaused() public constant returns (bool) {
return paused;
}
/**
* Pause the token changer making the contract
* revert the transaction instead of converting
*/
function pause() public {
paused = true;
}
/**
* Resume the token changer making the contract
* convert tokens instead of reverting the transaction
*/
function resume() public {
paused = false;
}
/**
* Calculates and returns the fee based on `_value` of tokens
*
* @param _value The amount of tokens that is being converted
* @return The actual fee
*/
function calculateFee(uint _value) public constant returns (uint) {
return fee == 0 ? 0 : _value * fee / precision;
}
/**
* Converts tokens by burning the tokens received at the token smart-contact
* located at `_from` and by issuing tokens at the opposite token smart-contract
*
* @param _from The token smart-contract that received the tokens
* @param _sender The account that send the tokens (token owner)
* @param _value The amount of tokens that where received
*/
function convert(address _from, address _sender, uint _value) internal {
require(!paused);
require(_value > 0);
uint amountToIssue;
if (_from == address(tokenLeft)) {
amountToIssue = _value * rate / precision;
tokenRight.issue(_sender, amountToIssue - calculateFee(amountToIssue));
if (burn) {
tokenLeft.burn(this, _value);
}
}
else if (_from == address(tokenRight)) {
amountToIssue = _value * precision / rate;
tokenLeft.issue(_sender, amountToIssue - calculateFee(amountToIssue));
if (burn) {
tokenRight.burn(this, _value);
}
}
}
}
/**
* @title DRPS Converter
*
* Will allow DRP token holders to convert their DRP Balance into DRPS at the ratio of 1:1, locking all recieved DRP into the converter.
*
* DRPS as indicated by its ‘S’ designation, maintaining the primary security functions of the DRP token as
* outlined within the Dcorp whitepaper (https://www.dcorp.it/whitepaper).
*
* Those who bear DRPS will be entitled to profit sharing in the form of dividends as per a voting process,
* and is considered the "Security" token of Dcorp.
*
* https://www.dcorp.it/drps
*
* #created 11/10/2017
* #author Frank Bonnet
*/
contract DRPSTokenConverter is TokenChanger, IAuthenticationManager, TransferableOwnership, TokenRetriever {
// Authentication
IWhitelist private whitelist;
bool private requireAuthentication;
/**
* Construct drp - drps token changer
*
* Rate is multiplied by 10**6 taking into account the difference in
* decimals between (old) DRP (2) and DRPU (8)
*
* @param _whitelist The address of the whitelist authenticator
* @param _drp Ref to the (old) DRP token smart-contract
* @param _drps Ref to the DRPS token smart-contract https://www.dcorp.it/drps
*/
function DRPSTokenConverter(address _whitelist, address _drp, address _drps)
TokenChanger(_drp, _drps, 1 * 10**6, 0, 0, false, false) {
whitelist = IWhitelist(_whitelist);
requireAuthentication = true;
}
/**
* Returns true if authentication is enabled and false
* otherwise
*
* @return Whether the converter is currently authenticating or not
*/
function isAuthenticating() public constant returns (bool) {
return requireAuthentication;
}
/**
* Enable authentication
*/
function enableAuthentication() public only_owner {
requireAuthentication = true;
}
/**
* Disable authentication
*/
function disableAuthentication() public only_owner {
requireAuthentication = false;
}
/**
* Pause the token changer making the contract
* revert the transaction instead of converting
*/
function pause() public only_owner {
super.pause();
}
/**
* Resume the token changer making the contract
* convert tokens instead of reverting the transaction
*/
function resume() public only_owner {
super.resume();
}
/**
* Request that the (old) drp smart-contract transfers `_value` worth
* of (old) drp to the drps token converter to be converted
*
* Note! This function requires the drps token converter smart-contract
* to be approved to spend at least `_value` worth of (old) drp by the
* owner of the tokens by calling the approve() function in the (old)
* dpr token smart-contract
*
* @param _value The amount of tokens to transfer and convert
*/
function requestConversion(uint _value) public {
require(_value > 0);
address sender = msg.sender;
// Authenticate
require(!requireAuthentication || whitelist.authenticate(sender));
IToken drpToken = IToken(getLeftToken());
drpToken.transferFrom(sender, this, _value); // Transfer old drp from sender to converter
convert(drpToken, sender, _value); // Convert to drps
}
/**
* Failsafe mechanism
*
* Allows the owner to retrieve tokens from the contract that
* might have been send there by accident
*
* @param _tokenContract The address of ERC20 compatible token
*/
function retrieveTokens(address _tokenContract) public only_owner {
require(getLeftToken() != _tokenContract); // Ensure that the (old) drp token stays locked
super.retrieveTokens(_tokenContract);
}
/**
* Prevents the accidental sending of ether
*/
function () payable {
revert();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"isToken","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getLeftToken","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getRightToken","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isAuthenticating","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableAuthentication","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"calculateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableAuthentication","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"retrieveTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"requestConversion","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_whitelist","type":"address"},{"name":"_drp","type":"address"},{"name":"_drps","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"}]Contract Creation Code
6060604052341561000f57600080fd5b604051606080610c6d8339810160405280805191906020018051919060200180519150505b5b8181620f42406000806000805b60008054600160a060020a03808a16600160a060020a031992831617835560018054918a169190921617905560028690556003859055831161008557600161008a565b82600a0a5b6004556005805460ff19168315151761ff001916610100831515021790555b5050600580546201000060b060020a0319166201000033600160a060020a03160217905550505050505b6006805474010000000000000000000000000000000000000000600160a060020a0319909116600160a060020a0386161760a060020a60ff0219161790555b5050505b610b48806101256000396000f300606060405236156100e05763ffffffff60e060020a600035041663046f7da281146100e857806319f37361146100fd5780632f54bf6e146101305780635205b80f146101635780635237d23514610192578063679aefce146101c15780638456cb59146101e6578063893d20e8146101fb578063903f2c481461022a57806390be0bd9146102515780639670c0bc1461026657806399a5d7471461028b578063a92d6a48146102b3578063ac4ddd9f146102c8578063b187bd26146102e9578063c6afd98a14610310578063ced72f8714610328578063f2fde38b1461034d575b5b600080fd5b005b34156100f357600080fd5b6100e661036e565b005b341561010857600080fd5b61011c600160a060020a036004351661039b565b604051901515815260200160405180910390f35b341561013b57600080fd5b61011c600160a060020a03600435166103cd565b604051901515815260200160405180910390f35b341561016e57600080fd5b6101766103ea565b604051600160a060020a03909116815260200160405180910390f35b341561019d57600080fd5b6101766103fa565b604051600160a060020a03909116815260200160405180910390f35b34156101cc57600080fd5b6101d461040a565b60405190815260200160405180910390f35b34156101f157600080fd5b6100e6610411565b005b341561020657600080fd5b61017661043e565b604051600160a060020a03909116815260200160405180910390f35b341561023557600080fd5b61011c610454565b604051901515815260200160405180910390f35b341561025c57600080fd5b6100e6610476565b005b341561027157600080fd5b6101d46104d0565b60405190815260200160405180910390f35b341561029657600080fd5b6101d46004356104d7565b60405190815260200160405180910390f35b34156102be57600080fd5b6100e6610505565b005b34156102d357600080fd5b6100e6600160a060020a0360043516610548565b005b34156102f457600080fd5b61011c61059d565b604051901515815260200160405180910390f35b341561031b57600080fd5b6100e66004356105a7565b005b341561033357600080fd5b6101d46106ff565b60405190815260200160405180910390f35b341561035857600080fd5b6100e6600160a060020a0360043516610706565b005b60055433600160a060020a0390811662010000909204161461038f57600080fd5b61039761075b565b5b5b565b60008054600160a060020a03838116911614806103c55750600154600160a060020a038381169116145b90505b919050565b600554600160a060020a038281166201000090920416145b919050565b600054600160a060020a03165b90565b600154600160a060020a03165b90565b6002545b90565b60055433600160a060020a0390811662010000909204161461043257600080fd5b610397610768565b5b5b565b600554620100009004600160a060020a03165b90565b60065474010000000000000000000000000000000000000000900460ff165b90565b60055433600160a060020a0390811662010000909204161461049757600080fd5b6006805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b6004545b90565b60006003546000146104fa5760045460035483028115156104f457fe5b046103c5565b60005b90505b919050565b60055433600160a060020a0390811662010000909204161461052657600080fd5b6006805474ff0000000000000000000000000000000000000000191690555b5b565b60055433600160a060020a0390811662010000909204161461056957600080fd5b80600160a060020a031661057b6103ea565b600160a060020a0316141561058f57600080fd5b61059881610778565b5b5b50565b60055460ff165b90565b6000808083116105b657600080fd5b60065433925074010000000000000000000000000000000000000000900460ff1615806106535750600654600160a060020a03166308e0d29d8360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561063757600080fd5b6102c65a03f1151561064857600080fd5b505050604051805190505b151561065e57600080fd5b6106666103ea565b905080600160a060020a03166323b872dd83308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156106d257600080fd5b6102c65a03f115156106e357600080fd5b50505060405180519050506106f9818385610875565b5b505050565b6003545b90565b60055433600160a060020a0390811662010000909204161461072757600080fd5b6005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038416021790555b5b50565b6005805460ff191690555b565b6005805460ff191660011790555b565b806000600160a060020a0382166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107d157600080fd5b6102c65a03f115156107e257600080fd5b505050604051805191505060008111156106f95781600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561085357600080fd5b6102c65a03f1151561086457600080fd5b505050604051805150505b5b505050565b60055460009060ff161561088857600080fd5b6000821161089557600080fd5b600054600160a060020a03858116911614156109d85760045460025483028115156108bc57fe5b6001549190049150600160a060020a031663867904b4846108dc846104d7565b840360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561092a57600080fd5b6102c65a03f1151561093b57600080fd5b50505060405180515050600554610100900460ff16156109d35760008054600160a060020a031690639dc29fac90309085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109b757600080fd5b6102c65a03f115156109c857600080fd5b505050604051805150505b610b13565b600154600160a060020a0385811691161415610b135760025460045483028115156109ff57fe5b6000549190049150600160a060020a031663867904b484610a1f846104d7565b840360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a6d57600080fd5b6102c65a03f11515610a7e57600080fd5b50505060405180515050600554610100900460ff1615610b1357600154600160a060020a0316639dc29fac308460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610af757600080fd5b6102c65a03f11515610b0857600080fd5b505050604051805150505b5b5b5b505050505600a165627a7a723058205d2eeceb2ba775c6f43067173f5ec62f23deabcd12b417541d79a53021001c520029000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d276000000000000000000000000621d78f2ef2fd937bfca696cabaf9a779f59b3ed0000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4
Deployed Bytecode
0x606060405236156100e05763ffffffff60e060020a600035041663046f7da281146100e857806319f37361146100fd5780632f54bf6e146101305780635205b80f146101635780635237d23514610192578063679aefce146101c15780638456cb59146101e6578063893d20e8146101fb578063903f2c481461022a57806390be0bd9146102515780639670c0bc1461026657806399a5d7471461028b578063a92d6a48146102b3578063ac4ddd9f146102c8578063b187bd26146102e9578063c6afd98a14610310578063ced72f8714610328578063f2fde38b1461034d575b5b600080fd5b005b34156100f357600080fd5b6100e661036e565b005b341561010857600080fd5b61011c600160a060020a036004351661039b565b604051901515815260200160405180910390f35b341561013b57600080fd5b61011c600160a060020a03600435166103cd565b604051901515815260200160405180910390f35b341561016e57600080fd5b6101766103ea565b604051600160a060020a03909116815260200160405180910390f35b341561019d57600080fd5b6101766103fa565b604051600160a060020a03909116815260200160405180910390f35b34156101cc57600080fd5b6101d461040a565b60405190815260200160405180910390f35b34156101f157600080fd5b6100e6610411565b005b341561020657600080fd5b61017661043e565b604051600160a060020a03909116815260200160405180910390f35b341561023557600080fd5b61011c610454565b604051901515815260200160405180910390f35b341561025c57600080fd5b6100e6610476565b005b341561027157600080fd5b6101d46104d0565b60405190815260200160405180910390f35b341561029657600080fd5b6101d46004356104d7565b60405190815260200160405180910390f35b34156102be57600080fd5b6100e6610505565b005b34156102d357600080fd5b6100e6600160a060020a0360043516610548565b005b34156102f457600080fd5b61011c61059d565b604051901515815260200160405180910390f35b341561031b57600080fd5b6100e66004356105a7565b005b341561033357600080fd5b6101d46106ff565b60405190815260200160405180910390f35b341561035857600080fd5b6100e6600160a060020a0360043516610706565b005b60055433600160a060020a0390811662010000909204161461038f57600080fd5b61039761075b565b5b5b565b60008054600160a060020a03838116911614806103c55750600154600160a060020a038381169116145b90505b919050565b600554600160a060020a038281166201000090920416145b919050565b600054600160a060020a03165b90565b600154600160a060020a03165b90565b6002545b90565b60055433600160a060020a0390811662010000909204161461043257600080fd5b610397610768565b5b5b565b600554620100009004600160a060020a03165b90565b60065474010000000000000000000000000000000000000000900460ff165b90565b60055433600160a060020a0390811662010000909204161461049757600080fd5b6006805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b6004545b90565b60006003546000146104fa5760045460035483028115156104f457fe5b046103c5565b60005b90505b919050565b60055433600160a060020a0390811662010000909204161461052657600080fd5b6006805474ff0000000000000000000000000000000000000000191690555b5b565b60055433600160a060020a0390811662010000909204161461056957600080fd5b80600160a060020a031661057b6103ea565b600160a060020a0316141561058f57600080fd5b61059881610778565b5b5b50565b60055460ff165b90565b6000808083116105b657600080fd5b60065433925074010000000000000000000000000000000000000000900460ff1615806106535750600654600160a060020a03166308e0d29d8360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561063757600080fd5b6102c65a03f1151561064857600080fd5b505050604051805190505b151561065e57600080fd5b6106666103ea565b905080600160a060020a03166323b872dd83308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156106d257600080fd5b6102c65a03f115156106e357600080fd5b50505060405180519050506106f9818385610875565b5b505050565b6003545b90565b60055433600160a060020a0390811662010000909204161461072757600080fd5b6005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038416021790555b5b50565b6005805460ff191690555b565b6005805460ff191660011790555b565b806000600160a060020a0382166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107d157600080fd5b6102c65a03f115156107e257600080fd5b505050604051805191505060008111156106f95781600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561085357600080fd5b6102c65a03f1151561086457600080fd5b505050604051805150505b5b505050565b60055460009060ff161561088857600080fd5b6000821161089557600080fd5b600054600160a060020a03858116911614156109d85760045460025483028115156108bc57fe5b6001549190049150600160a060020a031663867904b4846108dc846104d7565b840360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561092a57600080fd5b6102c65a03f1151561093b57600080fd5b50505060405180515050600554610100900460ff16156109d35760008054600160a060020a031690639dc29fac90309085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109b757600080fd5b6102c65a03f115156109c857600080fd5b505050604051805150505b610b13565b600154600160a060020a0385811691161415610b135760025460045483028115156109ff57fe5b6000549190049150600160a060020a031663867904b484610a1f846104d7565b840360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a6d57600080fd5b6102c65a03f11515610a7e57600080fd5b50505060405180515050600554610100900460ff1615610b1357600154600160a060020a0316639dc29fac308460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610af757600080fd5b6102c65a03f11515610b0857600080fd5b505050604051805150505b5b5b5b505050505600a165627a7a723058205d2eeceb2ba775c6f43067173f5ec62f23deabcd12b417541d79a53021001c520029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d276000000000000000000000000621d78f2ef2fd937bfca696cabaf9a779f59b3ed0000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4
-----Decoded View---------------
Arg [0] : _whitelist (address): 0xDD5cec9019ec8449A5d01d0d8175e6519530D276
Arg [1] : _drp (address): 0x621d78f2EF2fd937BFca696CabaF9A779F59B3Ed
Arg [2] : _drps (address): 0x3E250A4f78410c29cfC39463a81f14a226690eB4
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d276
Arg [1] : 000000000000000000000000621d78f2ef2fd937bfca696cabaf9a779f59b3ed
Arg [2] : 0000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4
Swarm Source
bzzr://5d2eeceb2ba775c6f43067173f5ec62f23deabcd12b417541d79a53021001c52
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.