馬蹄鏈dapp開發規則丨馬蹄鏈dapp系統開發(案例開發)丨馬蹄鏈原始碼功能

xiaofufu發表於2023-03-11

  什麼是DApp


  “DApp”代表去中心化應用程式。與傳統應用程式一樣,去中心化應用程式也有前端(客戶端)和後端(伺服器端)。DApp的使用者介面可以用任何語言編寫(就像傳統應用程式一樣),並且可以呼叫其後端。那麼,Dapps與傳統應用程式有何不同?DApp的後端程式碼執行在分散的對等網路(即區塊鏈)上。


  使用web3py部署智慧合約並呼叫


  前提:啟動本地geth節點,開啟相關rpc服務,預設埠為8545,本人是在虛擬機器中配置了geth節點


  使用solc或者solcjs編譯智慧合約生成abi和bin,solc指令為控制檯輸出,solcjs會儲存成檔案。


  solc--bin Voting.sol


  solc--abi Voting.sol


  安裝包web3py


  pip install web3py


  import json


  from web3 import Web3


  web3=Web3(Web3.HTTPProvider('))


  print(web3.isConnected())


  account=web3.eth.accounts[0]


  #讀取檔案中的abi和bin,也可以當場生成


  with open('dataVoting_sol_Voting.abi','r')as f:


  abi=json.load(f)


  with open('dataVoting_sol_Voting.bin','r')as f:


  code=f.read()


  newContract=web3.eth.contract(bytecode=code,abi=abi)


  #發起交易部署合約,開發合約案例唯:MrsFu123


  option={'from':account,'gas':1000000}


  web3.geth.personal.unlock_account(account,'123')


  tx_hash=newContract.constructor([b'dog',b'cat',b'bird']).transact(option)


  #等待挖礦使得交易成功


  tx_receipt=web3.eth.waitForTransactionReceipt(tx_hash)


  print(tx_receipt.contractAddress)


  合約部署成功後就可以呼叫了,如果需要改變資料需要使用transac()發起交易,並等待挖礦確認,只是讀取則使用cal()即可


  #呼叫合約,合約地址就是剛剛控制檯列印的


  address=web3.toChecksumAddress("0x6999C68d214E1d193534601759b7F1eC534597Bf")


  c=web3.eth.contract(address,abi=abi)


  print(c.functions.totalVotesFor(b'dog').call())


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2939182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章