Contract 0xb4bbf4369e36c924d6d018e10873f83eb447756b

 

Contract Overview

Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbe5ab18f3b5b9e6132e6d9908cc4fba7f342e6c27ded739a859e87f5e33d3040Claim394920272022-05-31 20:52:15179 days 22 hrs ago0x18bf8d51f7695aa3e63fea9e99416530c1420511 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.005138591067
0xeacc6440c9c8582aca1d99ad95f167926818946fdc5f0a80896dc93a72110b57Claim394480122022-05-31 6:23:59180 days 12 hrs ago0x469f25c297b2e84898cfb1ce596f2553285f3e9b IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.003430079027
0x432238f0df456cc5417ef877ce6bfabe5b7f9a859c6751bb1f150a49a980fe58Claim394040812022-05-30 15:47:49181 days 3 hrs ago0x88b5ac47f9501c712267ba56ba8ac27f9cf95d14 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.001408931243
0xd243153288bbd8bd093e97292dd2c7314e048f17cefb07362202778531806237Claim373488472022-05-01 20:41:28209 days 22 hrs ago0x3a55e080d4109f68709d9cae342f2719de6860ce IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.03281523806
0x1b9cca3641360aa46ed490648eb3a8c5d245c1b9590297032b6c954b1be3eb97Claim315577022022-02-20 22:47:55279 days 20 hrs ago0xb2efe05a181ede63dd70dbf692ec2778b96d0d2b IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.015484730106
0x77e6dd2cf3d662203d4a04754e01543b6d31ff4dc53b3a922ed9b01d50f7ce5aClaim313260272022-02-18 12:21:26282 days 6 hrs ago0x9dcb8899faab804527b9540d203b1ab778641554 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.014628477261
0xc1284005a7dd52dfdb93780c30e5d81dbd4c4736b076620e3d2f6acbda7402feClaim311904642022-02-17 2:15:31283 days 16 hrs ago0xe684dc05c16851c65edb5d9fc3b11bce4f427eb2 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.021140197265
0x8abd319c1c8a1c9f79a4d2ab7ecbba9389bcb0a6ed1b658704753190446da7a9Claim311729472022-02-16 21:45:15283 days 21 hrs ago0x6fe797a05359c9d91b1f85d418e2ed4ea6c65a8f IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.02310612482
0xc0e00b52aa7f7a0ed878dc43d13c017bad5c26469eddc1164b755223521f2193Claim306171532022-02-11 5:36:23289 days 13 hrs ago0xa37782922918d2558c2e4841ef48585fedcbc7ff IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.009256517616
0x0dc0c81b94a9d98626947453e6913f15dab946bbccaa07c28338ed394b873c1fClaim305929932022-02-10 23:49:52289 days 19 hrs ago0x582fa8f9d1afb10887a12e2840e4d78c99d3e6e3 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.020583565187
0xce15e1d4e9742f7eae2b35380ab0c3f26163f64aeb704a2d47776961e7857f82Claim305234932022-02-10 6:00:05290 days 13 hrs ago0x5d785394f05fb7a38eadb8ded1b3963c91083c4b IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.012930706742
0xad0e4a061ff7e4753ad551e92fe642c00234c346a50ab5454702b52e92dcd543Claim304822032022-02-09 20:06:53290 days 22 hrs ago0x8a2ea71352fd4a3fdcbf33dc847a7aaf85dd0b04 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.016127300237
0x8db825d18154ca5c7fda1ef7eb7ed6f34b366430e61db034537fc06808da9dc6Claim296527642022-02-01 5:40:14299 days 13 hrs ago0x95aa447b1a21843a311b82e8bcc5461b1043f194 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.015859336957
0x20f76644b102359973e5b1ff9c28e4f950873a2e4e735bb3935e25ecb712b32dClaim295097012022-01-30 19:23:57300 days 23 hrs ago0x491385bd03e4328ae52aba7663564ecfafd1f728 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.025217803507
0x7e1ba485faf07e25e7f018347ebe183da55667272546a5a7141991838e467b76Claim293700832022-01-29 9:46:37302 days 9 hrs ago0xfe7364a43f1fbe03f7bef8980a55e2ad3bfb147a IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.039345466713
0xddabe30702eac17aceeab52e4213caf4d36e07293a3011e3e398d986d9dd56aaClaim293460892022-01-29 3:52:31302 days 15 hrs ago0x436ba474331273e54cd2754b97ab30a4135f9c85 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.02075301963
0x657417deb72c98f224ee0ab2a3c3264c337b0e857e24dc7c187d630a6da1f836Claim293317402022-01-29 0:22:04302 days 18 hrs ago0x9dda9bc0e3769c94c75fd31a0ec936bdc0a7be04 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.020417510003
0xdc6a89c23fc02099633c2c3d4dc7b2c66385f28a2ba4cbf6c9b743f09acec82bClaim292405442022-01-28 1:48:18303 days 17 hrs ago0x6e3bda1fbdc98ed50a537228650d9d6149b013f5 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.041047914009
0xb8b15efa04a21883fec51e4a2498b14483f313b744f98a0898190bc4bcd245f2Claim292377132022-01-28 1:01:18303 days 18 hrs ago0x5b356d59ea36ef660173970aa97f76213ba46260 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.049823823603
0x235ce7cf932d757f108b86a5162eb13f26f4f8a0dbce6ecc610745edbce0c8dfClaim292142132022-01-27 18:43:22304 days 23 mins ago0x950257f721cb8c2796298e04d83b0d1095ab71dd IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.055501008435
0x73517c84a53b6fe7f4bdd1070a52205b403a88b6887172c198c63dbdbee051fcClaim291823912022-01-27 10:21:07304 days 8 hrs ago0x91e9a526369667a4ffbdef5ba4a5233d8a6ff751 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.02777633987
0xdee36bacac1de02223ace4d90a774354042a1c3d00104097feb885fd5136ce42Claim291041352022-01-26 13:30:42305 days 5 hrs ago0xe68ec4d104ac6045ab0409e14282df386877032b IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.012194511762
0x7cbf48ec8840a4b390d9ba10f319fa4e085e1e9a8b92089166ac2770ab1536fbClaim291039772022-01-26 13:26:57305 days 5 hrs ago0xe68ec4d104ac6045ab0409e14282df386877032b IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.025734245161
0x41bfe9f2c3fb1444e3770953e42aa252d1ca51c9353e8956e458bae5090bb98bClaim290012962022-01-25 11:39:43306 days 7 hrs ago0x6a018ad51de844243ce7fb743c3e5f4481df6858 IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.0947752
0x6e9eb4b102fdaa0c7b925be37f950cece292bf3f2d06495aab1801cb275f72caClaim289472712022-01-24 21:57:25306 days 21 hrs ago0x655733d8d74bf4282f204c7b97dae768736ff8db IN  0xb4bbf4369e36c924d6d018e10873f83eb447756b0 FTM0.04112786758
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x0137b45db9cad44829d8f4069359065e60a4be4041fbab9ddef401e45b9cc66b236147802021-11-30 22:30:05361 days 20 hrs ago Creditum: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerkleDistributor

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : Merkle.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./ERC20/IERC20.sol";
import "./utils/Ownable.sol";
import "./utils/MerkleProof.sol";
import "./interfaces/IMerkleDistributor.sol";

