Transaction Hash:
Block:
19296688 at Feb-24-2024 09:55:59 AM +UTC
Transaction Fee:
0.001276722481112055 ETH
$2.88
Gas Used:
49,383 Gas / 25.853481585 Gwei
Emitted Events:
403 |
0xbb44e3349c23cc430cae6ebbaf0256c9f2a1872f.0x700447ec4170a8ebc6b67182ac966faf6dff7d46dc24a1a4a7f0a98e84db9cec( 0x700447ec4170a8ebc6b67182ac966faf6dff7d46dc24a1a4a7f0a98e84db9cec, 0x000000000000000000000000c71254ee6fe264fa1dfc16ce2067469d775b55ac, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000008effaf72c908b )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 88.159253009650298909 Eth | 88.159253059033298909 Eth | 0.000000049383 | |
0x5657C73f...8eb902091 |
0.007031383123278829 Eth
Nonce: 107
|
0.003238999660726123 Eth
Nonce: 108
| 0.003792383462552706 | ||
0xbb44E334...9f2a1872f | (Coinhako 4) | 211.995285355416481499 Eth | 211.99780101639792215 Eth | 0.002515660981440651 |
Execution Trace
ETH 0.002515660981440651
0xc71254ee6fe264fa1dfc16ce2067469d775b55ac.CALL( )
ETH 0.002515660981440651
0xa9af78d2bfa0f8cdf2ff04d77367faacaf9f4e05.DELEGATECALL( )
-
Settings.getByKey( _key=0000000000000000000000000000000000000000000000000000000000000001 ) => ( 0x5E01F24a81dD93ecFf57AFdEDB9A1383b289542F )
ETH 0.002515660981440651
0x5e01f24a81dd93ecff57afdedb9a1383b289542f.DELEGATECALL( )
-
Settings.getByKey( _key=0000000000000000000000000000000000000000000000000000000000000000 ) => ( 0x742FC103631302EC97E3CfcAbb13514599055858 )
ETH 0.002515660981440651
0x742fc103631302ec97e3cfcabb13514599055858.DELEGATECALL( )
- ETH 0.002515660981440651
Coinhako 4.CALL( )
- ETH 0.002515660981440651
-
-
{"Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity \u003e=0.6.0 \u003c0.8.0;\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n _owner = msg.sender;\n emit OwnershipTransferred(address(0), msg.sender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(_owner == msg.sender, \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}"},"Settings.sol":{"content":"pragma solidity ^0.6.2;\n\nimport \u0027./Ownable.sol\u0027;\n\ncontract Settings is Ownable {\n\n constructor() public {\n }\n \n \n struct Entry{\n uint index; // index start 1 to keyList.length\n address value;\n }\n \n mapping(bytes32 =\u003e Entry) internal map;\n bytes32[] internal keyList;\n\n function add(bytes32 _key, address _value) onlyOwner public {\n Entry storage entry = map[_key];\n entry.value = _value;\n if(entry.index \u003e 0){ // entry exists\n // do nothing\n return;\n }else { // new entry\n keyList.push(_key);\n uint keyListIndex = keyList.length - 1;\n entry.index = keyListIndex + 1;\n }\n }\n\n function remove(bytes32 _key) onlyOwner public {\n Entry storage entry = map[_key];\n require(entry.index != 0); // entry not exist\n require(entry.index \u003c= keyList.length); // invalid index value\n \n // Move an last element of array into the vacated key slot.\n uint keyListIndex = entry.index - 1;\n uint keyListLastIndex = keyList.length - 1;\n map[keyList[keyListLastIndex]].index = keyListIndex + 1;\n keyList[keyListIndex] = keyList[keyListLastIndex];\n keyList.pop();\n delete map[_key];\n }\n \n function size() public view returns (uint) {\n return uint(keyList.length);\n }\n \n function contains(bytes32 _key) public view returns (bool) {\n return map[_key].index \u003e 0;\n }\n \n function getByKey(bytes32 _key) public view returns (address) {\n return map[_key].value;\n }\n \n function getByIndex(uint _index) public view returns (address) {\n require(_index \u003e= 0);\n require(_index \u003c keyList.length);\n return map[keyList[_index]].value;\n }\n\n function getKeys() public view returns ( bytes32[] memory) {\n return keyList;\n }\n\n}"}}