Contract 0xc5e6689c9c8b02be7c49912ef19e79cf24977f03 3

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x054fa0a59ecc882788597aca39ca1a1b9e1c357c47a2a38583d3c346931d257fApprove112943912021-09-28 1:10:124 hrs 8 mins ago0x170a4421a8eb8ecc533e76ac097805f456a668c7 IN  Alpaca: ALPA Token0 BNB0.000101577
0x7d7db3db2ee21a44936a1a9d0ba1d359e9ba85e4474c031c8f71e4d8cdaed1feApprove112943902021-09-28 1:10:094 hrs 8 mins ago0x170a4421a8eb8ecc533e76ac097805f456a668c7 IN  Alpaca: ALPA Token0 BNB0.000101577
0xb6c129c7541c2f16eec90e16f0d7f61cf2e0f6601ae0037929b0f1f31931ae11Transfer112943302021-09-28 1:07:084 hrs 11 mins ago0x2d56bbf8c5f17c3726b0933746f05fe6b8610a6c IN  Alpaca: ALPA Token0 BNB0.00021693
0x3e47a2a199f3eec1c0f41ec959cc7ddc1acc67b408994fdb48c792a6486a47b8Approve112916682021-09-27 22:52:556 hrs 25 mins ago0xcdb56e1185ecbb767a93079689357c952a4fe198 IN  Alpaca: ALPA Token0 BNB0.00022065
0xdb915055f9d22f132b4d88cc8e343b5488da85d14a4d9fa116e6bbd49f244c7eApprove112912482021-09-27 22:31:336 hrs 46 mins ago0x756656cf84a772dcc257b3ed8cc54422c2c362e1 IN  Alpaca: ALPA Token0 BNB0.00022065
0x88c1085f14f06af65a7991ed46faf1f571702a308fbff3c73f70a22a2f8ed245Approve112886542021-09-27 20:20:408 hrs 57 mins ago0x67db2e074fef43353f97dd6e3e3208b2a212c549 IN  Alpaca: ALPA Token0 BNB0.00022203
0x7e98f1c17dd2e4f31151a71bd7e9af9e8d2878580e2fe79e39731832ba5457cbApprove112861522021-09-27 18:14:1011 hrs 4 mins ago0x63d17b802bc57446586d28871d80968a637d6f96 IN  Alpaca: ALPA Token0 BNB0.00022065
0x029ce17601e8e98b1eb7c181345a425012401d2fcfc82b06978afb83302e1f12Approve112857162021-09-27 17:52:1711 hrs 25 mins ago0xc08fbf5c97583bc3fb1b4f2f914685935c5ee497 IN  Alpaca: ALPA Token0 BNB0.00022203
0xee0834cba64ed055953e67bf12eca13e90ed813d5f39c4f2414512797190a475Approve112854222021-09-27 17:37:3111 hrs 40 mins ago0xb6094fccbde21042ee400bc480fcf6919b671104 IN  Alpaca: ALPA Token0 BNB0.00022203
0xbfbeba5f38c20a52387222c18a069875d9d0c023277fc68264e3fc269a4bbe78Approve112842502021-09-27 16:38:4212 hrs 39 mins ago0x37f9b10f110142d8b4e7cb5e6c79ce3538ff2257 IN  Alpaca: ALPA Token0 BNB0.00022065
0xcf54f8c1dcaebcace65c39eccee6b40b132e7140850e63dcbd9138c5c6e1398eApprove112832902021-09-27 15:50:4113 hrs 27 mins ago0x806321da30c90361a77639b6e8788fabe7670a4e IN  Alpaca: ALPA Token0 BNB0.00022203
0x9c0541aade58c95acd67deb7a2ee36495c789b42ad1ef15a223914c15be23bb6Approve112811082021-09-27 14:01:3315 hrs 16 mins ago0x7ef81c60be58f84079fe15b6edbc43f0f8e68c7a IN  Alpaca: ALPA Token0 BNB0.000264708
0x2d64b2ff9331d439727aaddc151335ea3e25e1cef098961e8a925346cf24cf99Increase Allowan...112809392021-09-27 13:53:0615 hrs 25 mins ago0xb1c0813d37214886b63bb52b3e5e9c53a372f2c6 IN  Alpaca: ALPA Token0 BNB0.00022606
0x20c804172a87f09c11a9e99395fc4d5cb54de65c2e3f307456bb26e22e140125Approve112806832021-09-27 13:40:1815 hrs 37 mins ago0xc31ab2580c515056e3e1879bdd9a16b64180283d IN  Alpaca: ALPA Token0 BNB0.000264708
0xb40bf4da81f51e1af5357ab90ed6458fc4a3eadb48e4f9e063e781716074524eApprove112763992021-09-27 10:03:4519 hrs 14 mins ago0x04b415c327ac69dc8913267518d91a91196073e0 IN  Alpaca: ALPA Token0 BNB0.00022203
0xe9d90c8cff40343a848cd75991da78d139e1f089dfe0861e63f9c136c5b5eaf1Approve112729412021-09-27 7:08:2422 hrs 9 mins ago0x165a8d66bb78162b3f293e75aef876c81bdb0f39 IN  Alpaca: ALPA Token0 BNB0.000266436
0x7b3e38e44aa9ae6016d66364659d9bc621d03f9bc835bd6efdc2026ad22f165fApprove112703202021-09-27 4:56:001 day 22 mins ago0x3bb7b5bdc6b5fc03168715721aec4e27d591d3de IN  Alpaca: ALPA Token0 BNB0.00066609
0xbf4242c9dab4bf112bd9cd44ff8832db38de66073d1fead249ff2052dfc97244Approve112668522021-09-27 1:58:111 day 3 hrs ago0xf367b908a0cb0f852210acb2944180aadfcb43e4 IN  Alpaca: ALPA Token0 BNB0.00012603
0x43efa243fc09044c02512127d66febaaf1f0d01443ff407ba9a469ab74076414Approve112668522021-09-27 1:58:111 day 3 hrs ago0xf367b908a0cb0f852210acb2944180aadfcb43e4 IN  Alpaca: ALPA Token0 BNB0.00022203
0xc482a3c8a7c00b102c078fd34c87d073377cfb6c88adb339bb4df591acddd793Transfer112666962021-09-27 1:50:231 day 3 hrs ago0x475f31ccc270f480b29d271dbaca4461b8706fcc IN  Alpaca: ALPA Token0 BNB0.000106015
0xbf9c29e84372de2923d4e61551f45dea5895348cc63b7acd1be378749cd3b373Approve112662142021-09-27 1:26:171 day 3 hrs ago0xeb7fda3b293e04fe5b24ceb606ac3de4882facef IN  Alpaca: ALPA Token0 BNB0.00022203
0x338a02f519281bb2bb3e856720e8c485bee6b4f61f03e287209227fe5a9ae04cApprove112574212021-09-26 18:02:511 day 11 hrs ago0xad71d10ebc38e8e8d3930cb1e1ac0290a4173177 IN  Alpaca: ALPA Token0 BNB0.000266436
0x965506bc03b0c0f1cfec04ab0c05eca9329b0cdaa09c0722f7da93d5f4df67e7Approve112556692021-09-26 16:34:501 day 12 hrs ago0x421a8a0c6388faa1550e2636538d8d7605a8cede IN  Alpaca: ALPA Token0 BNB0.00022203
0x03d29fb11c4dd7618c203cfb83a099e56e29343d5e8dcd4a172b64380be1a085Transfer112531292021-09-26 14:26:181 day 14 hrs ago0x4383b6714d2b8b75710a0cfe484bb89695ff1f02 IN  Alpaca: ALPA Token0 BNB0.000434292
0x0cfbbc3000f4b38c31829b22c2a6b42c8f7b081e7041f9a11ec738d586304031Transfer112492792021-09-26 11:12:351 day 18 hrs ago0x2d56bbf8c5f17c3726b0933746f05fe6b8610a6c IN  Alpaca: ALPA Token0 BNB0.00021693
[ Download CSV Export 

OVERVIEW

Alpaca City is a virtual world built on Ethereum blockchain and Binance Smart Chain where users can manage their on-chain assets through collecting and breeding adorable Alpacas.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x79136db3b05cd4ef2a22e66d9829d722e7ea68c5deec196ed0b135fc342b340d54713322021-03-07 11:59:33204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0x79136db3b05cd4ef2a22e66d9829d722e7ea68c5deec196ed0b135fc342b340d54713322021-03-07 11:59:33204 days 17 hrs ago 0x060dd632f7dd45cb97a86376863d623d6756e848 Alpaca: ALPA Token0 BNB
0x79136db3b05cd4ef2a22e66d9829d722e7ea68c5deec196ed0b135fc342b340d54713322021-03-07 11:59:33204 days 17 hrs ago 0x060dd632f7dd45cb97a86376863d623d6756e848 Alpaca: ALPA Token0 BNB
0x53f01182e05009241f0bd54518fd3a8a9b02451d8fde79a77662282f0a2f206f54713132021-03-07 11:58:36204 days 17 hrs ago 0xd5c27211418d83a6695ae0750bc4bc70e27d9a36 Alpaca: ALPA Token0 BNB
0x53f01182e05009241f0bd54518fd3a8a9b02451d8fde79a77662282f0a2f206f54713132021-03-07 11:58:36204 days 17 hrs ago 0xd5c27211418d83a6695ae0750bc4bc70e27d9a36 Alpaca: ALPA Token0 BNB
0x53f01182e05009241f0bd54518fd3a8a9b02451d8fde79a77662282f0a2f206f54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0x53f01182e05009241f0bd54518fd3a8a9b02451d8fde79a77662282f0a2f206f54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0x53f01182e05009241f0bd54518fd3a8a9b02451d8fde79a77662282f0a2f206f54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xef5d8b7d88c12e570124f75d4f7a271294f007fdad6fc9b5f2a3d0bdad00c57c54713132021-03-07 11:58:36204 days 17 hrs ago 0x03625c4156a010065d135a18123a9e25ff5aed12 Alpaca: ALPA Token0 BNB
0xef5d8b7d88c12e570124f75d4f7a271294f007fdad6fc9b5f2a3d0bdad00c57c54713132021-03-07 11:58:36204 days 17 hrs ago 0x03625c4156a010065d135a18123a9e25ff5aed12 Alpaca: ALPA Token0 BNB
0xef5d8b7d88c12e570124f75d4f7a271294f007fdad6fc9b5f2a3d0bdad00c57c54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xef5d8b7d88c12e570124f75d4f7a271294f007fdad6fc9b5f2a3d0bdad00c57c54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xef5d8b7d88c12e570124f75d4f7a271294f007fdad6fc9b5f2a3d0bdad00c57c54713132021-03-07 11:58:36204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0x23e4c18fc15552717b1fa3eba41469bc65dd1d59df47ffa08e5298ac6022699f54713092021-03-07 11:58:24204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0x23e4c18fc15552717b1fa3eba41469bc65dd1d59df47ffa08e5298ac6022699f54713092021-03-07 11:58:24204 days 17 hrs ago 0x060dd632f7dd45cb97a86376863d623d6756e848 Alpaca: ALPA Token0 BNB
0x23e4c18fc15552717b1fa3eba41469bc65dd1d59df47ffa08e5298ac6022699f54713092021-03-07 11:58:24204 days 17 hrs ago 0x060dd632f7dd45cb97a86376863d623d6756e848 Alpaca: ALPA Token0 BNB
0xac88cb90287e6676ec4970f316e1525f020923cb49066fe60c33cd38be033c3754713042021-03-07 11:58:09204 days 17 hrs ago 0x03625c4156a010065d135a18123a9e25ff5aed12 Alpaca: ALPA Token0 BNB
0xac88cb90287e6676ec4970f316e1525f020923cb49066fe60c33cd38be033c3754713042021-03-07 11:58:09204 days 17 hrs ago 0x03625c4156a010065d135a18123a9e25ff5aed12 Alpaca: ALPA Token0 BNB
0xac88cb90287e6676ec4970f316e1525f020923cb49066fe60c33cd38be033c3754713042021-03-07 11:58:09204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xac88cb90287e6676ec4970f316e1525f020923cb49066fe60c33cd38be033c3754713042021-03-07 11:58:09204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xac88cb90287e6676ec4970f316e1525f020923cb49066fe60c33cd38be033c3754713042021-03-07 11:58:09204 days 17 hrs ago 0x0ae96a3369c66866d5de712a9187dc7f5de85156 Alpaca: ALPA Token0 BNB
0xf538de5730eb942a0b7750052a3d204b8890936a0b5cb92e26496ba2f38afbd454713032021-03-07 11:58:06204 days 17 hrs ago PancakeSwap: ALPA Alpaca: ALPA Token0 BNB
0xf538de5730eb942a0b7750052a3d204b8890936a0b5cb92e26496ba2f38afbd454713032021-03-07 11:58:06204 days 17 hrs ago PancakeSwap: Router Alpaca: ALPA Token0 BNB
0x348f9bb02d6b3518c78f032ca5762e51b7bd69272d4e24978b82aeb99661aace54713012021-03-07 11:58:00204 days 17 hrs ago 0xd5c27211418d83a6695ae0750bc4bc70e27d9a36 Alpaca: ALPA Token0 BNB
0x348f9bb02d6b3518c78f032ca5762e51b7bd69272d4e24978b82aeb99661aace54713012021-03-07 11:58:00204 days 17 hrs ago 0xd5c27211418d83a6695ae0750bc4bc70e27d9a36 Alpaca: ALPA Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xffb4db6ec3f0c30cbd34cc7165711de2e1a0a6dc

Contract Name:
AlpaToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-12-01
*/

// Dependency file: @openzeppelin/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

// pragma solidity ^0.6.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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol


// pragma solidity ^0.6.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);
}


