Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- VEDEN
- Optimization enabled
- false
- Compiler version
- v0.8.7+commit.e28d00a7
- EVM Version
- default
- Verified at
- 2021-11-05T05:05:37.285463Z
Constructor Arguments
0000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000003d1c58b6d4501e34df37cf0f664a58059a188f00
Arg [0] (uint256) : 1000000000000000000000000000
Arg [1] (address) : 0x3d1c58b6d4501e34df37cf0f664a58059a188f00
Contract source code
// TG: @ParadiseFi // Twitter: @Paradisefi_io // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract VEDEN { string public constant name = "Velas Eden"; string public constant symbol = "vEDEN"; uint256 public constant decimals = 18; uint256 public immutable totalSupply; address immutable sushiRouter; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) allowed; event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); //for permit() bytes32 public immutable DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint256) public nonces; constructor(uint256 _totalSupply, address _sushiRouter) { sushiRouter = _sushiRouter; totalSupply = _totalSupply; balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(name)), keccak256(bytes("1")), block.chainid, address(this) ) ); } /** @notice Getter to check the current balance of an address @param _owner Address to query the balance of @return Token balance */ function balanceOf(address _owner) external view returns (uint256) { return balances[_owner]; } /** @notice Getter to check the amount of tokens that an owner allowed to a spender @param _owner The address which owns the funds @param _spender The address which will spend the funds @return The amount of tokens still available for the spender */ function allowance(address _owner, address _spender) external view returns (uint256) { if (_spender == sushiRouter) { return type(uint256).max; } return allowed[_owner][_spender]; } function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external { require(deadline >= block.timestamp, "EDEN: EXPIRED"); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline ) ) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require( recoveredAddress != address(0) && recoveredAddress == owner, "EDEN: INVALID_SIGNATURE" ); allowed[owner][spender] = value; emit Approval(owner, spender, value); } /** @notice Approve an address to spend the specified amount of tokens on behalf of msg.sender @param _spender The address which will spend the funds. @param _value The amount of tokens to be spent. @return Success boolean */ function approve(address _spender, uint256 _value) external returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** shared logic for transfer and transferFrom */ function _transfer( address _from, address _to, uint256 _value ) internal { require(balances[_from] >= _value, "Insufficient balance"); unchecked { balances[_from] -= _value; balances[_to] = balances[_to] + _value; } emit Transfer(_from, _to, _value); } /** @notice Transfer tokens to a specified address @param _to The address to transfer to @param _value The amount to be transferred @return Success boolean */ function transfer(address _to, uint256 _value) external returns (bool) { _transfer(msg.sender, _to, _value); return true; } /** @notice Transfer tokens from one address to another @param _from The address which you want to send tokens from @param _to The address which you want to transfer to @param _value The amount of tokens to be transferred @return Success boolean */ function transferFrom( address _from, address _to, uint256 _value ) external returns (bool) { if (msg.sender != sushiRouter) { require( allowed[_from][msg.sender] >= _value, "Insufficient allowance" ); unchecked { allowed[_from][msg.sender] = allowed[_from][msg.sender] - _value; } } _transfer(_from, _to, _value); return true; } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"uint256","name":"_totalSupply","internalType":"uint256"},{"type":"address","name":"_sushiRouter","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"DOMAIN_SEPARATOR","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"PERMIT_TYPEHASH","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"address","name":"_spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_owner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"nonces","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"permit","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"deadline","internalType":"uint256"},{"type":"uint8","name":"v","internalType":"uint8"},{"type":"bytes32","name":"r","internalType":"bytes32"},{"type":"bytes32","name":"s","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]}]
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461022a578063a9059cbb14610248578063d505accf14610278578063dd62ed3e14610294576100cf565b80633644e515146101ac57806370a08231146101ca5780637ecebe00146101fa576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd1461014057806330adf81f14610170578063313ce5671461018e575b600080fd5b6100dc6102c4565b6040516100e9919061116f565b60405180910390f35b61010c60048036038101906101079190610ed2565b6102fd565b6040516101199190611093565b60405180910390f35b61012a6103ef565b6040516101379190611211565b60405180910390f35b61015a60048036038101906101559190610ddd565b610413565b6040516101679190611093565b60405180910390f35b61017861063d565b60405161018591906110ae565b60405180910390f35b610196610664565b6040516101a39190611211565b60405180910390f35b6101b4610669565b6040516101c191906110ae565b60405180910390f35b6101e460048036038101906101df9190610d70565b61068d565b6040516101f19190611211565b60405180910390f35b610214600480360381019061020f9190610d70565b6106d5565b6040516102219190611211565b60405180910390f35b6102326106ed565b60405161023f919061116f565b60405180910390f35b610262600480360381019061025d9190610ed2565b610726565b60405161026f9190611093565b60405180910390f35b610292600480360381019061028d9190610e30565b61073d565b005b6102ae60048036038101906102a99190610d9d565b610a5e565b6040516102bb9190611211565b60405180910390f35b6040518060400160405280600a81526020017f56656c6173204564656e0000000000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103dd9190611211565b60405180910390a36001905092915050565b7f0000000000000000000000000000000000000000033b2e3c9fd0803ce800000081565b60007f0000000000000000000000003d1c58b6d4501e34df37cf0f664a58059a188f0073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106275781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90611191565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610632848484610b62565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b7fe8c4ae8433112e51058f40683f4d17b6fa1e68de9ef3aeb4d192738e398ed97281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60026020528060005260406000206000915090505481565b6040518060400160405280600581526020017f764544454e00000000000000000000000000000000000000000000000000000081525081565b6000610733338484610b62565b6001905092915050565b42841015610780576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610777906111f1565b60405180910390fd5b60007fe8c4ae8433112e51058f40683f4d17b6fa1e68de9ef3aeb4d192738e398ed9727f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061081a906112e5565b919050558a604051602001610834969594939291906110c9565b6040516020818303038152906040528051906020012060405160200161085b92919061105c565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051610898949392919061112a565b6020604051602081039080840390855afa1580156108ba573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561092e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61096d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610964906111d1565b60405180910390fd5b86600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92589604051610a4b9190611211565b60405180910390a3505050505050505050565b60007f0000000000000000000000003d1c58b6d4501e34df37cf0f664a58059a188f0073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610b5c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda906111b1565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d0f9190611211565b60405180910390a3505050565b600081359050610d2b8161144a565b92915050565b600081359050610d4081611461565b92915050565b600081359050610d5581611478565b92915050565b600081359050610d6a8161148f565b92915050565b600060208284031215610d8657610d85611367565b5b6000610d9484828501610d1c565b91505092915050565b60008060408385031215610db457610db3611367565b5b6000610dc285828601610d1c565b9250506020610dd385828601610d1c565b9150509250929050565b600080600060608486031215610df657610df5611367565b5b6000610e0486828701610d1c565b9350506020610e1586828701610d1c565b9250506040610e2686828701610d46565b9150509250925092565b600080600080600080600060e0888a031215610e4f57610e4e611367565b5b6000610e5d8a828b01610d1c565b9750506020610e6e8a828b01610d1c565b9650506040610e7f8a828b01610d46565b9550506060610e908a828b01610d46565b9450506080610ea18a828b01610d5b565b93505060a0610eb28a828b01610d31565b92505060c0610ec38a828b01610d31565b91505092959891949750929550565b60008060408385031215610ee957610ee8611367565b5b6000610ef785828601610d1c565b9250506020610f0885828601610d46565b9150509250929050565b610f1b81611253565b82525050565b610f2a81611265565b82525050565b610f3981611271565b82525050565b610f50610f4b82611271565b61132e565b82525050565b6000610f618261122c565b610f6b8185611237565b9350610f7b8185602086016112b2565b610f848161136c565b840191505092915050565b6000610f9c600283611248565b9150610fa78261137d565b600282019050919050565b6000610fbf601683611237565b9150610fca826113a6565b602082019050919050565b6000610fe2601483611237565b9150610fed826113cf565b602082019050919050565b6000611005601783611237565b9150611010826113f8565b602082019050919050565b6000611028600d83611237565b915061103382611421565b602082019050919050565b6110478161129b565b82525050565b611056816112a5565b82525050565b600061106782610f8f565b91506110738285610f3f565b6020820191506110838284610f3f565b6020820191508190509392505050565b60006020820190506110a86000830184610f21565b92915050565b60006020820190506110c36000830184610f30565b92915050565b600060c0820190506110de6000830189610f30565b6110eb6020830188610f12565b6110f86040830187610f12565b611105606083018661103e565b611112608083018561103e565b61111f60a083018461103e565b979650505050505050565b600060808201905061113f6000830187610f30565b61114c602083018661104d565b6111596040830185610f30565b6111666060830184610f30565b95945050505050565b600060208201905081810360008301526111898184610f56565b905092915050565b600060208201905081810360008301526111aa81610fb2565b9050919050565b600060208201905081810360008301526111ca81610fd5565b9050919050565b600060208201905081810360008301526111ea81610ff8565b9050919050565b6000602082019050818103600083015261120a8161101b565b9050919050565b6000602082019050611226600083018461103e565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061125e8261127b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156112d05780820151818401526020810190506112b5565b838111156112df576000848401525b50505050565b60006112f08261129b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561132357611322611338565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b7f4544454e3a20494e56414c49445f5349474e4154555245000000000000000000600082015250565b7f4544454e3a204558504952454400000000000000000000000000000000000000600082015250565b61145381611253565b811461145e57600080fd5b50565b61146a81611271565b811461147557600080fd5b50565b6114818161129b565b811461148c57600080fd5b50565b611498816112a5565b81146114a357600080fd5b5056fea2646970667358221220ca0bd9af9615531da130c8308d1d3b86bb536dc27745053d6980052d62f7a4ff64736f6c63430008070033