Dapps開發(fā)包括三個(gè)簡單的步驟:
在區(qū)塊鏈網(wǎng)絡(luò)上部署智能合約
(資料圖片)
從部署的智能合約中讀取數(shù)據(jù)
將交易發(fā)送到部署的智能合約
智能合約
每個(gè)程序員都用他們最喜歡的編程語言執(zhí)行了一個(gè)“hello world”程序,以了解運(yùn)行該語言的基礎(chǔ)知識(shí)。這是我們使用Solidity語言編寫的簡單的“hello world”版本的智能合約,我們可以在區(qū)塊鏈上添加問候語并檢索它。Solidity是編寫智能合約最常用的語言,它編譯為可以在節(jié)點(diǎn)上運(yùn)行的以太坊虛擬機(jī)上執(zhí)行的字節(jié)碼。
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.在區(qū)塊鏈網(wǎng)絡(luò)上部署智能合約
a)創(chuàng)建項(xiàng)目:開發(fā)方案及功能I59案例2OO7系統(tǒng)3O69
mkdir pythonDapp
cd pythonDapp
truffle init
成功初始化項(xiàng)目后,轉(zhuǎn)到您的文件夾并在/contracts目錄中創(chuàng)建greeter.sol文件。在網(wǎng)絡(luò)上部署合約之前,我們必須編譯它并構(gòu)建工件。
b)智能合約的編譯:
因此,對(duì)于編譯,我們將使用Truffle solc編譯器。在您的主目錄中,運(yùn)行以下命令:
truffle compile
(or)
truffle.cmd compile#(for windows only)
上面的命令將在/contracts目錄中編譯你的合約,并在/build目錄中創(chuàng)建二進(jìn)制工件文件greeter.json。
c)部署合約:需求及源碼部署唯:yy625019
打開您的Python IDLE編輯器,并在主目錄deploy.py中使用以下代碼創(chuàng)建一個(gè)新文件,然后在您的目錄中運(yùn)行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'])
導(dǎo)入的web3庫和所有其他必需的模塊
通過指向Ropsten Infura節(jié)點(diǎn)啟動(dòng)web3提供程序
添加了用于簽署交易的帳戶地址和私鑰。不要忘記在代碼中添加您的憑據(jù)。
通過指向Truffle編譯的工件文件greeter.json的abi和字節(jié)碼啟動(dòng)合約實(shí)例
添加了帶有隨機(jī)數(shù)、gas、gasPrice等參數(shù)的construct_txn。此處,gas是指交易應(yīng)在以太坊中使用和支付的最大計(jì)算資源量。gasPrice是指在交易中使用該數(shù)量的gas時(shí)的最小Ether數(shù)量。to指的是您發(fā)送交易的地址。僅當(dāng)您將Ether發(fā)送到帳戶或智能合約時(shí)才需要to參數(shù)。
使用我們的私鑰簽署交易并在網(wǎng)絡(luò)上廣播。
在控制臺(tái)中記錄交易哈希和部署的合約地址。根據(jù)以太坊的說法,事務(wù)處理時(shí)間<20秒。所以你必須等待20秒才能獲得部署的合約地址。您的后端現(xiàn)在已成功部署在以太坊區(qū)塊鏈上?,F(xiàn)在您可以使用此地址與您的智能合約進(jìn)行交互。復(fù)制此合約地址。
關(guān)鍵詞:
凡注有"環(huán)球傳媒網(wǎng)"或電頭為"環(huán)球傳媒網(wǎng)"的稿件,均為環(huán)球傳媒網(wǎng)獨(dú)家版權(quán)所有,未經(jīng)許可不得轉(zhuǎn)載或鏡像;授權(quán)轉(zhuǎn)載必須注明來源為"環(huán)球傳媒網(wǎng)",并保留"環(huán)球傳媒網(wǎng)"的電頭。
資訊
- 唯品會(huì)真假查詢方法 唯品會(huì)是哪個(gè)旗下的公司?
- 全球視點(diǎn)!唐藝昕個(gè)人資料介紹?唐藝昕主要作品有哪些?
- 頭條焦點(diǎn):張根碩個(gè)人資料介紹?張根碩演過的電視劇有哪些?
- 王紹偉個(gè)人資料介紹?王紹偉演過哪些電視?。?觀察
- 當(dāng)前熱門:陳翔個(gè)人資料介紹?陳翔演過的電視劇有哪些?
- 釋小龍個(gè)人資料介紹?釋小龍電影有哪些?
- 王寶強(qiáng)個(gè)人資料介紹?王寶強(qiáng)電影有哪些?|全球觀速訊
- 吳建飛個(gè)人資料介紹?吳建飛歌曲有哪些?-全球速讀
- 當(dāng)前關(guān)注:邱啟明個(gè)人資料介紹?邱啟明老婆是誰?
- 聶鑫個(gè)人資料介紹?聶鑫演藝經(jīng)歷是怎樣的? 世界今亮點(diǎn)