contract MerkleDistributor is IMerkleDistributor, Ownable {
    address public immutable override token;
    bytes32 public immutable override merkleRoot;

    uint256 public endTimestamp;

    // This is a packed array of booleans.
    mapping(uint256 => uint256) private claimedBitMap;

    constructor(address token_, bytes32 merkleRoot_) {
        token = token_;
        merkleRoot = merkleRoot_;
        endTimestamp = block.timestamp + 182.5 days;
    }

    function isClaimed(uint256 index) public view override returns (bool) {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        uint256 claimedWord = claimedBitMap[claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWord & mask == mask;
    }

    function _setClaimed(uint256 index) private {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex);
    }

    function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external override {
        require(block.timestamp <= endTimestamp, "MerkleDistributor: Passed claim window");
        require(!isClaimed(index), "MerkleDistributor: Drop already claimed.");

        // Verify the merkle proof.
        bytes32 node = keccak256(abi.encodePacked(index, account, amount));
        require(MerkleProof.verify(merkleProof, merkleRoot, node), "MerkleDistributor: Invalid proof.");

        // Mark it claimed and send the token.
        _setClaimed(index);
        require(IERC20(token).transfer(account, amount), "MerkleDistributor: Transfer failed.");

        emit Claimed(index, account, amount);
    }

    function collect(address token_) external onlyOwner {
        if (token_ == token) {
            require(block.timestamp > endTimestamp, "not passed claim window");
        }
        uint256 amount = IERC20(token_).balanceOf(address(this));
        IERC20(token_).transfer(owner(), amount);
    }
}

File 2 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 6 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}

File 5 of 6 : IMerkleDistributor.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Allows anyone to claim a token if they exist in a merkle root.
interface IMerkleDistributor {
    // Returns the address of the token distributed by this contract.
    function token() external view returns (address);
    // Returns the merkle root of the merkle tree containing account balances available to claim.
    function merkleRoot() external view returns (bytes32);
    // Returns true if the index has been marked claimed.
    function isClaimed(uint256 index) external view returns (bool);
    // Claim the given amount of the token to the given address. Reverts if the inputs are invalid.
    function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external;

