zilliqa python api

pyzil的Python项目详细描述


zilliqa python库api

pyzil是zilliqa区块链api的python3实现。https://apidocs.zilliqa.com

功能

  • Zilliqa低级API
  • 账户和交易
  • Zilliqa ethash
  • 智能合约

MacOS或Linux上的Python3.6+。

安装

pip install pyzil

或来源

git clone https://github.com/deepgully/pyzil
cd pyzil
pip install -r requirements.txt
python setup.py install

用法

导入Pyzil

frompprintimportpprintfrompyzil.cryptoimportzilkeyfrompyzil.zilliqaimportchainfrompyzil.zilliqa.unitsimportZil,Qafrompyzil.accountimportAccount,BatchTransfer

设置活动链、主网或测试网

chain.set_active_chain(chain.MainNet)

ZLS事务

# load account from wallet addressaccount=Account(address="95B27EC211F86748DD985E1424B4058E94AA5814")balance=account.get_balance()print("{}: {}".format(account,balance))# load account from private key# private key is required to send ZILsaccount=Account(private_key="05C3CF3387F31202CD0798B7AA882327A1BD365331F90954A58C18F61BD08FFC")balance2=account.get_balance()print("Account balance: {}".format(balance2))# to_addr must be bech32 address or 20 bytes checksum addressto_addr="zil1k5xzgp8xn87eshm3ktplqvs9nufav4pmcm52xx"# send ZILstxn_info=account.transfer(to_addr=to_addr,zils=2.718)pprint(txn_info)txn_id=txn_info["TranID"]# wait chain confirm, may takes 2-3 minutes on MainNettxn_details=account.wait_txn_confirm(txn_id,timeout=300)pprint(txn_details)iftxn_detailsandtxn_details["receipt"]["success"]:print("Txn success: {}".format(txn_id))else:print("Txn failed: {}".format(txn_id))

由QA发送
amount=Qa(1234567890)txn_info=account.transfer(to_addr=to_addr,zils=amount)pprint(txn_info)txn_id=txn_info["TranID"]

等待确认
amount=Zil(3.14)txn_details=account.transfer(to_addr,zils=amount,confirm=True,timeout=300,sleep=20)print("Transfer Result:")pprint(txn_details)pprint(account.last_params)pprint(account.last_txn_info)pprint(account.last_txn_details)

批量传输(将ZIL发送到多个地址)

batch=[BatchTransfer(to_addr=to_addr,zils=i)foriinrange(10)]pprint(batch)txn_info_list=account.transfer_batch(batch)pprint(txn_info_list)fortxn_infointxn_info_list:ifnottxn_info:print("Failed to create txn")continuetxn_details=account.wait_txn_confirm(txn_info["TranID"],timeout=300)pprint(txn_details)iftxn_detailsandtxn_details["receipt"]["success"]:print("Txn success")else:print("Txn failed")balance2=account.get_balance()print("Account balance: {}".format(balance2))

将ZIL从节点发送到电子钱包
nodes_keys=["private_key1","private_key2","private_key3",]to_address="your wallet address"to_account=Account(address=to_address)print("Account balance: {}".format(to_account.get_balance()))min_gas=Qa(chain.active_chain.api.GetMinimumGasPrice())txn_info_list=[]forkeyinnodes_keys:ifnotkey:continueaccount=Account(private_key=key)# send all zilsamount=account.get_balance_qa()-min_gas*2ifamount<=0:continuetxn_info=account.transfer(to_addr=to_account.bech32_address,zils=amount,gas_price=min_gas)pprint(txn_info)txn_info_list.append(txn_info)fortxn_infointxn_info_list:txn_details=chain.active_chain.wait_txn_confirm(txn_info["TranID"],timeout=300)pprint(txn_details)iftxn_detailsandtxn_details["receipt"]["success"]:print("Txn success")else:print("Txn failed")print("Account balance: {}".format(to_account.get_balance()))

