More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 37,116 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 10572323 | 6 hrs ago | IN | 0 GLMR | 0.01393075 | ||||
Claim | 10570068 | 10 hrs ago | IN | 0 GLMR | 0.013034 | ||||
Claim | 10569051 | 11 hrs ago | IN | 0 GLMR | 0.013208 | ||||
Claim | 10566314 | 16 hrs ago | IN | 0 GLMR | 0.01393075 | ||||
Claim | 10565900 | 17 hrs ago | IN | 0 GLMR | 0.013208 | ||||
Claim | 10480592 | 6 days ago | IN | 0 GLMR | 0.01342387 | ||||
Claim | 10422728 | 10 days ago | IN | 0 GLMR | 0.013034 | ||||
Claim | 10301339 | 19 days ago | IN | 0 GLMR | 0.013208 | ||||
Claim | 10300880 | 19 days ago | IN | 0 GLMR | 0.013747 | ||||
Claim | 10275186 | 21 days ago | IN | 0 GLMR | 0.012728 | ||||
Claim | 10273105 | 21 days ago | IN | 0 GLMR | 0.01333043 | ||||
Claim | 10273090 | 21 days ago | IN | 0 GLMR | 0.01333043 | ||||
Claim | 10273049 | 21 days ago | IN | 0 GLMR | 0.013034 | ||||
Claim | 10272618 | 21 days ago | IN | 0 GLMR | 0.013192 | ||||
Claim | 10271590 | 21 days ago | IN | 0 GLMR | 0.013747 | ||||
Claim | 10255431 | 22 days ago | IN | 0 GLMR | 0.01561932 | ||||
Claim | 10203305 | 26 days ago | IN | 0 GLMR | 0.013208 | ||||
Claim | 10189037 | 27 days ago | IN | 0 GLMR | 0.013747 | ||||
Claim | 10170411 | 28 days ago | IN | 0 GLMR | 0.01610003 | ||||
Claim | 10156082 | 29 days ago | IN | 0 GLMR | 0.01561932 | ||||
Claim | 10155675 | 29 days ago | IN | 0 GLMR | 0.013192 | ||||
Claim | 10152653 | 29 days ago | IN | 0 GLMR | 0.013208 | ||||
Claim | 10135531 | 31 days ago | IN | 0 GLMR | 0.01393075 | ||||
Delegate | 10074878 | 35 days ago | IN | 0 GLMR | 0.00867379 | ||||
Claim | 10055703 | 36 days ago | IN | 0 GLMR | 0.01340486 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TokenSaleDistributorProxy
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import "./ReentrancyGuard.sol"; import "./TokenSaleDistributorProxyStorage.sol"; contract TokenSaleDistributorProxy is ReentrancyGuard, TokenSaleDistributorProxyStorage { /** The admin was changed */ event AdminChanged(address newAdmin); /** The implementation was changed */ event ImplChanged(address newImpl); constructor() public { admin = msg.sender; } /** * Request a new admin to be set for the contract. * * @param newAdmin New admin address */ function setPendingAdmin(address newAdmin) public adminOnly { require(newAdmin != address(0), "Cannot set to zero address"); pendingAdmin = newAdmin; } /** * Accept admin transfer from the current admin to the new. */ function acceptPendingAdmin() public { require(msg.sender == pendingAdmin && pendingAdmin != address(0), "Caller must be the pending admin"); admin = pendingAdmin; pendingAdmin = address(0); emit AdminChanged(admin); } /** * Request a new implementation to be set for the contract. * * @param newImplementation New contract implementation contract address */ function setPendingImplementation(address newImplementation) public adminOnly { require(newImplementation != address(0), "Cannot set to zero address"); pendingImplementation = newImplementation; } /** * Accept pending implementation change */ function acceptPendingImplementation() public { require(msg.sender == pendingImplementation && pendingImplementation != address(0), "Only the pending implementation contract can call this"); implementation = pendingImplementation; pendingImplementation = address(0); emit ImplChanged(implementation); } fallback() payable external { (bool success, ) = implementation.delegatecall(msg.data); assembly { let free_mem_ptr := mload(0x40) let size := returndatasize() returndatacopy(free_mem_ptr, 0, size) switch success case 0 { revert(free_mem_ptr, size) } default { return(free_mem_ptr, size) } } } /******************************************************** * * * MODIFIERS * * * ********************************************************/ modifier adminOnly { require(msg.sender == admin, "admin only"); _; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() public { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; contract TokenSaleDistributorProxyStorage { // Current contract admin address address public admin; // Requested new admin for the contract address public pendingAdmin; // Current contract implementation address address public implementation; // Requested new contract implementation address address public pendingImplementation; }
{ "optimizer": { "enabled": true, "runs": 999999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImpl","type":"address"}],"name":"ImplChanged","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptPendingImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"setPendingImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506001600081905580546001600160a01b031916331790556107cf806100376000396000f3fe60806040526004361061007b5760003560e01c80634dd18bf51161004e5780634dd18bf5146101be5780635c60da1b146101de578063709920c11461020b578063f851a440146102205761007b565b806309ed43c91461010457806316ec205c14610126578063267822471461013b578063396f7b2314610191575b60035460405160009173ffffffffffffffffffffffffffffffffffffffff16906100a8908390369061074c565b600060405180830381855af49150503d80600081146100e3576040519150601f19603f3d011682016040523d82523d6000602084013e6100e8565b606091505b505090506040513d806000833e828015610100578183f35b8183fd5b34801561011057600080fd5b5061012461011f36600461075c565b61024d565b005b34801561013257600080fd5b50610124610397565b34801561014757600080fd5b506002546101689073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561019d57600080fd5b506004546101689073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101ca57600080fd5b506101246101d936600461075c565b6104e5565b3480156101ea57600080fd5b506003546101689073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021757600080fd5b5061012461062a565b34801561022c57600080fd5b506001546101689073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f61646d696e206f6e6c790000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616e6e6f742073657420746f207a65726f206164647265737300000000000060448201526064016102ca565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331480156103d5575060045473ffffffffffffffffffffffffffffffffffffffff1615155b610461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4f6e6c79207468652070656e64696e6720696d706c656d656e746174696f6e2060448201527f636f6e74726163742063616e2063616c6c20746869730000000000000000000060648201526084016102ca565b600480546003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092559091169091556040519081527f71c6652673eb67790348b38b966a87b710bf7596bafa96d43f09f9c6872bd5a1906020015b60405180910390a1565b60015473ffffffffffffffffffffffffffffffffffffffff163314610566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f61646d696e206f6e6c790000000000000000000000000000000000000000000060448201526064016102ca565b73ffffffffffffffffffffffffffffffffffffffff81166105e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616e6e6f742073657420746f207a65726f206164647265737300000000000060448201526064016102ca565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff1633148015610668575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f43616c6c6572206d757374206265207468652070656e64696e672061646d696e60448201526064016102ca565b600280546001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092559091169091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c906020016104db565b8183823760009101908152919050565b60006020828403121561076e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079257600080fd5b939250505056fea2646970667358221220c7718ecb1781452204cf8236d1331667546e394d581d6b9fb05d4a952f83fd5664736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061007b5760003560e01c80634dd18bf51161004e5780634dd18bf5146101be5780635c60da1b146101de578063709920c11461020b578063f851a440146102205761007b565b806309ed43c91461010457806316ec205c14610126578063267822471461013b578063396f7b2314610191575b60035460405160009173ffffffffffffffffffffffffffffffffffffffff16906100a8908390369061074c565b600060405180830381855af49150503d80600081146100e3576040519150601f19603f3d011682016040523d82523d6000602084013e6100e8565b606091505b505090506040513d806000833e828015610100578183f35b8183fd5b34801561011057600080fd5b5061012461011f36600461075c565b61024d565b005b34801561013257600080fd5b50610124610397565b34801561014757600080fd5b506002546101689073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561019d57600080fd5b506004546101689073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101ca57600080fd5b506101246101d936600461075c565b6104e5565b3480156101ea57600080fd5b506003546101689073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021757600080fd5b5061012461062a565b34801561022c57600080fd5b506001546101689073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f61646d696e206f6e6c790000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616e6e6f742073657420746f207a65726f206164647265737300000000000060448201526064016102ca565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331480156103d5575060045473ffffffffffffffffffffffffffffffffffffffff1615155b610461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4f6e6c79207468652070656e64696e6720696d706c656d656e746174696f6e2060448201527f636f6e74726163742063616e2063616c6c20746869730000000000000000000060648201526084016102ca565b600480546003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092559091169091556040519081527f71c6652673eb67790348b38b966a87b710bf7596bafa96d43f09f9c6872bd5a1906020015b60405180910390a1565b60015473ffffffffffffffffffffffffffffffffffffffff163314610566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f61646d696e206f6e6c790000000000000000000000000000000000000000000060448201526064016102ca565b73ffffffffffffffffffffffffffffffffffffffff81166105e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616e6e6f742073657420746f207a65726f206164647265737300000000000060448201526064016102ca565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff1633148015610668575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f43616c6c6572206d757374206265207468652070656e64696e672061646d696e60448201526064016102ca565b600280546001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092559091169091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c906020016104db565b8183823760009101908152919050565b60006020828403121561076e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079257600080fd5b939250505056fea2646970667358221220c7718ecb1781452204cf8236d1331667546e394d581d6b9fb05d4a952f83fd5664736f6c634300080a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.