Contract 0x8bd778b12b15416359a227f0533ce2d91844e1ed 2

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0a40ed42fe385b0d3789296282a06d3452fdff352fa2759b4743b795638b8f06Approve111310172021-09-22 8:05:302 mins ago0x4b50c935e01e2d7e855694403cc80365c204ebac IN  SakeSwap: SAKE Token0 BNB0.000236335
0x0acb7ec502bb05a25e74de3d3c8b087177ee7c62bff39dba0b73dff0e579456cApprove111301592021-09-22 7:22:2245 mins ago0x2a9e2959bba5768c038930ceb5deb15820aadc37 IN  SakeSwap: SAKE Token0 BNB0.000283602
0xb76a8449a2f43318a79b9e56a914afc9504e24bd9185e1b94386997bacc5e92fApprove111224192021-09-22 0:52:077 hrs 16 mins ago0xd472eae7fba12bb96953fa1c02f0055eb66f17c0 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xbc30dbc783342e396318bcad3096600ecf7c64e098b74202f176aa23a7005733Transfer111220462021-09-22 0:33:277 hrs 34 mins ago0x0d633eecc4282ebfe757f3b9f4a6372d7d24aede IN  SakeSwap: SAKE Token0 BNB0.000202285
0x22cb4f3ba9296c1ae0e4c67d6304ff1038a49f77e103f1c2414dfe5d18b39c45Approve110837322021-09-20 16:27:161 day 15 hrs ago0x4b05e5b2648b3c4fc879d5cdbb7689b0de5b0dca IN  SakeSwap: SAKE Token0 BNB0.000236335
0xb6b5f41d23390810cd8591814fde9d9a3dd01e0ce113dda7579786b543203393Approve110836272021-09-20 16:22:011 day 15 hrs ago0xf2fcf0e1e6945caec8cd317c3936e356471a67c6 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xaeffac9844054fdc083287163045838ccb406928d8bb364dfe84f8ca4eca8028Approve110828932021-09-20 15:45:171 day 16 hrs ago0x9ee004e81ad182d7f0139198b0ab580f85911363 IN  SakeSwap: SAKE Token0 BNB0.000236335
0x381676e35db9cc35600368bd80dbc5a84008754b34f57b4f6cc104b91ae49510Approve110779292021-09-20 11:34:551 day 20 hrs ago0xab05aeb883ffc05f0e786ecf1df75d85e5c76fc1 IN  SakeSwap: SAKE Token0 BNB0.000236335
0x9427d62d9fe01c554378e0949696d166b0afb5e6de93d33e35bbf99cffa769d3Approve110662332021-09-20 1:49:532 days 6 hrs ago0x60fa732b15adc349351e2b5e29b0f4bf97f7aadf IN  SakeSwap: SAKE Token0 BNB0.000236335
0x57e94cae55bd708d864268e456b4a2163f979a59a9f05d87d658b8a481a94e3cApprove110654012021-09-20 1:08:172 days 6 hrs ago0x3938854a818517b829c6fcf712c74091bcaee632 IN  SakeSwap: SAKE Token0 BNB0.000079325
0x61b7c07dddbcfbe217826a5d89a16a28ccfc44caf9f5484071d7b3069e4cfe81Transfer110535912021-09-19 15:17:412 days 16 hrs ago0x6b2e995d866682870d47aca415b14fb592864222 IN  SakeSwap: SAKE Token0 BNB0.000202285
0x094ef537fb25010a0fa69e9cacf0f2b89df587ddcdf7334242aa1e9a5bd5ed79Transfer110520532021-09-19 14:00:452 days 18 hrs ago0xd4183cd692a332fa793c292326b610b3b1a9f840 IN  SakeSwap: SAKE Token0 BNB0.000202405
0x387adea448dec015a3950296329cb4dbe109b6ee41223e8509acf71953dcd007Approve110358432021-09-19 0:15:373 days 7 hrs ago0xf4e8e656f294fb38406c8affbd909608f22b2692 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xbd8fc1db4d31383792e492ee2563240c7a71a8bd212afffc0af342f567cfd736Approve110300482021-09-18 19:25:523 days 12 hrs ago0xdefdf81cedc7baaf1f71efc614663d9548dc0cf9 IN  SakeSwap: SAKE Token0 BNB0.000330869
0x4d97e00778bebfef8998899ee57f6032913597430b2b714086f47e57153090ddApprove110258712021-09-18 15:56:073 days 16 hrs ago0x7652d5aa8e060d5716e1553d1d10f2b1712b60a6 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xeae9ba55afaab7034bd8b93be001a040b4fa7535e5290763b92e21113a43d09aApprove110237822021-09-18 14:10:103 days 17 hrs ago0xe1f44f2c55b5e9658e118f0a47fbdb505c8a2e37 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xd4229f69318282895b775db7a4d92a8f3ba5efc973862b73114f24c4db4de69aApprove110222772021-09-18 12:54:483 days 19 hrs ago0x0ad3493731dff2f15f35a94986615830cb8850b2 IN  SakeSwap: SAKE Token0 BNB0.000236335
0x7b09abd5525e918eefe7d22bd95e939e11ccd5ee45eece7c5b265f861cd70c33Approve110124912021-09-18 4:43:584 days 3 hrs ago0x66745f9781b87201563acaa7004df82b7de35c4d IN  SakeSwap: SAKE Token0 BNB0.000236335
0x196a3085b559bdcce00af14f224ed5ccaaa2779230c71625d8e7f5a553be55fcApprove110005172021-09-17 18:45:014 days 13 hrs ago0x19450fb4bc1511904e20bd3db147d1cb1daca54b IN  SakeSwap: SAKE Token0 BNB0.000236335
0x96ec5ccf0daa0281ec3f6810d54d4da9701efd4b5c677eac55c92ccf78fdfad8Approve109972502021-09-17 16:01:284 days 16 hrs ago0xebce9ecd01be0a86ce8e451862825ad2ff384788 IN  SakeSwap: SAKE Token0 BNB0.000283602
0x306917a5eb3e715785d4259bafa655b562db6692e7e0357ab0abbeeeb28b37b4Approve109950842021-09-17 14:12:534 days 17 hrs ago0x694e37b98a5fb37af0b059e91f54996d7ed97e75 IN  SakeSwap: SAKE Token0 BNB0.000236335
0xedd86dc98a062c896be29751f75a1b506620df77dda2667177df989f4ed835cbApprove109892912021-09-17 9:22:574 days 22 hrs ago0xc910c7c425bbad5e733eb7a8ad4b9c4848321131 IN  SakeSwap: SAKE Token0 BNB0.000330869
0x7607b2bbf3886f7fd951e944886a209414f4a2646a4763b6486d731a204a828dApprove109832062021-09-17 4:18:095 days 3 hrs ago0x21a0ef779643150975869a521fefdabfe3bad741 IN  SakeSwap: SAKE Token0 BNB0.000283602
0xba2cf70f7a11c046097b23c6773996261cd1d390500f8bbedd49532c9d2d93a6Approve109807342021-09-17 2:14:335 days 5 hrs ago0x044d85f446b86dfa45394f8cb6c1fcf35e982c2c IN  SakeSwap: SAKE Token0 BNB0.000236335
0x0b6dac7e5848b7bd01442d6913400c2515f6935ea939109085520f62d34b78e4Transfer109750312021-09-16 21:29:205 days 10 hrs ago0x81cfc6a919d93c40599882ddd16dfd642375f8bb IN  SakeSwap: SAKE Token0 BNB0.000202405
[ Download CSV Export 

OVERVIEW

SAKE is the governance token in DeFi that supports both spot market and futures market with SakeSwap's AMM, DEX and SakePerp Perpetual Contract.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xc824e773beb6b594d9c128b8aa9cd0b41987ffd1d21684ed0d0e3048aa99350059346952021-03-23 15:02:59182 days 17 hrs ago SakeSwap: Deployer  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenProxy

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at BscScan.com on 2021-03-23
*/

// File: contracts\upgradeability\Proxy.sol

pragma solidity 0.7.5;

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
abstract contract Proxy {
    /**
     * @dev Tells the address of the implementation where every call will be delegated.
     * @return address of the implementation to which it will be delegated
     */
    function implementation() public view virtual returns (address);

    /**
     * @dev Fallback function allowing to perform a delegatecall to the given implementation.
     * This function will return whatever the implementation call returns
     */
    fallback() external payable {
        // solhint-disable-previous-line no-complex-fallback
        address _impl = implementation();
        require(_impl != address(0));
        assembly {
            /*
                0x40 is the "free memory slot", meaning a pointer to next slot of empty memory. mload(0x40)
                loads the data in the free memory slot, so `ptr` is a pointer to the next slot of empty
                memory. It's needed because we're going to write the return data of delegatecall to the
                free memory slot.
            */
            let ptr := mload(0x40)
            /*
                `calldatacopy` is copy calldatasize bytes from calldata
                First argument is the destination to which data is copied(ptr)
                Second argument specifies the start position of the copied data.
                    Since calldata is sort of its own unique location in memory,
                    0 doesn't refer to 0 in memory or 0 in storage - it just refers to the zeroth byte of calldata.
                    That's always going to be the zeroth byte of the function selector.
                Third argument, calldatasize, specifies how much data will be copied.
                    calldata is naturally calldatasize bytes long (same thing as msg.data.length)
            */
            calldatacopy(ptr, 0, calldatasize())
            /*
                delegatecall params explained:
                gas: the amount of gas to provide for the call. `gas` is an Opcode that gives
                    us the amount of gas still available to execution

                _impl: address of the contract to delegate to

                ptr: to pass copied data

                calldatasize: loads the size of `bytes memory data`, same as msg.data.length

                0, 0: These are for the `out` and `outsize` params. Because the output could be dynamic,
                        these are set to 0, 0 so the output data will not be written to memory. The output
                        data will be read using `returndatasize` and `returdatacopy` instead.

                result: This will be 0 if the call fails and 1 if it succeeds
            */
            let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0)
            /*

            */
            /*
                ptr current points to the value stored at 0x40,
                because we assigned it like ptr := mload(0x40).
                Because we use 0x40 as a free memory pointer,
                we want to make sure that the next time we want to allocate memory,
                we aren't overwriting anything important.
                So, by adding ptr and returndatasize,
                we get a memory location beyond the end of the data we will be copying to ptr.
                We place this in at 0x40, and any reads from 0x40 will now read from free memory
            */
            mstore(0x40, add(ptr, returndatasize()))
            /*
                `returndatacopy` is an Opcode that copies the last return data to a slot. `ptr` is the
                    slot it will copy to, 0 means copy from the beginning of the return data, and size is
                    the amount of data to copy.
                `returndatasize` is an Opcode that gives us the size of the last return data. In this case, that is the size of the data returned from delegatecall
            */
            returndatacopy(ptr, 0, returndatasize())

            /*
                if `result` is 0, revert.
                if `result` is 1, return `size` amount of data from `ptr`. This is the data that was
                copied to `ptr` from the delegatecall return data
            */
            switch result
                case 0 {
                    revert(ptr, returndatasize())
                }
                default {
                    return(ptr, returndatasize())
                }
        }
    }
}

// File: contracts\upgradeable_contracts\modules\factory\TokenProxy.sol

pragma solidity 0.7.5;


interface IPermittableTokenVersion {
    function version() external pure returns (string memory);
}

/**
 * @title TokenProxy
 * @dev Helps to reduces the size of the deployed bytecode for automatically created tokens, by using a proxy contract.
 */
contract TokenProxy is Proxy {
    // storage layout is copied from PermittableToken.sol
    string internal name;
    string internal symbol;
    uint8 internal decimals;
    mapping(address => uint256) internal balances;
    uint256 internal totalSupply;
    mapping(address => mapping(address => uint256)) internal allowed;
    address internal owner;
    bool internal mintingFinished;
    address internal bridgeContractAddr;
    // string public constant version = "1";
    // solhint-disable-next-line var-name-mixedcase
    bytes32 internal DOMAIN_SEPARATOR;
    // bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb;
    mapping(address => uint256) internal nonces;
    mapping(address => mapping(address => uint256)) internal expirations;

    /**
     * @dev Creates a non-upgradeable token proxy for PermitableToken.sol, initializes its eternalStorage.
     * @param _tokenImage address of the token image used for mirroring all functions.
     * @param _name token name.
     * @param _symbol token symbol.
     * @param _decimals token decimals.
     * @param _chainId chain id for current network.
     * @param _owner address of the owner for this contract.
     */
    constructor(
        address _tokenImage,
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _chainId,
        address _owner
    ) {
        string memory version = IPermittableTokenVersion(_tokenImage).version();

        assembly {
            // EIP 1967
            // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
            sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, _tokenImage)
        }
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        owner = _owner; // _owner == HomeOmnibridge/ForeignOmnibridge mediator
        bridgeContractAddr = _owner;
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(_name)),
                keccak256(bytes(version)),
                _chainId,
                address(this)
            )
        );
    }

    /**
     * @dev Retrieves the implementation contract address, mirrored token image.
     * @return impl token image address.
     */
    function implementation() public view override returns (address impl) {
        assembly {
            impl := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tokenImage","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060405161057d38038061057d833981810160405260c081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825164010000000081118282018810171561008957600080fd5b82525081516020918201929091019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010657600080fd5b90830190602082018581111561011b57600080fd5b825164010000000081118282018810171561013557600080fd5b82525081516020918201929091019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b50604081815260208301518382015160609485015163054fd4d560e41b8552925191965094509092916001600160a01b038916916354fd4d5091600480820192600092909190829003018186803b1580156101e957600080fd5b505afa1580156101fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561022657600080fd5b810190808051604051939291908464010000000082111561024657600080fd5b90830190602082018581111561025b57600080fd5b825164010000000081118282018810171561027557600080fd5b82525081516020918201929091019080838360005b838110156102a257818101518382015260200161028a565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b506040525050507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc88905586519091506103109060009060208901906103e4565b5084516103249060019060208801906103e4565b506002805460ff90951660ff1990951694909417909355600680546001600160a01b039092166001600160a01b03199283168117909155600780549092161790558351602094850120825192850192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8188015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c090920190528051920191909120600855506104859050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261041a5760008555610460565b82601f1061043357805160ff1916838001178555610460565b82800160010185558215610460579182015b82811115610460578251825591602001919060010190610445565b5061046c929150610470565b5090565b5b8082111561046c5760008155600101610471565b60ea806104936000396000f3fe608060405260043610601c5760003560e01c80635c60da1b146061575b60006024608f565b90506001600160a01b038116603857600080fd5b60405136600082376000803683855af43d82016040523d6000833e808015605d573d83f35b3d83fd5b348015606c57600080fd5b506073608f565b604080516001600160a01b039092168252519081900360200190f35b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549056fea264697066735822122070d14273ca364f24589d9b85708e9dc89b77248a32d81d68f9876feaabeeb24264736f6c63430007050033000000000000000000000000e219ec464ffabbe70d3bf192dc8c98aa5846b4f600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000038000000000000000000000000f93c01934e54f8975c92e102d5b2d61111e699a4000000000000000000000000000000000000000000000000000000000000000953616b65546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000453414b4500000000000000000000000000000000000000000000000000000000

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

000000000000000000000000e219ec464ffabbe70d3bf192dc8c98aa5846b4f600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000038000000000000000000000000f93c01934e54f8975c92e102d5b2d61111e699a4000000000000000000000000000000000000000000000000000000000000000953616b65546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000453414b4500000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenImage (address): 0xe219ec464ffabbe70d3bf192dc8c98aa5846b4f6
Arg [1] : _name (string): SakeToken
Arg [2] : _symbol (string): SAKE
Arg [3] : _decimals (uint8): 18
Arg [4] : _chainId (uint256): 56
Arg [5] : _owner (address): 0xf93c01934e54f8975c92e102d5b2d61111e699a4

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000e219ec464ffabbe70d3bf192dc8c98aa5846b4f6
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000038
Arg [5] : 000000000000000000000000f93c01934e54f8975c92e102d5b2d61111e699a4
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [7] : 53616b65546f6b656e0000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 53414b4500000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5055:2694:0:-:0;;;;;;;;;;;;;;;;;;756:13;772:16;:14;:16::i;:::-;756:32;-1:-1:-1;;;;;;807:19:0;;799:28;;;;;;1265:4;1259:11;2046:14;2043:1;2038:3;2025:36;2983:1;2980;2964:14;2959:3;2952:5;2945;2932:53;3673:16;3668:3;3664:26;3658:4;3651:40;4185:16;4182:1;4177:3;4162:40;4469:6;4493:78;;;;4632:16;4627:3;4620:29;4493:78;4535:16;4530:3;4523:29;7542:204;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;7542:204:0;;;;;;;;;;;;;;;7661:66;7655:73;;7632:107::o

Swarm Source

ipfs://70d14273ca364f24589d9b85708e9dc89b77248a32d81d68f9876feaabeeb242
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.