    // This event is triggered whenever a call to #claim succeeds.
    event Claimed(uint256 index, address account, uint256 amount);
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"collect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b50604051610d8e380380610d8e83398101604081905261002f916100b2565b61003833610062565b6001600160a01b03821660805260a08190526100574262f099c06100ec565b600155506101129050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100c557600080fd5b82516001600160a01b03811681146100dc57600080fd5b6020939093015192949293505050565b6000821982111561010d57634e487b7160e01b600052601160045260246000fd5b500190565b60805160a051610c4361014b6000396000818160d5015261054301526000818161017b015281816101fe01526106280152610c436000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063a85adeab1161005b578063a85adeab1461015a578063f2fde38b14610163578063fc0c546a1461017657600080fd5b80638da5cb5b146101125780639e34070f1461013757600080fd5b806306ec16f8146100a85780632e7ba6ef146100bd5780632eb4a7ab146100d0578063715018a61461010a575b600080fd5b6100bb6100b6366004610a65565b61019d565b005b6100bb6100cb366004610a87565b6103bc565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100bb610758565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610101565b61014a610145366004610b1e565b6107be565b6040519015158152602001610101565b6100f760015481565b6100bb610171366004610a65565b6107ff565b61011f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146101fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614156102875760015442116102875760405162461bcd60e51b815260206004820152601760248201527f6e6f742070617373656420636c61696d2077696e646f7700000000000000000060448201526064016101f3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190610b37565b9050816001600160a01b031663a9059cbb61032e6000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190610b50565b505050565b6001544211156104345760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c654469737472696275746f723a2050617373656420636c61696d2060448201527f77696e646f77000000000000000000000000000000000000000000000000000060648201526084016101f3565b61043d856107be565b156104b05760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201527f636c61696d65642e00000000000000000000000000000000000000000000000060648201526084016101f3565b60408051602081018790527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b16918101919091526054810184905260009060740160405160208183030381529060405280519060200120905061056e8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506108e19050565b6105e05760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f6660448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016101f3565b6105e9866108f7565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190610b50565b6107075760405162461bcd60e51b815260206004820152602360248201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c60448201527f65642e000000000000000000000000000000000000000000000000000000000060648201526084016101f3565b604080518781526001600160a01b03871660208201529081018590527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060600160405180910390a1505050505050565b6000546001600160a01b031633146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f3565b6107bc6000610935565b565b6000806107cd61010084610b88565b905060006107dd61010085610b9c565b60009283526002602052604090922054600190921b9182169091149392505050565b6000546001600160a01b031633146108595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101f3565b6001600160a01b0381166108d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101f3565b6108de81610935565b50565b6000826108ee858461099d565b14949350505050565b600061090561010083610b88565b9050600061091561010084610b9c565b6000928352600260205260409092208054600190931b9092179091555050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081815b8451811015610a415760008582815181106109bf576109bf610bb0565b60200260200101519050808311610a01576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a2e565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610a3981610bc6565b9150506109a2565b509392505050565b80356001600160a01b0381168114610a6057600080fd5b919050565b600060208284031215610a7757600080fd5b610a8082610a49565b9392505050565b600080600080600060808688031215610a9f57600080fd5b85359450610aaf60208701610a49565b935060408601359250606086013567ffffffffffffffff80821115610ad357600080fd5b818801915088601f830112610ae757600080fd5b813581811115610af657600080fd5b8960208260051b8501011115610b0b57600080fd5b9699959850939650602001949392505050565b600060208284031215610b3057600080fd5b5035919050565b600060208284031215610b4957600080fd5b5051919050565b600060208284031215610b6257600080fd5b81518015158114610a8057600080fd5b634e487b7160e01b600052601260045260246000fd5b600082610b9757610b97610b72565b500490565b600082610bab57610bab610b72565b500690565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610c0657634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122041f968e19db90ef6a2d71804ff467aca37c11151cf486707d995869e32a0df8d64736f6c634300080a00330000000000000000000000003a276b8bfb9dec7e19e43157fc9142b95238ab6f346b31f1e0b6b0f4cc705e84e295eaa91fb71fd3e7d5296d3aa2c5da85c8b294

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000003a276b8bfb9dec7e19e43157fc9142b95238ab6f346b31f1e0b6b0f4cc705e84e295eaa91fb71fd3e7d5296d3aa2c5da85c8b294

-----Decoded View---------------
Arg [0] : token_ (address): 0x3a276b8bfb9dec7e19e43157fc9142b95238ab6f
Arg [1] : merkleRoot_ (bytes32): 0x346b31f1e0b6b0f4cc705e84e295eaa91fb71fd3e7d5296d3aa2c5da85c8b294

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003a276b8bfb9dec7e19e43157fc9142b95238ab6f
Arg [1] : 346b31f1e0b6b0f4cc705e84e295eaa91fb71fd3e7d5296d3aa2c5da85c8b294


Block Transaction Gas Used Reward
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
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.