从mykey.txt加载帐户
account=Account.from_mykey_txt("mykey.txt")print(account)

从keystore.json加载帐户
account=Account.from_keystore("keystore.json")print(account)# see more examples in tests/test_account.py

bech32地址

# init from bech32 addressaccount1=Account(address="zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf")print("address: {}".format(account1.address))account2=Account(address="1d19918a737306218b5cbb3241fcdcbd998c3a72")print("bech32 address: {}".format(account2.bech32_address))assertaccount1==account2# tranfer to bech32 addressaccount=Account.from_mykey_txt("mykey.txt")txn_info=account.transfer(to_addr="zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf",zils=0.01)pprint(txn_info)txn_id=txn_info["TranID"]

Zilliqa低级API

frompyzil.zilliqa.apiimportZilliqaAPI,APIErrorapi=ZilliqaAPI("https://api.zilliqa.com/")print(api)info=api.GetBlockchainInfo()pprint(info)sharding=api.GetShardingStructure()pprint(sharding)ds_block=api.GetCurrentDSEpoch()pprint(ds_block)tx_block=api.GetCurrentMiniEpoch()pprint(tx_block)# see more examples in tests/test_lowlevel_api.py

Zilliqa货币单位

frompyzil.zilliqa.unitsimportZil,Qazil=Zil(1000.123)print(repr(zil))assertzil==Zil("1000.123")qa=Qa(1000123000000000)print(repr(qa))assertqa==zilassertzil==qaprint(repr(zil+qa))print(repr(zil-2))print(repr(zil*2))print(repr(zil/2.0))print(repr(qa-2))print(repr(qa*2))print(repr(qa//2))# see more examples in tests/test_units.py

Zilliqa智能合约

frompprintimportpprintfrompyzil.zilliqaimportchainfrompyzil.accountimportAccountfrompyzil.contractimportContractchain.set_active_chain(chain.TestNet)account=Account.from_keystore("zxcvbnm,","zilliqa_keystore.json")

从地址

获取合同
address="45dca9586598c8af78b191eaa28daf2b0a0b4f43"contract=Contract.load_from_address(address,load_state=True)print(contract)print(contract.status)pprint(contract.state)contract.get_state(get_code=True,get_init=True)pprint(contract.code)pprint(contract.init)pprint(contract.state)

代码

的新合同
code=open("HelloWorld.scilla").read()contract=Contract.new_from_code(code)print(contract)# set account before deploycontract.account=accountcontract.deploy(timeout=300,sleep=10)assertcontract.status==Contract.Status.Deployed

获得合同

owner_addr=account.addresscontracts=Contract.get_contracts(owner_addr)pprint(contracts)contracts2=account.get_contracts()pprint(contracts2)assertcontracts==contracts2

呼叫合同

contract_addr="45dca9586598c8af78b191eaa28daf2b0a0b4f43"contract=Contract.load_from_address(contract_addr)contract.account=accountresp=contract.call(method="getHello",params=[])pprint(resp)pprint(contract.last_receipt)resp=contract.call(method="setHello",params=[Contract.value_dict("msg","String","hi contract.")])pprint(resp)pprint(contract.last_receipt)resp=contract.call(method="getHello",params=[])pprint(resp)pprint(contract.last_receipt)# see more examples in test_contract.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不可访问配置设计   在java中使用json就像在javascript中一样   java如何屏蔽Android 4.0主密钥   java为什么clickable的预期条件不执行click()?   Azure事件中心:Kafka消费者在java中不轮询任何内容   javajaxb和enum实现接口   java如何在标记下添加ProgressBar和按钮   java如何为对象实现arrayList   使用多重匹配重载java构造方法重载   java使用for循环和if语句搜索帐户   java JPanel在JPanel中添加了顶部填充   IntelliJ将Java项目/模块转换为Maven项目/模块   java如何迭代arraylist中的arraylist   自定义类的java“找不到符号”错误