eth-faucet

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

commit c8aed1b35176d271210d84815ab75c3ff0afce96
parent c65bcb00599c975bf2332fd3ab1c730da1ed1518
Author: lash <dev@holbrook.no>
Date:   Mon, 20 Mar 2023 09:03:20 +0000

Add nextTime method

Diffstat:
Mpython/eth_faucet/data/EthFaucet.bin | 4++--
Mpython/eth_faucet/data/EthFaucet.json | 2+-
Mpython/eth_faucet/data/PeriodSimple.bin | 4++--
Mpython/eth_faucet/data/PeriodSimple.json | 2+-
Mpython/requirements.txt | 2+-
Mpython/tests/test_period.py | 36+++++++++++++++++++++++++++++++++---
Msolidity/EthFaucet.sol | 21++++++++++++++++++++-
Msolidity/PeriodSimple.sol | 12++++++++----
8 files changed, 68 insertions(+), 15 deletions(-)

diff --git a/python/eth_faucet/data/EthFaucet.bin b/python/eth_faucet/data/EthFaucet.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a56806100606000396000f3fe6080604052600436106100c8576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100815780638da5cb5b1461020c578063a91ee0dc14610237578063aa8c217c14610260578063cb10d59a1461028b578063d6eca01e146102b6578063de82efb4146102df576100cf565b806318cbbcfc146100d4578063271f88b4146100ff57806331a5995d1461013c57806363e4bff4146101675780637b103999146101a457806386fe212d146101cf576100cf565b366100cf57005b600080fd5b3480156100e057600080fd5b506100e961030a565b6040516100f691906113c9565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611415565b61030f565b60405161013391906113c9565b60405180910390f35b34801561014857600080fd5b50610151610435565b60405161015e91906113c9565b60405180910390f35b34801561017357600080fd5b5061018e600480360381019061018991906114a0565b61043b565b60405161019b91906113c9565b60405180910390f35b3480156101b057600080fd5b506101b96104a2565b6040516101c691906114dc565b60405180910390f35b3480156101db57600080fd5b506101f660048036038101906101f19190611415565b6104c8565b60405161020391906113c9565b60405180910390f35b34801561021857600080fd5b506102216105ee565b60405161022e91906114dc565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906114a0565b610612565b005b34801561026c57600080fd5b506102756107af565b60405161028291906113c9565b60405180910390f35b34801561029757600080fd5b506102a06107b5565b6040516102ad91906114dc565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906114a0565b6107db565b005b3480156102eb57600080fd5b506102f4610978565b60405161030191906113c9565b60405180910390f35b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039790611554565b60405180910390fd5b6000600460ff1660035416146103eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e2906115c0565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e60045460405161042391906113c9565b60405180910390a16004549050919050565b60035481565b6000610446826109dd565b61044f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610497573d6000803e3d6000fd5b506004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006008821061050d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105049061162c565b60405180910390fd5b6000600354831614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90611698565b60405180910390fd5b816003600082825417925050819055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105dc9291906116b8565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069790611554565b60405180910390fd5b6000600160ff1660035416146106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e2906115c0565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516107a49291906116b8565b60405180910390a250565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611554565b60405180910390fd5b6000600260ff1660035416146108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab906115c0565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161096d9291906116b8565b60405180910390a250565b6000610983336109dd565b61098c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156109d4573d6000803e3d6000fd5b50600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f57610a3d82610ab1565b505b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa057610a9e82610f9b565b505b610aa8611326565b60019050919050565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610b0091906114dc565b6040516020818303038152906040527fc23697a8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610b8a9190611752565b6000604051808303816000865af19150503d8060008114610bc7576040519150601f19603f3d011682016040523d82523d6000602084013e610bcc565b606091505b50809250819350505081610c7d57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610c3a91906113c9565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c74906117b5565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f81518110610cb557610cb46117d5565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610dc957600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610d8691906113c9565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090611850565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610e1391906114dc565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e9d9190611752565b6000604051808303816000865af19150503d8060008114610eda576040519150601f19603f3d011682016040523d82523d6000602084013e610edf565b606091505b50809250819350505081610f9057600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610f4d91906113c9565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906118bc565b60405180910390fd5b600192505050919050565b6000806060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610fea91906114dc565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110749190611752565b6000604051808303816000865af19150503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b5080925081935050508161116757600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161112491906113c9565b60405180910390a36040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115e90611928565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f8151811061119f5761119e6117d5565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036112b357600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161127091906113c9565b60405180910390a36040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90611994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f45c201a59ac545000ead84f30b2db67da23353aa1d58ac522c48505412143ffa60045460405161131391906113c9565b60405180910390a3600192505050919050565b3073ffffffffffffffffffffffffffffffffffffffff163160045411156113ae577fd5fc280270ad7a4858a11280d5228b85502cacf121cc91fd35436bed31bb659c60405160405180910390a16040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590611a00565b60405180910390fd5b565b6000819050919050565b6113c3816113b0565b82525050565b60006020820190506113de60008301846113ba565b92915050565b600080fd5b6113f2816113b0565b81146113fd57600080fd5b50565b60008135905061140f816113e9565b92915050565b60006020828403121561142b5761142a6113e4565b5b600061143984828501611400565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061146d82611442565b9050919050565b61147d81611462565b811461148857600080fd5b50565b60008135905061149a81611474565b92915050565b6000602082840312156114b6576114b56113e4565b5b60006114c48482850161148b565b91505092915050565b6114d681611462565b82525050565b60006020820190506114f160008301846114cd565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b600061153e600d836114f7565b915061154982611508565b602082019050919050565b6000602082019050818103600083015261156d81611531565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b60006115aa600a836114f7565b91506115b582611574565b602082019050919050565b600060208201905081810360008301526115d98161159d565b9050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006116166011836114f7565b9150611621826115e0565b602082019050919050565b6000602082019050818103600083015261164581611609565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b60006116826012836114f7565b915061168d8261164c565b602082019050919050565b600060208201905081810360008301526116b181611675565b9050919050565b60006040820190506116cd60008301856114cd565b6116da60208301846114cd565b9392505050565b600081519050919050565b600081905092915050565b60005b838110156117155780820151818401526020810190506116fa565b60008484015250505050565b600061172c826116e1565b61173681856116ec565b93506117468185602086016116f7565b80840191505092915050565b600061175e8284611721565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b600061179f6018836114f7565b91506117aa82611769565b602082019050919050565b600060208201905081810360008301526117ce81611792565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b600061183a6010836114f7565b915061184582611804565b602082019050919050565b600060208201905081810360008301526118698161182d565b9050919050565b7f4552525f52454749535452595f4241434b454e445f4552524f52000000000000600082015250565b60006118a6601a836114f7565b91506118b182611870565b602082019050919050565b600060208201905081810360008301526118d581611899565b9050919050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000611912600c836114f7565b915061191d826118dc565b602082019050919050565b6000602082019050818103600083015261194181611905565b9050919050565b7f4552525f52454749535452595f434845434b0000000000000000000000000000600082015250565b600061197e6012836114f7565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b7f4552525f4954534e4f5441474153000000000000000000000000000000000000600082015250565b60006119ea600e836114f7565b91506119f5826119b4565b602082019050919050565b60006020820190508181036000830152611a19816119dd565b905091905056fea26469706673582212204b38810c2c4b5bced9020cf10279d8df5bfb76187bead441eaff390edb1cbdd964736f6c63430008110033 -\ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d1e806100606000396000f3fe6080604052600436106100fe576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161009c578063d6eca01e11610076578063d6eca01e146102fe578063de82efb414610327578063eec7faa114610352578063fc0c546a1461037d57610105565b80638da5cb5b1461027f578063a91ee0dc146102aa578063cb10d59a146102d357610105565b80633b1bd134116100d85780633b1bd1341461019d57806363e4bff4146101da5780637b1039991461021757806386fe212d1461024257610105565b806318cbbcfc1461010a578063271f88b41461013557806331a5995d1461017257610105565b3661010557005b600080fd5b34801561011657600080fd5b5061011f6103a8565b60405161012c91906115eb565b60405180910390f35b34801561014157600080fd5b5061015c60048036038101906101579190611637565b6103ad565b60405161016991906115eb565b60405180910390f35b34801561017e57600080fd5b506101876104d3565b60405161019491906115eb565b60405180910390f35b3480156101a957600080fd5b506101c460048036038101906101bf91906116c2565b6104d9565b6040516101d191906115eb565b60405180910390f35b3480156101e657600080fd5b5061020160048036038101906101fc91906116c2565b610654565b60405161020e91906115eb565b60405180910390f35b34801561022357600080fd5b5061022c6106bb565b60405161023991906116fe565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611637565b6106e1565b60405161027691906115eb565b60405180910390f35b34801561028b57600080fd5b50610294610807565b6040516102a191906116fe565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906116c2565b61082b565b005b3480156102df57600080fd5b506102e86109c8565b6040516102f591906116fe565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906116c2565b6109ee565b005b34801561033357600080fd5b5061033c610b8b565b60405161034991906115eb565b60405180910390f35b34801561035e57600080fd5b50610367610bf0565b60405161037491906115eb565b60405180910390f35b34801561038957600080fd5b50610392610bfa565b60405161039f91906116fe565b60405180910390f35b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461043e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043590611776565b60405180910390fd5b6000600460ff166003541614610489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610480906117e2565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e6004546040516104c191906115eb565b60405180910390a16004549050919050565b60035481565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405160240161052891906116fe565b6040516020818303038152906040527fab73e316000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105b29190611873565b6000604051808303816000865af19150503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b5080925081935050508161063d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610634906118d6565b60405180910390fd5b8061064790611935565b6001900492505050919050565b600061065f82610bff565b61066857600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156106b0573d6000803e3d6000fd5b506004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060088210610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d906119e8565b60405180910390fd5b600060035483161461076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076490611a54565b60405180910390fd5b816003600082825417925050819055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516107f5929190611a74565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090611776565b60405180910390fd5b6000600160ff166003541614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906117e2565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516109bd929190611a74565b60405180910390a250565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390611776565b60405180910390fd5b6000600260ff166003541614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe906117e2565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610b80929190611a74565b60405180910390a250565b6000610b9633610bff565b610b9f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610be7573d6000803e3d6000fd5b50600454905090565b6000600454905090565b600090565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6157610c5f82610cd3565b505b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc257610cc0826111bd565b505b610cca611548565b60019050919050565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610d2291906116fe565b6040516020818303038152906040527fc23697a8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dac9190611873565b6000604051808303816000865af19150503d8060008114610de9576040519150601f19603f3d011682016040523d82523d6000602084013e610dee565b606091505b50809250819350505081610e9f57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610e5c91906115eb565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e96906118d6565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f81518110610ed757610ed6611a9d565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610feb57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610fa891906115eb565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611b18565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405160240161103591906116fe565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110bf9190611873565b6000604051808303816000865af19150503d80600081146110fc576040519150601f19603f3d011682016040523d82523d6000602084013e611101565b606091505b508092508193505050816111b257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161116f91906115eb565b60405180910390a36040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990611b84565b60405180910390fd5b600192505050919050565b6000806060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405160240161120c91906116fe565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112969190611873565b6000604051808303816000865af19150503d80600081146112d3576040519150601f19603f3d011682016040523d82523d6000602084013e6112d8565b606091505b5080925081935050508161138957600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161134691906115eb565b60405180910390a36040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138090611bf0565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f815181106113c1576113c0611a9d565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036114d557600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161149291906115eb565b60405180910390a36040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90611c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f45c201a59ac545000ead84f30b2db67da23353aa1d58ac522c48505412143ffa60045460405161153591906115eb565b60405180910390a3600192505050919050565b3073ffffffffffffffffffffffffffffffffffffffff163160045411156115d0577fd5fc280270ad7a4858a11280d5228b85502cacf121cc91fd35436bed31bb659c60405160405180910390a16040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790611cc8565b60405180910390fd5b565b6000819050919050565b6115e5816115d2565b82525050565b600060208201905061160060008301846115dc565b92915050565b600080fd5b611614816115d2565b811461161f57600080fd5b50565b6000813590506116318161160b565b92915050565b60006020828403121561164d5761164c611606565b5b600061165b84828501611622565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061168f82611664565b9050919050565b61169f81611684565b81146116aa57600080fd5b50565b6000813590506116bc81611696565b92915050565b6000602082840312156116d8576116d7611606565b5b60006116e6848285016116ad565b91505092915050565b6116f881611684565b82525050565b600060208201905061171360008301846116ef565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000611760600d83611719565b915061176b8261172a565b602082019050919050565b6000602082019050818103600083015261178f81611753565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b60006117cc600a83611719565b91506117d782611796565b602082019050919050565b600060208201905081810360008301526117fb816117bf565b9050919050565b600081519050919050565b600081905092915050565b60005b8381101561183657808201518184015260208101905061181b565b60008484015250505050565b600061184d82611802565b611857818561180d565b9350611867818560208601611818565b80840191505092915050565b600061187f8284611842565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b60006118c0601883611719565b91506118cb8261188a565b602082019050919050565b600060208201905081810360008301526118ef816118b3565b9050919050565b6000819050602082019050919050565b6000819050919050565b600061191c8251611906565b80915050919050565b60008160020a8302905092915050565b600061194082611802565b8261194a846118f6565b905061195581611910565b92506020821015611995576119907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611925565b831692505b5050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006119d2601183611719565b91506119dd8261199c565b602082019050919050565b60006020820190508181036000830152611a01816119c5565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000611a3e601283611719565b9150611a4982611a08565b602082019050919050565b60006020820190508181036000830152611a6d81611a31565b9050919050565b6000604082019050611a8960008301856116ef565b611a9660208301846116ef565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b6000611b02601083611719565b9150611b0d82611acc565b602082019050919050565b60006020820190508181036000830152611b3181611af5565b9050919050565b7f4552525f52454749535452595f4241434b454e445f4552524f52000000000000600082015250565b6000611b6e601a83611719565b9150611b7982611b38565b602082019050919050565b60006020820190508181036000830152611b9d81611b61565b9050919050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000611bda600c83611719565b9150611be582611ba4565b602082019050919050565b60006020820190508181036000830152611c0981611bcd565b9050919050565b7f4552525f52454749535452595f434845434b0000000000000000000000000000600082015250565b6000611c46601283611719565b9150611c5182611c10565b602082019050919050565b60006020820190508181036000830152611c7581611c39565b9050919050565b7f4552525f4954534e4f5441474153000000000000000000000000000000000000600082015250565b6000611cb2600e83611719565b9150611cbd82611c7c565b602082019050919050565b60006020820190508181036000830152611ce181611ca5565b905091905056fea264697066735822122078f747dfeac61407c9a6604f6972a7951abb4376b0ea35106f9eae89ea73df6364736f6c63430008120033 +\ No newline at end of file diff --git a/python/eth_faucet/data/EthFaucet.json b/python/eth_faucet/data/EthFaucet.json @@ -1 +1 @@ -[{"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":"FaucetFail","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":"FaucetStateChange","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":"FaucetUsed","type":"event"},{"anonymous":false,"inputs":[],"name":"ImNotGassy","type":"event"},{"inputs":[],"name":"amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"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"},{"stateMutability":"payable","type":"receive"}] +[{"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":"FaucetFail","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":"FaucetStateChange","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":"FaucetUsed","type":"event"},{"anonymous":false,"inputs":[],"name":"ImNotGassy","type":"event"},{"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":"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":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}] diff --git a/python/eth_faucet/data/PeriodSimple.bin b/python/eth_faucet/data/PeriodSimple.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109bb806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063b1a997ac11610083578063b1a997ac14610164578063c23697a814610180578063c3173774146101b0578063ef78d4fd146101ce578063f4430dd8146101ec576100bb565b80630f3a9f65146100c05780634b6bdf1d146100dc5780634ee577b4146100fa57806387020d6b1461012a5780638da5cb5b14610146575b600080fd5b6100da60048036038101906100d5919061068b565b610208565b005b6100e46102a0565b6040516100f191906106f9565b60405180910390f35b610114600480360381019061010f9190610740565b6102c6565b604051610121919061077c565b60405180910390f35b610144600480360381019061013f919061068b565b6102de565b005b61014e610340565b60405161015b91906106f9565b60405180910390f35b61017e60048036038101906101799190610740565b610364565b005b61019a60048036038101906101959190610740565b6104d9565b6040516101a791906107b2565b60405180910390f35b6101b86105a8565b6040516101c5919061077c565b60405180910390f35b6101d66105ae565b6040516101e3919061077c565b60405180910390f35b61020660048036038101906102019190610740565b6105b4565b005b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028d9061082a565b60405180910390fd5b8060028190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461033657600080fd5b8060038190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061040b5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610896565b60405180910390fd5b610453816104d9565b610492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048990610902565b60405180910390fd5b42600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006003548273ffffffffffffffffffffffffffffffffffffffff1631101561050157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361055157600190506105a3565b600254600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059e9190610951565b421190505b919050565b60035481565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461060c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b6000819050919050565b61066881610655565b811461067357600080fd5b50565b6000813590506106858161065f565b92915050565b6000602082840312156106a1576106a0610650565b5b60006106af84828501610676565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106e3826106b8565b9050919050565b6106f3816106d8565b82525050565b600060208201905061070e60008301846106ea565b92915050565b61071d816106d8565b811461072857600080fd5b50565b60008135905061073a81610714565b92915050565b60006020828403121561075657610755610650565b5b60006107648482850161072b565b91505092915050565b61077681610655565b82525050565b6000602082019050610791600083018461076d565b92915050565b60008115159050919050565b6107ac81610797565b82525050565b60006020820190506107c760008301846107a3565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000610814600d836107cd565b915061081f826107de565b602082019050919050565b6000602082019050818103600083015261084381610807565b9050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000610880600a836107cd565b915061088b8261084a565b602082019050919050565b600060208201905081810360008301526108af81610873565b9050919050565b7f4552525f5052454d415455524500000000000000000000000000000000000000600082015250565b60006108ec600d836107cd565b91506108f7826108b6565b602082019050919050565b6000602082019050818103600083015261091b816108df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061095c82610655565b915061096783610655565b925082820190508082111561097f5761097e610922565b5b9291505056fea2646970667358221220cea5f56dcc1ced45f330e44c5e38309512ae6f03042f084994943724ec31aaab64736f6c63430008110033 -\ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c2b806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100c6576000357c010000000000000000000000000000000000000000000000000000000090048063ab73e3161161008e578063ab73e3161461016f578063b1a997ac1461019f578063c23697a8146101bb578063c3173774146101eb578063ef78d4fd14610209578063f4430dd814610227576100c6565b80630f3a9f65146100cb5780634b6bdf1d146100e75780634ee577b41461010557806387020d6b146101355780638da5cb5b14610151575b600080fd5b6100e560048036038101906100e09190610860565b610243565b005b6100ef610312565b6040516100fc91906108ce565b60405180910390f35b61011f600480360381019061011a9190610915565b610338565b60405161012c9190610951565b60405180910390f35b61014f600480360381019061014a9190610860565b610350565b005b6101596103e9565b60405161016691906108ce565b60405180910390f35b61018960048036038101906101849190610915565b61040d565b6040516101969190610951565b60405180910390f35b6101b960048036038101906101b49190610915565b610463565b005b6101d560048036038101906101d09190610915565b610665565b6040516101e29190610987565b60405180910390f35b6101f361077d565b6040516102009190610951565b60405180910390f35b610211610783565b60405161021e9190610951565b60405180910390f35b610241600480360381019061023c9190610915565b610789565b005b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c8906109ff565b60405180910390fd5b806002819055507faf2decb129b74e79e086ab3d8c7bb0399bfba530c01e74fe4130ab9784e11557816040516103079190610951565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a857600080fd5b806003819055507f565196b96812774c1c5f73698d513cb6d8141ec4ecdbb428486d6ad64b4c81aa816040516103de9190610951565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461045c9190610a4e565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061050a5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054090610ace565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663c23697a8826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161059e91906108ce565b602060405180830381865afa1580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190610b1a565b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610b93565b60405180910390fd5b42600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006003548273ffffffffffffffffffffffffffffffffffffffff1631101561068d57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036106dd5760019050610778565b3073ffffffffffffffffffffffffffffffffffffffff1663ab73e316836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161073291906108ce565b602060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190610bc8565b421190505b919050565b60035481565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b6000819050919050565b61083d8161082a565b811461084857600080fd5b50565b60008135905061085a81610834565b92915050565b60006020828403121561087657610875610825565b5b60006108848482850161084b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108b88261088d565b9050919050565b6108c8816108ad565b82525050565b60006020820190506108e360008301846108bf565b92915050565b6108f2816108ad565b81146108fd57600080fd5b50565b60008135905061090f816108e9565b92915050565b60006020828403121561092b5761092a610825565b5b600061093984828501610900565b91505092915050565b61094b8161082a565b82525050565b60006020820190506109666000830184610942565b92915050565b60008115159050919050565b6109818161096c565b82525050565b600060208201905061099c6000830184610978565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b60006109e9600d836109a2565b91506109f4826109b3565b602082019050919050565b60006020820190508181036000830152610a18816109dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a598261082a565b9150610a648361082a565b9250828201905080821115610a7c57610a7b610a1f565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000610ab8600a836109a2565b9150610ac382610a82565b602082019050919050565b60006020820190508181036000830152610ae781610aab565b9050919050565b610af78161096c565b8114610b0257600080fd5b50565b600081519050610b1481610aee565b92915050565b600060208284031215610b3057610b2f610825565b5b6000610b3e84828501610b05565b91505092915050565b7f4552525f5052454d415455524500000000000000000000000000000000000000600082015250565b6000610b7d600d836109a2565b9150610b8882610b47565b602082019050919050565b60006020820190508181036000830152610bac81610b70565b9050919050565b600081519050610bc281610834565b92915050565b600060208284031215610bde57610bdd610825565b5b6000610bec84828501610bb3565b9150509291505056fea264697066735822122078a637023f128189d716bae2d70a4d6e0d09b1284ca2cb9caaf17caa404d8fb064736f6c63430008120033 +\ 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":"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":[],"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":[],"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":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":[],"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"}] diff --git a/python/requirements.txt b/python/requirements.txt @@ -1,2 +1,2 @@ chainlib-eth~=0.4.8 -erc20-faucet~=0.5.0 +erc20-faucet~=0.6.0 diff --git a/python/tests/test_period.py b/python/tests/test_period.py @@ -35,13 +35,13 @@ class TestFaucetPeriod(EthTesterCase): def setUp(self): super(TestFaucetPeriod, self).setUp() # DRY + self.conn = RPCConnection.connect(self.chain_spec, 'default') + nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) + c = PeriodSimple(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) (tx_hash_hex, o) = c.constructor(self.accounts[0]) r = self.conn.do(o) - self.conn = RPCConnection.connect(self.chain_spec, 'default') - nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) - f = open(os.path.join(datadir, 'PeriodSimple.bin')) period_store_bytecode = f.read() f.close() @@ -207,5 +207,35 @@ class TestFaucetPeriod(EthTesterCase): self.assertEqual(r['status'], 1) + def test_period_front(self): + nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) + c = TxFactory(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + enc = ABIContractEncoder() + enc.method('setPeriod') + enc.typ(ABIContractType.UINT256) + enc.uint256(100) + data = enc.get() + tx = c.template(self.accounts[0], self.period_store_address, use_nonce=True) + tx = c.set_code(tx, data) + (tx_hash_hex, o) = c.finalize(tx) + self.conn.do(o) + + nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) + c = EthFaucet(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.gimme(self.address, self.accounts[0]) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + o = block_by_number(r['block_number']) + r = self.conn.do(o) + thistime = r['timestamp'] + + o = c.next_time(self.address, self.accounts[0], sender_address=self.accounts[0]) + r = self.conn.do(o) + nexttime = int(r, 16) + + self.assertEqual(nexttime, thistime+100) + + if __name__ == '__main__': unittest.main() diff --git a/solidity/EthFaucet.sol b/solidity/EthFaucet.sol @@ -8,7 +8,7 @@ contract EthFacuet { address public registry; address public periodChecker; uint256 public sealState; - uint256 public amount; + uint256 amount; uint8 constant REGISTRY_STATE = 1; uint8 constant PERIODCHECKER_STATE = 2; @@ -125,6 +125,25 @@ contract EthFacuet { return amount; } + function nextTime(address _subject) public returns(uint256) { + bool _ok; + bytes memory _result; + + (_ok, _result) = periodChecker.call(abi.encodeWithSignature("next(address)", _subject)); + if (!_ok) { + revert('ERR_PERIOD_BACKEND_ERROR'); + } + return uint256(bytes32(_result)); + } + + function tokenAmount() public view returns(uint256) { + return amount; + } + + function token() public pure returns(address) { + return address(0); + } + receive () payable external { } } diff --git a/solidity/PeriodSimple.sol b/solidity/PeriodSimple.sol @@ -34,17 +34,21 @@ contract PeriodSimple { emit BalanceThresholdChange(_threshold); } - function check(address _subject) public view returns(bool) { + function next(address _subject) external view returns(uint256) { + return lastUsed[_subject] + period; + } + + function check(address _subject) external view returns(bool) { require(_subject.balance >= balanceThreshold); if (lastUsed[_subject] == 0) { return true; } - return block.timestamp > lastUsed[_subject] + period; + return block.timestamp > this.next(_subject); } - function poke(address _subject) public { + function poke(address _subject) external { require(msg.sender == owner || msg.sender == poker, 'ERR_ACCESS'); - require(check(_subject), 'ERR_PREMATURE'); + require(this.check(_subject), 'ERR_PREMATURE'); lastUsed[_subject] = block.timestamp; } }