eth-faucet

Gas token gifter with controls from time intervals, amounts and access
Log | Files | Refs | README

commit e7f0c9fbfd14fa9424410b96247ca452d6f60862
parent c5052d41fd8cc0322a9d3da1e77b4d6f4404f102
Author: lash <dev@holbrook.no>
Date:   Fri,  4 Aug 2023 18:09:28 +0100

Add readme, implement ACL for period checker

Diffstat:
AREADME.md | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpython/eth_faucet/data/EthFaucet.bin | 4++--
Mpython/eth_faucet/data/EthFaucet.metadata.json | 2+-
Mpython/eth_faucet/data/PeriodSimple.bin | 4++--
Mpython/eth_faucet/data/PeriodSimple.json | 2+-
Mpython/eth_faucet/data/PeriodSimple.metadata.json | 2+-
Mpython/eth_faucet/faucet.py | 1-
Mpython/setup.cfg | 2+-
Msolidity/EthFaucet.sol | 2+-
Msolidity/PeriodSimple.sol | 34++++++++++++++++++++++++++++++++--
10 files changed, 94 insertions(+), 12 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,53 @@ +# eth-faucet + +A faucet implementation for ETH gas tokens, implementing the [CIC Faucet](https://git.grassecon.net/cicnet/cic-contracts#faucet) interface. + + +## Setup + +Firstly, the faucet contract must be funded before use. It can be funded simply by sending gas tokens to it as a normal transaction. + +Secondly, the amount of gas tokens to emit must be changed using the `setAmount()` method. Only the contract "owner" or a "writer" (see below) may change the amount. The amount can be changed again at any time, until sealed. + + +## Usage + +To receive gas tokens from the faucet, the method `giveTo(address)` or `gimme()` is used. The latter will send gas tokens to the address that signed the transaction. + + +## Restricting accounts + +Usage of the faucet may be restricted by which addresses can request gas tokens from it. + +The list must be provided by a contract implementing the [CIC ACL](https://git.grassecon.net/cicnet/cic-contracts#acl) interface. The contract to use is defined using the `setRegistry()` method. + + +## Restricting usage frequency + +Usage of the faucet may also be restricted by time delay. + +The usage control must be provided by a smart contract implementing the [CIC Throttle](https://git.grassecon.net/cicnet/cic-contracts#throttle) interface. The contract to use is defined using the `setPeriodChecker()` method. + + +### Example usage frequency controller + +The `PeriodSimple` contract provided by this repository demonstrates an implementation of the usage frequency restriction. + +Only a single address has access to call the `poke(address)` method. This address is typically the contract providing the resource, and is defined by calling the `setPoker(address)` method. + +The number of seconds that must pass between each usage can be set using `setPeriod()` + +Using `setBalanceThreshold()` a maximum balance can be defined, to disallow use for addresses holding higher balances. (Note that this does not provide any real protection against agents, for example non-custioal wallets, that can forward the gas tokens at will). + + +## Sealing the contracts + +The faucet contract implements the [CIC Seal](https://git.grassecon.net/cicnet/cic-contracts#seal) interface to enable sealing the parameters defining its behavior. + +The parameters that can be sealed are: + +- *Registry*, blocking the use of the `setRegistry()` method. +- *Period checker*, blocking the use of the `setPeriodChecker()` method. +- *Value*, blocking the use of the `setAmount()` method. + +The PeriodSimple contract does not implement the seal, but may discard ownedship through the [EIP173](https://eips.ethereum.org/EIPS/eip-173) interface, after which no parameters changing behavior can be modified. diff --git a/python/eth_faucet/data/EthFaucet.bin b/python/eth_faucet/data/EthFaucet.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061210b806100606000396000f3fe60806040526004361061011f576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100b2578063d6eca01e11610081578063d6eca01e14610399578063de82efb4146103c2578063eec7faa1146103ed578063f18e126a14610418578063fc0c546a1461045557610126565b80638da5cb5b146102dd578063a91ee0dc14610308578063c23697a814610331578063cb10d59a1461036e57610126565b80633b1bd134116100ee5780633b1bd134146101fb57806363e4bff4146102385780637b1039991461027557806386fe212d146102a057610126565b806301ffc9a71461012b57806318cbbcfc14610168578063271f88b41461019357806331a5995d146101d057610126565b3661012657005b600080fd5b34801561013757600080fd5b50610152600480360381019061014d9190611961565b610480565b60405161015f91906119a9565b60405180910390f35b34801561017457600080fd5b5061017d6105d4565b60405161018a91906119dd565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b59190611a24565b6105d9565b6040516101c791906119dd565b60405180910390f35b3480156101dc57600080fd5b506101e56106ff565b6040516101f291906119dd565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d9190611aaf565b610705565b60405161022f91906119dd565b60405180910390f35b34801561024457600080fd5b5061025f600480360381019061025a9190611aaf565b610880565b60405161026c91906119dd565b60405180910390f35b34801561028157600080fd5b5061028a61094f565b6040516102979190611aeb565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190611a24565b610975565b6040516102d491906119dd565b60405180910390f35b3480156102e957600080fd5b506102f2610a9b565b6040516102ff9190611aeb565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611aaf565b610abf565b005b34801561033d57600080fd5b5061035860048036038101906103539190611aaf565b610c5c565b60405161036591906119a9565b60405180910390f35b34801561037a57600080fd5b50610383610c9a565b6040516103909190611aeb565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190611aaf565b610cc0565b005b3480156103ce57600080fd5b506103d7610e5d565b6040516103e491906119dd565b60405180910390f35b3480156103f957600080fd5b50610402610f2a565b60405161040f91906119dd565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190611aaf565b610f34565b60405161044c91906119dd565b60405180910390f35b34801561046157600080fd5b5061046a6110af565b6040516104779190611aeb565b60405180910390f35b60006301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036104d457600190506105cf565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361052657600190506105cf565b631a3ac6347c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361057857600190506105cf565b630d7491f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105ca57600190506105cf565b600090505b919050565b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066190611b63565b60405180910390fd5b6000600460ff1660035416146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611bcf565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e6004546040516106ed91906119dd565b60405180910390a16004549050919050565b60035481565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016107549190611aeb565b6040516020818303038152906040527fab73e316000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107de9190611c60565b6000604051808303816000865af19150503d806000811461081b576040519150601f19603f3d011682016040523d82523d6000602084013e610820565b606091505b50809250819350505081610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611cc3565b60405180910390fd5b8061087390611d22565b6001900492505050919050565b600061088b826110b4565b61089457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156108dc573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26162814817e23ec5035d6a2edc6c422da2da2119e27cfca6be65cc2dc55ca4c60045460405161093d91906119dd565b60405180910390a36004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600882106109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b190611dd5565b60405180910390fd5b6000600354831614610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611e41565b60405180910390fd5b816003600082825417925050819055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a89929190611e61565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490611b63565b60405180910390fd5b6000600160ff166003541614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90611bcf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c51929190611e61565b60405180910390a250565b6000610c67826113f8565b610c745760009050610c95565b610c7d8261166c565b610c8a5760009050610c95565b610c926118e0565b90505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611b63565b60405180910390fd5b6000600260ff166003541614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090611bcf565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e52929190611e61565b60405180910390a250565b6000610e68336110b4565b610e7157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610eb9573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f26162814817e23ec5035d6a2edc6c422da2da2119e27cfca6be65cc2dc55ca4c600454604051610f1a91906119dd565b60405180910390a3600454905090565b6000600454905090565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610f839190611aeb565b6040516020818303038152906040527fc3173774000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161100d9190611c60565b6000604051808303816000865af19150503d806000811461104a576040519150601f19603f3d011682016040523d82523d6000602084013e61104f565b606091505b50809250819350505081611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108f90611cc3565b60405180910390fd5b806110a290611d22565b6001900492505050919050565b600081565b60008060606110c16118e0565b611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790611ed6565b60405180910390fd5b6111098461166c565b611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90611f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036111a9576001925050506113f3565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016111f39190611aeb565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161127d9190611c60565b6000604051808303816000865af19150503d80600081146112ba576040519150601f19603f3d011682016040523d82523d6000602084013e6112bf565b606091505b50809250819350505081611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff90611fae565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f815181106113405761133f611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612049565b60405180910390fd5b6001925050505b919050565b6000806060600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361145e57600192505050611667565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016114a89190611aeb565b6040516020818303038152906040527fc23697a8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115329190611c60565b6000604051808303816000865af19150503d806000811461156f576040519150601f19603f3d011682016040523d82523d6000602084013e611574565b606091505b508092508193505050816115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490611fae565b60405180910390fd5b60017f01000000000000000000000000000000000000000000000000000000000000000281601f815181106115f5576115f4611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b919050565b6000806060600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d2576001925050506118db565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405160240161171c9190611aeb565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117a69190611c60565b6000604051808303816000865af19150503d80600081146117e3576040519150601f19603f3d011682016040523d82523d6000602084013e6117e8565b606091505b50809250819350505081611831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611828906120b5565b60405180910390fd5b60017f01000000000000000000000000000000000000000000000000000000000000000281601f8151811061186957611868611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b919050565b60003073ffffffffffffffffffffffffffffffffffffffff16316004541115905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193e81611909565b811461194957600080fd5b50565b60008135905061195b81611935565b92915050565b60006020828403121561197757611976611904565b5b60006119858482850161194c565b91505092915050565b60008115159050919050565b6119a38161198e565b82525050565b60006020820190506119be600083018461199a565b92915050565b6000819050919050565b6119d7816119c4565b82525050565b60006020820190506119f260008301846119ce565b92915050565b611a01816119c4565b8114611a0c57600080fd5b50565b600081359050611a1e816119f8565b92915050565b600060208284031215611a3a57611a39611904565b5b6000611a4884828501611a0f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a7c82611a51565b9050919050565b611a8c81611a71565b8114611a9757600080fd5b50565b600081359050611aa981611a83565b92915050565b600060208284031215611ac557611ac4611904565b5b6000611ad384828501611a9a565b91505092915050565b611ae581611a71565b82525050565b6000602082019050611b006000830184611adc565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000611b4d600d83611b06565b9150611b5882611b17565b602082019050919050565b60006020820190508181036000830152611b7c81611b40565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b6000611bb9600a83611b06565b9150611bc482611b83565b602082019050919050565b60006020820190508181036000830152611be881611bac565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611c23578082015181840152602081019050611c08565b60008484015250505050565b6000611c3a82611bef565b611c448185611bfa565b9350611c54818560208601611c05565b80840191505092915050565b6000611c6c8284611c2f565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b6000611cad601883611b06565b9150611cb882611c77565b602082019050919050565b60006020820190508181036000830152611cdc81611ca0565b9050919050565b6000819050602082019050919050565b6000819050919050565b6000611d098251611cf3565b80915050919050565b60008160020a8302905092915050565b6000611d2d82611bef565b82611d3784611ce3565b9050611d4281611cfd565b92506020821015611d8257611d7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611d12565b831692505b5050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000611dbf601183611b06565b9150611dca82611d89565b602082019050919050565b60006020820190508181036000830152611dee81611db2565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000611e2b601283611b06565b9150611e3682611df5565b602082019050919050565b60006020820190508181036000830152611e5a81611e1e565b9050919050565b6000604082019050611e766000830185611adc565b611e836020830184611adc565b9392505050565b7f4552525f494e53554646494349454e545f42414c414e43450000000000000000600082015250565b6000611ec0601883611b06565b9150611ecb82611e8a565b602082019050919050565b60006020820190508181036000830152611eef81611eb3565b9050919050565b7f4552525f4e4f545f494e5f57484954454c495354000000000000000000000000600082015250565b6000611f2c601483611b06565b9150611f3782611ef6565b602082019050919050565b60006020820190508181036000830152611f5b81611f1f565b9050919050565b7f4552525f504552494f445f4241434b454e440000000000000000000000000000600082015250565b6000611f98601283611b06565b9150611fa382611f62565b602082019050919050565b60006020820190508181036000830152611fc781611f8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b6000612033601083611b06565b915061203e82611ffd565b602082019050919050565b6000602082019050818103600083015261206281612026565b9050919050565b7f4552525f52454749535452595f4241434b454e44000000000000000000000000600082015250565b600061209f601483611b06565b91506120aa82612069565b602082019050919050565b600060208201905081810360008301526120ce81612092565b905091905056fea2646970667358221220ab692b03ccdb6f60f3f6a26cca51cb61be6be9b674b9adf480540fee9e922b2464736f6c63430008130033 -\ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061210b806100606000396000f3fe60806040526004361061011f576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100b2578063d6eca01e11610081578063d6eca01e14610399578063de82efb4146103c2578063eec7faa1146103ed578063f18e126a14610418578063fc0c546a1461045557610126565b80638da5cb5b146102dd578063a91ee0dc14610308578063c23697a814610331578063cb10d59a1461036e57610126565b80633b1bd134116100ee5780633b1bd134146101fb57806363e4bff4146102385780637b1039991461027557806386fe212d146102a057610126565b806301ffc9a71461012b57806318cbbcfc14610168578063271f88b41461019357806331a5995d146101d057610126565b3661012657005b600080fd5b34801561013757600080fd5b50610152600480360381019061014d9190611961565b610480565b60405161015f91906119a9565b60405180910390f35b34801561017457600080fd5b5061017d6105d4565b60405161018a91906119dd565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b59190611a24565b6105d9565b6040516101c791906119dd565b60405180910390f35b3480156101dc57600080fd5b506101e56106ff565b6040516101f291906119dd565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d9190611aaf565b610705565b60405161022f91906119dd565b60405180910390f35b34801561024457600080fd5b5061025f600480360381019061025a9190611aaf565b610880565b60405161026c91906119dd565b60405180910390f35b34801561028157600080fd5b5061028a61094f565b6040516102979190611aeb565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190611a24565b610975565b6040516102d491906119dd565b60405180910390f35b3480156102e957600080fd5b506102f2610a9b565b6040516102ff9190611aeb565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611aaf565b610abf565b005b34801561033d57600080fd5b5061035860048036038101906103539190611aaf565b610c5c565b60405161036591906119a9565b60405180910390f35b34801561037a57600080fd5b50610383610c9a565b6040516103909190611aeb565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190611aaf565b610cc0565b005b3480156103ce57600080fd5b506103d7610e5d565b6040516103e491906119dd565b60405180910390f35b3480156103f957600080fd5b50610402610f2a565b60405161040f91906119dd565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190611aaf565b610f34565b60405161044c91906119dd565b60405180910390f35b34801561046157600080fd5b5061046a6110af565b6040516104779190611aeb565b60405180910390f35b60006301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036104d457600190506105cf565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361052657600190506105cf565b631a3ac6347c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361057857600190506105cf565b630d7491f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036105ca57600190506105cf565b600090505b919050565b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066190611b63565b60405180910390fd5b6000600460ff1660035416146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611bcf565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e6004546040516106ed91906119dd565b60405180910390a16004549050919050565b60035481565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016107549190611aeb565b6040516020818303038152906040527fab73e316000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107de9190611c60565b6000604051808303816000865af19150503d806000811461081b576040519150601f19603f3d011682016040523d82523d6000602084013e610820565b606091505b50809250819350505081610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611cc3565b60405180910390fd5b8061087390611d22565b6001900492505050919050565b600061088b826110b4565b61089457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156108dc573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26162814817e23ec5035d6a2edc6c422da2da2119e27cfca6be65cc2dc55ca4c60045460405161093d91906119dd565b60405180910390a36004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600882106109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b190611dd5565b60405180910390fd5b6000600354831614610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611e41565b60405180910390fd5b816003600082825417925050819055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a89929190611e61565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490611b63565b60405180910390fd5b6000600160ff166003541614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90611bcf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c51929190611e61565b60405180910390a250565b6000610c67826113f8565b610c745760009050610c95565b610c7d8261166c565b610c8a5760009050610c95565b610c926118e0565b90505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611b63565b60405180910390fd5b6000600260ff166003541614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090611bcf565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547f829c15f635123f612942c5f6ba4c6c203609473dc8b2398f38ccda8866f6ff7d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e52929190611e61565b60405180910390a250565b6000610e68336110b4565b610e7157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610eb9573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f26162814817e23ec5035d6a2edc6c422da2da2119e27cfca6be65cc2dc55ca4c600454604051610f1a91906119dd565b60405180910390a3600454905090565b6000600454905090565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610f839190611aeb565b6040516020818303038152906040527fc3173774000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161100d9190611c60565b6000604051808303816000865af19150503d806000811461104a576040519150601f19603f3d011682016040523d82523d6000602084013e61104f565b606091505b50809250819350505081611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108f90611cc3565b60405180910390fd5b806110a290611d22565b6001900492505050919050565b600081565b60008060606110c16118e0565b611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790611ed6565b60405180910390fd5b6111098461166c565b611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90611f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036111a9576001925050506113f3565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016111f39190611aeb565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161127d9190611c60565b6000604051808303816000865af19150503d80600081146112ba576040519150601f19603f3d011682016040523d82523d6000602084013e6112bf565b606091505b50809250819350505081611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff90611fae565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f815181106113405761133f611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612049565b60405180910390fd5b6001925050505b919050565b6000806060600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361145e57600192505050611667565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516024016114a89190611aeb565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115329190611c60565b6000604051808303816000865af19150503d806000811461156f576040519150601f19603f3d011682016040523d82523d6000602084013e611574565b606091505b508092508193505050816115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490611fae565b60405180910390fd5b60017f01000000000000000000000000000000000000000000000000000000000000000281601f815181106115f5576115f4611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b919050565b6000806060600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d2576001925050506118db565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405160240161171c9190611aeb565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117a69190611c60565b6000604051808303816000865af19150503d80600081146117e3576040519150601f19603f3d011682016040523d82523d6000602084013e6117e8565b606091505b50809250819350505081611831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611828906120b5565b60405180910390fd5b60017f01000000000000000000000000000000000000000000000000000000000000000281601f8151811061186957611868611fce565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b919050565b60003073ffffffffffffffffffffffffffffffffffffffff16316004541115905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193e81611909565b811461194957600080fd5b50565b60008135905061195b81611935565b92915050565b60006020828403121561197757611976611904565b5b60006119858482850161194c565b91505092915050565b60008115159050919050565b6119a38161198e565b82525050565b60006020820190506119be600083018461199a565b92915050565b6000819050919050565b6119d7816119c4565b82525050565b60006020820190506119f260008301846119ce565b92915050565b611a01816119c4565b8114611a0c57600080fd5b50565b600081359050611a1e816119f8565b92915050565b600060208284031215611a3a57611a39611904565b5b6000611a4884828501611a0f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a7c82611a51565b9050919050565b611a8c81611a71565b8114611a9757600080fd5b50565b600081359050611aa981611a83565b92915050565b600060208284031215611ac557611ac4611904565b5b6000611ad384828501611a9a565b91505092915050565b611ae581611a71565b82525050565b6000602082019050611b006000830184611adc565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000611b4d600d83611b06565b9150611b5882611b17565b602082019050919050565b60006020820190508181036000830152611b7c81611b40565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b6000611bb9600a83611b06565b9150611bc482611b83565b602082019050919050565b60006020820190508181036000830152611be881611bac565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611c23578082015181840152602081019050611c08565b60008484015250505050565b6000611c3a82611bef565b611c448185611bfa565b9350611c54818560208601611c05565b80840191505092915050565b6000611c6c8284611c2f565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b6000611cad601883611b06565b9150611cb882611c77565b602082019050919050565b60006020820190508181036000830152611cdc81611ca0565b9050919050565b6000819050602082019050919050565b6000819050919050565b6000611d098251611cf3565b80915050919050565b60008160020a8302905092915050565b6000611d2d82611bef565b82611d3784611ce3565b9050611d4281611cfd565b92506020821015611d8257611d7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611d12565b831692505b5050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000611dbf601183611b06565b9150611dca82611d89565b602082019050919050565b60006020820190508181036000830152611dee81611db2565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000611e2b601283611b06565b9150611e3682611df5565b602082019050919050565b60006020820190508181036000830152611e5a81611e1e565b9050919050565b6000604082019050611e766000830185611adc565b611e836020830184611adc565b9392505050565b7f4552525f494e53554646494349454e545f42414c414e43450000000000000000600082015250565b6000611ec0601883611b06565b9150611ecb82611e8a565b602082019050919050565b60006020820190508181036000830152611eef81611eb3565b9050919050565b7f4552525f4e4f545f494e5f57484954454c495354000000000000000000000000600082015250565b6000611f2c601483611b06565b9150611f3782611ef6565b602082019050919050565b60006020820190508181036000830152611f5b81611f1f565b9050919050565b7f4552525f504552494f445f4241434b454e440000000000000000000000000000600082015250565b6000611f98601283611b06565b9150611fa382611f62565b602082019050919050565b60006020820190508181036000830152611fc781611f8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b6000612033601083611b06565b915061203e82611ffd565b602082019050919050565b6000602082019050818103600083015261206281612026565b9050919050565b7f4552525f52454749535452595f4241434b454e44000000000000000000000000600082015250565b600061209f601483611b06565b91506120aa82612069565b602082019050919050565b600060208201905081810360008301526120ce81612092565b905091905056fea2646970667358221220f14ab3d4d9a44b43ebda714c59f2db812f843e782d341e457ab8558fc0722a8464736f6c63430008130033 +\ No newline at end of file diff --git a/python/eth_faucet/data/EthFaucet.metadata.json b/python/eth_faucet/data/EthFaucet.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"FaucetAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Give","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_sealState","type":"uint256"},{"indexed":false,"internalType":"address","name":"_registry","type":"address"},{"indexed":false,"internalType":"address","name":"_periodChecker","type":"address"}],"name":"SealStateChange","type":"event"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gimme","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"giveTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"nextBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"nextTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodChecker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_v","type":"uint256"}],"name":"setAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_checker","type":"address"}],"name":"setPeriodChecker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"EthFaucet.sol":"EthFaucet"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"EthFaucet.sol":{"keccak256":"0x40a2da11fac1f893dfedc2d95e8648e850e6a94c4b4795681429895a97197cbf","license":"AGPL-3.0-or-later","urls":["bzz-raw://08937531624dc9b32e2e42486b9cc24b7d1198b3c5c3f3aa9636cd3e02885d7e","dweb:/ipfs/QmWrxcumJQCVgh5shM6MytUBvgVZMN8WERHuJoTGGikCGp"]}},"version":1} +{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"FaucetAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Give","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_sealState","type":"uint256"},{"indexed":false,"internalType":"address","name":"_registry","type":"address"},{"indexed":false,"internalType":"address","name":"_periodChecker","type":"address"}],"name":"SealStateChange","type":"event"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gimme","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"giveTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"nextBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"nextTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodChecker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_v","type":"uint256"}],"name":"setAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_checker","type":"address"}],"name":"setPeriodChecker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"EthFaucet.sol":"EthFaucet"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"EthFaucet.sol":{"keccak256":"0x7775eaa388b81feca34dfb765dc6ccdf8216148c90e686689bd1340547e8ee88","license":"AGPL-3.0-or-later","urls":["bzz-raw://acb652ac132bcf3b63819e7311e07ad65f982c4d470f322ef91f147d462e4559","dweb:/ipfs/QmPNUaLd4c23K1RcHYWqPSfw8ix8ZbK3PdgFXD8iDMo2Fg"]}},"version":1} diff --git a/python/eth_faucet/data/PeriodSimple.bin b/python/eth_faucet/data/PeriodSimple.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bbd806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100c6576000357c010000000000000000000000000000000000000000000000000000000090048063ab73e3161161008e578063ab73e3161461016f578063b1a997ac1461019f578063c23697a8146101cf578063c3173774146101ff578063ef78d4fd1461021d578063f4430dd81461023b576100c6565b80630f3a9f65146100cb5780634b6bdf1d146100e75780634ee577b41461010557806387020d6b146101355780638da5cb5b14610151575b600080fd5b6100e560048036038101906100e0919061085e565b610257565b005b6100ef610326565b6040516100fc91906108cc565b60405180910390f35b61011f600480360381019061011a9190610913565b61034c565b60405161012c919061094f565b60405180910390f35b61014f600480360381019061014a919061085e565b610364565b005b6101596103fd565b60405161016691906108cc565b60405180910390f35b61018960048036038101906101849190610913565b610421565b604051610196919061094f565b60405180910390f35b6101b960048036038101906101b49190610913565b610477565b6040516101c69190610985565b60405180910390f35b6101e960048036038101906101e49190610913565b610651565b6040516101f69190610985565b60405180910390f35b61020761077b565b604051610214919061094f565b60405180910390f35b610225610781565b604051610232919061094f565b60405180910390f35b61025560048036038101906102509190610913565b610787565b005b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dc906109fd565b60405180910390fd5b806002819055507faf2decb129b74e79e086ab3d8c7bb0399bfba530c01e74fe4130ab9784e115578160405161031b919061094f565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103bc57600080fd5b806003819055507f565196b96812774c1c5f73698d513cb6d8141ec4ecdbb428486d6ad64b4c81aa816040516103f2919061094f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104709190610a4c565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105215750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055790610acc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663c23697a8836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105b591906108cc565b602060405180830381865afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f69190610b18565b610603576000905061064c565b42600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b919050565b60008060035411801561067d57506003548273ffffffffffffffffffffffffffffffffffffffff163110155b1561068b5760009050610776565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036106db5760019050610776565b3073ffffffffffffffffffffffffffffffffffffffff1663ab73e316836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161073091906108cc565b602060405180830381865afa15801561074d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107719190610b5a565b421190505b919050565b60035481565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107df57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b6000819050919050565b61083b81610828565b811461084657600080fd5b50565b60008135905061085881610832565b92915050565b60006020828403121561087457610873610823565b5b600061088284828501610849565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108b68261088b565b9050919050565b6108c6816108ab565b82525050565b60006020820190506108e160008301846108bd565b92915050565b6108f0816108ab565b81146108fb57600080fd5b50565b60008135905061090d816108e7565b92915050565b60006020828403121561092957610928610823565b5b6000610937848285016108fe565b91505092915050565b61094981610828565b82525050565b60006020820190506109646000830184610940565b92915050565b60008115159050919050565b61097f8161096a565b82525050565b600060208201905061099a6000830184610976565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b60006109e7600d836109a0565b91506109f2826109b1565b602082019050919050565b60006020820190508181036000830152610a16816109da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a5782610828565b9150610a6283610828565b9250828201905080821115610a7a57610a79610a1d565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000610ab6600a836109a0565b9150610ac182610a80565b602082019050919050565b60006020820190508181036000830152610ae581610aa9565b9050919050565b610af58161096a565b8114610b0057600080fd5b50565b600081519050610b1281610aec565b92915050565b600060208284031215610b2e57610b2d610823565b5b6000610b3c84828501610b03565b91505092915050565b600081519050610b5481610832565b92915050565b600060208284031215610b7057610b6f610823565b5b6000610b7e84828501610b45565b9150509291505056fea2646970667358221220dfa8b1330a6536fd6cbe87d6a50c7635cb987797f3e7a2f9db6f151a8434d2c364736f6c63430008130033 -\ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100a9578063c317377411610083578063c317377414610255578063ef78d4fd14610273578063f2fde38b14610291578063f4430dd8146102c1576100ec565b80638da5cb5b146101d7578063ab73e316146101f5578063b1a997ac14610225576100ec565b806301ffc9a7146100f15780630f3a9f65146101215780633ef250131461013d5780634b6bdf1d1461016d5780634ee577b41461018b57806387020d6b146101bb575b600080fd5b61010b60048036038101906101069190610b80565b6102dd565b6040516101189190610bc8565b60405180910390f35b61013b60048036038101906101369190610c19565b6103df565b005b61015760048036038101906101529190610ca4565b6104ae565b6040516101649190610bc8565b60405180910390f35b6101756105d8565b6040516101829190610ce0565b60405180910390f35b6101a560048036038101906101a09190610ca4565b6105fe565b6040516101b29190610d0a565b60405180910390f35b6101d560048036038101906101d09190610c19565b610616565b005b6101df6106af565b6040516101ec9190610ce0565b60405180910390f35b61020f600480360381019061020a9190610ca4565b6106d3565b60405161021c9190610d0a565b60405180910390f35b61023f600480360381019061023a9190610ca4565b610729565b60405161024c9190610bc8565b60405180910390f35b61025d610903565b60405161026a9190610d0a565b60405180910390f35b61027b610909565b6040516102889190610d0a565b60405180910390f35b6102ab60048036038101906102a69190610ca4565b61090f565b6040516102b89190610bc8565b60405180910390f35b6102db60048036038101906102d69190610ca4565b610a87565b005b60006301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361033157600190506103da565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361038357600190506103da565b633ef250137c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036103d557600190506103da565b600090505b919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046490610d82565b60405180910390fd5b806002819055507faf2decb129b74e79e086ab3d8c7bb0399bfba530c01e74fe4130ab9784e11557816040516104a39190610d0a565b60405180910390a150565b6000806003541180156104da57506003548273ffffffffffffffffffffffffffffffffffffffff163110155b156104e857600090506105d3565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361053857600190506105d3565b3073ffffffffffffffffffffffffffffffffffffffff1663ab73e316836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161058d9190610ce0565b602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610db7565b421190505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e57600080fd5b806003819055507f565196b96812774c1c5f73698d513cb6d8141ec4ecdbb428486d6ad64b4c81aa816040516106a49190610d0a565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107229190610e13565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107d35750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990610e93565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16633ef25013836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108679190610ce0565b602060405180830381865afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190610edf565b6108b557600090506108fe565b42600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b919050565b60035481565b60025481565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099790610f58565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610adf57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610b5d81610b28565b8114610b6857600080fd5b50565b600081359050610b7a81610b54565b92915050565b600060208284031215610b9657610b95610b23565b5b6000610ba484828501610b6b565b91505092915050565b60008115159050919050565b610bc281610bad565b82525050565b6000602082019050610bdd6000830184610bb9565b92915050565b6000819050919050565b610bf681610be3565b8114610c0157600080fd5b50565b600081359050610c1381610bed565b92915050565b600060208284031215610c2f57610c2e610b23565b5b6000610c3d84828501610c04565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c7182610c46565b9050919050565b610c8181610c66565b8114610c8c57600080fd5b50565b600081359050610c9e81610c78565b92915050565b600060208284031215610cba57610cb9610b23565b5b6000610cc884828501610c8f565b91505092915050565b610cda81610c66565b82525050565b6000602082019050610cf56000830184610cd1565b92915050565b610d0481610be3565b82525050565b6000602082019050610d1f6000830184610cfb565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000610d6c600d83610d25565b9150610d7782610d36565b602082019050919050565b60006020820190508181036000830152610d9b81610d5f565b9050919050565b600081519050610db181610bed565b92915050565b600060208284031215610dcd57610dcc610b23565b5b6000610ddb84828501610da2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e1e82610be3565b9150610e2983610be3565b9250828201905080821115610e4157610e40610de4565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000610e7d600a83610d25565b9150610e8882610e47565b602082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b610ebc81610bad565b8114610ec757600080fd5b50565b600081519050610ed981610eb3565b92915050565b600060208284031215610ef557610ef4610b23565b5b6000610f0384828501610eca565b91505092915050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b6000610f42600783610d25565b9150610f4d82610f0c565b602082019050919050565b60006020820190508181036000830152610f7181610f35565b905091905056fea2646970667358221220fef3a63ce5b715b8dde03cafaa77a6f73b37694e151287cdf28845eab6dde9d864736f6c63430008130033 +\ No newline at end of file diff --git a/python/eth_faucet/data/PeriodSimple.json b/python/eth_faucet/data/PeriodSimple.json @@ -1 +1 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BalanceThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"PeriodChange","type":"event"},{"inputs":[],"name":"balanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"next","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"poke","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_poker","type":"address"}],"name":"setPoker","outputs":[],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BalanceThresholdChange","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":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"PeriodChange","type":"event"},{"inputs":[],"name":"balanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"next","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"poke","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_poker","type":"address"}],"name":"setPoker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/eth_faucet/data/PeriodSimple.metadata.json b/python/eth_faucet/data/PeriodSimple.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BalanceThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"PeriodChange","type":"event"},{"inputs":[],"name":"balanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"next","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"poke","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_poker","type":"address"}],"name":"setPoker","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"PeriodSimple.sol":"PeriodSimple"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"PeriodSimple.sol":{"keccak256":"0xcf2111e332486f9179cdcd0c1acd16f1e0629f5a2b99edc12acfbd68dce65d67","license":"AGPL-3.0-or-later","urls":["bzz-raw://207648e1e831cd867c1fb9630aab499bed2cbd423b058825a31ae71061dc0a1b","dweb:/ipfs/Qmc5WdJo3MKYmEuc7SfVpXiEaKeTYfGFDA4fnwYPa5N2h9"]}},"version":1} +{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BalanceThresholdChange","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":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"PeriodChange","type":"event"},{"inputs":[],"name":"balanceThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"next","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"poke","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setBalanceThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_poker","type":"address"}],"name":"setPoker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"PeriodSimple.sol":"PeriodSimple"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"PeriodSimple.sol":{"keccak256":"0x26a14a08586c4bf6d7d63c8841fc2006d3806507ba8006ed408c126a26cb17f2","license":"AGPL-3.0-or-later","urls":["bzz-raw://d0faa1dd5ac0654492a70d92b544fc8c68fd4ee8982511a0abf1c8ae0255b32b","dweb:/ipfs/QmaJ2smxfBeBxumpTULvoYx7PCpQ1LfTg6aYCy89y3Q1m8"]}},"version":1} diff --git a/python/eth_faucet/faucet.py b/python/eth_faucet/faucet.py @@ -104,4 +104,3 @@ class EthFaucet(Faucet): o['params'].append('latest') o = j.finalize(o) return o - diff --git a/python/setup.cfg b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-faucet -version = 0.3.5 +version = 0.4.0 description = Gas token gifter with controls from time intervals, amounts and access. author = Louis Holbrook author_email = dev@holbrook.no diff --git a/solidity/EthFaucet.sol b/solidity/EthFaucet.sol @@ -83,7 +83,7 @@ contract EthFaucet { return true; } - (_ok, _result) = periodChecker.call(abi.encodeWithSignature("check(address)", _recipient)); + (_ok, _result) = periodChecker.call(abi.encodeWithSignature("have(address)", _recipient)); if (!_ok) { revert('ERR_PERIOD_BACKEND'); } diff --git a/solidity/PeriodSimple.sol b/solidity/PeriodSimple.sol @@ -13,6 +13,9 @@ contract PeriodSimple { event PeriodChange(uint256 _value); event BalanceThresholdChange(uint256 _value); + // Implements ERC173 + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // EIP173 + constructor() { owner = msg.sender; poker = owner; @@ -39,7 +42,8 @@ contract PeriodSimple { return lastUsed[_subject] + period; } - function check(address _subject) external view returns(bool) { + //function check(address _subject) external view returns(bool) { + function have(address _subject) external view returns(bool) { if (balanceThreshold > 0 && _subject.balance >= balanceThreshold) { return false; } @@ -51,10 +55,36 @@ contract PeriodSimple { function poke(address _subject) external returns(bool) { require(msg.sender == owner || msg.sender == poker, 'ERR_ACCESS'); - if (!this.check(_subject)) { + if (!this.have(_subject)) { return false; } lastUsed[_subject] = block.timestamp; return true; } + + // Implements EIP173 + function transferOwnership(address _newOwner) public returns (bool) { + address oldOwner; + require(msg.sender == owner, 'ERR_AXX'); + + oldOwner = owner; + owner = _newOwner; + + emit OwnershipTransferred(oldOwner, owner); + return true; + } + + // Implements ERC165 + function supportsInterface(bytes4 _sum) public pure returns (bool) { + if (_sum == 0x01ffc9a7) { // ERC165 + return true; + } + if (_sum == 0x9493f8b2) { // ERC173 + return true; + } + if (_sum == 0x3ef25013) { // ACL + return true; + } + return false; + } }