This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- eTaxCRUD
- Optimization enabled
- false
- Compiler version
- v0.8.14+commit.80d49f37
- EVM Version
- london
- Verified at
- 2023-01-23T02:57:17.921663Z
project:/contracts/eTaxCRUD.sol
//SPDX-License-Identifier: MIT pragma solidity ^0.8.1; contract eTaxCRUD { struct TimeTokenStruct { bytes32 timeTokenHash; uint index; } mapping(address => bytes32[]) private addressStruct; mapping(bytes32 => TimeTokenStruct) private timeTokenStruct; bytes32[] private timeTokenIndex; event LogNewTimeTokenMTM (address indexed account, bytes32 timeTokenHash); event LogNewTimeToken (bytes32 indexed timeToken, uint index, bytes32 timeTokenHash); function isTimeToken(bytes32 timeToken) public view returns(bool isIndeed) { if(timeTokenIndex.length == 0) return false; return (timeTokenIndex[timeTokenStruct[timeToken].index] == timeToken); } function insertTimeToken( bytes32 timeToken, bytes32 timeTokenHash) public returns(uint index) { if(isTimeToken(timeToken)) revert('Duplicated TimeToken in this contract.'); timeTokenStruct[timeToken].timeTokenHash = timeTokenHash; timeTokenIndex.push(timeToken); timeTokenStruct[timeToken].index = timeTokenIndex.length - 1; emit LogNewTimeToken( timeToken, timeTokenStruct[timeToken].index, timeTokenHash); return timeTokenIndex.length-1; } function insertTimeTokenMTM( address account, bytes32 timeTokenHash) public returns(uint index) { // addressStruct addressStruct[account].push(timeTokenHash); emit LogNewTimeTokenMTM( account, timeTokenHash); return addressStruct[account].length; } function getTimeToken(bytes32 timeToken) public view returns(bytes32 timeTokenHash, uint index) { if(!isTimeToken(timeToken)) revert('There is no TimeToken in this contract.'); return( timeTokenStruct[timeToken].timeTokenHash, timeTokenStruct[timeToken].index); } function getTimeTokenCount() public view returns(uint count) { return timeTokenIndex.length; } function getTimeTokenAtIndex(uint index) public view returns(bytes32 timeToken) { return timeTokenIndex[index]; } function getTimeTokenMTMCount(address account) public view returns (uint) { return addressStruct[account].length; } function getTimeTokenMTMValue(address account, uint index) public view returns (bytes32) { return addressStruct[account][index]; } }
Contract ABI
[{"type":"event","name":"LogNewTimeToken","inputs":[{"type":"bytes32","name":"timeToken","internalType":"bytes32","indexed":true},{"type":"uint256","name":"index","internalType":"uint256","indexed":false},{"type":"bytes32","name":"timeTokenHash","internalType":"bytes32","indexed":false}],"anonymous":false},{"type":"event","name":"LogNewTimeTokenMTM","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"bytes32","name":"timeTokenHash","internalType":"bytes32","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"timeTokenHash","internalType":"bytes32"},{"type":"uint256","name":"index","internalType":"uint256"}],"name":"getTimeToken","inputs":[{"type":"bytes32","name":"timeToken","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"timeToken","internalType":"bytes32"}],"name":"getTimeTokenAtIndex","inputs":[{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"count","internalType":"uint256"}],"name":"getTimeTokenCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTimeTokenMTMCount","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"getTimeTokenMTMValue","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"index","internalType":"uint256"}],"name":"insertTimeToken","inputs":[{"type":"bytes32","name":"timeToken","internalType":"bytes32"},{"type":"bytes32","name":"timeTokenHash","internalType":"bytes32"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"index","internalType":"uint256"}],"name":"insertTimeTokenMTM","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bytes32","name":"timeTokenHash","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"isIndeed","internalType":"bool"}],"name":"isTimeToken","inputs":[{"type":"bytes32","name":"timeToken","internalType":"bytes32"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b50610acc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a1923a0c1161005b578063a1923a0c1461014e578063c39714ca1461016c578063f8c973f91461019c578063fb3061b4146101cc57610088565b80631e84079e1461008d578063604b5ddb146100bd57806373d12242146100ed578063867cdc581461011e575b600080fd5b6100a760048036038101906100a29190610618565b6101fc565b6040516100b4919061065e565b60405180910390f35b6100d760048036038101906100d29190610703565b610224565b6040516100e49190610752565b60405180910390f35b6101076004803603810190610102919061076d565b610323565b60405161011592919061079a565b60405180910390f35b610138600480360381019061013391906107c3565b6103a5565b604051610145919061065e565b60405180910390f35b61015661040a565b6040516101639190610752565b60405180910390f35b61018660048036038101906101819190610803565b610417565b6040516101939190610752565b60405180910390f35b6101b660048036038101906101b19190610843565b61053c565b6040516101c39190610752565b60405180910390f35b6101e660048036038101906101e1919061076d565b610587565b6040516101f3919061088b565b60405180910390f35b600060028281548110610212576102116108a6565b5b90600052602060002001549050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150558273ffffffffffffffffffffffffffffffffffffffff167f58227cbc3dadbd557d45ae62f92c72c5366b3f55db7fc61591606cac48aad950836040516102d1919061065e565b60405180910390a26000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905092915050565b60008061032f83610587565b61036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036590610958565b60405180910390fd5b6001600084815260200190815260200160002060000154600160008581526020019081526020016000206001015491509150915091565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103f7576103f66108a6565b5b9060005260206000200154905092915050565b6000600280549050905090565b600061042283610587565b15610462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610459906109ea565b60405180910390fd5b816001600085815260200190815260200160002060000181905550600283908060018154018082558091505060019003906000526020600020016000909190919091505560016002805490506104b89190610a39565b6001600085815260200190815260200160002060010181905550827f7f2747ad7fa64c93409ce7dec8a323b69a03a041907f710b51152f101b24096d60016000868152602001908152602001600020600101548460405161051a929190610a6d565b60405180910390a260016002805490506105349190610a39565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000806002805490500361059e57600090506105d8565b8160026001600085815260200190815260200160002060010154815481106105c9576105c86108a6565b5b90600052602060002001541490505b919050565b600080fd5b6000819050919050565b6105f5816105e2565b811461060057600080fd5b50565b600081359050610612816105ec565b92915050565b60006020828403121561062e5761062d6105dd565b5b600061063c84828501610603565b91505092915050565b6000819050919050565b61065881610645565b82525050565b6000602082019050610673600083018461064f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106a482610679565b9050919050565b6106b481610699565b81146106bf57600080fd5b50565b6000813590506106d1816106ab565b92915050565b6106e081610645565b81146106eb57600080fd5b50565b6000813590506106fd816106d7565b92915050565b6000806040838503121561071a576107196105dd565b5b6000610728858286016106c2565b9250506020610739858286016106ee565b9150509250929050565b61074c816105e2565b82525050565b60006020820190506107676000830184610743565b92915050565b600060208284031215610783576107826105dd565b5b6000610791848285016106ee565b91505092915050565b60006040820190506107af600083018561064f565b6107bc6020830184610743565b9392505050565b600080604083850312156107da576107d96105dd565b5b60006107e8858286016106c2565b92505060206107f985828601610603565b9150509250929050565b6000806040838503121561081a576108196105dd565b5b6000610828858286016106ee565b9250506020610839858286016106ee565b9150509250929050565b600060208284031215610859576108586105dd565b5b6000610867848285016106c2565b91505092915050565b60008115159050919050565b61088581610870565b82525050565b60006020820190506108a0600083018461087c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f5468657265206973206e6f2054696d65546f6b656e20696e207468697320636f60008201527f6e74726163742e00000000000000000000000000000000000000000000000000602082015250565b60006109426027836108d5565b915061094d826108e6565b604082019050919050565b6000602082019050818103600083015261097181610935565b9050919050565b7f4475706c6963617465642054696d65546f6b656e20696e207468697320636f6e60008201527f74726163742e0000000000000000000000000000000000000000000000000000602082015250565b60006109d46026836108d5565b91506109df82610978565b604082019050919050565b60006020820190508181036000830152610a03816109c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a44826105e2565b9150610a4f836105e2565b925082821015610a6257610a61610a0a565b5b828203905092915050565b6000604082019050610a826000830185610743565b610a8f602083018461064f565b939250505056fea26469706673582212201f5de1ae55e2d6b933d4d705724bcd6e01033c0f6963c302211e20393157579e64736f6c634300080e0033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063a1923a0c1161005b578063a1923a0c1461014e578063c39714ca1461016c578063f8c973f91461019c578063fb3061b4146101cc57610088565b80631e84079e1461008d578063604b5ddb146100bd57806373d12242146100ed578063867cdc581461011e575b600080fd5b6100a760048036038101906100a29190610618565b6101fc565b6040516100b4919061065e565b60405180910390f35b6100d760048036038101906100d29190610703565b610224565b6040516100e49190610752565b60405180910390f35b6101076004803603810190610102919061076d565b610323565b60405161011592919061079a565b60405180910390f35b610138600480360381019061013391906107c3565b6103a5565b604051610145919061065e565b60405180910390f35b61015661040a565b6040516101639190610752565b60405180910390f35b61018660048036038101906101819190610803565b610417565b6040516101939190610752565b60405180910390f35b6101b660048036038101906101b19190610843565b61053c565b6040516101c39190610752565b60405180910390f35b6101e660048036038101906101e1919061076d565b610587565b6040516101f3919061088b565b60405180910390f35b600060028281548110610212576102116108a6565b5b90600052602060002001549050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150558273ffffffffffffffffffffffffffffffffffffffff167f58227cbc3dadbd557d45ae62f92c72c5366b3f55db7fc61591606cac48aad950836040516102d1919061065e565b60405180910390a26000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905092915050565b60008061032f83610587565b61036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036590610958565b60405180910390fd5b6001600084815260200190815260200160002060000154600160008581526020019081526020016000206001015491509150915091565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103f7576103f66108a6565b5b9060005260206000200154905092915050565b6000600280549050905090565b600061042283610587565b15610462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610459906109ea565b60405180910390fd5b816001600085815260200190815260200160002060000181905550600283908060018154018082558091505060019003906000526020600020016000909190919091505560016002805490506104b89190610a39565b6001600085815260200190815260200160002060010181905550827f7f2747ad7fa64c93409ce7dec8a323b69a03a041907f710b51152f101b24096d60016000868152602001908152602001600020600101548460405161051a929190610a6d565b60405180910390a260016002805490506105349190610a39565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000806002805490500361059e57600090506105d8565b8160026001600085815260200190815260200160002060010154815481106105c9576105c86108a6565b5b90600052602060002001541490505b919050565b600080fd5b6000819050919050565b6105f5816105e2565b811461060057600080fd5b50565b600081359050610612816105ec565b92915050565b60006020828403121561062e5761062d6105dd565b5b600061063c84828501610603565b91505092915050565b6000819050919050565b61065881610645565b82525050565b6000602082019050610673600083018461064f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106a482610679565b9050919050565b6106b481610699565b81146106bf57600080fd5b50565b6000813590506106d1816106ab565b92915050565b6106e081610645565b81146106eb57600080fd5b50565b6000813590506106fd816106d7565b92915050565b6000806040838503121561071a576107196105dd565b5b6000610728858286016106c2565b9250506020610739858286016106ee565b9150509250929050565b61074c816105e2565b82525050565b60006020820190506107676000830184610743565b92915050565b600060208284031215610783576107826105dd565b5b6000610791848285016106ee565b91505092915050565b60006040820190506107af600083018561064f565b6107bc6020830184610743565b9392505050565b600080604083850312156107da576107d96105dd565b5b60006107e8858286016106c2565b92505060206107f985828601610603565b9150509250929050565b6000806040838503121561081a576108196105dd565b5b6000610828858286016106ee565b9250506020610839858286016106ee565b9150509250929050565b600060208284031215610859576108586105dd565b5b6000610867848285016106c2565b91505092915050565b60008115159050919050565b61088581610870565b82525050565b60006020820190506108a0600083018461087c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f5468657265206973206e6f2054696d65546f6b656e20696e207468697320636f60008201527f6e74726163742e00000000000000000000000000000000000000000000000000602082015250565b60006109426027836108d5565b915061094d826108e6565b604082019050919050565b6000602082019050818103600083015261097181610935565b9050919050565b7f4475706c6963617465642054696d65546f6b656e20696e207468697320636f6e60008201527f74726163742e0000000000000000000000000000000000000000000000000000602082015250565b60006109d46026836108d5565b91506109df82610978565b604082019050919050565b60006020820190508181036000830152610a03816109c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a44826105e2565b9150610a4f836105e2565b925082821015610a6257610a61610a0a565b5b828203905092915050565b6000604082019050610a826000830185610743565b610a8f602083018461064f565b939250505056fea26469706673582212201f5de1ae55e2d6b933d4d705724bcd6e01033c0f6963c302211e20393157579e64736f6c634300080e0033