[ { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "Token__AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "Token__PermissionDenied", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bond", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnByBond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintByBond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50610ae2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806306fdde03146100b4578063095ea7b3146100d257806318160ddd146100f55780631b5ad8b51461010757806323b872dd1461011c578063313ce5671461012f57806364c9ec6f1461013e5780637029144c1461016357806370a082311461017657806395d89b411461019f578063a9059cbb146101a7578063dd62ed3e146101ba578063f4efe8f2146101cd575b600080fd5b6100bc6101e0565b6040516100c9919061071d565b60405180910390f35b6100e56100e0366004610788565b610272565b60405190151581526020016100c9565b6002545b6040519081526020016100c9565b61011a610115366004610788565b61028c565b005b6100e561012a3660046107b2565b6102cb565b604051601281526020016100c9565b6005546101569061010090046001600160a01b031681565b6040516100c991906107ee565b61011a61017136600461084a565b6102ef565b6100f96101843660046108b5565b6001600160a01b031660009081526020819052604090205490565b6100bc610358565b6100e56101b5366004610788565b610367565b6100f96101c83660046108d7565b610375565b61011a6101db366004610788565b6103a0565b6060600380546101ef9061090a565b80601f016020809104026020016040519081016040528092919081815260200182805461021b9061090a565b80156102685780601f1061023d57610100808354040283529160200191610268565b820191906000526020600020905b81548152906001019060200180831161024b57829003601f168201915b5050505050905090565b6000336102808185856103f8565b60019150505b92915050565b6005546001600160a01b036101009091041633146102bd576040516340c4adfd60e11b815260040160405180910390fd5b6102c7828261040a565b5050565b6000336102d9858285610449565b6102e485858561049c565b506001949350505050565b60055460ff1615610312576040516287544560e51b815260040160405180910390fd5b6005805460ff19166001179055600361032c8486836109aa565b50600461033a8284836109aa565b505060058054610100600160a81b0319163361010002179055505050565b6060600480546101ef9061090a565b60003361028081858561049c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b036101009091041633146103d1576040516340c4adfd60e11b815260040160405180910390fd5b6005546103ee90839061010090046001600160a01b031683610449565b6102c782826104fb565b6104058383836001610531565b505050565b6001600160a01b03821661043d57600060405163ec442f0560e01b815260040161043491906107ee565b60405180910390fd5b6102c760008383610606565b60006104558484610375565b90506000198114610496578181101561048757828183604051637dc7a0d960e11b815260040161043493929190610a6a565b61049684848484036000610531565b50505050565b6001600160a01b0383166104c6576000604051634b637e8f60e11b815260040161043491906107ee565b6001600160a01b0382166104f057600060405163ec442f0560e01b815260040161043491906107ee565b610405838383610606565b6001600160a01b038216610525576000604051634b637e8f60e11b815260040161043491906107ee565b6102c782600083610606565b6001600160a01b03841661055b57600060405163e602df0560e01b815260040161043491906107ee565b6001600160a01b038316610585576000604051634a1406b160e11b815260040161043491906107ee565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561049657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105f891815260200190565b60405180910390a350505050565b6001600160a01b0383166106315780600260008282546106269190610a8b565b909155506106909050565b6001600160a01b038316600090815260208190526040902054818110156106715783818360405163391434e360e21b815260040161043493929190610a6a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106ac576002805482900390556106cb565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161071091815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561074b5785810183015185820160400152820161072f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078357600080fd5b919050565b6000806040838503121561079b57600080fd5b6107a48361076c565b946020939093013593505050565b6000806000606084860312156107c757600080fd5b6107d08461076c565b92506107de6020850161076c565b9150604084013590509250925092565b6001600160a01b0391909116815260200190565b60008083601f84011261081457600080fd5b5081356001600160401b0381111561082b57600080fd5b60208301915083602082850101111561084357600080fd5b9250929050565b6000806000806040858703121561086057600080fd5b84356001600160401b038082111561087757600080fd5b61088388838901610802565b9096509450602087013591508082111561089c57600080fd5b506108a987828801610802565b95989497509550505050565b6000602082840312156108c757600080fd5b6108d08261076c565b9392505050565b600080604083850312156108ea57600080fd5b6108f38361076c565b91506109016020840161076c565b90509250929050565b600181811c9082168061091e57607f821691505b60208210810361093e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610405576000816000526020600020601f850160051c810160208610156109835750805b601f850160051c820191505b818110156109a25782815560010161098f565b505050505050565b6001600160401b038311156109c1576109c1610944565b6109d5836109cf835461090a565b8361095a565b6000601f841160018114610a0957600085156109f15750838201355b600019600387901b1c1916600186901b178355610a63565b600083815260209020601f19861690835b82811015610a3a5786850135825560209485019460019092019101610a1a565b5086821015610a575760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561028657634e487b7160e01b600052601160045260246000fdfea264697066735822122040ccef35abd8d6e2d345f15183bd53082d08a30029aa418a583161485778c8fe64736f6c63430008180033