evm-booking

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit eabc0b43ca23edeca46fc33168a5b3f5e6c96f95
parent 043d87d932a1fdc54c18ab5e975c0c320e3232eb
Author: lash <dev@holbrook.no>
Date:   Thu,  1 Jun 2023 19:26:59 +0100

Add raw reserved output with test

Diffstat:
Mpython/evm_booking/booking.py | 35+++++++++++++++++++++++++++++++++++
Mpython/evm_booking/data/Booking.bin | 4++--
Mpython/evm_booking/data/Booking.json | 2+-
Mpython/evm_booking/data/Booking.metadata.json | 2+-
Mpython/tests/test_base.py | 62+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Msolidity/Booking.sol | 17++++++++++++++++-
6 files changed, 116 insertions(+), 6 deletions(-)

diff --git a/python/evm_booking/booking.py b/python/evm_booking/booking.py @@ -116,3 +116,38 @@ class Booking(TxFactory): tx = self.set_code(tx, data) tx = self.finalize(tx, tx_format, id_generator=id_generator) return tx + + + + def raw(self, contract_address, count=0, offset=0, sender_address=ZERO_ADDRESS, id_generator=None, height=BlockSpec.LATEST): + j = JSONRPCRequest(id_generator) + o = j.template() + o['method'] = 'eth_call' + enc = ABIContractEncoder() + enc.method('raw') + enc.typ(ABIContractType.UINT256) + enc.typ(ABIContractType.UINT256) + enc.uint256(count) + enc.uint256(offset) + data = add_0x(enc.get()) + tx = self.template(sender_address, contract_address) + tx = self.set_code(tx, data) + o['params'].append(self.normalize(tx)) + height = to_blockheight_param(height) + o['params'].append(height) + o = j.finalize(o) + return o + + + @classmethod + def parse_raw(self, v): + v = strip_0x(v) + l = int(v[64:128], 16) + b = bytes.fromhex(v[128:]) + c = 0 + r = b'' + while c < l: + vv = b[c:c+32] + r += vv + c += 32 + return r[:l].hex() diff --git a/python/evm_booking/data/Booking.bin b/python/evm_booking/data/Booking.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620023dd380380620023dd8339818101604052810190620000379190620003d4565b60008111801562000058575070010000000000000000000000000000000081105b6200009a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000091906200047c565b60405180910390fd5b620000a46200030d565b620000be8262000270640100000000026401000000009004565b9050600181600060028110620000d957620000d86200049e565b5b6020020151620000ea9190620004fc565b67ffffffffffffffff81111562000106576200010562000537565b5b6040519080825280601f01601f191660200182016040528015620001395781602001600182028036833780820191505090505b50600290816200014a9190620007ad565b506001816000600281106200016457620001636200049e565b5b6020020151620001759190620004fc565b67ffffffffffffffff81111562000191576200019062000537565b5b6040519080825280601f01601f191660200182016040528015620001c45781602001600182028036833780820191505090505b5060039081620001d59190620007ad565b508160048190555060045460058190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000a0e565b6200027a6200030d565b6000620002866200030d565b600160086001866200029991906200089e565b620002a5919062000917565b620002b191906200098b565b91508181600060028110620002cb57620002ca6200049e565b5b602002018181525050600884620002e39190620009d6565b81600160028110620002fa57620002f96200049e565b5b6020020181815250508092505050919050565b6040518060400160405280600290602082028036833780820191505090505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003618262000334565b9050919050565b620003738162000354565b81146200037f57600080fd5b50565b600081519050620003938162000368565b92915050565b6000819050919050565b620003ae8162000399565b8114620003ba57600080fd5b50565b600081519050620003ce81620003a3565b92915050565b60008060408385031215620003ee57620003ed6200032f565b5b6000620003fe8582860162000382565b92505060206200041185828601620003bd565b9150509250929050565b600082825260208201905092915050565b7f4552525f4e4f4e53454e53450000000000000000000000000000000000000000600082015250565b600062000464600c836200041b565b915062000471826200042c565b602082019050919050565b60006020820190508181036000830152620004978162000455565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005098262000399565b9150620005168362000399565b9250828201905080821115620005315762000530620004cd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b957607f821691505b602082108103620005cf57620005ce62000571565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200063c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005fa565b620006488683620005fa565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200068b620006856200067f8462000399565b62000660565b62000399565b9050919050565b6000819050919050565b620006a7836200066a565b620006bf620006b68262000692565b8484546200060a565b825550505050565b600090565b620006d6620006c7565b620006e38184846200069c565b505050565b5b818110156200070b57620006ff600082620006cc565b600181019050620006e9565b5050565b601f8211156200075a576200072481620005d5565b6200072f84620005ea565b810160208510156200073f578190505b620007576200074e85620005ea565b830182620006e8565b50505b505050565b60008160020a8304905092915050565b600062000782600019846008026200075f565b1980831691505092915050565b60006200079d83836200076f565b9150826002028217905092915050565b620007b88262000566565b67ffffffffffffffff811115620007d457620007d362000537565b5b620007e08254620005a0565b620007ed8282856200070f565b600060209050601f83116001811462000825576000841562000810578287015190505b6200081c85826200078f565b8655506200088c565b601f1984166200083586620005d5565b60005b828110156200085f5784890151825560018201915060208501945060208101905062000838565b868310156200087f57848901516200087b601f8916826200076f565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b6000620008ab8262000894565b9150620008b88362000894565b9250828203905081811260008412168282136000851215161715620008e257620008e1620004cd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009248262000894565b9150620009318362000894565b925082620009445762000943620008e8565b5b600160000383147f80000000000000000000000000000000000000000000000000000000000000008314161562000980576200097f620004cd565b5b828205905092915050565b6000620009988262000894565b9150620009a58362000894565b925082820190508281121560008312168382126000841215161715620009d057620009cf620004cd565b5b92915050565b6000620009e38262000399565b9150620009f08362000399565b92508262000a035762000a02620008e8565b5b828206905092915050565b6119bf8062000a1e6000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161008e5780638da5cb5b146101ac578063aa67c919146101ca578063d0e30db0146101fa578063da2824a814610218578063de34d54414610248578063fc0c546a14610264576100d1565b806318160ddd146100d65780632b29ba23146100f45780634eeea7ad146101245780635356dddc146101405780635cfc1a51146101705780637f03864b1461018e575b600080fd5b6100de610282565b6040516100eb91906110d9565b60405180910390f35b61010e60048036038101906101099190611157565b610288565b60405161011b919061119f565b60405180910390f35b61013e600480360381019061013991906111e6565b610334565b005b61015a60048036038101906101559190611157565b610344565b604051610167919061119f565b60405180910390f35b61017861046c565b60405161018591906110d9565b60405180910390f35b610196610472565b6040516101a391906110d9565b60405180910390f35b6101b4610478565b6040516101c19190611235565b60405180910390f35b6101e460048036038101906101df9190611157565b61049c565b6040516101f19190611269565b60405180910390f35b610202610790565b60405161020f9190611269565b60405180910390f35b610232600480360381019061022d9190611157565b6107a0565b60405161023f919061119f565b60405180910390f35b610262600480360381019061025d91906111e6565b610892565b005b61026c6108ea565b6040516102799190611235565b60405180910390f35b60055481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061032d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b61034082826000610910565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103cc57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61040b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610402906112e1565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60045481565b60065481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060606000806104af610d04565b9550600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548603610506576000965050505050505061078b565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866105519190611330565b9450600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611156105a5578791503090506105da565b3091508790507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff856105d79190611373565b94505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828287604051602401610628939291906113eb565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106b29190611493565b6000604051808303816000865af19150503d80600081146106ef576040519150601f19603f3d011682016040523d82523d6000602084013e6106f4565b606091505b5080945081955050508361073d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610734906114f6565b60405180910390fd5b85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508496505050505050505b919050565b600061079b3361049c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610828906112e1565b60405180910390fd5b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b61089b33610288565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906112e1565b60405180910390fd5b6108e682826001610910565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008211610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90611562565b60405180910390fd5b61095b61109e565b60008061096786610d7d565b92508260006002811061097d5761097c611582565b5b602002015191508260016002811061099857610997611582565b5b602002015160ff1660019060020a02905060005b85811015610cfb576000600454116109f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f0906115fd565b60405180910390fd5b610a038383610e08565b610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990611669565b60405180910390fd5b8415610b8257816003848154610a57906116b8565b8110610a6657610a65611582565b5b815460011615610a855790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004177f0100000000000000000000000000000000000000000000000000000000000000026003848154610aff906116b8565b8110610b0e57610b0d611582565b5b815460011615610b2d5790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555060066000815480929190610b78906116e9565b9190505550610ca0565b816002848154610b91906116b8565b8110610ba057610b9f611582565b5b815460011615610bbf5790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004177f0100000000000000000000000000000000000000000000000000000000000000026002848154610c39906116b8565b8110610c4857610c47611582565b5b815460011615610c675790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b60808260ff1603610cc2578280610cb6906116e9565b93505060019150610cd0565b60018260ff169060020a0291505b60046000815480929190610ce390611731565b91905055508080610cf3906116e9565b9150506109ac565b50505050505050565b6000806000610d11610f24565b9150600554821015610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f906117a6565b60405180910390fd5b60055482610d6691906117f5565b905080600654610d769190611826565b9250505090565b610d8561109e565b6000610d8f61109e565b60016008600186610da09190611330565b610daa9190611868565b610db491906118d2565b91508181600060028110610dcb57610dca611582565b5b602002018181525050600884610de19190611916565b81600160028110610df557610df4611582565b5b6020020181815250508092505050919050565b600080826003858154610e1a906116b8565b8110610e2957610e28611582565b5b815460011615610e485790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090046002868154610e9f906116b8565b8110610eae57610ead611582565b5b815460011615610ecd5790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004171660ff1614905092915050565b60008060606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f18160ddd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610ff49190611493565b6000604051808303816000865af19150503d8060008114611031576040519150601f19603f3d011682016040523d82523d6000602084013e611036565b606091505b5080935081945050508261107f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611076906114f6565b60405180910390fd5b81806020019051810190611093919061195c565b905080935050505090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b6110d3816110c0565b82525050565b60006020820190506110ee60008301846110ca565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611124826110f9565b9050919050565b61113481611119565b811461113f57600080fd5b50565b6000813590506111518161112b565b92915050565b60006020828403121561116d5761116c6110f4565b5b600061117b84828501611142565b91505092915050565b60008115159050919050565b61119981611184565b82525050565b60006020820190506111b46000830184611190565b92915050565b6111c3816110c0565b81146111ce57600080fd5b50565b6000813590506111e0816111ba565b92915050565b600080604083850312156111fd576111fc6110f4565b5b600061120b858286016111d1565b925050602061121c858286016111d1565b9150509250929050565b61122f81611119565b82525050565b600060208201905061124a6000830184611226565b92915050565b6000819050919050565b61126381611250565b82525050565b600060208201905061127e600083018461125a565b92915050565b600082825260208201905092915050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b60006112cb600783611284565b91506112d682611295565b602082019050919050565b600060208201905081810360008301526112fa816112be565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133b82611250565b915061134683611250565b925082820390508181126000841216828213600085121516171561136d5761136c611301565b5b92915050565b600061137e82611250565b915061138983611250565b925082820261139781611250565b91507f800000000000000000000000000000000000000000000000000000000000000084146000841216156113cf576113ce611301565b5b82820584148315176113e4576113e3611301565b5b5092915050565b60006060820190506114006000830186611226565b61140d6020830185611226565b61141a60408301846110ca565b949350505050565b600081519050919050565b600081905092915050565b60005b8381101561145657808201518184015260208101905061143b565b60008484015250505050565b600061146d82611422565b611477818561142d565b9350611487818560208601611438565b80840191505092915050565b600061149f8284611462565b915081905092915050565b7f4552525f544f4b454e0000000000000000000000000000000000000000000000600082015250565b60006114e0600983611284565b91506114eb826114aa565b602082019050919050565b6000602082019050818103600083015261150f816114d3565b9050919050565b7f4552525f5a45524f434f554e5400000000000000000000000000000000000000600082015250565b600061154c600d83611284565b915061155782611516565b602082019050919050565b6000602082019050818103600083015261157b8161153f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f43415041434954590000000000000000000000000000000000000000600082015250565b60006115e7600c83611284565b91506115f2826115b1565b602082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f4552525f434f4c4c4953494f4e00000000000000000000000000000000000000600082015250565b6000611653600d83611284565b915061165e8261161d565b602082019050919050565b6000602082019050818103600083015261168281611646565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116d057607f821691505b6020821081036116e3576116e2611689565b5b50919050565b60006116f4826110c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361172657611725611301565b5b600182019050919050565b600061173c826110c0565b91506000820361174f5761174e611301565b5b600182039050919050565b7f4552525f535550504c595f554e444552464c4f57000000000000000000000000600082015250565b6000611790601483611284565b915061179b8261175a565b602082019050919050565b600060208201905081810360008301526117bf81611783565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611800826110c0565b915061180b836110c0565b92508261181b5761181a6117c6565b5b828204905092915050565b6000611831826110c0565b915061183c836110c0565b925082820261184a816110c0565b9150828204841483151761186157611860611301565b5b5092915050565b600061187382611250565b915061187e83611250565b92508261188e5761188d6117c6565b5b600160000383147f8000000000000000000000000000000000000000000000000000000000000000831416156118c7576118c6611301565b5b828205905092915050565b60006118dd82611250565b91506118e883611250565b9250828201905082811215600083121683821260008412151617156119105761190f611301565b5b92915050565b6000611921826110c0565b915061192c836110c0565b92508261193c5761193b6117c6565b5b828206905092915050565b600081519050611956816111ba565b92915050565b600060208284031215611972576119716110f4565b5b600061198084828501611947565b9150509291505056fea26469706673582212207402f5d84501b94c8bac17c62af5609d54c7d4bd426431cf48d0e9681fd4e60664736f6c63430008130033 -\ No newline at end of file +60806040523480156200001157600080fd5b50604051620026c1380380620026c18339818101604052810190620000379190620003c6565b60008111801562000058575070010000000000000000000000000000000081105b6200009a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000091906200046e565b60405180910390fd5b620000a4620002ff565b620000be8262000270640100000000026401000000009004565b9050600181600060028110620000d957620000d862000490565b5b6020020151620000ea9190620004ee565b67ffffffffffffffff81111562000106576200010562000529565b5b6040519080825280601f01601f191660200182016040528015620001395781602001600182028036833780820191505090505b50600290816200014a91906200079f565b5060018160006002811062000164576200016362000490565b5b6020020151620001759190620004ee565b67ffffffffffffffff81111562000191576200019062000529565b5b6040519080825280601f01601f191660200182016040528015620001c45781602001600182028036833780820191505090505b5060039081620001d591906200079f565b508160048190555060045460058190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620009b5565b6200027a620002ff565b600062000286620002ff565b600860018562000297919062000890565b620002a3919062000909565b91508181600060028110620002bd57620002bc62000490565b5b602002018181525050600884620002d591906200097d565b81600160028110620002ec57620002eb62000490565b5b6020020181815250508092505050919050565b6040518060400160405280600290602082028036833780820191505090505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003538262000326565b9050919050565b620003658162000346565b81146200037157600080fd5b50565b60008151905062000385816200035a565b92915050565b6000819050919050565b620003a0816200038b565b8114620003ac57600080fd5b50565b600081519050620003c08162000395565b92915050565b60008060408385031215620003e057620003df62000321565b5b6000620003f08582860162000374565b92505060206200040385828601620003af565b9150509250929050565b600082825260208201905092915050565b7f4552525f4e4f4e53454e53450000000000000000000000000000000000000000600082015250565b600062000456600c836200040d565b915062000463826200041e565b602082019050919050565b60006020820190508181036000830152620004898162000447565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620004fb826200038b565b915062000508836200038b565b9250828201905080821115620005235762000522620004bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005ab57607f821691505b602082108103620005c157620005c062000563565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200062e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005ec565b6200063a8683620005ec565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200067d6200067762000671846200038b565b62000652565b6200038b565b9050919050565b6000819050919050565b62000699836200065c565b620006b1620006a88262000684565b848454620005fc565b825550505050565b600090565b620006c8620006b9565b620006d58184846200068e565b505050565b5b81811015620006fd57620006f1600082620006be565b600181019050620006db565b5050565b601f8211156200074c576200071681620005c7565b6200072184620005dc565b8101602085101562000731578190505b620007496200074085620005dc565b830182620006da565b50505b505050565b60008160020a8304905092915050565b6000620007746000198460080262000751565b1980831691505092915050565b60006200078f838362000761565b9150826002028217905092915050565b620007aa8262000558565b67ffffffffffffffff811115620007c657620007c562000529565b5b620007d2825462000592565b620007df82828562000701565b600060209050601f83116001811462000817576000841562000802578287015190505b6200080e858262000781565b8655506200087e565b601f1984166200082786620005c7565b60005b8281101562000851578489015182556001820191506020850194506020810190506200082a565b868310156200087157848901516200086d601f89168262000761565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b60006200089d8262000886565b9150620008aa8362000886565b9250828203905081811260008412168282136000851215161715620008d457620008d3620004bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009168262000886565b9150620009238362000886565b925082620009365762000935620008da565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615620009725762000971620004bf565b5b828205905092915050565b60006200098a826200038b565b915062000997836200038b565b925082620009aa57620009a9620008da565b5b828206905092915050565b611cfc80620009c56000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c0100000000000000000000000000000000000000000000000000000000900480637f03864b116100a9578063d0e30db011610083578063d0e30db014610245578063da2824a814610263578063de34d54414610293578063fc0c546a146102af576100ec565b80637f03864b146101d95780638da5cb5b146101f7578063aa67c91914610215576100ec565b806304bc34e2146100f157806318160ddd146101215780632b29ba231461013f5780634eeea7ad1461016f5780635356dddc1461018b5780635cfc1a51146101bb575b600080fd5b61010b60048036038101906101069190611330565b6102cd565b6040516101189190611400565b60405180910390f35b6101296104c3565b6040516101369190611431565b60405180910390f35b610159600480360381019061015491906114aa565b6104c9565b60405161016691906114f2565b60405180910390f35b61018960048036038101906101849190611330565b610575565b005b6101a560048036038101906101a091906114aa565b610585565b6040516101b291906114f2565b60405180910390f35b6101c36106ad565b6040516101d09190611431565b60405180910390f35b6101e16106b3565b6040516101ee9190611431565b60405180910390f35b6101ff6106b9565b60405161020c919061151c565b60405180910390f35b61022f600480360381019061022a91906114aa565b6106dd565b60405161023c9190611550565b60405180910390f35b61024d6109d1565b60405161025a9190611550565b60405180910390f35b61027d600480360381019061027891906114aa565b6109e1565b60405161028a91906114f2565b60405180910390f35b6102ad60048036038101906102a89190611330565b610ad3565b005b6102b7610b2b565b6040516102c4919061151c565b60405180910390f35b606080600084036102de5760055493505b60055484846102ed919061159a565b111561032e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103259061162b565b60405180910390fd5b8367ffffffffffffffff8111156103485761034761164b565b5b6040519080825280601f01601f19166020018201604052801561037a5781602001600182028036833780820191505090505b50905060005b848110156104b85760038482610396919061159a565b81546103a1906116a9565b81106103b0576103af6116da565b5b8154600116156103cf5790600052602060002090602091828204019190065b9054901a7f01000000000000000000000000000000000000000000000000000000000000000260028583610403919061159a565b815461040e906116a9565b811061041d5761041c6116da565b5b81546001161561043c5790600052602060002090602091828204019190065b9054901a7f01000000000000000000000000000000000000000000000000000000000000000217828281518110610476576104756116da565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806104b090611709565b915050610380565b508091505092915050565b60055481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061056e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b61058182826000610b51565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061060d57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61064c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106439061179d565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60045481565b60065481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060606000806106f0610f45565b9550600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054860361074757600096505050505050506109cc565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661079291906117bd565b9450600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611156107e65787915030905061081b565b3091508790507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff856108189190611800565b94505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828760405160240161086993929190611878565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516108f391906118eb565b6000604051808303816000865af19150503d8060008114610930576040519150601f19603f3d011682016040523d82523d6000602084013e610935565b606091505b5080945081955050508361097e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109759061194e565b60405180910390fd5b85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508496505050505050505b919050565b60006109dc336106dd565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a699061179d565b60405180910390fd5b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b610adc336104c9565b610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b129061179d565b60405180910390fd5b610b2782826001610b51565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008211610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b906119ba565b60405180910390fd5b610b9c6112d3565b600080610ba886610fbe565b925082600060028110610bbe57610bbd6116da565b5b6020020151915082600160028110610bd957610bd86116da565b5b602002015160ff1660019060020a02905060005b85811015610f3c57600060045411610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190611a26565b60405180910390fd5b610c44838361103d565b610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90611a92565b60405180910390fd5b8415610dc357816003848154610c98906116a9565b8110610ca757610ca66116da565b5b815460011615610cc65790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004177f0100000000000000000000000000000000000000000000000000000000000000026003848154610d40906116a9565b8110610d4f57610d4e6116da565b5b815460011615610d6e5790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555060066000815480929190610db990611709565b9190505550610ee1565b816002848154610dd2906116a9565b8110610de157610de06116da565b5b815460011615610e005790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004177f0100000000000000000000000000000000000000000000000000000000000000026002848154610e7a906116a9565b8110610e8957610e886116da565b5b815460011615610ea85790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b60808260ff1603610f03578280610ef790611709565b93505060019150610f11565b60018260ff169060020a0291505b60046000815480929190610f2490611ab2565b91905055508080610f3490611709565b915050610bed565b50505050505050565b6000806000610f52611159565b9150600554821015610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090611b27565b60405180910390fd5b60055482610fa79190611b76565b905080600654610fb79190611ba7565b9250505090565b610fc66112d3565b6000610fd06112d3565b6008600185610fdf91906117bd565b610fe99190611be9565b9150818160006002811061100057610fff6116da565b5b6020020181815250506008846110169190611c53565b8160016002811061102a576110296116da565b5b6020020181815250508092505050919050565b60008082600385815461104f906116a9565b811061105e5761105d6116da565b5b81546001161561107d5790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460028681546110d4906116a9565b81106110e3576110e26116da565b5b8154600116156111025790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004171660ff1614905092915050565b60008060606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f18160ddd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161122991906118eb565b6000604051808303816000865af19150503d8060008114611266576040519150601f19603f3d011682016040523d82523d6000602084013e61126b565b606091505b508093508194505050826112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab9061194e565b60405180910390fd5b818060200190518101906112c89190611c99565b905080935050505090565b6040518060400160405280600290602082028036833780820191505090505090565b600080fd5b6000819050919050565b61130d816112fa565b811461131857600080fd5b50565b60008135905061132a81611304565b92915050565b60008060408385031215611347576113466112f5565b5b60006113558582860161131b565b92505060206113668582860161131b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113aa57808201518184015260208101905061138f565b60008484015250505050565b6000601f19601f8301169050919050565b60006113d282611370565b6113dc818561137b565b93506113ec81856020860161138c565b6113f5816113b6565b840191505092915050565b6000602082019050818103600083015261141a81846113c7565b905092915050565b61142b816112fa565b82525050565b60006020820190506114466000830184611422565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114778261144c565b9050919050565b6114878161146c565b811461149257600080fd5b50565b6000813590506114a48161147e565b92915050565b6000602082840312156114c0576114bf6112f5565b5b60006114ce84828501611495565b91505092915050565b60008115159050919050565b6114ec816114d7565b82525050565b600060208201905061150760008301846114e3565b92915050565b6115168161146c565b82525050565b6000602082019050611531600083018461150d565b92915050565b6000819050919050565b61154a81611537565b82525050565b60006020820190506115656000830184611541565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115a5826112fa565b91506115b0836112fa565b92508282019050808211156115c8576115c761156b565b5b92915050565b600082825260208201905092915050565b7f4552525f52414e47450000000000000000000000000000000000000000000000600082015250565b60006116156009836115ce565b9150611620826115df565b602082019050919050565b6000602082019050818103600083015261164481611608565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116c157607f821691505b6020821081036116d4576116d361167a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611714826112fa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117465761174561156b565b5b600182019050919050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b60006117876007836115ce565b915061179282611751565b602082019050919050565b600060208201905081810360008301526117b68161177a565b9050919050565b60006117c882611537565b91506117d383611537565b92508282039050818112600084121682821360008512151617156117fa576117f961156b565b5b92915050565b600061180b82611537565b915061181683611537565b925082820261182481611537565b91507f8000000000000000000000000000000000000000000000000000000000000000841460008412161561185c5761185b61156b565b5b82820584148315176118715761187061156b565b5b5092915050565b600060608201905061188d600083018661150d565b61189a602083018561150d565b6118a76040830184611422565b949350505050565b600081905092915050565b60006118c582611370565b6118cf81856118af565b93506118df81856020860161138c565b80840191505092915050565b60006118f782846118ba565b915081905092915050565b7f4552525f544f4b454e0000000000000000000000000000000000000000000000600082015250565b60006119386009836115ce565b915061194382611902565b602082019050919050565b600060208201905081810360008301526119678161192b565b9050919050565b7f4552525f5a45524f434f554e5400000000000000000000000000000000000000600082015250565b60006119a4600d836115ce565b91506119af8261196e565b602082019050919050565b600060208201905081810360008301526119d381611997565b9050919050565b7f4552525f43415041434954590000000000000000000000000000000000000000600082015250565b6000611a10600c836115ce565b9150611a1b826119da565b602082019050919050565b60006020820190508181036000830152611a3f81611a03565b9050919050565b7f4552525f434f4c4c4953494f4e00000000000000000000000000000000000000600082015250565b6000611a7c600d836115ce565b9150611a8782611a46565b602082019050919050565b60006020820190508181036000830152611aab81611a6f565b9050919050565b6000611abd826112fa565b915060008203611ad057611acf61156b565b5b600182039050919050565b7f4552525f535550504c595f554e444552464c4f57000000000000000000000000600082015250565b6000611b116014836115ce565b9150611b1c82611adb565b602082019050919050565b60006020820190508181036000830152611b4081611b04565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611b81826112fa565b9150611b8c836112fa565b925082611b9c57611b9b611b47565b5b828204905092915050565b6000611bb2826112fa565b9150611bbd836112fa565b9250828202611bcb816112fa565b91508282048414831517611be257611be161156b565b5b5092915050565b6000611bf482611537565b9150611bff83611537565b925082611c0f57611c0e611b47565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615611c4857611c4761156b565b5b828205905092915050565b6000611c5e826112fa565b9150611c69836112fa565b925082611c7957611c78611b47565b5b828206905092915050565b600081519050611c9381611304565b92915050565b600060208284031215611caf57611cae6112f5565b5b6000611cbd84828501611c84565b9150509291505056fea26469706673582212207c5f4547b4984299efeefd2d3af28d6189947db8074641fd9bd0162196c2269564736f6c63430008130033 +\ No newline at end of file diff --git a/python/evm_booking/data/Booking.json b/python/evm_booking/data/Booking.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_resolution","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"consume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"depositFor","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"removeWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"share","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] +[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_resolution","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"consume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"depositFor","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_offset","type":"uint256"}],"name":"raw","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"removeWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"share","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] diff --git a/python/evm_booking/data/Booking.metadata.json b/python/evm_booking/data/Booking.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_resolution","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"consume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"depositFor","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"removeWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"share","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"Booking.sol":"ERC20Book"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"Booking.sol":{"keccak256":"0x941d576cf37e76126a345248d06f68cb0c0bb6ae07abbc7241c42d5af69f3da2","license":"AGPL-3.0-or-later","urls":["bzz-raw://20ab5955e5d70b7f05d786cff24f0e3c10715fc8c9d9fa20bb7db295bf949540","dweb:/ipfs/QmZXXML8itKRqP12woSJqgDkqP6PWvQrE2WAqLAKv1NHV3"]}},"version":1} +{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_resolution","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"consume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"depositFor","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_offset","type":"uint256"}],"name":"raw","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"removeWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"share","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"Booking.sol":"ERC20Book"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"Booking.sol":{"keccak256":"0x0ff2ae46747d9d1d3eb62afeb19c4edf9af0300ec67859ed54c5172192b6d08f","license":"AGPL-3.0-or-later","urls":["bzz-raw://102f136fc3a8149600a4a24dac9d4089bc1ebc326107879781a0599fe1a9eaf0","dweb:/ipfs/QmdydWNRoWJnQkz1PdVwDDwwJubNFHo7nXM5hs8PZk14B9"]}},"version":1} diff --git a/python/tests/test_base.py b/python/tests/test_base.py @@ -98,7 +98,67 @@ class TestBookingBase(TestBooking): o = c.balance_of(self.token_address, self.accounts[0], sender_address=self.accounts[0]) r = self.rpc.do(o) balance = c.parse_balance_of(r) - self.assertEqual(balance, self.initial_supply - (self.resolution_unit * 13)) + expected_balance = self.initial_supply - (self.resolution_unit * 13) + self.assertEqual(balance, expected_balance) + + c = Booking(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.deposit(self.address, self.accounts[0]) + self.rpc.do(o) + o = receipt(tx_hash_hex) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + c = ERC20(self.chain_spec) + o = c.balance_of(self.token_address, self.accounts[0], sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertEqual(balance, expected_balance) + + c = Booking(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.share(self.address, self.accounts[0], 133, 7) + self.rpc.do(o) + o = receipt(tx_hash_hex) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + (tx_hash_hex, o) = c.deposit(self.address, self.accounts[0]) + self.rpc.do(o) + o = receipt(tx_hash_hex) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + c = ERC20(self.chain_spec) + o = c.balance_of(self.token_address, self.accounts[0], sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + expected_balance = self.initial_supply - (self.resolution_unit * (13 + 7)) + self.assertEqual(balance, expected_balance) + + + def test_raw(self): + nonce_oracle = RPCNonceOracle(self.accounts[0], conn=self.rpc) + c = ERC20(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.approve(self.token_address, self.accounts[0], self.address, self.initial_supply) + self.rpc.do(o) + + c = Booking(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash_hex, o) = c.share(self.address, self.accounts[0], 42, 13) + self.rpc.do(o) + o = receipt(tx_hash_hex) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + (tx_hash_hex, o) = c.consume(self.address, self.accounts[0], 133, 7) + self.rpc.do(o) + o = receipt(tx_hash_hex) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + o = c.raw(self.address, sender_address=self.accounts[0], count=150) + r = self.rpc.do(o) + field = c.parse_raw(r) + self.assertEqual(len(field), 150 * 2) + self.assertEqual("0000000000fc7f000000000000000000e00f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", field) if __name__ == '__main__': diff --git a/solidity/Booking.sol b/solidity/Booking.sol @@ -152,10 +152,25 @@ contract ERC20Book { int256 c; uint256[2] memory r; - c = (int256(bit) - 1) / 8 + 1 ; + c = (int256(bit) - 1) / 8; r[0] = uint256(c); r[1] = bit % 8; return r; } + + function raw(uint256 _count, uint256 _offset) public view returns (bytes memory) { + bytes memory r; + + if (_count == 0) { + _count = totalSupply; + } + require(_offset + _count <= totalSupply, "ERR_RANGE"); + + r = new bytes(_count); + for (uint256 i = 0; i < _count; i++) { + r[i] = slots[i + _offset] | sharedSlots[i + _offset]; + } + return r; + } }