From 75bf630af93235ba1e31f1166cedf1ec4a2a4bdd Mon Sep 17 00:00:00 2001 From: Neeraj Kashyap Date: Mon, 24 Jan 2022 20:50:58 -0800 Subject: [PATCH] Added contract verification functionality to all generated interfaces Also adds `--nonce` argument to all CLI commands which submit transactions. --- dao/Diamond.py | 23 ++++++++++++++++++++++- dao/DiamondCutFacet.py | 23 ++++++++++++++++++++++- dao/DiamondLoupeFacet.py | 23 ++++++++++++++++++++++- dao/ERC20Facet.py | 23 ++++++++++++++++++++++- dao/ERC20Initializer.py | 23 ++++++++++++++++++++++- dao/MoonstreamTokenFaucet.py | 18 +++++++++++++++++- dao/OwnershipFacet.py | 23 ++++++++++++++++++++++- dao/TerminusFacet.py | 18 +++++++++++++++++- dao/TerminusInitializer.py | 23 ++++++++++++++++++++++- 9 files changed, 188 insertions(+), 9 deletions(-) diff --git a/dao/Diamond.py b/dao/Diamond.py index bc4a055..e81f8bd 100644 --- a/dao/Diamond.py +++ b/dao/Diamond.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.6 +# Moonworm version : 0.1.13 import argparse import json @@ -97,6 +97,11 @@ class Diamond: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: signer = network.accounts.load(args.sender, args.password) @@ -105,6 +110,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -134,6 +141,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -148,6 +158,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = Diamond(args.address) + result = contract.verify_contract() + print(result) + + def generate_cli() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="CLI for Diamond") parser.set_defaults(func=lambda _: parser.print_help()) @@ -163,6 +180,10 @@ def generate_cli() -> argparse.ArgumentParser: ) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + return parser diff --git a/dao/DiamondCutFacet.py b/dao/DiamondCutFacet.py index 2503c00..be5371c 100644 --- a/dao/DiamondCutFacet.py +++ b/dao/DiamondCutFacet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.6 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class DiamondCutFacet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def diamond_cut( self, _diamond_cut: List, @@ -110,6 +115,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -139,6 +146,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -149,6 +159,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = DiamondCutFacet(args.address) + result = contract.verify_contract() + print(result) + + def handle_diamond_cut(args: argparse.Namespace) -> None: network.connect(args.network) contract = DiamondCutFacet(args.address) @@ -171,6 +188,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + diamond_cut_parser = subcommands.add_parser("diamond-cut") add_default_arguments(diamond_cut_parser, True) diamond_cut_parser.add_argument( diff --git a/dao/DiamondLoupeFacet.py b/dao/DiamondLoupeFacet.py index 00726dd..596d91c 100644 --- a/dao/DiamondLoupeFacet.py +++ b/dao/DiamondLoupeFacet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.6 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class DiamondLoupeFacet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def facet_address(self, _function_selector: bytes) -> Any: self.assert_contract_is_instantiated() return self.contract.facetAddress.call(_function_selector) @@ -118,6 +123,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -147,6 +154,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -157,6 +167,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = DiamondLoupeFacet(args.address) + result = contract.verify_contract() + print(result) + + def handle_facet_address(args: argparse.Namespace) -> None: network.connect(args.network) contract = DiamondLoupeFacet(args.address) @@ -201,6 +218,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + facet_address_parser = subcommands.add_parser("facet-address") add_default_arguments(facet_address_parser, False) facet_address_parser.add_argument( diff --git a/dao/ERC20Facet.py b/dao/ERC20Facet.py index dd1d9e7..c32f94a 100644 --- a/dao/ERC20Facet.py +++ b/dao/ERC20Facet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.8 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class ERC20Facet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def allowance(self, owner: ChecksumAddress, spender: ChecksumAddress) -> Any: self.assert_contract_is_instantiated() return self.contract.allowance.call(owner, spender) @@ -168,6 +173,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -197,6 +204,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -207,6 +217,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = ERC20Facet(args.address) + result = contract.verify_contract() + print(result) + + def handle_allowance(args: argparse.Namespace) -> None: network.connect(args.network) contract = ERC20Facet(args.address) @@ -346,6 +363,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + allowance_parser = subcommands.add_parser("allowance") add_default_arguments(allowance_parser, False) allowance_parser.add_argument("--owner", required=True, help="Type: address") diff --git a/dao/ERC20Initializer.py b/dao/ERC20Initializer.py index 2ea783d..f6e99cd 100644 --- a/dao/ERC20Initializer.py +++ b/dao/ERC20Initializer.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.8 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class ERC20Initializer: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def init(self, transaction_config) -> Any: self.assert_contract_is_instantiated() return self.contract.init(transaction_config) @@ -102,6 +107,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -131,6 +138,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -141,6 +151,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = ERC20Initializer(args.address) + result = contract.verify_contract() + print(result) + + def handle_init(args: argparse.Namespace) -> None: network.connect(args.network) contract = ERC20Initializer(args.address) @@ -158,6 +175,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + init_parser = subcommands.add_parser("init") add_default_arguments(init_parser, True) init_parser.set_defaults(func=handle_init) diff --git a/dao/MoonstreamTokenFaucet.py b/dao/MoonstreamTokenFaucet.py index f01f05c..0176cc2 100644 --- a/dao/MoonstreamTokenFaucet.py +++ b/dao/MoonstreamTokenFaucet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.11 +# Moonworm version : 0.1.13 import argparse import json @@ -103,6 +103,11 @@ class MoonstreamTokenFaucet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def claim(self, transaction_config) -> Any: self.assert_contract_is_instantiated() return self.contract.claim(transaction_config) @@ -217,6 +222,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = MoonstreamTokenFaucet(args.address) + result = contract.verify_contract() + print(result) + + def handle_claim(args: argparse.Namespace) -> None: network.connect(args.network) contract = MoonstreamTokenFaucet(args.address) @@ -336,6 +348,10 @@ def generate_cli() -> argparse.ArgumentParser: ) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + claim_parser = subcommands.add_parser("claim") add_default_arguments(claim_parser, True) claim_parser.set_defaults(func=handle_claim) diff --git a/dao/OwnershipFacet.py b/dao/OwnershipFacet.py index 5b51fd8..35bcd52 100644 --- a/dao/OwnershipFacet.py +++ b/dao/OwnershipFacet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.6 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class OwnershipFacet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def owner(self) -> Any: self.assert_contract_is_instantiated() return self.contract.owner.call() @@ -108,6 +113,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -137,6 +144,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -147,6 +157,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = OwnershipFacet(args.address) + result = contract.verify_contract() + print(result) + + def handle_owner(args: argparse.Namespace) -> None: network.connect(args.network) contract = OwnershipFacet(args.address) @@ -173,6 +190,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + owner_parser = subcommands.add_parser("owner") add_default_arguments(owner_parser, False) owner_parser.set_defaults(func=handle_owner) diff --git a/dao/TerminusFacet.py b/dao/TerminusFacet.py index 9a459b0..303fb01 100644 --- a/dao/TerminusFacet.py +++ b/dao/TerminusFacet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.9 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class TerminusFacet: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def approve_for_pool( self, pool_id: int, operator: ChecksumAddress, transaction_config ) -> Any: @@ -312,6 +317,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + result = contract.verify_contract() + print(result) + + def handle_approve_for_pool(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) @@ -599,6 +611,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + approve_for_pool_parser = subcommands.add_parser("approve-for-pool") add_default_arguments(approve_for_pool_parser, True) approve_for_pool_parser.add_argument( diff --git a/dao/TerminusInitializer.py b/dao/TerminusInitializer.py index 5d2e862..cfb1f17 100644 --- a/dao/TerminusInitializer.py +++ b/dao/TerminusInitializer.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.8 +# Moonworm version : 0.1.13 import argparse import json @@ -90,6 +90,11 @@ class TerminusInitializer: if self.contract is None: raise Exception("contract has not been instantiated") + def verify_contract(self): + self.assert_contract_is_instantiated() + contract_class = contract_from_build(self.contract_name) + contract_class.publish_source(self.contract) + def init(self, transaction_config) -> Any: self.assert_contract_is_instantiated() return self.contract.init(transaction_config) @@ -102,6 +107,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]: transaction_config["gas_price"] = args.gas_price if args.confirmations is not None: transaction_config["required_confs"] = args.confirmations + if args.nonce is not None: + transaction_config["nonce"] = args.nonce return transaction_config @@ -131,6 +138,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No default=None, help="Number of confirmations to await before considering a transaction completed", ) + parser.add_argument( + "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" + ) def handle_deploy(args: argparse.Namespace) -> None: @@ -141,6 +151,13 @@ def handle_deploy(args: argparse.Namespace) -> None: print(result) +def handle_verify_contract(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusInitializer(args.address) + result = contract.verify_contract() + print(result) + + def handle_init(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusInitializer(args.address) @@ -158,6 +175,10 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(deploy_parser, True) deploy_parser.set_defaults(func=handle_deploy) + verify_contract_parser = subcommands.add_parser("verify-contract") + add_default_arguments(verify_contract_parser, False) + verify_contract_parser.set_defaults(func=handle_verify_contract) + init_parser = subcommands.add_parser("init") add_default_arguments(init_parser, True) init_parser.set_defaults(func=handle_init)