0%
    Verified
  • Verified

Explore the source code, ABI, and bytecode for the Dogecoin smart contract.

0x4206931337dc273a630d328da6441786bfad668f
Copied
Copied
Dogecoin Source Code
{"Address.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Collection of functions related to the address type\r\n */\r\nlibrary Address \r\n{\r\n /**\r\n * @dev Returns true if `account` is a contract.\r\n *\r\n * [IMPORTANT]\r\n * ====\r\n * It is unsafe to assume that an address for which this function returns\r\n * false is an externally-owned account (EOA) and not a contract.\r\n *\r\n * Among others, `isContract` will return false for the following\r\n * types of addresses:\r\n *\r\n * - an externally-owned account\r\n * - a contract in construction\r\n * - an address where a contract will be created\r\n * - an address where a contract lived, but was destroyed\r\n * ====\r\n */\r\n function isContract(address account) internal view returns (bool) {\r\n // This method relies on extcodesize, which returns 0 for contracts in\r\n // construction, since the code is only stored at the end of the\r\n // constructor execution.\r\n\r\n uint256 size;\r\n // solhint-disable-next-line no-inline-assembly\r\n assembly { size := extcodesize(account) }\r\n return size \u003e 0;\r\n }\r\n\r\n /**\r\n * @dev Replacement for Solidity\u0027s `transfer`: sends `amount` wei to\r\n * `recipient`, forwarding all available gas and reverting on errors.\r\n *\r\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\r\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\r\n * imposed by `transfer`, making them unable to receive funds via\r\n * `transfer`. {sendValue} removes this limitation.\r\n *\r\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\r\n *\r\n * IMPORTANT: because control is transferred to `recipient`, care must be\r\n * taken to not create reentrancy vulnerabilities. Consider using\r\n * {ReentrancyGuard} or the\r\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\r\n */\r\n function sendValue(address payable recipient, uint256 amount) internal {\r\n require(address(this).balance \u003e= amount, \"Address: insufficient balance\");\r\n\r\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\r\n (bool success, ) = recipient.call{ value: amount }(\"\");\r\n require(success, \"Address: unable to send value, recipient may have reverted\");\r\n }\r\n\r\n /**\r\n * @dev Performs a Solidity function call using a low level `call`. A\r\n * plain`call` is an unsafe replacement for a function call: use this\r\n * function instead.\r\n *\r\n * If `target` reverts with a revert reason, it is bubbled up by this\r\n * function (like regular Solidity function calls).\r\n *\r\n * Returns the raw returned data. To convert to the expected return value,\r\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\r\n *\r\n * Requirements:\r\n *\r\n * - `target` must be a contract.\r\n * - calling `target` with `data` must not revert.\r\n *\r\n * _Available since v3.1._\r\n */\r\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\r\n return functionCall(target, data, \"Address: low-level call failed\");\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\r\n * `errorMessage` as a fallback revert reason when `target` reverts.\r\n *\r\n * _Available since v3.1._\r\n */\r\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\r\n return functionCallWithValue(target, data, 0, errorMessage);\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\r\n * but also transferring `value` wei to `target`.\r\n *\r\n * Requirements:\r\n *\r\n * - the calling contract must have an ETH balance of at least `value`.\r\n * - the called Solidity function must be `payable`.\r\n *\r\n * _Available since v3.1._\r\n */\r\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\r\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\r\n * with `errorMessage` as a fallback revert reason when `target` reverts.\r\n *\r\n * _Available since v3.1._\r\n */\r\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\r\n require(address(this).balance \u003e= value, \"Address: insufficient balance for call\");\r\n require(isContract(target), \"Address: call to non-contract\");\r\n\r\n // solhint-disable-next-line avoid-low-level-calls\r\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\r\n return _verifyCallResult(success, returndata, errorMessage);\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\r\n * but performing a static call.\r\n *\r\n * _Available since v3.3._\r\n */\r\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\r\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\r\n * but performing a static call.\r\n *\r\n * _Available since v3.3._\r\n */\r\n function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\r\n require(isContract(target), \"Address: static call to non-contract\");\r\n\r\n // solhint-disable-next-line avoid-low-level-calls\r\n (bool success, bytes memory returndata) = target.staticcall(data);\r\n return _verifyCallResult(success, returndata, errorMessage);\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\r\n * but performing a delegate call.\r\n *\r\n * _Available since v3.3._\r\n */\r\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\r\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\r\n }\r\n\r\n /**\r\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\r\n * but performing a delegate call.\r\n *\r\n * _Available since v3.3._\r\n */\r\n function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\r\n require(isContract(target), \"Address: delegate call to non-contract\");\r\n\r\n // solhint-disable-next-line avoid-low-level-calls\r\n (bool success, bytes memory returndata) = target.delegatecall(data);\r\n return _verifyCallResult(success, returndata, errorMessage);\r\n }\r\n\r\n function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\r\n if (success) {\r\n return returndata;\r\n } else {\r\n // Look for revert reason and bubble it up if present\r\n if (returndata.length \u003e 0) {\r\n // The easiest way to bubble the revert reason is using memory via assembly\r\n\r\n // solhint-disable-next-line no-inline-assembly\r\n assembly {\r\n let returndata_size := mload(returndata)\r\n revert(add(32, returndata), returndata_size)\r\n }\r\n } else {\r\n revert(errorMessage);\r\n }\r\n }\r\n }\r\n}"},"Dogecoin.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nimport \"../ERC20.sol\";\r\nimport \"../SafelyOwned.sol\";\r\nimport \"./IDogecoin.sol\";\r\n\r\ncontract Dogecoin is ERC20(\"Dogecoin\", \"DOGE\", 8), SafelyOwned, IDogecoin\r\n{\r\n string public constant url = \"https://doge.gay\";\r\n\r\n mapping (uint256 =\u003e bool) public override instructionFulfilled;\r\n mapping (address =\u003e bool) public override minters;\r\n\r\n bytes32 private constant joinPartyTypeHash = keccak256(\"JoinParty(address to,uint256 amount,uint256 instructionId)\");\r\n\r\n function setMinter(address _minter, bool _canMint) public ownerOnly()\r\n {\r\n minters[_minter] = _canMint;\r\n emit Minter(_minter, _canMint);\r\n }\r\n \r\n function joinParty(address _to, uint256 _amount, uint256 _instructionId, uint8 _v, bytes32 _r, bytes32 _s) public override\r\n {\r\n require (!instructionFulfilled[_instructionId], \"Instruction already fulfilled\");\r\n bytes32 hash = getSigningHash(keccak256(abi.encode(joinPartyTypeHash, _to, _amount, _instructionId)));\r\n address signer = ecrecover(hash, _v, _r, _s);\r\n require(minters[signer], \"Not signed by a minter\");\r\n\r\n mintCore(_to, _amount);\r\n \r\n instructionFulfilled[_instructionId] = true;\r\n emit DogeJoinedTheParty(_instructionId, _to, _amount);\r\n }\r\n\r\n function multiJoinParty(JoinPartyInstruction[] calldata _instructions) public override\r\n {\r\n uint256 len = _instructions.length;\r\n bool anySuccess = false;\r\n\r\n for (uint256 x=0; x\u003clen; ++x) {\r\n uint256 instructionId = _instructions[x].instructionId;\r\n if (instructionFulfilled[instructionId]) { continue; }\r\n\r\n address to = _instructions[x].to;\r\n uint256 amount = _instructions[x].amount;\r\n bytes32 hash = getSigningHash(keccak256(abi.encode(joinPartyTypeHash, to, amount, instructionId)));\r\n address signer = ecrecover(hash, _instructions[x].v, _instructions[x].r, _instructions[x].s);\r\n if (!minters[signer]) { continue; }\r\n\r\n mintCore(to, amount);\r\n\r\n instructionFulfilled[instructionId] = true;\r\n anySuccess = true;\r\n emit DogeJoinedTheParty(instructionId, to, amount);\r\n }\r\n require (anySuccess, \"No success\");\r\n }\r\n\r\n function crossBridge(address _controller, uint256 _amount) public override\r\n {\r\n burnCore(msg.sender, _amount);\r\n emit DogeCrossingBridge(_controller, _amount);\r\n }\r\n\r\n function transfer(address _to, uint256 _amount) public override returns (bool)\r\n {\r\n if (_to == address(this)) {\r\n crossBridge(msg.sender, _amount);\r\n return true;\r\n }\r\n return super.transfer(_to, _amount);\r\n }\r\n\r\n function transferFrom(address _from, address _to, uint256 _amount) public override returns (bool)\r\n {\r\n require(_to != address(this), \"Use crossBridge() or transfer() to transfer DOGE back to the bridge\");\r\n return super.transferFrom(_from, _to, _amount);\r\n }\r\n}"},"ERC20.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nimport \"./IERC20.sol\";\r\n\r\nabstract contract ERC20 is IERC20\r\n{\r\n string public override name;\r\n string public override symbol;\r\n uint8 public immutable override decimals;\r\n\r\n uint256 public override totalSupply;\r\n mapping (address =\u003e uint256) public override balanceOf;\r\n mapping (address =\u003e mapping(address =\u003e uint256)) public override allowance;\r\n mapping (address =\u003e uint256) public override nonces;\r\n\r\n bytes32 private immutable cachedDomainSeparator;\r\n uint256 private immutable cachedChainId = block.chainid;\r\n bytes32 private constant permitTypeHash = keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\r\n bytes32 private constant eip712DomainHash = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\r\n bytes32 private constant versionDomainHash = keccak256(bytes(\"1\"));\r\n bytes32 private immutable nameDomainHash;\r\n\r\n constructor(string memory _name, string memory _symbol, uint8 _decimals)\r\n {\r\n name = _name;\r\n symbol = _symbol;\r\n decimals = _decimals;\r\n\r\n bytes32 _nameDomainHash = keccak256(bytes(_name));\r\n nameDomainHash = _nameDomainHash;\r\n cachedDomainSeparator = keccak256(abi.encode(\r\n eip712DomainHash,\r\n _nameDomainHash,\r\n versionDomainHash,\r\n block.chainid,\r\n address(this)));\r\n }\r\n\r\n function approveCore(address _owner, address _spender, uint256 _amount) internal virtual returns (bool)\r\n {\r\n allowance[_owner][_spender] = _amount;\r\n emit Approval(_owner, _spender, _amount);\r\n return true;\r\n }\r\n\r\n function approve(address _spender, uint256 _amount) public virtual override returns (bool)\r\n {\r\n return approveCore(msg.sender, _spender, _amount);\r\n }\r\n\r\n function increaseAllowance(address _spender, uint256 _toAdd) public virtual override returns (bool)\r\n {\r\n return approve(_spender, allowance[msg.sender][_spender] + _toAdd);\r\n }\r\n \r\n function decreaseAllowance(address _spender, uint256 _toRemove) public virtual override returns (bool)\r\n {\r\n return approve(_spender, allowance[msg.sender][_spender] - _toRemove);\r\n }\r\n\r\n function transfer(address _to, uint256 _amount) public virtual override returns (bool)\r\n {\r\n return transferCore(msg.sender, _to, _amount);\r\n }\r\n\r\n function transferFrom(address _from, address _to, uint256 _amount) public virtual override returns (bool)\r\n {\r\n uint256 oldAllowance = allowance[_from][msg.sender];\r\n require (oldAllowance \u003e= _amount, \"Insufficient allowance\");\r\n if (oldAllowance != type(uint256).max) {\r\n allowance[_from][msg.sender] = oldAllowance - _amount;\r\n }\r\n return transferCore(_from, _to, _amount);\r\n }\r\n\r\n function transferCore(address _from, address _to, uint256 _amount) internal virtual returns (bool)\r\n {\r\n require (_from != address(0));\r\n if (_to == address(0)) {\r\n burnCore(_from, _amount);\r\n return true;\r\n }\r\n uint256 oldBalance = balanceOf[_from];\r\n require (oldBalance \u003e= _amount, \"Insufficient balance\");\r\n balanceOf[_from] = oldBalance - _amount;\r\n balanceOf[_to] += _amount;\r\n emit Transfer(_from, _to, _amount);\r\n return true;\r\n }\r\n\r\n function mintCore(address _to, uint256 _amount) internal virtual\r\n {\r\n require (_to != address(0));\r\n\r\n totalSupply += _amount;\r\n balanceOf[_to] += _amount;\r\n emit Transfer(address(0), _to, _amount);\r\n }\r\n\r\n function burnCore(address _from, uint256 _amount) internal virtual\r\n {\r\n uint256 oldBalance = balanceOf[_from];\r\n require (oldBalance \u003e= _amount, \"Insufficient balance\");\r\n balanceOf[_from] = oldBalance - _amount;\r\n totalSupply -= _amount;\r\n emit Transfer(_from, address(0), _amount);\r\n }\r\n\r\n function burn(uint256 _amount) public override\r\n {\r\n burnCore(msg.sender, _amount);\r\n }\r\n\r\n function DOMAIN_SEPARATOR() public override view returns (bytes32) \r\n {\r\n if (block.chainid == cachedChainId) {\r\n return cachedDomainSeparator;\r\n }\r\n return keccak256(abi.encode(\r\n eip712DomainHash,\r\n nameDomainHash,\r\n versionDomainHash,\r\n block.chainid,\r\n address(this)));\r\n }\r\n\r\n function getSigningHash(bytes32 _dataHash) internal view returns (bytes32) \r\n {\r\n return keccak256(abi.encodePacked(\"\\x19\\x01\", DOMAIN_SEPARATOR(), _dataHash));\r\n }\r\n\r\n function permit(address _owner, address _spender, uint256 _amount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s) public virtual override\r\n {\r\n require (block.timestamp \u003c= _deadline, \"Deadline expired\");\r\n\r\n uint256 nonce = nonces[_owner];\r\n bytes32 hash = getSigningHash(keccak256(abi.encode(permitTypeHash, _owner, _spender, _amount, nonce, _deadline)));\r\n address signer = ecrecover(hash, _v, _r, _s);\r\n require (signer == _owner, \"Invalid signature\");\r\n nonces[_owner] = nonce + 1;\r\n approveCore(_owner, _spender, _amount);\r\n }\r\n}"},"IDogecoin.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nstruct JoinPartyInstruction\r\n{\r\n uint256 amount;\r\n uint256 instructionId;\r\n address to;\r\n uint8 v;\r\n bytes32 r;\r\n bytes32 s;\r\n}\r\n\r\ninterface IDogecoin\r\n{\r\n event DogeCrossingBridge(address indexed controller, uint256 amount);\r\n event DogeJoinedTheParty(uint256 indexed instructionId, address indexed recipient, uint256 amount);\r\n event Minter(address indexed minter, bool canMint);\r\n\r\n function instructionFulfilled(uint256 _instructionId) external view returns (bool);\r\n function minters(address _minter) external view returns (bool);\r\n\r\n function joinParty(address _to, uint256 _amount, uint256 _instructionId, uint8 _v, bytes32 _r, bytes32 _s) external;\r\n function multiJoinParty(JoinPartyInstruction[] calldata _instructions) external;\r\n function crossBridge(address _controller, uint256 _amount) external;\r\n}"},"IERC20.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\ninterface IERC20\r\n{\r\n event Transfer(address indexed from, address indexed to, uint256 amount);\r\n event Approval(address indexed owner, address indexed spender, uint256 amount);\r\n\r\n function name() external view returns (string memory);\r\n function symbol() external view returns (string memory);\r\n function decimals() external view returns (uint8);\r\n function DOMAIN_SEPARATOR() external view returns (bytes32);\r\n\r\n function totalSupply() external view returns (uint256);\r\n function balanceOf(address _account) external view returns (uint256);\r\n function allowance(address _owner, address _spender) external view returns (uint256);\r\n function nonces(address _owner) external view returns (uint256);\r\n\r\n function approve(address _spender, uint256 _amount) external returns (bool);\r\n function transfer(address _to, uint256 _amount) external returns (bool);\r\n function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);\r\n function increaseAllowance(address _spender, uint256 _toAdd) external returns (bool);\r\n function decreaseAllowance(address _spender, uint256 _toRemove) external returns (bool);\r\n function burn(uint256 _amount) external;\r\n function permit(address _owner, address _spender, uint256 _amount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s) external;\r\n}"},"ISafelyOwned.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nimport \"./IERC20.sol\";\r\n\r\ninterface ISafelyOwned\r\n{\r\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n function owner() external view returns (address);\r\n\r\n function transferOwnership(address _newOwner) external;\r\n function claimOwnership() external;\r\n function recoverTokens(IERC20 _token) external;\r\n function recoverETH() external;\r\n}"},"SafeERC20.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nimport \"./IERC20.sol\";\r\nimport \"./Address.sol\";\r\n\r\n/**\r\n * @title SafeERC20\r\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\r\n * contract returns false). Tokens that return no value (and instead revert or\r\n * throw on failure) are also supported, non-reverting calls are assumed to be\r\n * successful.\r\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\r\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\r\n */\r\nlibrary SafeERC20 \r\n{\r\n using Address for address;\r\n\r\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\r\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\r\n }\r\n\r\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\r\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\r\n }\r\n\r\n /**\r\n * @dev Deprecated. This function has issues similar to the ones found in\r\n * {IERC20-approve}, and its usage is discouraged.\r\n *\r\n * Whenever possible, use {safeIncreaseAllowance} and\r\n * {safeDecreaseAllowance} instead.\r\n */\r\n function safeApprove(IERC20 token, address spender, uint256 value) internal { \r\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\r\n }\r\n\r\n /**\r\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\r\n * on the return value: the return value is optional (but if data is returned, it must not be false).\r\n * @param token The token targeted by the call.\r\n * @param data The call data (encoded using abi.encode or one of its variants).\r\n */\r\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\r\n // We need to perform a low level call here, to bypass Solidity\u0027s return data size checking mechanism, since\r\n // we\u0027re implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\r\n // the target address contains contract code and also asserts for success in the low-level call.\r\n\r\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\r\n if (returndata.length \u003e 0) { // Return data is optional\r\n // solhint-disable-next-line max-line-length\r\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\r\n }\r\n }\r\n}"},"SafelyOwned.sol":{"content":"// SPDX-License-Identifier: DOGE WORLD\r\npragma solidity ^0.8.0;\r\n\r\nimport \"./ISafelyOwned.sol\";\r\nimport \"./SafeERC20.sol\";\r\n\r\nabstract contract SafelyOwned is ISafelyOwned\r\n{\r\n using SafeERC20 for IERC20;\r\n \r\n address public override owner = msg.sender;\r\n address internal pendingOwner;\r\n\r\n modifier ownerOnly()\r\n {\r\n require (msg.sender == owner, \"Owner only\");\r\n _;\r\n }\r\n\r\n function transferOwnership(address _newOwner) public override ownerOnly()\r\n {\r\n pendingOwner = _newOwner;\r\n }\r\n\r\n function claimOwnership() public override\r\n {\r\n require (pendingOwner == msg.sender);\r\n pendingOwner = address(0);\r\n emit OwnershipTransferred(owner, msg.sender);\r\n owner = msg.sender;\r\n }\r\n\r\n function recoverTokens(IERC20 _token) public override ownerOnly() \r\n {\r\n require (canRecoverTokens(_token));\r\n _token.safeTransfer(msg.sender, _token.balanceOf(address(this)));\r\n }\r\n\r\n function canRecoverTokens(IERC20 _token) internal virtual view returns (bool) \r\n { \r\n return address(_token) != address(this); \r\n }\r\n\r\n function recoverETH() public override ownerOnly()\r\n {\r\n require (canRecoverETH());\r\n (bool success,) = msg.sender.call{ value: address(this).balance }(\"\");\r\n require (success, \"Transfer fail\");\r\n }\r\n\r\n function canRecoverETH() internal virtual view returns (bool) \r\n {\r\n return true;\r\n }\r\n}"}}
Dogecoin ABI
Copied
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DogeCrossingBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"instructionId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DogeJoinedTheParty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"canMint","type":"bool"}],"name":"Minter","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"crossBridge","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":"_toRemove","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_toAdd","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"instructionFulfilled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_instructionId","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"joinParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"instructionId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct JoinPartyInstruction[]","name":"_instructions","type":"tuple[]"}],"name":"multiJoinParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_canMint","type":"bool"}],"name":"setMinter","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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","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"},{"inputs":[],"name":"url","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Dogecoin Bytecode
Copied
6101006040524660c052600680546001600160a01b031916331790553480156200002857600080fd5b506040805180820182526008808252672237b3b2b1b7b4b760c11b602080840191825284518086019095526004855263444f474560e01b90850152825192939262000076916000916200015c565b5081516200008c9060019060208501906200015c565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b16608052825160208085019190912060e081905260408051808201825260018152603160f81b9084015251909162000136917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9184917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc691469130910162000202565b60408051601f19818403018152919052805160209091012060a052506200026b92505050565b8280546200016a906200022e565b90600052602060002090601f0160209004810192826200018e5760008555620001d9565b82601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b5b80821115620001e75760008155600101620001ec565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6002810460018216806200024357607f821691505b602082108114156200026557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160f81c60a05160c05160e051611cb7620002a860003960006106de0152600061064f01526000610678015260006106290152611cb76000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063ac1217eb11610097578063d505accf11610071578063d505accf1461034c578063dd62ed3e1461035f578063f2fde38b14610372578063f46eccc414610385576101a9565b8063ac1217eb14610313578063ce277ece14610326578063cf456ae714610339576101a9565b806395d89b41116100d357806395d89b41146102d2578063a1f6b2a7146102da578063a457c2d7146102ed578063a9059cbb14610300576101a9565b806370a08231146102975780637ecebe00146102aa5780638da5cb5b146102bd576101a9565b806323b872dd116101665780633950935111610140578063395093511461026157806342966c68146102745780634e71e0c8146102875780635600f04f1461028f576101a9565b806323b872dd14610231578063313ce567146102445780633644e51514610259576101a9565b80630614117a146101ae57806306fdde03146101b8578063095ea7b3146101d6578063148e7133146101f657806316114acd1461020957806318160ddd1461021c575b600080fd5b6101b6610398565b005b6101c061045b565b6040516101cd91906118e3565b60405180910390f35b6101e96101e436600461166f565b6104e9565b6040516101cd919061182d565b6101e961020436600461177f565b6104ff565b6101b6610217366004611541565b610514565b6102246105e1565b6040516101cd9190611838565b6101e961023f366004611595565b6105e7565b61024c610627565b6040516101cd9190611b89565b61022461064b565b6101e961026f36600461166f565b610746565b6101b661028236600461177f565b61077b565b6101b6610785565b6101c06107f8565b6102246102a5366004611541565b610824565b6102246102b8366004611541565b610836565b6102c5610848565b6040516101cd9190611800565b6101c0610857565b6101b66102e836600461169a565b610864565b6101e96102fb36600461166f565b6109ed565b6101e961030e36600461166f565b610a22565b6101b661032136600461166f565b610a51565b6101b66103343660046116f3565b610aa0565b6101b6610347366004611642565b610d5a565b6101b661035a3660046115d5565b610dd8565b61022461036d36600461155d565b610f15565b6101b6610380366004611541565b610f32565b6101e9610393366004611541565b610f7e565b6006546001600160a01b031633146103cb5760405162461bcd60e51b81526004016103c290611ab4565b60405180910390fd5b6103d3610f93565b6103dc57600080fd5b6000336001600160a01b0316476040516103f590610743565b60006040518083038185875af1925050503d8060008114610432576040519150601f19603f3d011682016040523d82523d6000602084013e610437565b606091505b50509050806104585760405162461bcd60e51b81526004016103c29061194d565b50565b6000805461046890611bf2565b80601f016020809104026020016040519081016040528092919081815260200182805461049490611bf2565b80156104e15780601f106104b6576101008083540402835291602001916104e1565b820191906000526020600020905b8154815290600101906020018083116104c457829003601f168201915b505050505081565b60006104f6338484610f98565b90505b92915050565b60086020526000908152604090205460ff1681565b6006546001600160a01b0316331461053e5760405162461bcd60e51b81526004016103c290611ab4565b61054781611008565b61055057600080fd5b61045833826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016105809190611800565b60206040518083038186803b15801561059857600080fd5b505afa1580156105ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d09190611797565b6001600160a01b038416919061101b565b60025481565b60006001600160a01b0383163014156106125760405162461bcd60e51b81526004016103c290611974565b61061d848484611076565b90505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000046141561069c57507f0000000000000000000000000000000000000000000000000000000000000000610743565b60408051808201825260018152603160f81b602091820152905161072a917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f917f0000000000000000000000000000000000000000000000000000000000000000917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101611899565b6040516020818303038152906040528051906020012090505b90565b3360009081526004602090815260408083206001600160a01b03861684529091528120546104f69084906101e4908590611b97565b6104583382611106565b6007546001600160a01b0316331461079c57600080fd5b600780546001600160a01b031916905560065460405133916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b03191633179055565b6040518060400160405280601081526020016f68747470733a2f2f646f67652e67617960801b81525081565b60036020526000908152604090205481565b60056020526000908152604090205481565b6006546001600160a01b031681565b6001805461046890611bf2565b60008481526008602052604090205460ff16156108935760405162461bcd60e51b81526004016103c290611916565b60006108ea7f035c6f290d8c384f56de9d82994e71a65abeec130c683387e94b06260631633a8888886040516020016108cf9493929190611875565b604051602081830303815290604052805190602001206111c7565b905060006001828686866040516000815260200160405260405161091194939291906118c5565b6020604051602081039080840390855afa158015610933573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526009602052919091205490925060ff16905061097b5760405162461bcd60e51b81526004016103c290611b0f565b6109858888611200565b60008681526008602052604090819020805460ff19166001179055516001600160a01b0389169087907f246b335ff653677f0265d2c996ae2bf3c388b8103f39929758eda76493c6a508906109db908b90611838565b60405180910390a35050505050505050565b3360009081526004602090815260408083206001600160a01b03861684529091528120546104f69084906101e4908590611baf565b60006001600160a01b038316301415610a4757610a3f3383610a51565b5060016104f9565b6104f683836112a1565b610a5b3382611106565b816001600160a01b03167f31c2da40163e9552aab7b639958e037ef260cc96264c57ea4dd19e9884c44d9182604051610a949190611838565b60405180910390a25050565b806000805b82811015610d36576000858583818110610acf57634e487b7160e01b600052603260045260246000fd5b602060c090910292909201820135600081815260089093526040909220549192505060ff1615610aff5750610d26565b6000868684818110610b2157634e487b7160e01b600052603260045260246000fd5b905060c002016040016020810190610b399190611541565b90506000878785818110610b5d57634e487b7160e01b600052603260045260246000fd5b905060c002016000013590506000610ba57f035c6f290d8c384f56de9d82994e71a65abeec130c683387e94b06260631633a8484876040516020016108cf9493929190611875565b905060006001828b8b89818110610bcc57634e487b7160e01b600052603260045260246000fd5b905060c002016060016020810190610be491906117af565b8c8c8a818110610c0457634e487b7160e01b600052603260045260246000fd5b905060c00201608001358d8d8b818110610c2e57634e487b7160e01b600052603260045260246000fd5b905060c0020160a0013560405160008152602001604052604051610c5594939291906118c5565b6020604051602081039080840390855afa158015610c77573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526009602052919091205490925060ff169050610cb1575050505050610d26565b610cbb8484611200565b60008581526008602052604090819020805460ff1916600190811790915590519097506001600160a01b0385169086907f246b335ff653677f0265d2c996ae2bf3c388b8103f39929758eda76493c6a50890610d18908790611838565b60405180910390a350505050505b610d2f81611c2d565b9050610aa5565b5080610d545760405162461bcd60e51b81526004016103c290611a90565b50505050565b6006546001600160a01b03163314610d845760405162461bcd60e51b81526004016103c290611ab4565b6001600160a01b03821660008181526009602052604090819020805460ff1916841515179055517fff452b3b9159b024a9098f0058c63eccd90d36b3584608202800d662f962bb6090610a9490849061182d565b83421115610df85760405162461bcd60e51b81526004016103c290611a66565b6001600160a01b0387166000908152600560209081526040808320549051909291610e53916108cf917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918d918d918d9189918e9101611841565b9050600060018287878760405160008152602001604052604051610e7a94939291906118c5565b6020604051602081039080840390855afa158015610e9c573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b031614610ed95760405162461bcd60e51b81526004016103c290611a3b565b610ee4836001611b97565b6001600160a01b038b16600090815260056020526040902055610f088a8a8a610f98565b5050505050505050505050565b600460209081526000928352604080842090915290825290205481565b6006546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016103c290611ab4565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60096020526000908152604090205460ff1681565b600190565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915280822085905551909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ff6908690611838565b60405180910390a35060019392505050565b6001600160a01b0381163014155b919050565b6110718363a9059cbb60e01b848460405160240161103a929190611814565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526112ae565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054828110156110ba5760405162461bcd60e51b81526004016103c2906119dd565b60001981146110f2576110cd8382611baf565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6110fd85858561133d565b95945050505050565b6001600160a01b0382166000908152600360205260409020548181101561113f5760405162461bcd60e51b81526004016103c290611a0d565b6111498282611baf565b6001600160a01b03841660009081526003602052604081209190915560028054849290611177908490611baf565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ba908690611838565b60405180910390a3505050565b60006111d161064b565b826040516020016111e39291906117e5565b604051602081830303815290604052805190602001209050919050565b6001600160a01b03821661121357600080fd5b80600260008282546112259190611b97565b90915550506001600160a01b03821660009081526003602052604081208054839290611252908490611b97565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611295908590611838565b60405180910390a35050565b60006104f633848461133d565b6000611303826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114489092919063ffffffff16565b80519091501561107157808060200190518101906113219190611763565b6110715760405162461bcd60e51b81526004016103c290611b3f565b60006001600160a01b03841661135257600080fd5b6001600160a01b0383166113725761136a8483611106565b506001610620565b6001600160a01b038416600090815260036020526040902054828110156113ab5760405162461bcd60e51b81526004016103c290611a0d565b6113b58382611baf565b6001600160a01b0380871660009081526003602052604080822093909355908616815290812080548592906113eb908490611b97565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114359190611838565b60405180910390a3506001949350505050565b606061061d84846000858561145c856114f1565b6114785760405162461bcd60e51b81526004016103c290611ad8565b600080866001600160a01b0316858760405161149491906117c9565b60006040518083038185875af1925050503d80600081146114d1576040519150601f19603f3d011682016040523d82523d6000602084013e6114d6565b606091505b50915091506114e68282866114f7565b979650505050505050565b3b151590565b60608315611506575081610620565b8251156115165782518084602001fd5b8160405162461bcd60e51b81526004016103c291906118e3565b803560ff8116811461101657600080fd5b600060208284031215611552578081fd5b813561062081611c5e565b6000806040838503121561156f578081fd5b823561157a81611c5e565b9150602083013561158a81611c5e565b809150509250929050565b6000806000606084860312156115a9578081fd5b83356115b481611c5e565b925060208401356115c481611c5e565b929592945050506040919091013590565b600080600080600080600060e0888a0312156115ef578283fd5b87356115fa81611c5e565b9650602088013561160a81611c5e565b9550604088013594506060880135935061162660808901611530565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611654578182fd5b823561165f81611c5e565b9150602083013561158a81611c73565b60008060408385031215611681578182fd5b823561168c81611c5e565b946020939093013593505050565b60008060008060008060c087890312156116b2578182fd5b86356116bd81611c5e565b955060208701359450604087013593506116d960608801611530565b92506080870135915060a087013590509295509295509295565b60008060208385031215611705578182fd5b823567ffffffffffffffff8082111561171c578384fd5b818501915085601f83011261172f578384fd5b81358181111561173d578485fd5b86602060c083028501011115611751578485fd5b60209290920196919550909350505050565b600060208284031215611774578081fd5b815161062081611c73565b600060208284031215611790578081fd5b5035919050565b6000602082840312156117a8578081fd5b5051919050565b6000602082840312156117c0578081fd5b6104f682611530565b600082516117db818460208701611bc6565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611902816040850160208701611bc6565b601f01601f19169190910160400192915050565b6020808252601d908201527f496e737472756374696f6e20616c72656164792066756c66696c6c6564000000604082015260600190565b6020808252600d908201526c151c985b9cd9995c8819985a5b609a1b604082015260600190565b60208082526043908201527f5573652063726f73734272696467652829206f72207472616e7366657228292060408201527f746f207472616e7366657220444f4745206261636b20746f207468652062726960608201526264676560e81b608082015260a00190565b602080825260169082015275496e73756666696369656e7420616c6c6f77616e636560501b604082015260600190565b602080825260149082015273496e73756666696369656e742062616c616e636560601b604082015260600190565b602080825260119082015270496e76616c6964207369676e617475726560781b604082015260600190565b60208082526010908201526f111958591b1a5b9948195e1c1a5c995960821b604082015260600190565b6020808252600a90820152694e6f207375636365737360b01b604082015260600190565b6020808252600a90820152694f776e6572206f6e6c7960b01b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252601690820152752737ba1039b4b3b732b210313c90309036b4b73a32b960511b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60ff91909116815260200190565b60008219821115611baa57611baa611c48565b500190565b600082821015611bc157611bc1611c48565b500390565b60005b83811015611be1578181015183820152602001611bc9565b83811115610d545750506000910152565b600281046001821680611c0657607f821691505b60208210811415611c2757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c4157611c41611c48565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461045857600080fd5b801515811461045857600080fdfea2646970667358221220e339e9a7d3b9f0aa7491fc9390f9a8c9ed67e7f2dfaa963e986f116efdd9325564736f6c63430008000033
Smart Contracts contract page background

