Dapps開(kāi)發(fā)包括三個(gè)簡(jiǎn)單的步驟:
在區(qū)塊鏈網(wǎng)絡(luò)上部署智能合約
(資料圖片)
從部署的智能合約中讀取數(shù)據(jù)
將交易發(fā)送到部署的智能合約
智能合約
每個(gè)程序員都用他們最喜歡的編程語(yǔ)言執(zhí)行了一個(gè)“hello world”程序,以了解運(yùn)行該語(yǔ)言的基礎(chǔ)知識(shí)。這是我們使用Solidity語(yǔ)言編寫的簡(jiǎn)單的“hello world”版本的智能合約,我們可以在區(qū)塊鏈上添加問(wèn)候語(yǔ)并檢索它。Solidity是編寫智能合約最常用的語(yǔ)言,它編譯為可以在節(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;
}
}
您可以通過(guò)傳遞字符串值使用greet()方法添加問(wèn)候語(yǔ),并使用getGreting()方法檢索問(wèn)候語(yǔ)。
1.在區(qū)塊鏈網(wǎng)絡(luò)上部署智能合約
a)創(chuàng)建項(xiàng)目:開(kāi)發(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
打開(kāi)您的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庫(kù)和所有其他必需的模塊
通過(guò)指向Ropsten Infura節(jié)點(diǎn)啟動(dòng)web3提供程序
添加了用于簽署交易的帳戶地址和私鑰。不要忘記在代碼中添加您的憑據(jù)。
通過(guò)指向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ù)以太坊的說(shuō)法,事務(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)載必須注明來(lái)源為"環(huán)球傳媒網(wǎng)",并保留"環(huán)球傳媒網(wǎng)"的電頭。
- 海南都逃不過(guò)寒潮 什么是寒潮?
- 為什么說(shuō)今年端午節(jié)為21世紀(jì)并列最晚?端午節(jié)的由來(lái)介紹
- 歷年考研人數(shù)簡(jiǎn)介 考研的注意事項(xiàng)有哪些?
- 首套房的房貸利率是多少 首套房貸優(yōu)惠有什么?
- 長(zhǎng)沙第一高樓簡(jiǎn)介 長(zhǎng)沙的高樓還有什么?
- 偷稅和漏稅概念介紹 偷稅和漏稅的區(qū)別是什么?
- 汕尾特色小吃 汕尾有哪些美食?
- 智慧城市試點(diǎn)名單公布情況 全國(guó)智慧城市試點(diǎn)名單公布情況怎么樣?
- 中國(guó)人口最少的民族 中國(guó)人口最少的民族是哪個(gè)?
- 清朝皇帝的行宮花園北京頤和園 北京頤和園是什么?
資訊
- 唯品會(huì)真假查詢方法 唯品會(huì)是哪個(gè)旗下的公司?
- 全球視點(diǎn)!唐藝昕個(gè)人資料介紹?唐藝昕主要作品有哪些?
- 頭條焦點(diǎn):張根碩個(gè)人資料介紹?張根碩演過(guò)的電視劇有哪些?
- 王紹偉個(gè)人資料介紹?王紹偉演過(guò)哪些電視???-觀察
- 當(dāng)前熱門:陳翔個(gè)人資料介紹?陳翔演過(guò)的電視劇有哪些?
- 釋小龍個(gè)人資料介紹?釋小龍電影有哪些?
- 王寶強(qiáng)個(gè)人資料介紹?王寶強(qiáng)電影有哪些?|全球觀速訊
- 吳建飛個(gè)人資料介紹?吳建飛歌曲有哪些?-全球速讀
- 當(dāng)前關(guān)注:邱啟明個(gè)人資料介紹?邱啟明老婆是誰(shuí)?
- 聶鑫個(gè)人資料介紹?聶鑫演藝經(jīng)歷是怎樣的? 世界今亮點(diǎn)
焦點(diǎn)
- 迪拜破產(chǎn)國(guó)家遭受危機(jī) 迪拜破產(chǎn)國(guó)家遭受危機(jī)怎么處理
- 歐盟碳排放稅規(guī)定 應(yīng)對(duì)歐盟碳排放稅的方式簡(jiǎn)介
- ?迪拜第一高樓介紹 世界上很高的建筑有哪些?
- 英國(guó)王室繼承順序 英國(guó)王室繼承順序排列是怎么進(jìn)行的?
- 利比亞的主要城市 利比亞有哪些主要城市?
- 世界上最大的內(nèi)陸國(guó) 世界上最大的內(nèi)陸國(guó)是哪里?
- 歐盟27國(guó)介紹 歐盟27國(guó)哪些國(guó)家?
- 富士山主人是誰(shuí) 富士山淺間神社的主人是誰(shuí)?
- 富士山主人是誰(shuí) 富士山淺間神社的主人是誰(shuí)?
- 韓國(guó)或成世界上首個(gè)消失的國(guó)家 什么原因?qū)е碌模?/a>