erc20-transfer-authorization

Simple approval escrow for ERC20 spending
Log | Files | Refs

commit ea2e8737241079c828610a130aa20953a6f639bf
parent d7a88d989418302b08787cfaf5b5a1300bb10f68
Author: nolash <dev@holbrook.no>
Date:   Sun, 10 Jan 2021 20:40:00 +0100

Implement external signer

Diffstat:
Mpython/CHANGELOG | 3+++
Mpython/erc20_approval_escrow/approval.py | 8++++++--
Mpython/erc20_approval_escrow/data/GiftableToken.bin | 4++--
Mpython/erc20_approval_escrow/data/TransferApproval.bin | 4++--
Mpython/erc20_approval_escrow/runnable/deploy.py | 64++++++++++++++++++++++++++++++++++++++++++++++++----------------
Mpython/setup.cfg | 4+++-
Msolidity/Makefile | 6++++--
Msolidity/TransferApproval.bin | 4++--
Msolidity/TransferApproval.sol | 2+-
9 files changed, 71 insertions(+), 28 deletions(-)

diff --git a/python/CHANGELOG b/python/CHANGELOG @@ -1,3 +1,6 @@ +- 0.2.0-unreleased + * Implement external signer + * Standardize cli arg flags - 0.1.0 * Enable chronological access in spite of out-of-order processing - 0.0.5 diff --git a/python/erc20_approval_escrow/approval.py b/python/erc20_approval_escrow/approval.py @@ -52,8 +52,12 @@ class TransferApproval: return TransferApproval.__bytecode - def serial(self): - return self.contract.functions.serial().call() + def last_serial(self): + return self.contract.functions.lastSerial().call() + + + def next_serial(self): + return self.contract.functions.nextSerial().call() def requests(self, idx): diff --git a/python/erc20_approval_escrow/data/GiftableToken.bin b/python/erc20_approval_escrow/data/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200120338038062001203833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200021a929190620002af565b50816003908051906020019062000233929190620002af565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505062000365565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002e7576000855562000333565b82601f106200030257805160ff191683800117855562000333565b8280016001018555821562000333579182015b828111156200033257825182559160200191906001019062000315565b5b50905062000342919062000346565b5090565b5b808211156200036157600081600090555060010162000347565b5090565b610e8e80620003756000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806355b6ed5c1161007157806355b6ed5c146102bd57806370a082311461033557806395d89b411461038d578063983b2d5614610410578063a0712d681461046a578063a9059cbb146104ae576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a057806323b872dd146101be5780633092afd514610242578063313ce5671461029c575b600080fd5b6100c1610512565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105b0565b60405180821515815260200191505060405180910390f35b6101a86106ab565b6040518082815260200191505060405180910390f35b61022a600480360360608110156101d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106b1565b60405180821515815260200191505060405180910390f35b6102846004803603602081101561025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109a8565b60405180821515815260200191505060405180910390f35b6102a4610a9a565b604051808260ff16815260200191505060405180910390f35b61031f600480360360408110156102d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aad565b6040518082815260200191505060405180910390f35b6103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ad2565b6040518082815260200191505060405180910390f35b610395610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d55780820151818401526020810190506103ba565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104526004803603602081101561042657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b88565b60405180821515815260200191505060405180910390f35b6104966004803603602081101561048057600080fd5b8101908080359060200190929190505050610c43565b60405180821515815260200191505060405180910390f35b6104fa600480360360408110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d01565b60405180821515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561073c57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040518082815260200191505060405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a3057508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a3957600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60066020528060005260406000206000915090505481565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be357600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c9b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160056000828254019250508190555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d4f57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509291505056fea2646970667358221220c0d6d8018b8639a774d77580663d7ecd2fc2417fbfc966cd14a6c11bbf21f02d64736f6c63430007050033 -\ No newline at end of file +60806040523480156200001157600080fd5b50604051620014d8380380620014d883398181016040528101906200003791906200025d565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050506200043d565b82805462000132906200038f565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e58462000319565b620002e5565b9050828152602081018484840111156200020457600080fd5b6200021184828562000359565b509392505050565b600082601f8301126200022b57600080fd5b81516200023d848260208601620001d4565b91505092915050565b600081519050620002578162000423565b92915050565b6000806000606084860312156200027357600080fd5b600084015167ffffffffffffffff8111156200028e57600080fd5b6200029c8682870162000219565b935050602084015167ffffffffffffffff811115620002ba57600080fd5b620002c88682870162000219565b9250506040620002db8682870162000246565b9150509250925092565b6000604051905081810181811067ffffffffffffffff821117156200030f576200030e620003f4565b5b8060405250919050565b600067ffffffffffffffff821115620003375762000336620003f4565b5b601f19601f8301169050602081019050919050565b600060ff82169050919050565b60005b83811015620003795780820151818401526020810190506200035c565b8381111562000389576000848401525b50505050565b60006002820490506001821680620003a857607f821691505b60208210811415620003bf57620003be620003c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200042e816200034c565b81146200043a57600080fd5b50565b61108b806200044d6000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161008e57806370a08231146101c057806395d89b41146101f0578063983b2d561461020e578063a0712d681461023e578063a9059cbb1461026e578063dd62ed3e1461029e576100d1565b806306fdde03146100d6578063095ea7b3146100f457806318160ddd1461012457806323b872dd146101425780633092afd514610172578063313ce567146101a2575b600080fd5b6100de6102ce565b6040516100eb9190610e00565b60405180910390f35b61010e60048036038101906101099190610d1a565b61035c565b60405161011b9190610de5565b60405180910390f35b61012c610460565b6040516101399190610e22565b60405180910390f35b61015c60048036038101906101579190610ccb565b610466565b6040516101699190610de5565b60405180910390f35b61018c60048036038101906101879190610c66565b610778565b6040516101999190610de5565b60405180910390f35b6101aa61086a565b6040516101b79190610e3d565b60405180910390f35b6101da60048036038101906101d59190610c66565b61087d565b6040516101e79190610e22565b60405180910390f35b6101f8610895565b6040516102059190610e00565b60405180910390f35b61022860048036038101906102239190610c66565b610923565b6040516102359190610de5565b60405180910390f35b61025860048036038101906102539190610d56565b6109de565b6040516102659190610de5565b60405180910390f35b61028860048036038101906102839190610d1a565b610aae565b6040516102959190610de5565b60405180910390f35b6102b860048036038101906102b39190610c8f565b610c17565b6040516102c59190610e22565b60405180910390f35b600280546102db90610f86565b80601f016020809104026020016040519081016040528092919081815260200182805461030790610f86565b80156103545780601f1061032957610100808354040283529160200191610354565b820191906000526020600020905b81548152906001019060200180831161033757829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103ea9190610e74565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161044e9190610e22565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156104f157600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561053d57600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105c59190610eca565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106949190610eca565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106ea9190610e74565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516107659190610e22565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080057508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61080957600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b600380546108a290610f86565b80601f01602080910402602001604051908101604052809291908181526020018280546108ce90610f86565b801561091b5780601f106108f05761010080835404028352916020019161091b565b820191906000526020600020905b8154815290600101906020018083116108fe57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097e57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a3657600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a859190610e74565b925050819055508160056000828254610a9e9190610e74565b9250508190555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610afc57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4b9190610eca565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba19190610e74565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c059190610e22565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600081359050610c4b81611027565b92915050565b600081359050610c608161103e565b92915050565b600060208284031215610c7857600080fd5b6000610c8684828501610c3c565b91505092915050565b60008060408385031215610ca257600080fd5b6000610cb085828601610c3c565b9250506020610cc185828601610c3c565b9150509250929050565b600080600060608486031215610ce057600080fd5b6000610cee86828701610c3c565b9350506020610cff86828701610c3c565b9250506040610d1086828701610c51565b9150509250925092565b60008060408385031215610d2d57600080fd5b6000610d3b85828601610c3c565b9250506020610d4c85828601610c51565b9150509250929050565b600060208284031215610d6857600080fd5b6000610d7684828501610c51565b91505092915050565b610d8881610f10565b82525050565b6000610d9982610e58565b610da38185610e63565b9350610db3818560208601610f53565b610dbc81611016565b840191505092915050565b610dd081610f3c565b82525050565b610ddf81610f46565b82525050565b6000602082019050610dfa6000830184610d7f565b92915050565b60006020820190508181036000830152610e1a8184610d8e565b905092915050565b6000602082019050610e376000830184610dc7565b92915050565b6000602082019050610e526000830184610dd6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f3c565b9150610e8a83610f3c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610fb8565b5b828201905092915050565b6000610ed582610f3c565b9150610ee083610f3c565b925082821015610ef357610ef2610fb8565b5b828203905092915050565b6000610f0982610f1c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f71578082015181840152602081019050610f56565b83811115610f80576000848401525b50505050565b60006002820490506001821680610f9e57607f821691505b60208210811415610fb257610fb1610fe7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61103081610efe565b811461103b57600080fd5b50565b61104781610f3c565b811461105257600080fd5b5056fea2646970667358221220aa98bfe5caceca50ca9e4451ff4bd48deb23fefba3bba4226d2b922d94c342a964736f6c63430008000033 +\ No newline at end of file diff --git a/python/erc20_approval_escrow/data/TransferApproval.bin b/python/erc20_approval_escrow/data/TransferApproval.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620016e1380380620016e18339818101604052810190620000379190620001c3565b60005b8151811015620000f35760016004600084848151811062000084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000ea90620002a9565b9150506200003a565b50600180819055506001600281905550506200036f565b6000620001216200011b846200023c565b62000208565b905080838252602082019050828560208602820111156200014157600080fd5b60005b858110156200017557816200015a88826200017f565b84526020840193506020830192505060018101905062000144565b5050509392505050565b600081519050620001908162000355565b92915050565b600082601f830112620001a857600080fd5b8151620001ba8482602086016200010a565b91505092915050565b600060208284031215620001d657600080fd5b600082015167ffffffffffffffff811115620001f157600080fd5b620001ff8482850162000196565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171562000232576200023162000326565b5b8060405250919050565b600067ffffffffffffffff8211156200025a576200025962000326565b5b602082029050602081019050919050565b600062000278826200027f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620002b6826200029f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620002ec57620002eb620002f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000360816200026b565b81146200036c57600080fd5b50565b611362806200037f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806357ec347a1161006657806357ec347a146101345780636e417c691461015257806381d12c5814610182578063b0addede146101b6578063bac911ac146101e657610093565b806306661abd1461009857806308ae6377146100b65780630a144391146100d45780632d7788db14610104575b600080fd5b6100a0610216565b6040516100ad91906110ef565b60405180910390f35b6100be61021c565b6040516100cb91906110ef565b60405180910390f35b6100ee60048036038101906100e99190610ec7565b610247565b6040516100fb9190611094565b60405180910390f35b61011e60048036038101906101199190610f3f565b610267565b60405161012b9190611094565b60405180910390f35b61013c610553565b60405161014991906110ef565b60405180910390f35b61016c60048036038101906101679190610f3f565b610568565b6040516101799190611094565b60405180910390f35b61019c60048036038101906101979190610f3f565b610855565b6040516101ad95949392919061110a565b60405180910390f35b6101d060048036038101906101cb9190610ef0565b6108eb565b6040516101dd91906110ef565b60405180910390f35b61020060048036038101906101fb9190610f3f565b610b85565b60405161020d91906110ef565b60405180910390f35b60035481565b60008060025460015461022f91906111ad565b141561023e5760009050610244565b60025490505b90565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec906110af565b60405180910390fd5b6000806000848152602001908152602001600020905082816000015414610351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610348906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016103f09392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161047a9190611046565b6000604051808303816000865af19150503d80600081146104b7576040519150601f19603f3d011682016040523d82523d6000602084013e6104bc565b606091505b50915091506104ce8360000154610d24565b8115610510577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161050391906110ef565b60405180910390a1610548565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161053f91906110ef565b60405180910390a15b819350505050919050565b60006001805461056391906111ad565b905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906110af565b60405180910390fd5b600080600084815260200190815260200160002090506000816000015411610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016106f29392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077c9190611046565b6000604051808303816000865af19150503d80600081146107b9576040519150601f19603f3d011682016040523d82523d6000602084013e6107be565b606091505b50915091506107d08360000154610d24565b8115610812577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161080591906110ef565b60405180910390a161084a565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161084191906110ef565b60405180910390a15b819350505050919050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905085565b60006108f5610e2c565b60015481600001818152505084816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160800181815250508060008060015481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015590505060036000815480929190610ac790611286565b919050555060016000815480929190610adf90611286565b9190505550806060015173ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167fb609ae609609ee99268d05bc1371102cafe8d6b964bf082439ab16be2a01c87c84608001518560000151604051610b6e92919061115d565b60405180910390a480600001519150509392505050565b600080600060025490505b600154811015610d185760008060008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815250509050600081600001511115610d045784831415610cf55780600001519350505050610d1f565b8280610d0090611286565b9350505b508080610d1090611286565b915050610b90565b5060009150505b919050565b6000808281526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055505060036000815480929190610dd19061125c565b919050555060006003541115610e1f57600254811415610e1a576000610df76000610b85565b90506000811415610e1057600154600281905550610e18565b806002819055505b505b610e29565b6001546002819055505b50565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600081359050610eac816112fe565b92915050565b600081359050610ec181611315565b92915050565b600060208284031215610ed957600080fd5b6000610ee784828501610e9d565b91505092915050565b600080600060608486031215610f0557600080fd5b6000610f1386828701610e9d565b9350506020610f2486828701610e9d565b9250506040610f3586828701610eb2565b9150509250925092565b600060208284031215610f5157600080fd5b6000610f5f84828501610eb2565b91505092915050565b610f71816111e1565b82525050565b610f80816111f3565b82525050565b6000610f9182611186565b610f9b8185611191565b9350610fab818560208601611229565b80840191505092915050565b6000610fc4600d8361119c565b91507f4552525f4e4f5f414343455353000000000000000000000000000000000000006000830152602082019050919050565b600061100460138361119c565b91507f4552525f494e56414c49445f52455155455354000000000000000000000000006000830152602082019050919050565b6110408161121f565b82525050565b60006110528284610f86565b915081905092915050565b60006060820190506110726000830186610f68565b61107f6020830185610f68565b61108c6040830184611037565b949350505050565b60006020820190506110a96000830184610f77565b92915050565b600060208201905081810360008301526110c881610fb7565b9050919050565b600060208201905081810360008301526110e881610ff7565b9050919050565b60006020820190506111046000830184611037565b92915050565b600060a08201905061111f6000830188611037565b61112c6020830187610f68565b6111396040830186610f68565b6111466060830185610f68565b6111536080830184611037565b9695505050505050565b60006040820190506111726000830185611037565b61117f6020830184611037565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111b88261121f565b91506111c38361121f565b9250828210156111d6576111d56112cf565b5b828203905092915050565b60006111ec826111ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561124757808201518184015260208101905061122c565b83811115611256576000848401525b50505050565b60006112678261121f565b9150600082141561127b5761127a6112cf565b5b600182039050919050565b60006112918261121f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112c4576112c36112cf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611307816111e1565b811461131257600080fd5b50565b61131e8161121f565b811461132957600080fd5b5056fea26469706673582212209e978aa0a58bb277b43b2787e0c3bd50b7c1ff1cd7010be3f692499c54edc0b364736f6c63430008000033 -\ No newline at end of file +60806040523480156200001157600080fd5b50604051620016e1380380620016e18339818101604052810190620000379190620001c3565b60005b8151811015620000f35760016004600084848151811062000084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000ea90620002a9565b9150506200003a565b50600180819055506001600281905550506200036f565b6000620001216200011b846200023c565b62000208565b905080838252602082019050828560208602820111156200014157600080fd5b60005b858110156200017557816200015a88826200017f565b84526020840193506020830192505060018101905062000144565b5050509392505050565b600081519050620001908162000355565b92915050565b600082601f830112620001a857600080fd5b8151620001ba8482602086016200010a565b91505092915050565b600060208284031215620001d657600080fd5b600082015167ffffffffffffffff811115620001f157600080fd5b620001ff8482850162000196565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171562000232576200023162000326565b5b8060405250919050565b600067ffffffffffffffff8211156200025a576200025962000326565b5b602082029050602081019050919050565b600062000278826200027f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620002b6826200029f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620002ec57620002eb620002f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000360816200026b565b81146200036c57600080fd5b50565b611362806200037f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806357ec347a1161006657806357ec347a146101345780636e417c691461015257806381d12c5814610182578063b0addede146101b6578063bac911ac146101e657610093565b806306661abd1461009857806308ae6377146100b65780630a144391146100d45780632d7788db14610104575b600080fd5b6100a0610216565b6040516100ad91906110ef565b60405180910390f35b6100be61021c565b6040516100cb91906110ef565b60405180910390f35b6100ee60048036038101906100e99190610ec7565b610247565b6040516100fb9190611094565b60405180910390f35b61011e60048036038101906101199190610f3f565b610267565b60405161012b9190611094565b60405180910390f35b61013c610553565b60405161014991906110ef565b60405180910390f35b61016c60048036038101906101679190610f3f565b610568565b6040516101799190611094565b60405180910390f35b61019c60048036038101906101979190610f3f565b610855565b6040516101ad95949392919061110a565b60405180910390f35b6101d060048036038101906101cb9190610ef0565b6108eb565b6040516101dd91906110ef565b60405180910390f35b61020060048036038101906101fb9190610f3f565b610b85565b60405161020d91906110ef565b60405180910390f35b60035481565b60008060025460015461022f91906111ad565b141561023e5760009050610244565b60025490505b90565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec906110af565b60405180910390fd5b6000806000848152602001908152602001600020905082816000015414610351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610348906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016103f09392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161047a9190611046565b6000604051808303816000865af19150503d80600081146104b7576040519150601f19603f3d011682016040523d82523d6000602084013e6104bc565b606091505b50915091506104ce8360000154610d24565b8115610510577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161050391906110ef565b60405180910390a1610548565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161053f91906110ef565b60405180910390a15b819350505050919050565b60006001805461056391906111ad565b905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906110af565b60405180910390fd5b600080600084815260200190815260200160002090506000816000015411610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016106f29392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077c9190611046565b6000604051808303816000865af19150503d80600081146107b9576040519150601f19603f3d011682016040523d82523d6000602084013e6107be565b606091505b50915091506107d08360000154610d24565b8115610812577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161080591906110ef565b60405180910390a161084a565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161084191906110ef565b60405180910390a15b819350505050919050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905085565b60006108f5610e2c565b60015481600001818152505084816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160800181815250508060008060015481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015590505060036000815480929190610ac790611286565b919050555060016000815480929190610adf90611286565b9190505550806060015173ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167fb609ae609609ee99268d05bc1371102cafe8d6b964bf082439ab16be2a01c87c84608001518560000151604051610b6e92919061115d565b60405180910390a480600001519150509392505050565b600080600060025490505b600154811015610d185760008060008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815250509050600081600001511115610d045784831415610cf55780600001519350505050610d1f565b8280610d0090611286565b9350505b508080610d1090611286565b915050610b90565b5060009150505b919050565b6000808281526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055505060036000815480929190610dd19061125c565b919050555060006003541115610e1f57600254811415610e1a576000610df76000610b85565b90506000811415610e1057600154600281905550610e18565b806002819055505b505b610e29565b6001546002819055505b50565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600081359050610eac816112fe565b92915050565b600081359050610ec181611315565b92915050565b600060208284031215610ed957600080fd5b6000610ee784828501610e9d565b91505092915050565b600080600060608486031215610f0557600080fd5b6000610f1386828701610e9d565b9350506020610f2486828701610e9d565b9250506040610f3586828701610eb2565b9150509250925092565b600060208284031215610f5157600080fd5b6000610f5f84828501610eb2565b91505092915050565b610f71816111e1565b82525050565b610f80816111f3565b82525050565b6000610f9182611186565b610f9b8185611191565b9350610fab818560208601611229565b80840191505092915050565b6000610fc4600d8361119c565b91507f4552525f4e4f5f414343455353000000000000000000000000000000000000006000830152602082019050919050565b600061100460138361119c565b91507f4552525f494e56414c49445f52455155455354000000000000000000000000006000830152602082019050919050565b6110408161121f565b82525050565b60006110528284610f86565b915081905092915050565b60006060820190506110726000830186610f68565b61107f6020830185610f68565b61108c6040830184611037565b949350505050565b60006020820190506110a96000830184610f77565b92915050565b600060208201905081810360008301526110c881610fb7565b9050919050565b600060208201905081810360008301526110e881610ff7565b9050919050565b60006020820190506111046000830184611037565b92915050565b600060a08201905061111f6000830188611037565b61112c6020830187610f68565b6111396040830186610f68565b6111466060830185610f68565b6111536080830184611037565b9695505050505050565b60006040820190506111726000830185611037565b61117f6020830184611037565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111b88261121f565b91506111c38361121f565b9250828210156111d6576111d56112cf565b5b828203905092915050565b60006111ec826111ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561124757808201518184015260208101905061122c565b83811115611256576000848401525b50505050565b60006112678261121f565b9150600082141561127b5761127a6112cf565b5b600182039050919050565b60006112918261121f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112c4576112c36112cf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611307816111e1565b811461131257600080fd5b50565b61131e8161121f565b811461132957600080fd5b5056fea2646970667358221220334bc774a46af5bb91c82b6abec3cf6a0abab29376b9f3e605be99d2965f131564736f6c63430008000033 +\ No newline at end of file diff --git a/python/erc20_approval_escrow/runnable/deploy.py b/python/erc20_approval_escrow/runnable/deploy.py @@ -13,7 +13,9 @@ import logging # third-party imports import web3 - +from crypto_dev_signer.eth.signer import ReferenceSigner as EIP155Signer +from crypto_dev_signer.keystore import DictKeystore +from crypto_dev_signer.eth.helper import EthTxExecutor logging.basicConfig(level=logging.WARNING) logg = logging.getLogger() @@ -26,18 +28,48 @@ data_dir = os.path.join(script_dir, '..', 'data') argparser = argparse.ArgumentParser() argparser.add_argument('-p', '--provider', dest='p', default='http://localhost:8545', type=str, help='Web3 provider url (http only)') -argparser.add_argument('-o', '--owner', dest='o', type=str, help='Contract owner') -argparser.add_argument('-a', '--approver', dest='a', action='append', type=str, help='approver to add') +argparser.add_argument('-w', action='store_true', help='Wait for the last transaction to be confirmed') +argparser.add_argument('-ww', action='store_true', help='Wait for every transaction to be confirmed') +argparser.add_argument('-i', '--chain-spec', dest='i', type=str, default='Ethereum:1', help='Chain specification string') +argparser.add_argument('-a', '--signer-address', dest='a', type=str, help='Signer address') +argparser.add_argument('-y', '--key-file', dest='y', type=str, help='Ethereum keystore file to use for signing') +argparser.add_argument('--approver', action='append', type=str, help='approver to add') argparser.add_argument('--abi-dir', dest='abi_dir', type=str, default=data_dir, help='Directory containing bytecode and abi (default: {})'.format(data_dir)) argparser.add_argument('-v', action='store_true', help='Be verbose') +argparser.add_argument('-vv', action='store_true', help='Be more verbose') args = argparser.parse_args() -if args.v: +if args.vv: logg.setLevel(logging.DEBUG) +elif args.v: + logg.setLevel(logging.INFO) -def main(): - w3 = web3.Web3(web3.Web3.HTTPProvider(args.p)) +block_last = args.w +block_all = args.ww + +w3 = web3.Web3(web3.Web3.HTTPProvider(args.p)) + +signer_address = None +keystore = DictKeystore() +if args.y != None: + logg.debug('loading keystore file {}'.format(args.y)) + signer_address = keystore.import_keystore_file(args.y) + logg.debug('now have key for signer address {}'.format(signer_address)) +signer = EIP155Signer(keystore) + +chain_pair = args.i.split(':') +chain_id = int(chain_pair[1]) +helper = EthTxExecutor( + w3, + signer_address, + signer, + chain_id, + block=args.ww, + ) + + +def main(): f = open(os.path.join(args.abi_dir, 'TransferApproval.json'), 'r') abi = json.load(f) f.close() @@ -46,21 +78,21 @@ def main(): bytecode = f.read() f.close() - w3.eth.defaultAccount = w3.eth.accounts[0] - if args.o != None: - w3.eth.defaultAccount = args.o - c = w3.eth.contract(abi=abi, bytecode=bytecode) - approvers = [w3.eth.accounts[0]] - if args.a != None: - for a in args.a: + approvers = [signer_address] + if args.approver != None: + for a in args.approver: approvers.append(a) logg.info('add approver {}'.format(a)) - tx_hash = c.constructor(approvers).transact() - - rcpt = w3.eth.getTransactionReceipt(tx_hash) + #tx_hash = c.constructor(approvers).transact() + (tx_hash, rcpt) = helper.sign_and_send( + [ + c.constructor(approvers).buildTransaction + ], + force_wait=True, + ) address = rcpt.contractAddress diff --git a/python/setup.cfg b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = erc20-approval-escrow -version = 0.1.0 +version = 0.2.0a1 description = Simple approval escrow for ERC20 spend approval author = Louis Holbrook author_email = dev@holbrook.no @@ -26,6 +26,8 @@ python_requires = >= 3.6 packages = erc20_approval_escrow erc20_approval_escrow.runnable +install_requires = + crypto-dev-signer~=0.4.13b1 [options.package_data] * = diff --git a/solidity/Makefile b/solidity/Makefile @@ -1,7 +1,9 @@ +SOLC = /usr/bin/solc + all: - solc --bin TransferApproval.sol | awk 'NR>3' > TransferApproval.bin + $(SOLC) --bin TransferApproval.sol | awk 'NR>3' > TransferApproval.bin truncate -s -1 TransferApproval.bin - solc --abi TransferApproval.sol | awk 'NR>3' > TransferApproval.json + $(SOLC) --abi TransferApproval.sol | awk 'NR>3' > TransferApproval.json install: all cp -v *{json,bin} ../python/erc20_approval_escrow/data/ diff --git a/solidity/TransferApproval.bin b/solidity/TransferApproval.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620016e1380380620016e18339818101604052810190620000379190620001c3565b60005b8151811015620000f35760016004600084848151811062000084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000ea90620002a9565b9150506200003a565b50600180819055506001600281905550506200036f565b6000620001216200011b846200023c565b62000208565b905080838252602082019050828560208602820111156200014157600080fd5b60005b858110156200017557816200015a88826200017f565b84526020840193506020830192505060018101905062000144565b5050509392505050565b600081519050620001908162000355565b92915050565b600082601f830112620001a857600080fd5b8151620001ba8482602086016200010a565b91505092915050565b600060208284031215620001d657600080fd5b600082015167ffffffffffffffff811115620001f157600080fd5b620001ff8482850162000196565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171562000232576200023162000326565b5b8060405250919050565b600067ffffffffffffffff8211156200025a576200025962000326565b5b602082029050602081019050919050565b600062000278826200027f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620002b6826200029f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620002ec57620002eb620002f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000360816200026b565b81146200036c57600080fd5b50565b611362806200037f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806357ec347a1161006657806357ec347a146101345780636e417c691461015257806381d12c5814610182578063b0addede146101b6578063bac911ac146101e657610093565b806306661abd1461009857806308ae6377146100b65780630a144391146100d45780632d7788db14610104575b600080fd5b6100a0610216565b6040516100ad91906110ef565b60405180910390f35b6100be61021c565b6040516100cb91906110ef565b60405180910390f35b6100ee60048036038101906100e99190610ec7565b610247565b6040516100fb9190611094565b60405180910390f35b61011e60048036038101906101199190610f3f565b610267565b60405161012b9190611094565b60405180910390f35b61013c610553565b60405161014991906110ef565b60405180910390f35b61016c60048036038101906101679190610f3f565b610568565b6040516101799190611094565b60405180910390f35b61019c60048036038101906101979190610f3f565b610855565b6040516101ad95949392919061110a565b60405180910390f35b6101d060048036038101906101cb9190610ef0565b6108eb565b6040516101dd91906110ef565b60405180910390f35b61020060048036038101906101fb9190610f3f565b610b85565b60405161020d91906110ef565b60405180910390f35b60035481565b60008060025460015461022f91906111ad565b141561023e5760009050610244565b60025490505b90565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec906110af565b60405180910390fd5b6000806000848152602001908152602001600020905082816000015414610351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610348906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016103f09392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161047a9190611046565b6000604051808303816000865af19150503d80600081146104b7576040519150601f19603f3d011682016040523d82523d6000602084013e6104bc565b606091505b50915091506104ce8360000154610d24565b8115610510577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161050391906110ef565b60405180910390a1610548565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161053f91906110ef565b60405180910390a15b819350505050919050565b60006001805461056391906111ad565b905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906110af565b60405180910390fd5b600080600084815260200190815260200160002090506000816000015411610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016106f29392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077c9190611046565b6000604051808303816000865af19150503d80600081146107b9576040519150601f19603f3d011682016040523d82523d6000602084013e6107be565b606091505b50915091506107d08360000154610d24565b8115610812577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161080591906110ef565b60405180910390a161084a565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161084191906110ef565b60405180910390a15b819350505050919050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905085565b60006108f5610e2c565b60015481600001818152505084816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160800181815250508060008060015481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015590505060036000815480929190610ac790611286565b919050555060016000815480929190610adf90611286565b9190505550806060015173ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167fb609ae609609ee99268d05bc1371102cafe8d6b964bf082439ab16be2a01c87c84608001518560000151604051610b6e92919061115d565b60405180910390a480600001519150509392505050565b600080600060025490505b600154811015610d185760008060008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815250509050600081600001511115610d045784831415610cf55780600001519350505050610d1f565b8280610d0090611286565b9350505b508080610d1090611286565b915050610b90565b5060009150505b919050565b6000808281526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055505060036000815480929190610dd19061125c565b919050555060006003541115610e1f57600254811415610e1a576000610df76000610b85565b90506000811415610e1057600154600281905550610e18565b806002819055505b505b610e29565b6001546002819055505b50565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600081359050610eac816112fe565b92915050565b600081359050610ec181611315565b92915050565b600060208284031215610ed957600080fd5b6000610ee784828501610e9d565b91505092915050565b600080600060608486031215610f0557600080fd5b6000610f1386828701610e9d565b9350506020610f2486828701610e9d565b9250506040610f3586828701610eb2565b9150509250925092565b600060208284031215610f5157600080fd5b6000610f5f84828501610eb2565b91505092915050565b610f71816111e1565b82525050565b610f80816111f3565b82525050565b6000610f9182611186565b610f9b8185611191565b9350610fab818560208601611229565b80840191505092915050565b6000610fc4600d8361119c565b91507f4552525f4e4f5f414343455353000000000000000000000000000000000000006000830152602082019050919050565b600061100460138361119c565b91507f4552525f494e56414c49445f52455155455354000000000000000000000000006000830152602082019050919050565b6110408161121f565b82525050565b60006110528284610f86565b915081905092915050565b60006060820190506110726000830186610f68565b61107f6020830185610f68565b61108c6040830184611037565b949350505050565b60006020820190506110a96000830184610f77565b92915050565b600060208201905081810360008301526110c881610fb7565b9050919050565b600060208201905081810360008301526110e881610ff7565b9050919050565b60006020820190506111046000830184611037565b92915050565b600060a08201905061111f6000830188611037565b61112c6020830187610f68565b6111396040830186610f68565b6111466060830185610f68565b6111536080830184611037565b9695505050505050565b60006040820190506111726000830185611037565b61117f6020830184611037565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111b88261121f565b91506111c38361121f565b9250828210156111d6576111d56112cf565b5b828203905092915050565b60006111ec826111ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561124757808201518184015260208101905061122c565b83811115611256576000848401525b50505050565b60006112678261121f565b9150600082141561127b5761127a6112cf565b5b600182039050919050565b60006112918261121f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112c4576112c36112cf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611307816111e1565b811461131257600080fd5b50565b61131e8161121f565b811461132957600080fd5b5056fea26469706673582212209e978aa0a58bb277b43b2787e0c3bd50b7c1ff1cd7010be3f692499c54edc0b364736f6c63430008000033 -\ No newline at end of file +60806040523480156200001157600080fd5b50604051620016e1380380620016e18339818101604052810190620000379190620001c3565b60005b8151811015620000f35760016004600084848151811062000084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000ea90620002a9565b9150506200003a565b50600180819055506001600281905550506200036f565b6000620001216200011b846200023c565b62000208565b905080838252602082019050828560208602820111156200014157600080fd5b60005b858110156200017557816200015a88826200017f565b84526020840193506020830192505060018101905062000144565b5050509392505050565b600081519050620001908162000355565b92915050565b600082601f830112620001a857600080fd5b8151620001ba8482602086016200010a565b91505092915050565b600060208284031215620001d657600080fd5b600082015167ffffffffffffffff811115620001f157600080fd5b620001ff8482850162000196565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171562000232576200023162000326565b5b8060405250919050565b600067ffffffffffffffff8211156200025a576200025962000326565b5b602082029050602081019050919050565b600062000278826200027f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620002b6826200029f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620002ec57620002eb620002f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000360816200026b565b81146200036c57600080fd5b50565b611362806200037f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806357ec347a1161006657806357ec347a146101345780636e417c691461015257806381d12c5814610182578063b0addede146101b6578063bac911ac146101e657610093565b806306661abd1461009857806308ae6377146100b65780630a144391146100d45780632d7788db14610104575b600080fd5b6100a0610216565b6040516100ad91906110ef565b60405180910390f35b6100be61021c565b6040516100cb91906110ef565b60405180910390f35b6100ee60048036038101906100e99190610ec7565b610247565b6040516100fb9190611094565b60405180910390f35b61011e60048036038101906101199190610f3f565b610267565b60405161012b9190611094565b60405180910390f35b61013c610553565b60405161014991906110ef565b60405180910390f35b61016c60048036038101906101679190610f3f565b610568565b6040516101799190611094565b60405180910390f35b61019c60048036038101906101979190610f3f565b610855565b6040516101ad95949392919061110a565b60405180910390f35b6101d060048036038101906101cb9190610ef0565b6108eb565b6040516101dd91906110ef565b60405180910390f35b61020060048036038101906101fb9190610f3f565b610b85565b60405161020d91906110ef565b60405180910390f35b60035481565b60008060025460015461022f91906111ad565b141561023e5760009050610244565b60025490505b90565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec906110af565b60405180910390fd5b6000806000848152602001908152602001600020905082816000015414610351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610348906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016103f09392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161047a9190611046565b6000604051808303816000865af19150503d80600081146104b7576040519150601f19603f3d011682016040523d82523d6000602084013e6104bc565b606091505b50915091506104ce8360000154610d24565b8115610510577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161050391906110ef565b60405180910390a1610548565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161053f91906110ef565b60405180910390a15b819350505050919050565b60006001805461056391906111ad565b905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906110af565b60405180910390fd5b600080600084815260200190815260200160002090506000816000015411610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906110cf565b60405180910390fd5b6000808260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401546040516024016106f29392919061105d565b6040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077c9190611046565b6000604051808303816000865af19150503d80600081146107b9576040519150601f19603f3d011682016040523d82523d6000602084013e6107be565b606091505b50915091506107d08360000154610d24565b8115610812577f607c56ea76669e46679e89091227c1a3f91841a4cf7588d5a6c84555fb59fdfd8560405161080591906110ef565b60405180910390a161084a565b7fdab20a0fcd702cf875c2d715d5c3fc99af66a716c94b3405408c94b7311c99eb8560405161084191906110ef565b60405180910390a15b819350505050919050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905085565b60006108f5610e2c565b60015481600001818152505084816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160800181815250508060008060015481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015590505060036000815480929190610ac790611286565b919050555060016000815480929190610adf90611286565b9190505550806060015173ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167fb609ae609609ee99268d05bc1371102cafe8d6b964bf082439ab16be2a01c87c84608001518560000151604051610b6e92919061115d565b60405180910390a480600001519150509392505050565b600080600060025490505b600154811015610d185760008060008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815250509050600081600001511115610d045784831415610cf55780600001519350505050610d1f565b8280610d0090611286565b9350505b508080610d1090611286565b915050610b90565b5060009150505b919050565b6000808281526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160009055505060036000815480929190610dd19061125c565b919050555060006003541115610e1f57600254811415610e1a576000610df76000610b85565b90506000811415610e1057600154600281905550610e18565b806002819055505b505b610e29565b6001546002819055505b50565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600081359050610eac816112fe565b92915050565b600081359050610ec181611315565b92915050565b600060208284031215610ed957600080fd5b6000610ee784828501610e9d565b91505092915050565b600080600060608486031215610f0557600080fd5b6000610f1386828701610e9d565b9350506020610f2486828701610e9d565b9250506040610f3586828701610eb2565b9150509250925092565b600060208284031215610f5157600080fd5b6000610f5f84828501610eb2565b91505092915050565b610f71816111e1565b82525050565b610f80816111f3565b82525050565b6000610f9182611186565b610f9b8185611191565b9350610fab818560208601611229565b80840191505092915050565b6000610fc4600d8361119c565b91507f4552525f4e4f5f414343455353000000000000000000000000000000000000006000830152602082019050919050565b600061100460138361119c565b91507f4552525f494e56414c49445f52455155455354000000000000000000000000006000830152602082019050919050565b6110408161121f565b82525050565b60006110528284610f86565b915081905092915050565b60006060820190506110726000830186610f68565b61107f6020830185610f68565b61108c6040830184611037565b949350505050565b60006020820190506110a96000830184610f77565b92915050565b600060208201905081810360008301526110c881610fb7565b9050919050565b600060208201905081810360008301526110e881610ff7565b9050919050565b60006020820190506111046000830184611037565b92915050565b600060a08201905061111f6000830188611037565b61112c6020830187610f68565b6111396040830186610f68565b6111466060830185610f68565b6111536080830184611037565b9695505050505050565b60006040820190506111726000830185611037565b61117f6020830184611037565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111b88261121f565b91506111c38361121f565b9250828210156111d6576111d56112cf565b5b828203905092915050565b60006111ec826111ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561124757808201518184015260208101905061122c565b83811115611256576000848401525b50505050565b60006112678261121f565b9150600082141561127b5761127a6112cf565b5b600182039050919050565b60006112918261121f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112c4576112c36112cf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611307816111e1565b811461131257600080fd5b50565b61131e8161121f565b811461132957600080fd5b5056fea2646970667358221220334bc774a46af5bb91c82b6abec3cf6a0abab29376b9f3e605be99d2965f131564736f6c63430008000033 +\ No newline at end of file diff --git a/solidity/TransferApproval.sol b/solidity/TransferApproval.sol @@ -1,4 +1,4 @@ -pragma solidity >=0.6.12; +pragma solidity >0.6.11; // SPDX-License-Identifier: GPL-3.0-or-later