Checkout more smart contracts

    Ethereum  logo

    SHILAINU

    Verified

    The following smart contract is the SHILAINU token contract, which is an ERC20 token with a total supply of 1 trillion. It includes features such as transaction limits, fees, and automatic liquidity provision. The contract also has a blacklist mode and the ability to set fee and transaction exemptions for specific addresses. The purpose of the contract is to provide a decentralized currency for the Shiba Inu community.

    0x20c3fa331a385b63ee39137e99d0cf2db142fce1
    Copied
    • Verified
    • Fungible Token
    • ERC20
    Ethereum  logo

    Token

    Verified

    The following smart contract is a token contract that implements the ERC20 standard. It includes features such as a fee system, wallet and transaction limits, and liquidity provision. The contract also allows for the destruction of tokens through a fee system. The contract is designed to be used with the Uniswap decentralized exchange.

    0xd015422879a1308ba557510345e944b912b9ab73
    Copied
    • Verified
    Ethereum  logo

    OptimizedTransparentUpgradeableProxy

    Verified

    This contract is a proxy and the implementation details are not yet known.

    0x644192291cc835a93d6330b24ea5f5fedd0eef9e
    Copied
    • Verified
    • Proxy
Section background image

Build blockchain magic

Alchemy combines the most powerful web3 developer products and tools with resources, community and legendary support.

Get your API key