Exemple #1
0
    def transact(self):
        contract_address = get_contract_address(self, self.args.contract_name, "--at is required to specify target contract address")

        abi = self.args.contract_def["abi"]

        contract = Contract(self.w3, contract_address, abi)

        positional_inputs = getattr(self.args, "contract_positional_inputs", [])
        named_inputs = {
            name[len("contract_named_input_"):]: value for name, value
            in self.args.__dict__.items() if name.startswith("contract_named_input_")
        }

        gas_price = self.get_gas_price_verbose()

        txn = contract.build_transaction(self.args.contract_function,
                                         self.ident.get_address(),
                                         gas_price,
                                         *positional_inputs,
                                         **named_inputs)

        if not self.args.yes or self.args.verbose:
            self._pprint({"transaction": txn})

        proceed = self.args.yes or input("Proceed? (y/n): ") == "y"

        if proceed:
            receipt = self.ident.transact(txn, self.err_f)
            events = contract.process_receipt(receipt)
            self._pprint_receipt_and_events(receipt, events)
            return receipt, events
        else:
            self._error("Cancelled")
Exemple #2
0
 def transact_contract_command(self,
                               contract_name,
                               contract_fn,
                               contract_params,
                               is_silent=False):
     contract_address = get_contract_address(self, contract_name)
     return self.get_ContractCommand(contract_name, contract_address,
                                     contract_fn, contract_params,
                                     is_silent).transact()
Exemple #3
0
 def call_contract_command(self,
                           contract_name,
                           contract_fn,
                           contract_params,
                           is_silent=True):
     contract_address = get_contract_address(self, contract_name)
     return self.get_ContractCommand(contract_name, contract_address,
                                     contract_fn, contract_params,
                                     is_silent).call()
Exemple #4
0
    def call(self):
        contract_address = get_contract_address(self, self.args.contract_name, "--at is required to specify target contract address")

        abi = self.args.contract_def["abi"]

        contract = Contract(self.w3, contract_address, abi)

        positional_inputs = getattr(self.args, "contract_positional_inputs", [])
        named_inputs = {
            name[len("contract_named_input_"):]: value for name, value
            in self.args.__dict__.items() if name.startswith("contract_named_input_")
        }

        result = contract.call(self.args.contract_function, *positional_inputs, **named_inputs)
        self._printout(result)
        return result
Exemple #5
0
 def transact_contract_command(self, contract_name, contract_fn, contract_params, is_silent = False):
     contract_address = get_contract_address(self, contract_name)
     return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).transact()
Exemple #6
0
 def call_contract_command(self, contract_name, contract_fn, contract_params, is_silent = True):
     contract_address = get_contract_address(self, contract_name)
     return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).call()
Exemple #7
0
 def get_registry_address(self):
     return get_contract_address(self, "Registry")
Exemple #8
0
 def get_mpe_address(self):
     return get_contract_address(self, "MultiPartyEscrow")
Exemple #9
-1
    def generate_client_library(self):
        cur_dir_path = PurePath(os.getcwd())

        if not self.args.protodir:
            client_libraries_base_dir_path = cur_dir_path.joinpath("client_libraries")
            if not os.path.exists(client_libraries_base_dir_path):
                os.makedirs(client_libraries_base_dir_path)
        else:
            if os.path.isabs(self.args.protodir):
                client_libraries_base_dir_path = PurePath(self.args.protodir)
            else: 
                client_libraries_base_dir_path = cur_dir_path.joinpath(self.args.protodir)

            if not os.path.isdir(client_libraries_base_dir_path):
                self._error("directory {} does not exist. Please make sure that the specified path exists".format(client_libraries_base_dir_path))

        # Create service client libraries path
        library_language = self.args.language
        library_org_id = self.args.org_id
        library_service_id = self.args.service_id

        library_dir_path = client_libraries_base_dir_path.joinpath(library_language, get_contract_address(self, "Registry"), library_org_id, library_service_id)

        metadata = self._get_service_metadata_from_registry()
        model_ipfs_hash = metadata["model_ipfs_hash"]

        with TemporaryDirectory() as temp_dir: 
            temp_dir_path = PurePath(temp_dir)
            proto_temp_dir_path = temp_dir_path.joinpath(library_language, library_org_id, library_service_id)
            safe_extract_proto_from_ipfs(self._get_ipfs_client(), model_ipfs_hash, proto_temp_dir_path)

        # Compile proto files
            compile_proto(Path(proto_temp_dir_path), library_dir_path)

        self._printout('client libraries for service with id "{}" in org with id "{}" generated at {}'.format(library_service_id, library_org_id, library_dir_path))