// Dependency file: @openzeppelin/contracts/math/SafeMath.sol


// pragma solidity ^0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// Dependency file: @openzeppelin/contracts/utils/Address.sol


// pragma solidity ^0.6.2;

/**
 * @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 in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// Dependency file: @openzeppelin/contracts/token/ERC20/ERC20.sol


// pragma solidity ^0.6.0;

// import "@openzeppelin/contracts/GSN/Context.sol";
// import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
// import "@openzeppelin/contracts/math/SafeMath.sol";
// import "@openzeppelin/contracts/utils/Address.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}


// Dependency file: @openzeppelin/contracts/access/Ownable.sol


// pragma solidity ^0.6.0;

// import "@openzeppelin/contracts/GSN/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.
 */
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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// Dependency file: contracts/interfaces/IAlpaToken.sol


// pragma solidity 0.6.12;

// import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IAlpaToken is IERC20 {
    function mint(address _to, uint256 _amount) external;

    function burn(address _account, uint256 _amount) external;
}


// Root file: contracts/AlpaToken/AlpaToken.sol


pragma solidity 0.6.12;

// import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
// import "@openzeppelin/contracts/access/Ownable.sol";
// import "contracts/interfaces/IAlpaToken.sol";

contract AlpaToken is ERC20("AlpaToken", "ALPA"), IAlpaToken, Ownable {
    /* ========== EXTERNAL MUTATIVE FUNCTIONS ========== */

    /**
     * @dev allow owner to mint
     * @param _to mint token to address
     * @param _amount amount of ALPA to mint
     */
    function mint(address _to, uint256 _amount) external override onlyOwner {
        _mint(_to, _amount);
    }

    /**
     * @dev allow owner to burn ALPA token from an account
     * @param _account burn token from address
     * @param _amount amount of ALPA to burn
     */
    function burn(address _account, uint256 _amount)
        external
        override
        onlyOwner
    {
        _burn(_account, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252600981526820b63830aa37b5b2b760b91b602080830191825283518085019094526004845263414c504160e01b9084015281519192916200005f91600391620000f1565b50805162000075906004906020840190620000f1565b50506005805460ff1916601217905550600062000091620000ed565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200018d565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013457805160ff191683800117855562000164565b8280016001018555821562000164579182015b828111156200016457825182559160200191906001019062000147565b506200017292915062000176565b5090565b5b8082111562000172576000815560010162000177565b611048806200019d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d714610310578063a9059cbb1461033c578063dd62ed3e14610368578063f2fde38b1461039657610100565b8063715018a6146102b05780638da5cb5b146102b857806395d89b41146102dc5780639dc29fac146102e457610100565b8063313ce567116100d3578063313ce56714610212578063395093511461023057806340c10f191461025c57806370a082311461028a57610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d6103bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b038135169060200135610452565b604080519115158252519081900360200190f35b6101ca61046f565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b03813581169160208101359091169060400135610475565b61021a6104fc565b6040805160ff9092168252519081900360200190f35b6101ae6004803603604081101561024657600080fd5b506001600160a01b038135169060200135610505565b6102886004803603604081101561027257600080fd5b506001600160a01b038135169060200135610553565b005b6101ca600480360360208110156102a057600080fd5b50356001600160a01b03166105be565b6102886105d9565b6102c0610686565b604080516001600160a01b039092168252519081900360200190f35b61010d61069a565b610288600480360360408110156102fa57600080fd5b506001600160a01b0381351690602001356106fb565b6101ae6004803603604081101561032657600080fd5b506001600160a01b038135169060200135610762565b6101ae6004803603604081101561035257600080fd5b506001600160a01b0381351690602001356107ca565b6101ca6004803603604081101561037e57600080fd5b506001600160a01b03813581169160200135166107de565b610288600480360360208110156103ac57600080fd5b50356001600160a01b0316610809565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050905090565b600061046661045f610912565b8484610916565b50600192915050565b60025490565b6000610482848484610a02565b6104f28461048e610912565b6104ed85604051806060016040528060288152602001610f3c602891396001600160a01b038a166000908152600160205260408120906104cc610912565b6001600160a01b031681526020810191909152604001600020549190610b5d565b610916565b5060019392505050565b60055460ff1690565b6000610466610512610912565b846104ed8560016000610523610912565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610bf4565b61055b610912565b60055461010090046001600160a01b039081169116146105b0576040805162461bcd60e51b81526020600482018190526024820152600080516020610f64833981519152604482015290519081900360640190fd5b6105ba8282610c55565b5050565b6001600160a01b031660009081526020819052604090205490565b6105e1610912565b60055461010090046001600160a01b03908116911614610636576040805162461bcd60e51b81526020600482018190526024820152600080516020610f64833981519152604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60055461010090046001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104485780601f1061041d57610100808354040283529160200191610448565b610703610912565b60055461010090046001600160a01b03908116911614610758576040805162461bcd60e51b81526020600482018190526024820152600080516020610f64833981519152604482015290519081900360640190fd5b6105ba8282610d45565b600061046661076f610912565b846104ed85604051806060016040528060258152602001610fee6025913960016000610799610912565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610b5d565b60006104666107d7610912565b8484610a02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610811610912565b60055461010090046001600160a01b03908116911614610866576040805162461bcd60e51b81526020600482018190526024820152600080516020610f64833981519152604482015290519081900360640190fd5b6001600160a01b0381166108ab5760405162461bcd60e51b8152600401808060200182810382526026815260200180610ece6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3390565b6001600160a01b03831661095b5760405162461bcd60e51b8152600401808060200182810382526024815260200180610fca6024913960400191505060405180910390fd5b6001600160a01b0382166109a05760405162461bcd60e51b8152600401808060200182810382526022815260200180610ef46022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610a475760405162461bcd60e51b8152600401808060200182810382526025815260200180610fa56025913960400191505060405180910390fd5b6001600160a01b038216610a8c5760405162461bcd60e51b8152600401808060200182810382526023815260200180610e896023913960400191505060405180910390fd5b610a97838383610e41565b610ad481604051806060016040528060268152602001610f16602691396001600160a01b0386166000908152602081905260409020549190610b5d565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610b039082610bf4565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610bec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bb1578181015183820152602001610b99565b50505050905090810190601f168015610bde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610c4e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610cb0576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610cbc60008383610e41565b600254610cc99082610bf4565b6002556001600160a01b038216600090815260208190526040902054610cef9082610bf4565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610d8a5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f846021913960400191505060405180910390fd5b610d9682600083610e41565b610dd381604051806060016040528060228152602001610eac602291396001600160a01b0385166000908152602081905260409020549190610b5d565b6001600160a01b038316600090815260208190526040902055600254610df99082610e46565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b505050565b6000610c4e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b5d56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122086fb09385167f5ee8ea82cfb7c20c93250c432e59a592c5847ec28c084e1dbc564736f6c634300060c0033

Deployed ByteCode Sourcemap

29480:723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17736:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19842:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19842:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18811:100;;;:::i;:::-;;;;;;;;;;;;;;;;20485:321;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20485:321:0;;;;;;;;;;;;;;;;;:::i;18663:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21215:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21215:218:0;;;;;;;;:::i;29758:110::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29758:110:0;;;;;;;;:::i;:::-;;18974:119;;;;;;;;;;;;;;;;-1:-1:-1;18974:119:0;-1:-1:-1;;;;;18974:119:0;;:::i;28355:148::-;;;:::i;27713:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;27713:79:0;;;;;;;;;;;;;;17938:87;;;:::i;30048:152::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30048:152:0;;;;;;;;:::i;21936:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21936:269:0;;;;;;;;:::i;19306:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19306:175:0;;;;;;;;:::i;19544:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19544:151:0;;;;;;;;;;:::i;28658:244::-;;;;;;;;;;;;;;;;-1:-1:-1;28658:244:0;-1:-1:-1;;;;;28658:244:0;;:::i;17736:83::-;17806:5;17799:12;;;;;;;;-1:-1:-1;;17799:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17773:13;;17799:12;;17806:5;;17799:12;;17806:5;17799:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17736:83;:::o;19842:169::-;19925:4;19942:39;19951:12;:10;:12::i;:::-;19965:7;19974:6;19942:8;:39::i;:::-;-1:-1:-1;19999:4:0;19842:169;;;;:::o;18811:100::-;18891:12;;18811:100;:::o;20485:321::-;20591:4;20608:36;20618:6;20626:9;20637:6;20608:9;:36::i;:::-;20655:121;20664:6;20672:12;:10;:12::i;:::-;20686:89;20724:6;20686:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20686:19:0;;;;;;:11;:19;;;;;;20706:12;:10;:12::i;:::-;-1:-1:-1;;;;;20686:33:0;;;;;;;;;;;;-1:-1:-1;20686:33:0;;;:89;:37;:89::i;:::-;20655:8;:121::i;:::-;-1:-1:-1;20794:4:0;20485:321;;;;;:::o;18663:83::-;18729:9;;;;18663:83;:::o;21215:218::-;21303:4;21320:83;21329:12;:10;:12::i;:::-;21343:7;21352:50;21391:10;21352:11;:25;21364:12;:10;:12::i;:::-;-1:-1:-1;;;;;21352:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;21352:25:0;;;:34;;;;;;;;;;;:38;:50::i;29758:110::-;27935:12;:10;:12::i;:::-;27925:6;;;;;-1:-1:-1;;;;;27925:6:0;;;:22;;;27917:67;;;;;-1:-1:-1;;;27917:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27917:67:0;;;;;;;;;;;;;;;29841:19:::1;29847:3;29852:7;29841:5;:19::i;:::-;29758:110:::0;;:::o;18974:119::-;-1:-1:-1;;;;;19067:18:0;19040:7;19067:18;;;;;;;;;;;;18974:119::o;28355:148::-;27935:12;:10;:12::i;:::-;27925:6;;;;;-1:-1:-1;;;;;27925:6:0;;;:22;;;27917:67;;;;;-1:-1:-1;;;27917:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27917:67:0;;;;;;;;;;;;;;;28446:6:::1;::::0;28425:40:::1;::::0;28462:1:::1;::::0;28446:6:::1;::::0;::::1;-1:-1:-1::0;;;;;28446:6:0::1;::::0;28425:40:::1;::::0;28462:1;;28425:40:::1;28476:6;:19:::0;;-1:-1:-1;;;;;;28476:19:0::1;::::0;;28355:148::o;27713:79::-;27778:6;;;;;-1:-1:-1;;;;;27778:6:0;;27713:79::o;17938:87::-;18010:7;18003:14;;;;;;;;-1:-1:-1;;18003:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17977:13;;18003:14;;18010:7;;18003:14;;18010:7;18003:14;;;;;;;;;;;;;;;;;;;;;;;;30048:152;27935:12;:10;:12::i;:::-;27925:6;;;;;-1:-1:-1;;;;;27925:6:0;;;:22;;;27917:67;;;;;-1:-1:-1;;;27917:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27917:67:0;;;;;;;;;;;;;;;30168:24:::1;30174:8;30184:7;30168:5;:24::i;21936:269::-:0;22029:4;22046:129;22055:12;:10;:12::i;:::-;22069:7;22078:96;22117:15;22078:96;;;;;;;;;;;;;;;;;:11;:25;22090:12;:10;:12::i;:::-;-1:-1:-1;;;;;22078:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;22078:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;19306:175::-;19392:4;19409:42;19419:12;:10;:12::i;:::-;19433:9;19444:6;19409:9;:42::i;19544:151::-;-1:-1:-1;;;;;19660:18:0;;;19633:7;19660:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19544:151::o;28658:244::-;27935:12;:10;:12::i;:::-;27925:6;;;;;-1:-1:-1;;;;;27925:6:0;;;:22;;;27917:67;;;;;-1:-1:-1;;;27917:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27917:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28747:22:0;::::1;28739:73;;;;-1:-1:-1::0;;;28739:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28849:6;::::0;28828:38:::1;::::0;-1:-1:-1;;;;;28828:38:0;;::::1;::::0;28849:6:::1;::::0;::::1;;::::0;28828:38:::1;::::0;;;::::1;28877:6;:17:::0;;-1:-1:-1;;;;;28877:17:0;;::::1;;;-1:-1:-1::0;;;;;;28877:17:0;;::::1;::::0;;;::::1;::::0;;28658:244::o;671:106::-;759:10;671:106;:::o;25081:346::-;-1:-1:-1;;;;;25183:19:0;;25175:68;;;;-1:-1:-1;;;25175:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25262:21:0;;25254:68;;;;-1:-1:-1;;;25254:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25335:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25387:32;;;;;;;;;;;;;;;;;25081:346;;;:::o;22695:539::-;-1:-1:-1;;;;;22801:20:0;;22793:70;;;;-1:-1:-1;;;22793:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22882:23:0;;22874:71;;;;-1:-1:-1;;;22874:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22958:47;22979:6;22987:9;22998:6;22958:20;:47::i;:::-;23038:71;23060:6;23038:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23038:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;23018:17:0;;;:9;:17;;;;;;;;;;;:91;;;;23143:20;;;;;;;:32;;23168:6;23143:24;:32::i;:::-;-1:-1:-1;;;;;23120:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;23191:35;;;;;;;23120:20;;23191:35;;;;;;;;;;;;;22695:539;;;:::o;5687:192::-;5773:7;5809:12;5801:6;;;;5793:29;;;;-1:-1:-1;;;5793:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5845:5:0;;;5687:192::o;4784:181::-;4842:7;4874:5;;;4898:6;;;;4890:46;;;;;-1:-1:-1;;;4890:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4956:1;4784:181;-1:-1:-1;;;4784:181:0:o;23515:378::-;-1:-1:-1;;;;;23599:21:0;;23591:65;;;;;-1:-1:-1;;;23591:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23669:49;23698:1;23702:7;23711:6;23669:20;:49::i;:::-;23746:12;;:24;;23763:6;23746:16;:24::i;:::-;23731:12;:39;-1:-1:-1;;;;;23802:18:0;;:9;:18;;;;;;;;;;;:30;;23825:6;23802:22;:30::i;:::-;-1:-1:-1;;;;;23781:18:0;;:9;:18;;;;;;;;;;;:51;;;;23848:37;;;;;;;23781:18;;:9;;23848:37;;;;;;;;;;23515:378;;:::o;24225:418::-;-1:-1:-1;;;;;24309:21:0;;24301:67;;;;-1:-1:-1;;;24301:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24381:49;24402:7;24419:1;24423:6;24381:20;:49::i;:::-;24464:68;24487:6;24464:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24464:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;24443:18:0;;:9;:18;;;;;;;;;;:89;24558:12;;:24;;24575:6;24558:16;:24::i;:::-;24543:12;:39;24598:37;;;;;;;;24624:1;;-1:-1:-1;;;;;24598:37:0;;;;;;;;;;;;24225:418;;:::o;26452:92::-;;;;:::o;5248:136::-;5306:7;5333:43;5337:1;5340;5333:43;;;;;;;;;;;;;;;;;:3;:43::i

Swarm Source

ipfs://86fb09385167f5ee8ea82cfb7c20c93250c432e59a592c5847ec28c084e1dbc5
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.