Dapps開發包括三個簡單的步驟:
在區塊鏈網絡上部署智能合約
(資料圖片)
從部署的智能合約中讀取數據
將交易發送到部署的智能合約
智能合約
每個程序員都用他們最喜歡的編程語言執行了一個“hello world”程序,以了解運行該語言的基礎知識。這是我們使用Solidity語言編寫的簡單的“hello world”版本的智能合約,我們可以在區塊鏈上添加問候語并檢索它。Solidity是編寫智能合約最常用的語言,它編譯為可以在節點上運行的以太坊虛擬機上執行的字節碼。
pragma solidity^0.5.7;
contract greeter{
string greeting;
function greet(string memory _greeting)public{
greeting=_greeting;
}
function getGreeting()public view returns(string memory){
return greeting;
}
}
您可以通過傳遞字符串值使用greet()方法添加問候語,并使用getGreting()方法檢索問候語。
1.在區塊鏈網絡上部署智能合約
a)創建項目:開發方案及功能I59案例2OO7系統3O69
mkdir pythonDapp
cd pythonDapp
truffle init
成功初始化項目后,轉到您的文件夾并在/contracts目錄中創建greeter.sol文件。在網絡上部署合約之前,我們必須編譯它并構建工件。
b)智能合約的編譯:
因此,對于編譯,我們將使用Truffle solc編譯器。在您的主目錄中,運行以下命令:
truffle compile
(or)
truffle.cmd compile#(for windows only)
上面的命令將在/contracts目錄中編譯你的合約,并在/build目錄中創建二進制工件文件greeter.json。
c)部署合約:需求及源碼部署唯:yy625019
打開您的Python IDLE編輯器,并在主目錄deploy.py中使用以下代碼創建一個新文件,然后在您的目錄中運行py deploy.py。
import json
from web3 importWeb3,HTTPProvider
from web3.contract importConciseContract
#web3.py instance
w3=Web3(HTTPProvider("https://ropsten.infura.io/v3/<API key>"))
print(w3.isConnected())
key="<Private Key here with 0x prefix>"
acct=w3.eth.account.privateKeyToAccount(key)
#compile your smart contract with truffle first
truffleFile=json.load(open('./build/contracts/greeter.json'))
abi=truffleFile['abi']
bytecode=truffleFile['bytecode']
contract=w3.eth.contract(bytecode=bytecode,abi=abi)
#building transaction
construct_txn=contract.constructor().buildTransaction({
'from':acct.address,
'nonce':w3.eth.getTransactionCount(acct.address),
'gas':1728712,
'gasPrice':w3.toWei('21','gwei')})
signed=acct.signTransaction(construct_txn)
tx_hash=w3.eth.sendRawTransaction(signed.rawTransaction)
print(tx_hash.hex())
tx_receipt=w3.eth.waitForTransactionReceipt(tx_hash)
print("Contract Deployed At:",tx_receipt['contractAddress'])
導入的web3庫和所有其他必需的模塊
通過指向Ropsten Infura節點啟動web3提供程序
添加了用于簽署交易的帳戶地址和私鑰。不要忘記在代碼中添加您的憑據。
通過指向Truffle編譯的工件文件greeter.json的abi和字節碼啟動合約實例
添加了帶有隨機數、gas、gasPrice等參數的construct_txn。此處,gas是指交易應在以太坊中使用和支付的最大計算資源量。gasPrice是指在交易中使用該數量的gas時的最小Ether數量。to指的是您發送交易的地址。僅當您將Ether發送到帳戶或智能合約時才需要to參數。
使用我們的私鑰簽署交易并在網絡上廣播。
在控制臺中記錄交易哈希和部署的合約地址。根據以太坊的說法,事務處理時間<20秒。所以你必須等待20秒才能獲得部署的合約地址。您的后端現在已成功部署在以太坊區塊鏈上。現在您可以使用此地址與您的智能合約進行交互。復制此合約地址。
關鍵詞: