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秒才能获得部署的合约地址。您的后端现在已成功部署在以太坊区块链上。现在您可以使用此地址与您的智能合约进行交互。复制此合约地址。
关键词:
凡注有"环球传媒网"或电头为"环球传媒网"的稿件,均为环球传媒网独家版权所有,未经许可不得转载或镜像;授权转载必须注明来源为"环球传媒网",并保留"环球传媒网"的电头。