eth-faucet

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

commit cefdc5c00b83e4018d0b0ccc7c78087d319925ee
parent 66c261d6926558f5a75b4780086cae11b622409e
Author: lash <dev@holbrook.no>
Date:   Fri,  3 Feb 2023 16:02:27 +0000

Add regsitry test

Diffstat:
Mpython/eth_faucet/data/EthFaucet.bin | 4++--
Mpython/eth_faucet/faucet.py | 12++++++++++++
Mpython/test_requirements.txt | 2+-
Mpython/tests/test_period.py | 12++++++------
Apython/tests/test_registry.py | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msolidity/EthFaucet.sol | 10++++++++--
6 files changed, 119 insertions(+), 11 deletions(-)

diff --git a/python/eth_faucet/data/EthFaucet.bin b/python/eth_faucet/data/EthFaucet.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116d0806100606000396000f3fe6080604052600436106100c8576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100815780638da5cb5b1461020c578063a91ee0dc14610237578063aa8c217c14610260578063cb10d59a1461028b578063d6eca01e146102b6578063de82efb4146102df576100cf565b806318cbbcfc146100d4578063271f88b4146100ff57806331a5995d1461013c57806363e4bff4146101675780637b103999146101a457806386fe212d146101cf576100cf565b366100cf57005b600080fd5b3480156100e057600080fd5b506100e961030a565b6040516100f6919061111b565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611167565b61030f565b604051610133919061111b565b60405180910390f35b34801561014857600080fd5b50610151610435565b60405161015e919061111b565b60405180910390f35b34801561017357600080fd5b5061018e600480360381019061018991906111f2565b61043b565b60405161019b919061111b565b60405180910390f35b3480156101b057600080fd5b506101b96104a2565b6040516101c6919061122e565b60405180910390f35b3480156101db57600080fd5b506101f660048036038101906101f19190611167565b6104c8565b604051610203919061111b565b60405180910390f35b34801561021857600080fd5b506102216105ee565b60405161022e919061122e565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906111f2565b610612565b005b34801561026c57600080fd5b506102756107af565b604051610282919061111b565b60405180910390f35b34801561029757600080fd5b506102a06107b5565b6040516102ad919061122e565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906111f2565b6107db565b005b3480156102eb57600080fd5b506102f4610978565b604051610301919061111b565b60405180910390f35b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610397906112a6565b60405180910390fd5b6000600460ff1660035416146103eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e290611312565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e600454604051610423919061111b565b60405180910390a16004549050919050565b60035481565b6000610446826109dd565b61044f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610497573d6000803e3d6000fd5b506004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006008821061050d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105049061137e565b60405180910390fd5b6000600354831614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b906113ea565b60405180910390fd5b816003600082825417925050819055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105dc92919061140a565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906112a6565b60405180910390fd5b6000600160ff1660035416146106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e290611312565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516107a492919061140a565b60405180910390a250565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610860906112a6565b60405180910390fd5b6000600260ff1660035416146108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab90611312565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161096d92919061140a565b60405180910390a250565b6000610983336109dd565b61098c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156109d4573d6000803e3d6000fd5b50600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f57610a3d82610aa9565b505b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa057610a9e82610ec3565b505b60019050919050565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610af8919061122e565b6040516020818303038152906040527fc23697a8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610b8291906114a4565b6000604051808303816000865af19150503d8060008114610bbf576040519150601f19603f3d011682016040523d82523d6000602084013e610bc4565b606091505b50809250819350505081610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490611507565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f81518110610c4557610c44611527565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce8906115a2565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610d3b919061122e565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dc591906114a4565b6000604051808303816000865af19150503d8060008114610e02576040519150601f19603f3d011682016040523d82523d6000602084013e610e07565b606091505b50809250819350505081610eb857600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610e75919061111b565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf9061160e565b60405180910390fd5b600192505050919050565b6000806060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610f12919061122e565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610f9c91906114a4565b6000604051808303816000865af19150503d8060008114610fd9576040519150601f19603f3d011682016040523d82523d6000602084013e610fde565b606091505b5080925081935050508161108f57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161104c919061111b565b60405180910390a36040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061167a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f45c201a59ac545000ead84f30b2db67da23353aa1d58ac522c48505412143ffa6004546040516110ef919061111b565b60405180910390a3600192505050919050565b6000819050919050565b61111581611102565b82525050565b6000602082019050611130600083018461110c565b92915050565b600080fd5b61114481611102565b811461114f57600080fd5b50565b6000813590506111618161113b565b92915050565b60006020828403121561117d5761117c611136565b5b600061118b84828501611152565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111bf82611194565b9050919050565b6111cf816111b4565b81146111da57600080fd5b50565b6000813590506111ec816111c6565b92915050565b60006020828403121561120857611207611136565b5b6000611216848285016111dd565b91505092915050565b611228816111b4565b82525050565b6000602082019050611243600083018461121f565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b6000611290600d83611249565b915061129b8261125a565b602082019050919050565b600060208201905081810360008301526112bf81611283565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b60006112fc600a83611249565b9150611307826112c6565b602082019050919050565b6000602082019050818103600083015261132b816112ef565b9050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000611368601183611249565b915061137382611332565b602082019050919050565b600060208201905081810360008301526113978161135b565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b60006113d4601283611249565b91506113df8261139e565b602082019050919050565b60006020820190508181036000830152611403816113c7565b9050919050565b600060408201905061141f600083018561121f565b61142c602083018461121f565b9392505050565b600081519050919050565b600081905092915050565b60005b8381101561146757808201518184015260208101905061144c565b60008484015250505050565b600061147e82611433565b611488818561143e565b9350611498818560208601611449565b80840191505092915050565b60006114b08284611473565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b60006114f1601883611249565b91506114fc826114bb565b602082019050919050565b60006020820190508181036000830152611520816114e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b600061158c601083611249565b915061159782611556565b602082019050919050565b600060208201905081810360008301526115bb8161157f565b9050919050565b7f4552525f504552494f445f434845434b5f524547495354455200000000000000600082015250565b60006115f8601983611249565b9150611603826115c2565b602082019050919050565b60006020820190508181036000830152611627816115eb565b9050919050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000611664600c83611249565b915061166f8261162e565b602082019050919050565b6000602082019050818103600083015261169381611657565b905091905056fea26469706673582212200878414bb7bfab20171d24f266b54ac0c03af4cfa8313f09e2ea9bb3fa3d268a64736f6c63430008110033 -\ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611958806100606000396000f3fe6080604052600436106100c8576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100815780638da5cb5b1461020c578063a91ee0dc14610237578063aa8c217c14610260578063cb10d59a1461028b578063d6eca01e146102b6578063de82efb4146102df576100cf565b806318cbbcfc146100d4578063271f88b4146100ff57806331a5995d1461013c57806363e4bff4146101675780637b103999146101a457806386fe212d146101cf576100cf565b366100cf57005b600080fd5b3480156100e057600080fd5b506100e961030a565b6040516100f69190611337565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611383565b61030f565b6040516101339190611337565b60405180910390f35b34801561014857600080fd5b50610151610435565b60405161015e9190611337565b60405180910390f35b34801561017357600080fd5b5061018e6004803603810190610189919061140e565b61043b565b60405161019b9190611337565b60405180910390f35b3480156101b057600080fd5b506101b96104a2565b6040516101c6919061144a565b60405180910390f35b3480156101db57600080fd5b506101f660048036038101906101f19190611383565b6104c8565b6040516102039190611337565b60405180910390f35b34801561021857600080fd5b506102216105ee565b60405161022e919061144a565b60405180910390f35b34801561024357600080fd5b5061025e6004803603810190610259919061140e565b610612565b005b34801561026c57600080fd5b506102756107af565b6040516102829190611337565b60405180910390f35b34801561029757600080fd5b506102a06107b5565b6040516102ad919061144a565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061140e565b6107db565b005b3480156102eb57600080fd5b506102f4610978565b6040516103019190611337565b60405180910390f35b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610397906114c2565b60405180910390fd5b6000600460ff1660035416146103eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e29061152e565b60405180910390fd5b816004819055507f748f1cf617bdc8ef4fcd1cb516dc05cedf269e8dcad82183846d57eeec4bba5e6004546040516104239190611337565b60405180910390a16004549050919050565b60035481565b6000610446826109dd565b61044f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610497573d6000803e3d6000fd5b506004549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006008821061050d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105049061159a565b60405180910390fd5b6000600354831614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90611606565b60405180910390fd5b816003600082825417925050819055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105dc929190611626565b60405180910390a26003549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906114c2565b60405180910390fd5b6000600160ff1660035416146106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e29061152e565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516107a4929190611626565b60405180910390a250565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610860906114c2565b60405180910390fd5b6000600260ff1660035416146108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab9061152e565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003547fe4b3d0535ec4cfd7bbe7b41fc94f6ee6bd15e97724854e3c3db2beb336d23a95600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161096d929190611626565b60405180910390a250565b6000610983336109dd565b61098c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501580156109d4573d6000803e3d6000fd5b50600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f57610a3d82610aa9565b505b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa057610a9e82610f93565b505b60019050919050565b6000806060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610af8919061144a565b6040516020818303038152906040527fc23697a8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610b8291906116c0565b6000604051808303816000865af19150503d8060008114610bbf576040519150601f19603f3d011682016040523d82523d6000602084013e610bc4565b606091505b50809250819350505081610c7557600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610c329190611337565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90611723565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f81518110610cad57610cac611743565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610dc157600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610d7e9190611337565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db8906117be565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610e0b919061144a565b6040516020818303038152906040527fb1a997ac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e9591906116c0565b6000604051808303816000865af19150503d8060008114610ed2576040519150601f19603f3d011682016040523d82523d6000602084013e610ed7565b606091505b50809250819350505081610f8857600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d6070600454604051610f459190611337565b60405180910390a36040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f9061182a565b60405180910390fd5b600192505050919050565b6000806060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401610fe2919061144a565b6040516020818303038152906040527f3ef25013000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161106c91906116c0565b6000604051808303816000865af19150503d80600081146110a9576040519150601f19603f3d011682016040523d82523d6000602084013e6110ae565b606091505b5080925081935050508161115f57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d607060045460405161111c9190611337565b60405180910390a36040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690611896565b60405180910390fd5b60007f01000000000000000000000000000000000000000000000000000000000000000281601f8151811061119757611196611743565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036112ab57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2a56a00a5c532c49314f19361f71cdca8a5d10fdcb42c3fa52800d13419d60706004546040516112689190611337565b60405180910390a36040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290611902565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f45c201a59ac545000ead84f30b2db67da23353aa1d58ac522c48505412143ffa60045460405161130b9190611337565b60405180910390a3600192505050919050565b6000819050919050565b6113318161131e565b82525050565b600060208201905061134c6000830184611328565b92915050565b600080fd5b6113608161131e565b811461136b57600080fd5b50565b60008135905061137d81611357565b92915050565b60006020828403121561139957611398611352565b5b60006113a78482850161136e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113db826113b0565b9050919050565b6113eb816113d0565b81146113f657600080fd5b50565b600081359050611408816113e2565b92915050565b60006020828403121561142457611423611352565b5b6000611432848285016113f9565b91505092915050565b611444816113d0565b82525050565b600060208201905061145f600083018461143b565b92915050565b600082825260208201905092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b60006114ac600d83611465565b91506114b782611476565b602082019050919050565b600060208201905081810360008301526114db8161149f565b9050919050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b6000611518600a83611465565b9150611523826114e2565b602082019050919050565b600060208201905081810360008301526115478161150b565b9050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000611584601183611465565b915061158f8261154e565b602082019050919050565b600060208201905081810360008301526115b381611577565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b60006115f0601283611465565b91506115fb826115ba565b602082019050919050565b6000602082019050818103600083015261161f816115e3565b9050919050565b600060408201905061163b600083018561143b565b611648602083018461143b565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015611683578082015181840152602081019050611668565b60008484015250505050565b600061169a8261164f565b6116a4818561165a565b93506116b4818560208601611665565b80840191505092915050565b60006116cc828461168f565b915081905092915050565b7f4552525f504552494f445f4241434b454e445f4552524f520000000000000000600082015250565b600061170d601883611465565b9150611718826116d7565b602082019050919050565b6000602082019050818103600083015261173c81611700565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f504552494f445f434845434b00000000000000000000000000000000600082015250565b60006117a8601083611465565b91506117b382611772565b602082019050919050565b600060208201905081810360008301526117d78161179b565b9050919050565b7f4552525f52454749535452595f4241434b454e445f4552524f52000000000000600082015250565b6000611814601a83611465565b915061181f826117de565b602082019050919050565b6000602082019050818103600083015261184381611807565b9050919050565b7f4552525f5452414e534645520000000000000000000000000000000000000000600082015250565b6000611880600c83611465565b915061188b8261184a565b602082019050919050565b600060208201905081810360008301526118af81611873565b9050919050565b7f4552525f52454749535452595f434845434b0000000000000000000000000000600082015250565b60006118ec601283611465565b91506118f7826118b6565b602082019050919050565b6000602082019050818103600083015261191b816118df565b905091905056fea264697066735822122036e2826b03a3a47beaafacafc9a98657c63dbf5ebde0d91c57b409a38eba29ed64736f6c63430008110033 +\ No newline at end of file diff --git a/python/eth_faucet/faucet.py b/python/eth_faucet/faucet.py @@ -74,3 +74,15 @@ class EthFaucet(Faucet): tx = self.set_code(tx, data) tx = self.finalize(tx, tx_format) return tx + + + def set_registry(self, contract_address, sender_address, checker_address, tx_format=TxFormat.JSONRPC): + enc = ABIContractEncoder() + enc.method('setRegistry') + enc.typ(ABIContractType.ADDRESS) + enc.address(checker_address) + data = enc.get() + tx = self.template(sender_address, contract_address, use_nonce=True) + tx = self.set_code(tx, data) + tx = self.finalize(tx, tx_format) + return tx diff --git a/python/test_requirements.txt b/python/test_requirements.txt @@ -1,3 +1,3 @@ eth_tester==0.5.0b3 py-evm==0.3.0a20 -eth-erc20~=0.1.2a1 +accounts_index~=0.3.0 diff --git a/python/tests/test_period.py b/python/tests/test_period.py @@ -29,10 +29,10 @@ moddir = os.path.dirname(__file__) datadir = os.path.join(moddir, '..', 'eth_faucet', 'data') -class TestFaucet(EthTesterCase): +class TestFaucetPeriod(EthTesterCase): def setUp(self): - super(TestFaucet, self).setUp() + super(TestFaucetPeriod, self).setUp() # DRY self.conn = RPCConnection.connect(self.chain_spec, 'default') nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) @@ -51,7 +51,7 @@ class TestFaucet(EthTesterCase): o = receipt(tx_hash_hex) r = self.conn.do(o) self.assertEqual(r['status'], 1) - self.period_store_contract = r['contract_address'] + self.period_store_address = r['contract_address'] o = block_by_number(r['block_number']) r = self.conn.do(o) @@ -70,7 +70,7 @@ class TestFaucet(EthTesterCase): self.address = to_checksum_address(r['contract_address']) logg.debug('faucet contract {}'.format(self.address)) - (tx_hash_hex, o) = c.set_period_checker(self.address, self.accounts[0], self.period_store_contract) + (tx_hash_hex, o) = c.set_period_checker(self.address, self.accounts[0], self.period_store_address) self.conn.do(o) o = receipt(tx_hash_hex) @@ -86,7 +86,7 @@ class TestFaucet(EthTesterCase): enc.typ(ABIContractType.UINT256) enc.uint256(100) data = enc.get() - tx = c.template(self.accounts[0], self.period_store_contract, use_nonce=True) + 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) @@ -101,7 +101,7 @@ class TestFaucet(EthTesterCase): enc.typ(ABIContractType.ADDRESS) enc.address(self.address) data = enc.get() - tx = c.template(self.accounts[0], self.period_store_contract, use_nonce=True) + 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) diff --git a/python/tests/test_registry.py b/python/tests/test_registry.py @@ -0,0 +1,90 @@ +# standard imports +import os +import unittest +import logging + +# external imports +from chainlib.connection import RPCConnection +from chainlib.eth.nonce import RPCNonceOracle +from chainlib.eth.unittest.ethtester import EthTesterCase +from chainlib.eth.tx import receipt +from chainlib.eth.tx import TxFactory +from chainlib.eth.address import to_checksum_address +from chainlib.eth.gas import balance +from chainlib.eth.gas import Gas +from chainlib.eth.gas import OverrideGasOracle +from chainlib.eth.contract import ABIContractEncoder +from chainlib.eth.contract import ABIContractType +from chainlib.eth.block import block_by_number +from eth_accounts_index.registry import AccountRegistry + +# local imports +from eth_faucet.faucet import EthFaucet + +logging.basicConfig(level=logging.DEBUG) +logg = logging.getLogger() + + +class TestFaucetRegistry(EthTesterCase): + + def setUp(self): + super(TestFaucetRegistry, self).setUp() + # DRY + self.conn = RPCConnection.connect(self.chain_spec, 'default') + nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn) + + c = AccountRegistry(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash, o) = c.constructor(self.accounts[0]) + self.conn = RPCConnection.connect(self.chain_spec, 'default') + r = self.conn.do(o) + + o = receipt(r) + r = self.conn.do(o) + self.registry_address = to_checksum_address(r['contract_address']) + + (tx_hash_hex, o) = c.add_writer(self.registry_address, self.accounts[0], self.accounts[0]) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + self.assertEqual(r['status'], 1) + + (tx_hash_hex, o) = c.add(self.registry_address, self.accounts[0], self.accounts[1]) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + self.assertEqual(r['status'], 1) + + c = EthFaucet(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.constructor(self.accounts[0]) + r = self.conn.do(o) + + o = receipt(r) + r = self.conn.do(o) + self.address = to_checksum_address(r['contract_address']) + logg.debug('faucet contract {}'.format(self.address)) + + (tx_hash_hex, o) = c.set_registry(self.address, self.accounts[0], self.registry_address) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + self.assertEqual(r['status'], 1) + + + def test_registry(self): + 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.give_to(self.address, self.accounts[0], self.accounts[2]) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + self.assertEqual(r['status'], 0) + + (tx_hash_hex, o) = c.give_to(self.address, self.accounts[0], self.accounts[1]) + self.conn.do(o) + o = receipt(tx_hash_hex) + r = self.conn.do(o) + self.assertEqual(r['status'], 1) + + +if __name__ == '__main__': + unittest.main() diff --git a/solidity/EthFaucet.sol b/solidity/EthFaucet.sol @@ -60,16 +60,18 @@ contract EthFacuet { (_ok, _result) = periodChecker.call(abi.encodeWithSignature("check(address)", _recipient)); if (!_ok) { + emit FaucetFail(_recipient, address(0), amount); revert('ERR_PERIOD_BACKEND_ERROR'); } if (_result[31] == 0) { + emit FaucetFail(_recipient, address(0), amount); revert('ERR_PERIOD_CHECK'); } (_ok, _result) = periodChecker.call(abi.encodeWithSignature("poke(address)", _recipient)); if (!_ok) { emit FaucetFail(_recipient, address(0), amount); - revert('ERR_PERIOD_CHECK_REGISTER'); + revert('ERR_REGISTRY_BACKEND_ERROR'); } return true; } @@ -83,7 +85,11 @@ contract EthFacuet { emit FaucetFail(_recipient, address(0), amount); revert('ERR_TRANSFER'); } - + if (_result[31] == 0) { + emit FaucetFail(_recipient, address(0), amount); + revert('ERR_REGISTRY_CHECK'); + } + emit FaucetUsed(_recipient, address(0), amount); return true; }