From 6b05b20022985abf8644b7f2c593d99be04692ca Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 11 Mar 2022 06:54:09 +0000 Subject: [PATCH] Add writer cli --- python/CHANGELOG | 2 + python/eth_token_index/runnable/writer.py | 86 +++++++++++++++++++++++ python/requirements.txt | 6 +- python/setup.cfg | 3 +- python/test_requirements.txt | 2 +- 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 python/CHANGELOG create mode 100644 python/eth_token_index/runnable/writer.py diff --git a/python/CHANGELOG b/python/CHANGELOG new file mode 100644 index 0000000..e99ff62 --- /dev/null +++ b/python/CHANGELOG @@ -0,0 +1,2 @@ +* 0.2.6 + - Add writer cli tool diff --git a/python/eth_token_index/runnable/writer.py b/python/eth_token_index/runnable/writer.py new file mode 100644 index 0000000..f4fd3ce --- /dev/null +++ b/python/eth_token_index/runnable/writer.py @@ -0,0 +1,86 @@ +"""Adds/removes writers to accounts index + +.. moduleauthor:: Louis Holbrook +.. pgp:: 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 + +""" + +# standard imports +import os +import json +import argparse +import logging +import sys + +# external imports +import chainlib.eth.cli +from chainlib.chain import ChainSpec +from chainlib.eth.connection import EthHTTPConnection +from chainlib.eth.tx import receipt +from chainlib.eth.address import to_checksum_address +from hexathon import add_0x + +# local imports +from eth_token_index.index import TokenUniqueSymbolIndex + +logging.basicConfig(level=logging.WARNING) +logg = logging.getLogger() + +arg_flags = chainlib.eth.cli.argflag_std_write | chainlib.eth.cli.Flag.EXEC +argparser = chainlib.eth.cli.ArgumentParser(arg_flags) +argparser.add_argument('--rm', action='store_true', help='Delete entry') +argparser.add_positional('address', type=str, help='Update writer array with this address') +args = argparser.parse_args() + +extra_args = { + 'rm': None, + 'address': None, + } +config = chainlib.eth.cli.Config.from_args(args, arg_flags, extra_args=extra_args, default_fee_limit=TokenUniqueSymbolIndex.gas()) + +wallet = chainlib.eth.cli.Wallet() +wallet.from_config(config) + +rpc = chainlib.eth.cli.Rpc(wallet=wallet) +conn = rpc.connect_by_config(config) + +chain_spec = ChainSpec.from_chain_str(config.get('CHAIN_SPEC')) + + +def main(): + signer = rpc.get_signer() + signer_address = rpc.get_sender_address() + + gas_oracle = rpc.get_gas_oracle() + nonce_oracle = rpc.get_nonce_oracle() + + c = TokenUniqueSymbolIndex(chain_spec, signer=signer, gas_oracle=gas_oracle, nonce_oracle=nonce_oracle) + + subject_address = to_checksum_address(config.get('_ADDRESS')) + if not config.true('_UNSAFE') and subject_address != add_0x(config.get('_ADDRESS')): + raise ValueError('invalid checksum address for subject_address') + + + contract_address = to_checksum_address(config.get('_EXEC_ADDRESS')) + if not config.true('_UNSAFE') and contract_address != add_0x(config.get('_EXEC_ADDRESS')): + raise ValueError('invalid checksum address for contract') + + if config.get('_RM'): + (tx_hash_hex, o) = c.delete_writer(contract_address, signer_address, subject_address) + else: + (tx_hash_hex, o) = c.add_writer(contract_address, signer_address, subject_address) + if config.get('_RPC_SEND'): + conn.do(o) + if config.get('_WAIT'): + r = conn.wait(tx_hash_hex) + if r['status'] == 0: + sys.stderr.write('EVM revert while deploying contract. Wish I had more to tell you') + sys.exit(1) + + print(tx_hash_hex) + else: + print(o) + + +if __name__ == '__main__': + main() diff --git a/python/requirements.txt b/python/requirements.txt index 2ff3283..e7fb310 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,3 +1,3 @@ -confini~=0.5.1 -chainlib-eth~=0.0.10 -eth_erc20~=0.1.2 +confini~=0.5.6 +chainlib-eth>=0.0.10,<=0.1.0 +eth_erc20~=0.1.11 diff --git a/python/setup.cfg b/python/setup.cfg index a23fe07..93b431d 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-token-index -version = 0.2.4 +version = 0.2.6 description = Token symbol to address unique index author = Louis Holbrook author_email = dev@holbrook.no @@ -43,3 +43,4 @@ console_scripts = eth-token-index-deploy = eth_token_index.runnable.deploy:main eth-token-index-add = eth_token_index.runnable.add:main eth-token-index-list = eth_token_index.runnable.list:main + eth-token-index-writer = eth_token_index.runnable.writer:main diff --git a/python/test_requirements.txt b/python/test_requirements.txt index eaeb23b..5178a3b 100644 --- a/python/test_requirements.txt +++ b/python/test_requirements.txt @@ -1,3 +1,3 @@ eth-tester==0.5.0b3 py-evm==0.3.0a20 -eth-address-index>=0.2.4a1 +eth-address-index~=0.4.1