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