def get_to_address(): # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/HelloWorld.sol") Compiler.compile_file("contracts/SimpleInfo.sol") data_parser, abi_file = get_data_parser() contract_abi = data_parser.contract_abi # 部署合约 print( "\n>>Deploy:---------------------------------------------------------------------" ) with open("contracts/SimpleInfo.bin", 'r') as load_f: contract_bin = load_f.read() load_f.close() result = client.deploy(contract_bin) print("deploy", result) print("new address : ", result["contractAddress"]) contract_name = os.path.splitext(os.path.basename(abi_file))[0] # todo 可以放入缓存中 以合约名为key,不需要每次重启都部署合约,每次部署合约会添加一次交易。 to_address = result['contractAddress'] #use new deploy address # to_address = "0xcda895ec53a73fbc3777648cb4c87b38e252f876" #use new deploy address return to_address, contract_abi
def compile_and_abis(is_compile: bool = True): """ Compiles all contracts and generates abi and bin files """ for c in ContractsList: if is_compile: Compiler.compile_file(f"Contracts/{c}.sol", output_path="Contracts")
def get_data_parser(): if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/SoftwareTransaction.sol") abi_file = "contracts/SoftwareTransaction.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) return data_parser, abi_file
def get_data_parser(): if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/HelloWorld.sol") Compiler.compile_file("contracts/SimpleInfo.sol") abi_file = "contracts/SimpleInfo.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) return data_parser, abi_file
def compile(self): if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): try: Compiler.compile_file(self.sol_file, output_path="contracts/") except CompileError: print(CompileError) else: print(client_config.solc_path) print(client_config.solcjs_path)
def load_abi(contract_name, contracts_dir, contract_abi_path): """ """ contract_abi = "" contract_file_path = contracts_dir + "/" + contract_name + ".sol" if not os.path.exists(contract_abi_path): Compiler.compile_file(contract_file_path, contracts_dir) with open(contract_abi_path, 'r') as load_f: contract_abi = json.load(load_f) load_f.close() return contract_abi
def __init__(self, address: str): # 从文件加载abi定义 # Now file has been complied. Use .abi directly. if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/Loan.sol") abi_file = "contracts/Loan.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) self.contract_abi = data_parser.contract_abi self.client = BcosClient() self.to_address = address
def gen_contract_abi(self, needCover=False): """ get contract abi according to contract_abi_path """ if needCover is False and os.path.exists( self.contract_abi_path) is True: return # backup the abi and bin else: force_write = common.backup_file(self.contract_abi_path) if force_write is False: return force_write = common.backup_file(self.contract_bin_path) if force_write is False: return Compiler.compile_file(self.sol_path, self.contract_path)
import os,sys,json,glob from client.contractnote import ContractNote from client.bcosclient import BcosClient from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client.bcoserror import BcosException, BcosError from client_config import client_config from eth_utils import to_checksum_address from eth_utils.hexadecimal import encode_hex from eth_account.account import Account client = BcosClient() # 设定abi文件 if os.path.isfile(client_config.solc_path) or os.path.isfile(client_config.solcjs_path): Compiler.compile_file("contracts/supply.sol") abi_file = "contracts/supply.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi # 部署智能合约 with open("contracts/supply.bin", 'r') as load_f: contract_bin = load_f.read() load_f.close() result = client.deploy(contract_bin) print("deploy",result) print("new address : ",result["contractAddress"]) contract_name = os.path.splitext(os.path.basename(abi_file))[0] memo = "tx:"+result["transactionHash"]
from client.bcosclient import BcosClient import os from client.stattool import StatTool from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client_config import client_config from client.bcoserror import BcosException, BcosError from client.bcoserror import CompilerNotFound, CompileError # 从文件加载abi定义 contractPath = "./contracts/contracts" if os.path.isfile(client_config.solc_path) or os.path.isfile(client_config.solcjs_path): # Compiler.compile_file("contracts/HelloWorld.sol") try: Compiler.compile_file(contractPath + "/traffic.sol", contractPath) except CompileError: print (CompileError) else: print (__file__) abi_file = contractPath + "/traffic.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi # 以下是查询类的接口,大部分是返回json,可以根据对fisco bcos rpc接口json格式的理解,进行字段获取和转码 ''' useful helper: int(num,16) hex -> int hex(num) : int -> hex
ROLE_COMM = "comm" # 委员会 # 轮询的时间间隔,单位秒 QUERY_INTERVAL = 10 # 最大的执行轮次 MAX_EPOCH = 50 * CLIENT_NUM # 设置模型 n_features = 5 n_class = 2 # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/CommitteePrecompiled.sol") abi_file = "contracts/CommitteePrecompiled.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi # 定义合约地址 to_address = "0x0000000000000000000000000000000000005006" # 写一个节点的工作流程 def run_one_node(node_id): """指定一个node id,并启动一个进程""" batch_size = 100 learning_rate = 0.001
@author: kentzhang @date: 2019-06 ''' from client.contractnote import ContractNote from client.bcosclient import BcosClient import os from eth_utils import to_checksum_address from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client.bcoserror import BcosException, BcosError from client_config import client_config # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/HelloWorld.sol") Compiler.compile_file("contracts/SimpleInfo.sol") abi_file = "contracts/SimpleInfo.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi try: client = BcosClient() print(client.getinfo()) # 部署合约 print( "\n>>Deploy:----------------------------------------------------------" ) with open("contracts/SimpleInfo.bin", 'r') as load_f: contract_bin = load_f.read()
@author: kentzhang @date: 2019-06 ''' from client.bcosclient import BcosClient import os from client.stattool import StatTool from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client_config import client_config from client.bcoserror import BcosException, BcosError # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile( client_config.solcjs_path): Compiler.compile_file("contracts/HelloWorld.sol") # Compiler.compile_file("contracts/SimpleInfo.sol") abi_file = "contracts/HelloWorld.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi # 以下是查询类的接口,大部分是返回json,可以根据对fisco bcos rpc接口json格式的理解,进行字段获取和转码 ''' useful helper: int(num,16) hex -> int hex(num) : int -> hex ''' try: client = BcosClient() info = client.getinfo()
@author: kentzhang @date: 2019-06 ''' from client.contractnote import ContractNote from client.bcosclient import BcosClient import os from eth_utils import to_checksum_address from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client.bcoserror import BcosException, BcosError from client_config import client_config # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile(client_config.solcjs_path): Compiler.compile_file("contracts/v1_2.sol") abi_file = "contracts/v1_2.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi try: client = BcosClient() print(client.getinfo()) # 部署合约 # print("\n>>Deploy:----------------------------------------------------------") # with open("contracts/v1_2.bin", 'r') as load_f: # contract_bin = load_f.read() # load_f.close() # result = client.deploy(contract_bin) # print("deploy", result)
@author: kentzhang @date: 2019-06 ''' from client.contractnote import ContractNote from client.bcosclient import BcosClient import os from eth_utils import to_checksum_address from client.datatype_parser import DatatypeParser from client.common.compiler import Compiler from client.bcoserror import BcosException, BcosError from client_config import client_config # 从文件加载abi定义 if os.path.isfile(client_config.solc_path) or os.path.isfile(client_config.solcjs_path): Compiler.compile_file("temp/HelloWorld.sol") Compiler.compile_file("temp/SimpleInfo.sol") abi_file = "temp/SimpleInfo.abi" data_parser = DatatypeParser() data_parser.load_abi_file(abi_file) contract_abi = data_parser.contract_abi try: client = BcosClient() print(client.getinfo()) # 部署合约 print("\n>>Deploy:----------------------------------------------------------") with open("temp/SimpleInfo.bin", 'r') as load_f: contract_bin = load_f.read() load_f.close() result = client.deploy(contract_bin)