Address Contract Verified
Address
0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb
Balance
0 ETH
Nonce
1
Code Size
1541 bytes
Creator
0xf6839085...C21E at tx 0x10ee0556...0f940e
Indexed Transactions
1 (24,436,676 → 24,436,676)
Gas Used (indexed)
64,319
Contract Bytecode
1541 bytes
0x6080604052600436106100705760003560e01c80635c60da1b1161004e5780635c60da1b1461015a57806395d89b411461017c578063a41098bf14610191578063bb913f41146101a657610070565b806306fdde03146100eb57806318160ddd14610116578063313ce56714610138575b600080546040516001600160a01b03909116906100909083903690610463565b600060405180830381855af49150503d80600081146100cb576040519150601f19603f3d011682016040523d82523d6000602084013e6100d0565b606091505b505090506040513d6000823e8180156100e7573d82f35b3d82fd5b3480156100f757600080fd5b506101006101c8565b60405161010d91906104a1565b60405180910390f35b34801561012257600080fd5b5061012b610255565b60405161010d91906105a0565b34801561014457600080fd5b5061014d61025b565b60405161010d91906105a9565b34801561016657600080fd5b5061016f610260565b60405161010d9190610473565b34801561018857600080fd5b5061010061026f565b34801561019d57600080fd5b5061016f6102c7565b3480156101b257600080fd5b506101c66101c1366004610424565b6102df565b005b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561024d5780601f106102225761010080835404028352916020019161024d565b820191906000526020600020905b81548152906001019060200180831161023057829003601f168201915b505050505081565b60035481565b601281565b6000546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561024d5780601f106102225761010080835404028352916020019161024d565b732971adfa57b20e5a416ae5a708a8655a9c74f72381565b336001600160a01b0316732971adfa57b20e5a416ae5a708a8655a9c74f7236001600160a01b031663ee97f7f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561033657600080fd5b505afa15801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190610447565b6001600160a01b03161461039d5760405162461bcd60e51b81526004016103949061055c565b60405180910390fd5b6001600160a01b0381166103c35760405162461bcd60e51b8152600401610394906104f4565b600080546001600160a01b038381166001600160a01b031983161792839055604051918116927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a926104189285921690610487565b60405180910390a15050565b600060208284031215610435578081fd5b8135610440816105b7565b9392505050565b600060208284031215610458578081fd5b8151610440816105b7565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b818110156104cd578581018301518582016040015282016104b1565b818111156104de5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526042908201527f546f6b656e44656c656761746f723a3a5f736574496d706c656d656e7461746960408201527f6f6e3a20696e76616c696420696d706c656d656e746174696f6e206164647265606082015261737360f01b608082015260a00190565b60208082526024908201527f546b6e3a3a69734d61737465723a206d73672e73656e646572206e6f74206d6160408201526339ba32b960e11b606082015260800190565b90815260200190565b60ff91909116815260200190565b6001600160a01b03811681146105cc57600080fd5b5056fea264697066735822122074bc32cb9e5d16037640c248eea0a737b9df31782067aff0720bf127027e861864736f6c63430007030033
Verified Source Code Full Match
Compiler: v0.7.3+commit.9bfce1f6
EVM: istanbul
Optimization: Yes (200 runs)
TokenDelegator.sol 77 lines
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
import { TokenDelegatorStorage, TokenEvents } from "./TokenInterfaces.sol";
contract InstaToken is TokenDelegatorStorage, TokenEvents {
constructor(
address account,
address implementation_,
uint initialSupply_,
uint mintingAllowedAfter_,
bool transferPaused_
) {
require(implementation_ != address(0), "TokenDelegator::constructor invalid address");
delegateTo(
implementation_,
abi.encodeWithSignature(
"initialize(address,uint256,uint256,bool)",
account,
initialSupply_,
mintingAllowedAfter_,
transferPaused_
)
);
implementation = implementation_;
emit NewImplementation(address(0), implementation);
}
/**
* @notice Called by the admin to update the implementation of the delegator
* @param implementation_ The address of the new implementation for delegation
*/
function _setImplementation(address implementation_) external isMaster {
require(implementation_ != address(0), "TokenDelegator::_setImplementation: invalid implementation address");
address oldImplementation = implementation;
implementation = implementation_;
emit NewImplementation(oldImplementation, implementation);
}
/**
* @notice Internal method to delegate execution to another contract
* @dev It returns to the external caller whatever the implementation returns or forwards reverts
* @param callee The contract to delegatecall
* @param data The raw data to delegatecall
*/
function delegateTo(address callee, bytes memory data) internal {
(bool success, bytes memory returnData) = callee.delegatecall(data);
assembly {
if eq(success, 0) {
revert(add(returnData, 0x20), returndatasize())
}
}
}
/**
* @dev Delegates execution to an implementation contract.
* It returns to the external caller whatever the implementation returns
* or forwards reverts.
*/
fallback () external payable {
// delegate all other functions to current implementation
(bool success, ) = implementation.delegatecall(msg.data);
assembly {
let free_mem_ptr := mload(0x40)
returndatacopy(free_mem_ptr, 0, returndatasize())
switch success
case 0 { revert(free_mem_ptr, returndatasize()) }
default { return(free_mem_ptr, returndatasize()) }
}
}
}
TokenInterfaces.sol 102 lines
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
interface IndexInterface {
function master() external view returns (address);
}
contract TokenEvents {
/// @notice An event thats emitted when an account changes its delegate
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
/// @notice An event thats emitted when a delegate account's vote balance changes
event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
/// @notice An event thats emitted when the minter changes
event MinterChanged(address indexed oldMinter, address indexed newMinter);
/// @notice The standard EIP-20 transfer event
event Transfer(address indexed from, address indexed to, uint256 amount);
/// @notice The standard EIP-20 approval event
event Approval(address indexed owner, address indexed spender, uint256 amount);
/// @notice Emitted when implementation is changed
event NewImplementation(address oldImplementation, address newImplementation);
/// @notice An event thats emitted when the token transfered is paused
event TransferPaused(address indexed minter);
/// @notice An event thats emitted when the token transfered is unpaused
event TransferUnpaused(address indexed minter);
/// @notice An event thats emitted when the token symbol is changed
event ChangedSymbol(string oldSybmol, string newSybmol);
/// @notice An event thats emitted when the token name is changed
event ChangedName(string oldName, string newName);
}
contract TokenDelegatorStorage {
/// @notice InstaIndex contract
IndexInterface constant public instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723);
/// @notice Active brains of Token
address public implementation;
/// @notice EIP-20 token name for this token
string public name = "Instadapp";
/// @notice EIP-20 token symbol for this token
string public symbol = "INST";
/// @notice Total number of tokens in circulation
uint public totalSupply;
/// @notice EIP-20 token decimals for this token
uint8 public constant decimals = 18;
modifier isMaster() {
require(instaIndex.master() == msg.sender, "Tkn::isMaster: msg.sender not master");
_;
}
}
/**
* @title Storage for Token Delegate
* @notice For future upgrades, do not change TokenDelegateStorageV1. Create a new
* contract which implements TokenDelegateStorageV1 and following the naming convention
* TokenDelegateStorageVX.
*/
contract TokenDelegateStorageV1 is TokenDelegatorStorage {
/// @notice The timestamp after which minting may occur
uint public mintingAllowedAfter;
/// @notice token transfer pause state
bool public transferPaused;
// Allowance amounts on behalf of others
mapping (address => mapping (address => uint96)) internal allowances;
// Official record of token balances for each account
mapping (address => uint96) internal balances;
/// @notice A record of each accounts delegate
mapping (address => address) public delegates;
/// @notice A checkpoint for marking number of votes from a given block
struct Checkpoint {
uint32 fromBlock;
uint96 votes;
}
/// @notice A record of votes checkpoints for each account, by index
mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
/// @notice The number of checkpoints for each account
mapping (address => uint32) public numCheckpoints;
/// @notice A record of states for signing / validating signatures
mapping (address => uint) public nonces;
}
Read Contract
decimals 0x313ce567 → uint8
implementation 0x5c60da1b → address
instaIndex 0xa41098bf → address
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 1 functions
These functions modify contract state and require a wallet transaction to execute.
_setImplementation 0xbb913f41
address implementation_
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0xF42AAc93...f173 | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0x79979100...bfe5b0 | 24,436,676 | IN | 0xF42AAc93...f173 | 0 ETH |