Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xbef1199135baf99e0bf4d3d9b49d14ba26eb318497402acc266a3a745e6997c4 | Release | 25440548 | 459 days 2 hrs ago | Dark Matter DeFi: Deployer | IN | 0x3f31cd67b90186ee2ec97b10d911e8394870938b | 0 FTM | 0.00650138757 | |
0x8a0040423041daa39dcbb737224a8d56f76bd0562dc3446dad2da48e8ed94e76 | 0x60e06040 | 22041506 | 494 days 4 hrs ago | Dark Matter DeFi: Deployer | IN | Create: TokenTimelock | 0 FTM | 0.061229764665 |
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x8a0040423041daa39dcbb737224a8d56f76bd0562dc3446dad2da48e8ed94e76 | 22041506 | 494 days 4 hrs ago | Dark Matter DeFi: Deployer | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
TokenTimelock
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2021-11-14 */ // SPDX-License-Identifier: MIT //FUNDS NFT //File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } //File: @openzeppelin/contracts/Token/IERC20.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } //File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } //File: @openzeppelin/contracts/token/ERC20/utils/TokenTimelock.sol pragma solidity ^0.8.0; /** * @dev A token holder contract that will allow a beneficiary to extract the * tokens after a given release time. * * Useful for simple vesting schedules like "advisors get all of their tokens * after 1 year". */ contract TokenTimelock { using SafeERC20 for IERC20; // ERC20 basic token contract being held IERC20 private immutable _token; // beneficiary of tokens after they are released address private immutable _beneficiary; // timestamp when token release is enabled uint256 private immutable _releaseTime; constructor( IERC20 token_, address beneficiary_, uint256 releaseTime_ ) { require(releaseTime_ > block.timestamp, "TokenTimelock: release time is before current time"); _token = token_; _beneficiary = beneficiary_; _releaseTime = releaseTime_; } /** * @return the token being held. */ function token() public view virtual returns (IERC20) { return _token; } /** * @return the beneficiary of the tokens. */ function beneficiary() public view virtual returns (address) { return _beneficiary; } /** * @return the time when the tokens are released. */ function releaseTime() public view virtual returns (uint256) { return _releaseTime; } /** * @notice Transfers tokens held by timelock to beneficiary. */ function release() public virtual { require(block.timestamp >= releaseTime(), "TokenTimelock: current time is before release time"); uint256 amount = token().balanceOf(address(this)); require(amount > 0, "TokenTimelock: no tokens to release"); token().safeTransfer(beneficiary(), amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b5060405161094b38038061094b83398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c0516107f161015a6000396000818160ac015260fd0152600081816053015261033101526000818160d7015281816101b4015261030f01526107f16000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f1461009d578063b91d4001146100a7578063fc0c546a146100d5575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100a56100fb565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610094565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f00000000000000000000000000000000000000000000000000000000000000004210156101b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527f65666f72652072656c656173652074696d65000000000000000000000000000060648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa15801561023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026391906106e3565b9050600081116102f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201527f617365000000000000000000000000000000000000000000000000000000000060648201526084016101a7565b61035673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610359565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526103e69084906103eb565b505050565b600061044d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104f79092919063ffffffff16565b8051909150156103e6578080602001905181019061046b91906106fc565b6103e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101a7565b60606105068484600085610510565b90505b9392505050565b6060824710156105a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101a7565b843b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610633919061074e565b60006040518083038185875af1925050503d8060008114610670576040519150601f19603f3d011682016040523d82523d6000602084013e610675565b606091505b5091509150610685828286610690565b979650505050505050565b6060831561069f575081610509565b8251156106af5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a7919061076a565b6000602082840312156106f557600080fd5b5051919050565b60006020828403121561070e57600080fd5b8151801515811461050957600080fd5b60005b83811015610739578181015183820152602001610721565b83811115610748576000848401525b50505050565b6000825161076081846020870161071e565b9190910192915050565b602081526000825180602084015261078981604085016020870161071e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122014343722724565643d30b58ef67f4021433a8d5d2aa62416a84f221b487dd42864736f6c634300080a003300000000000000000000000090e892fed501ae00596448aecf998c88816e5c0f000000000000000000000000365e82adad2c86d38bec033be04768c8ecd108e40000000000000000000000000000000000000000000000000000000061bbf069
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000090e892fed501ae00596448aecf998c88816e5c0f000000000000000000000000365e82adad2c86d38bec033be04768c8ecd108e40000000000000000000000000000000000000000000000000000000061bbf069
-----Decoded View---------------
Arg [0] : token_ (address): 0x90e892fed501ae00596448aecf998c88816e5c0f
Arg [1] : beneficiary_ (address): 0x365e82adad2c86d38bec033be04768c8ecd108e4
Arg [2] : releaseTime_ (uint256): 1639706729
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000090e892fed501ae00596448aecf998c88816e5c0f
Arg [1] : 000000000000000000000000365e82adad2c86d38bec033be04768c8ecd108e4
Arg [2] : 0000000000000000000000000000000000000000000000000000000061bbf069
Deployed ByteCode Sourcemap
15209:1598:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16098:99;16177:12;16098:99;;;190:42:1;178:55;;;160:74;;148:2;133:18;16098:99:0;;;;;;;;16469:335;;;:::i;:::-;;16278:99;;;16357:12;391:25:1;;379:2;364:18;16278:99:0;245:177:1;15939:86:0;16011:6;15939:86;;16469:335;16357:12;16522:15;:32;;16514:95;;;;;;;874:2:1;16514:95:0;;;856:21:1;913:2;893:18;;;886:30;952:34;932:18;;;925:62;1023:20;1003:18;;;996:48;1061:19;;16514:95:0;;;;;;;;;16622:14;16011:6;16639:32;;;;;16665:4;16639:32;;;160:74:1;16639:17:0;;;;;;;;133:18:1;;16639:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16622:49;;16699:1;16690:6;:10;16682:58;;;;;;;1482:2:1;16682:58:0;;;1464:21:1;1521:2;1501:18;;;1494:30;1560:34;1540:18;;;1533:62;1631:5;1611:18;;;1604:33;1654:19;;16682:58:0;1280:399:1;16682:58:0;16753:43;:20;16011:6;16753:20;16177:12;16789:6;16753:20;:43::i;:::-;16503:301;16469:335::o;11586:211::-;11730:58;;;1888:42:1;1876:55;;11730:58:0;;;1858:74:1;1948:18;;;;1941:34;;;11730:58:0;;;;;;;;;;1831:18:1;;;;11730:58:0;;;;;;;;;;11753:23;11730:58;;;11703:86;;11723:5;;11703:19;:86::i;:::-;11586:211;;;:::o;14159:716::-;14583:23;14609:69;14637:4;14609:69;;;;;;;;;;;;;;;;;14617:5;14609:27;;;;:69;;;;;:::i;:::-;14693:17;;14583:95;;-1:-1:-1;14693:21:0;14689:179;;14790:10;14779:30;;;;;;;;;;;;:::i;:::-;14771:85;;;;;;;2470:2:1;14771:85:0;;;2452:21:1;2509:2;2489:18;;;2482:30;2548:34;2528:18;;;2521:62;2619:12;2599:18;;;2592:40;2649:19;;14771:85:0;2268:406:1;3617:229:0;3754:12;3786:52;3808:6;3816:4;3822:1;3825:12;3786:21;:52::i;:::-;3779:59;;3617:229;;;;;;:::o;4737:510::-;4907:12;4965:5;4940:21;:30;;4932:81;;;;;;;2881:2:1;4932:81:0;;;2863:21:1;2920:2;2900:18;;;2893:30;2959:34;2939:18;;;2932:62;3030:8;3010:18;;;3003:36;3056:19;;4932:81:0;2679:402:1;4932:81:0;1134:20;;5024:60;;;;;;;3288:2:1;5024:60:0;;;3270:21:1;3327:2;3307:18;;;3300:30;3366:31;3346:18;;;3339:59;3415:18;;5024:60:0;3086:353:1;5024:60:0;5098:12;5112:23;5139:6;:11;;5158:5;5165:4;5139:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5097:73;;;;5188:51;5205:7;5214:10;5226:12;5188:16;:51::i;:::-;5181:58;4737:510;-1:-1:-1;;;;;;;4737:510:0:o;7423:712::-;7573:12;7602:7;7598:530;;;-1:-1:-1;7633:10:0;7626:17;;7598:530;7747:17;;:21;7743:374;;7945:10;7939:17;8006:15;7993:10;7989:2;7985:19;7978:44;7743:374;8088:12;8081:20;;;;;;;;;;;:::i;1091:184:1:-;1161:6;1214:2;1202:9;1193:7;1189:23;1185:32;1182:52;;;1230:1;1227;1220:12;1182:52;-1:-1:-1;1253:16:1;;1091:184;-1:-1:-1;1091:184:1:o;1986:277::-;2053:6;2106:2;2094:9;2085:7;2081:23;2077:32;2074:52;;;2122:1;2119;2112:12;2074:52;2154:9;2148:16;2207:5;2200:13;2193:21;2186:5;2183:32;2173:60;;2229:1;2226;2219:12;3444:258;3516:1;3526:113;3540:6;3537:1;3534:13;3526:113;;;3616:11;;;3610:18;3597:11;;;3590:39;3562:2;3555:10;3526:113;;;3657:6;3654:1;3651:13;3648:48;;;3692:1;3683:6;3678:3;3674:16;3667:27;3648:48;;3444:258;;;:::o;3707:274::-;3836:3;3874:6;3868:13;3890:53;3936:6;3931:3;3924:4;3916:6;3912:17;3890:53;:::i;:::-;3959:16;;;;;3707:274;-1:-1:-1;;3707:274:1:o;3986:442::-;4135:2;4124:9;4117:21;4098:4;4167:6;4161:13;4210:6;4205:2;4194:9;4190:18;4183:34;4226:66;4285:6;4280:2;4269:9;4265:18;4260:2;4252:6;4248:15;4226:66;:::i;:::-;4344:2;4332:15;4349:66;4328:88;4313:104;;;;4419:2;4309:113;;3986:442;-1:-1:-1;;3986:442:1:o
Swarm Source
ipfs://14343722724565643d30b58ef67f4021433a8d5d2aa62416a84f221b487dd428
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.