コード例 #1
0
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
コード例 #2
0
ファイル: blockchain.py プロジェクト: FISCO-BCOS/hackathon
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")
コード例 #3
0
ファイル: process_logic.py プロジェクト: yann-sjtu/software
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
コード例 #4
0
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
コード例 #5
0
ファイル: __init__.py プロジェクト: linzh17/flblockchain
 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)
コード例 #6
0
ファイル: precompile.py プロジェクト: FISCO-BCOS/hackathon
 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
コード例 #7
0
    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
コード例 #8
0
 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)
コード例 #9
0
ファイル: blockchain.py プロジェクト: FISCO-BCOS/hackathon
def deploy_contract(contract,
                    is_compile: bool = False,
                    signer: Signer_Impl = None,
                    fn_args=None):
    """
    Args:
        contract: the contract's name, e.g.: "EngineerList"
        is_compile (bool): compile or not
    Returns:
        the contract address
    """
    if is_compile and (os.path.isfile(client_config.solc_path)
                       or os.path.isfile(client_config.solcjs_path)):
        Compiler.compile_file(f"Contracts/{contract}.sol",
                              output_path="Contracts")

    data_parser = DatatypeParser()
    data_parser.load_abi_file(f"Contracts/{contract}.abi")

    client = BcosClient()
    try:
        with open(f"Contracts/{contract}.bin", 'r') as load_f:
            contract_bin = load_f.read()
            load_f.close()
        result = client.deploy(contract_bin,
                               contract_abi=data_parser.contract_abi,
                               fn_args=fn_args,
                               from_account_signer=signer)
        addr = result["contractAddress"]
    except BcosError:
        traceback.print_exc()
        return None
    except BcosException:
        traceback.print_exc()
        return None
    except Exception:
        traceback.print_exc()
        return None
    finally:
        client.finish()
    app.logger.info(f"deploy contract {contract} at {addr}")
    return addr
コード例 #10
0
ファイル: init.py プロジェクト: mysteryboxed/BlockChainFinal
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"]
コード例 #11
0
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
コード例 #12
0
ファイル: main.py プロジェクト: iammcy/BFLC-demo
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
コード例 #13
0
  @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()
コード例 #14
0
ファイル: demo_get.py プロジェクト: jonneyhu/fisco
  @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()
コード例 #15
0
  @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)
コード例 #16
0
  @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)