Web3js
創建合約時響應卡住
我正在使用 web3 在我的本地區塊鍊網路上創建契約。在我的節點上,創建了聯繫人並生成了地址。但是在節點應用程序上,響應被擊中。
這是我的節點程式碼:
const Web3 = require('web3') const web3 = new Web3(new Web3.providers.HttpProvider("http://192.168.56.103:8000")) //const web3 = new Web3(ganache.provider()); const compiledFactory = require('./ethereum/build/CampaignFactory.json') const deploy = async () => { accounts = await web3.eth.getAccounts() console.log(accounts) addr = await web3.eth.personal.newAccount('123456'); console.log(addr) factory = await new web3.eth.Contract(JSON.parse(compiledFactory.interface)) .deploy({ data: '0x' + compiledFactory.bytecode }) .send({ from: accounts[0], gas: '1000000' }); console.log(factory) } deploy();
這是來自節點應用程序的控制台,之後卡住了
[ '0xDa8512CBD5c5eaa1213e5A7bEefAf35e9bA2c9EA', '0x3F5dD664F0A803d546E087Ee03B69aEb97D428DB', '0x7Eb0390DbF70147f37459F5d982456527FdBdb98', '0xD9FcDA95002A09d7be394F085fAEC2a1f3d28476' ] 0x2Cc72882b17960e07FCeF04E54A397628075654D
這是來自節點的日誌:
INFO [08-09|03:28:10.027] Submitted contract creation fullhash=0x63ac15fcc23f19aa44cd225dbacf7ea30069d3e106987daf63a4238caab4b73c contract=0x31F82590e051A224e7d8d63eB54f434d6073aB06
有人可以幫忙嗎?為什麼我沒有在 nodejs 應用程序上獲得地址?
這是我的部署腳本之一。隨意根據需要修改它。
部署智能合約的程式碼 | 部署.js
const Web3 = require('web3'); const { interface, bytecode } = require('./compile'); const web3 = new Web3(new Web3.providers.HttpProvider("http://192.168.56.103:8000")) const deploy = async () => { const accounts = await web3.eth.getAccounts(); console.log('Attempting to deploy from account', accounts[0]); const result = await new web3.eth.Contract(JSON.parse(interface)) .deploy( { data:bytecode }) .send( { gas: '5000000', from:accounts[0] }); console.log('Contract deployed to', result.options.address); }; deploy();
編譯智能合約程式碼的程式碼(創建介面和字節碼)| 編譯.js
const path = require('path'); const fs = require('fs'); const solc = require('solc'); const contractPath = path.resolve(__dirname, 'contracts', 'Contract.sol'); const source = fs.readFileSync(contractPath, 'utf8'); module.exports = solc.compile(source, 1).contracts[':Contract'];
合約路徑需要包含智能合約 .sol 文件的路徑。在 module.exports
.contracts[':Contract'];
中 :Contract 需要替換為合約的名稱。如果您需要更多資訊,請詢問。
如果您使用來自其他提供商(如 rinkeby 等)的測試網,則部署契約的過程需要更長的時間才能獲得返回值。大約 6-8 分鐘