Matic馬蹄鏈(dapp智能合約)開發(fā)丨馬蹄鏈Matic智能合約dapp系統(tǒng)開發(fā)技術(shù)詳情及邏輯
如果區(qū)塊鏈是一個數(shù)據(jù)庫,智能合約就是能夠使區(qū)塊鏈技術(shù)應用到現(xiàn)實當中的應用層。智能合約是在區(qū)塊鏈數(shù)據(jù)庫上運行的計算機程序,可以在滿足其源代碼中寫入的條件時自行執(zhí)行。智能合約一旦編寫好就可以被用戶信賴,合約條款不能被改變,因此合約是不可更改的。
向部署的合約發(fā)送交易
在我們的合約中,有一個方法greet()。我們可以單獨使用這種方法在我們的合同中添加問候語。讓我們看看我們?nèi)绾问褂脀eb3.py來做到這一點。打開您的Python IDLE編輯器并使用以下代碼創(chuàng)建一個新文件sign.py。然后在您的目錄中運行py sign.py。
import json
from web3 importWeb3,HTTPProvider
from web3.contract importConciseContract
#compile your smart contract with truffle first
truffleFile=json.load(open('./build/contracts/greeter.json'))
abi=truffleFile['abi']
bytecode=truffleFile['bytecode']
#web3.py instance
w3=Web3(HTTPProvider("https://ropsten.infura.io/v3/<API key>"))#modify
print(w3.isConnected())
contract_address=Web3.toChecksumAddress("<Deployed Contract Address here>")#modify
key="<Private key with 0x prefix here>"#modify
acct=w3.eth.account.privateKeyToAccount(key)
account_address=acct.address,開發(fā)功能及模式I59源碼2OO7設計3O69
#Instantiate and deploy contract
contract=w3.eth.contract(abi=abi,bytecode=bytecode)
#Contract instance
contract_instance=w3.eth.contract(abi=abi,address=contract_address)
#Contract instance in concise mode
#contract_instance=w3.eth.contract(abi=abi,address=contract_address,ContractFactoryClass=ConciseContract)
tx=contract_instance.functions.greet("Hello all my goody people").buildTransaction({'nonce':w3.eth.getTransactionCount(account_address)})
#Get tx receipt to get contract address
signed_tx=w3.eth.account.signTransaction(tx,key)
#tx_receipt=w3.eth.getTransactionReceipt(tx_hash)
hash=w3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(hash.hex())方案及案例威:yy625019
導入的web3庫和所有其他必需的模塊
通過指向Ropsten Infura節(jié)點啟動web3提供程序
添加了用于簽署交易的帳戶地址和私鑰
通過指向Truffle編譯的工件文件greeter.json的abi和字節(jié)碼啟動合約實例
創(chuàng)建tx對象以添加問候語“hello all my goody people”并建立交易
使用我們的私鑰簽署交易并在網(wǎng)絡上廣播。
在控制臺中記錄交易哈希。您可以使用您的交易哈希在etherscan上檢查交易狀態(tài)。一旦交易被礦工驗證,我們的問候語將被添加到區(qū)塊鏈上。