Address Contract Verified
Address
0x808688c820AB080A6Ff1019F03E5EC227D9b522B
Balance
0 ETH
Nonce
1
Code Size
3179 bytes
Creator
0x641AD78B...e689 at tx 0x141fdc24...3ac822
Indexed Transactions
0
Contract Bytecode
3179 bytes
0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806370a082311161009e578063a9059cbb1161006e578063a9059cbb1461026f578063c8a397a814610282578063cca6391b14610297578063d505accf146102aa578063dd62ed3e146102bd575f80fd5b806370a08231146101ea5780637a707468146102095780637ecebe001461024857806395d89b4114610267575f80fd5b806330adf81f116100d957806330adf81f14610175578063313ce5671461019c5780633644e515146101bb57806359e741d2146101e2575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd14610162575b5f80fd5b6101126102e7565b60405161011f91906109d8565b60405180910390f35b61013b610136366004610a3f565b610372565b604051901515815260200161011f565b61015460035481565b60405190815260200161011f565b61013b610170366004610a67565b610388565b6101547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6002546101a99060ff1681565b60405160ff909116815260200161011f565b6101547f87f1549f5698892438c00511259e873e4da1dd28b6c8d01ee6da1475d4b4fcde81565b610154600881565b6101546101f8366004610aa0565b60046020525f908152604090205481565b6102307f0000000000000000000000004b520c812e8430659fc9f12f6d0c39026c83588d81565b6040516001600160a01b03909116815260200161011f565b610154610256366004610aa0565b60066020525f908152604090205481565b6101126103ff565b61013b61027d366004610a3f565b61040c565b610295610290366004610ac0565b610418565b005b6102956102a5366004610ac0565b6104c4565b6102956102b8366004610ad7565b61056a565b6101546102cb366004610b44565b600560209081525f928352604080842090915290825290205481565b5f80546102f390610b75565b80601f016020809104026020016040519081016040528092919081815260200182805461031f90610b75565b801561036a5780601f106103415761010080835404028352916020019161036a565b820191905f5260205f20905b81548152906001019060200180831161034d57829003601f168201915b505050505081565b5f61037e338484610818565b5060015b92915050565b6001600160a01b0383165f9081526005602090815260408083203384529091528120545f19146103ea576001600160a01b0384165f908152600560209081526040808320338452909152812080548492906103e4908490610bc1565b90915550505b6103f5848484610879565b5060019392505050565b600180546102f390610b75565b5f61037e338484610879565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f0000000000000000000000004b520c812e8430659fc9f12f6d0c39026c83588d6001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610488573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ac9190610bd4565b506104c1336104bc600884610bf3565b6108fa565b50565b6104d8336104d3600884610bf3565b61095f565b60405163a9059cbb60e01b8152336004820152602481018290527f0000000000000000000000004b520c812e8430659fc9f12f6d0c39026c83588d6001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015610542573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105669190610bd4565b5050565b428410156105bf5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a205045524d49545f43414c4c5f4558504952454400000000000060448201526064015b60405180910390fd5b6001600160a01b0387165f90815260066020526040812080547f87f1549f5698892438c00511259e873e4da1dd28b6c8d01ee6da1475d4b4fcde917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761062c83610c0a565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016106a592919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0825f1c111561072f5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e3a20494e56414c49445f5349474e4154555245000000000000000060448201526064016105b6565b604080515f8082526020820180845284905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610780573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906107b65750886001600160a01b0316816001600160a01b0316145b6108025760405162461bcd60e51b815260206004820152601860248201527f45524332303a20494e56414c49445f5349474e4154555245000000000000000060448201526064016105b6565b61080d898989610818565b505050505050505050565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f9081526004602052604090205461089c908290610bc1565b6001600160a01b038481165f8181526004602090815260408083209590955592861680825290849020805486019055925184815290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161086c565b806003546109089190610c22565b6003556001600160a01b0382165f818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6003805482900390556001600160a01b0382165f9081526004602052604090205461098b908290610bc1565b6001600160a01b0383165f818152600460205260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109539085815260200190565b5f602080835283518060208501525f5b81811015610a04578581018301518582016040015282016109e8565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a3a575f80fd5b919050565b5f8060408385031215610a50575f80fd5b610a5983610a24565b946020939093013593505050565b5f805f60608486031215610a79575f80fd5b610a8284610a24565b9250610a9060208501610a24565b9150604084013590509250925092565b5f60208284031215610ab0575f80fd5b610ab982610a24565b9392505050565b5f60208284031215610ad0575f80fd5b5035919050565b5f805f805f805f60e0888a031215610aed575f80fd5b610af688610a24565b9650610b0460208901610a24565b95506040880135945060608801359350608088013560ff81168114610b27575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610b55575f80fd5b610b5e83610a24565b9150610b6c60208401610a24565b90509250929050565b600181811c90821680610b8957607f821691505b602082108103610ba757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561038257610382610bad565b5f60208284031215610be4575f80fd5b81518015158114610ab9575f80fd5b808202811582820484141761038257610382610bad565b5f60018201610c1b57610c1b610bad565b5060010190565b8082018082111561038257610382610bad56fea2646970667358221220006d1fe28ca48c2661c235a88de194a00f9639b9906b157448e630eaa65f00c264736f6c63430008170033
Verified Source Code Full Match
Compiler: v0.8.23+commit.f704f362
EVM: shanghai
Optimization: Yes (200 runs)
ERC20.sol 245 lines
// SPDX-License-Identifier: -- DG --
pragma solidity =0.8.23;
contract ERC20 {
string public name;
string public symbol;
uint8 public decimals;
address internal constant ZERO_ADDY = address(0x0);
uint256 internal constant UINT256_MAX = type(uint256).max;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
mapping(address => uint256) public nonces;
bytes32 public immutable DOMAIN_SEPARATOR;
bytes32 public constant PERMIT_TYPEHASH = keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
);
event Transfer(
address indexed from,
address indexed to,
uint256 value
);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
constructor(
string memory _name,
string memory _symbol
) {
name = _name;
symbol = _symbol;
decimals = 18;
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)
)
);
}
function _mint(
address _to,
uint256 _value
)
internal
{
totalSupply =
totalSupply + _value;
unchecked {
balanceOf[_to] =
balanceOf[_to] + _value;
}
emit Transfer(
ZERO_ADDY,
_to,
_value
);
}
function _burn(
address _from,
uint256 _value
)
internal
{
unchecked {
totalSupply =
totalSupply - _value;
}
balanceOf[_from] =
balanceOf[_from] - _value;
emit Transfer(
_from,
ZERO_ADDY,
_value
);
}
function _approve(
address _owner,
address _spender,
uint256 _value
)
private
{
allowance[_owner][_spender] = _value;
emit Approval(
_owner,
_spender,
_value
);
}
function _transfer(
address _from,
address _to,
uint256 _value
)
private
{
balanceOf[_from] =
balanceOf[_from] - _value;
unchecked {
balanceOf[_to] =
balanceOf[_to] + _value;
}
emit Transfer(
_from,
_to,
_value
);
}
function approve(
address _spender,
uint256 _value
)
external
returns (bool)
{
_approve(
msg.sender,
_spender,
_value
);
return true;
}
function transfer(
address _to,
uint256 _value
)
external
returns (bool)
{
_transfer(
msg.sender,
_to,
_value
);
return true;
}
function transferFrom(
address _from,
address _to,
uint256 _value
)
external
returns (bool)
{
if (allowance[_from][msg.sender] != UINT256_MAX) {
allowance[_from][msg.sender] -= _value;
}
_transfer(
_from,
_to,
_value
);
return true;
}
function permit(
address _owner,
address _spender,
uint256 _value,
uint256 _deadline,
uint8 _v,
bytes32 _r,
bytes32 _s
)
external
{
require(
_deadline >= block.timestamp,
"ERC20: PERMIT_CALL_EXPIRED"
);
bytes32 digest = keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR,
keccak256(
abi.encode(
PERMIT_TYPEHASH,
_owner,
_spender,
_value,
nonces[_owner]++,
_deadline
)
)
)
);
if (uint256(_s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
revert("Token: INVALID_SIGNATURE");
}
address recoveredAddress = ecrecover(
digest,
_v,
_r,
_s
);
require(
recoveredAddress != ZERO_ADDY &&
recoveredAddress == _owner,
"ERC20: INVALID_SIGNATURE"
);
_approve(
_owner,
_spender,
_value
);
}
}
BAGCOIN.sol 77 lines
// SPDX-License-Identifier: ---DG----
pragma solidity =0.8.23;
import "./ERC20.sol";
interface ILightDGToken {
function transfer(
address _recipient,
uint256 _amount
)
external
returns (bool);
function transferFrom(
address _sender,
address _recipient,
uint256 _amount
)
external
returns (bool);
}
contract BAGCOIN is ERC20 {
ILightDGToken immutable public lightDG;
uint256 constant public RATIO = 8;
constructor(
string memory _tokenName,
string memory _tokenSymbol,
address _lightDGTokenAddress
)
ERC20(
_tokenName,
_tokenSymbol
)
{
lightDG = ILightDGToken(
_lightDGTokenAddress
);
}
function getBAGTokens(
uint256 _lightDGAmountToDeposit
)
external
{
lightDG.transferFrom(
msg.sender,
address(this),
_lightDGAmountToDeposit
);
_mint(
msg.sender,
_lightDGAmountToDeposit * RATIO
);
}
function returnBAGTokens(
uint256 _lightDGAmountToReceive
)
external
{
_burn(
msg.sender,
_lightDGAmountToReceive * RATIO
);
lightDG.transfer(
msg.sender,
_lightDGAmountToReceive
);
}
}
Read Contract
DOMAIN_SEPARATOR 0x3644e515 → bytes32
PERMIT_TYPEHASH 0x30adf81f → bytes32
RATIO 0x59e741d2 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
lightDG 0x7a707468 → address
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 6 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
getBAGTokens 0xc8a397a8
uint256 _lightDGAmountToDeposit
permit 0xd505accf
address _owner
address _spender
uint256 _value
uint256 _deadline
uint8 _v
bytes32 _r
bytes32 _s
returnBAGTokens 0xcca6391b
uint256 _lightDGAmountToReceive
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
Recent Transactions
No transactions found for this address