我正在尝试使用infura,metamask,Web3在Ropsten测试网络上部署Contract。它得到了部署,但是承诺从未得到解决,或者功能没有退出。我认为它会一直退还给我确认框。我将如何退出发送功能或解决承诺?
const fs = require('fs')
const Web3 = require('web3')
const HDWalletProvider = require('truffle-hdwallet-provider')
deploy()
function deploy() {
const provider = new HDWalletProvider(
'mnemonic',
'https://ropsten.infura.io/v3/ID'
)
const web3 = new Web3(provider)
var contractData = fs.readFileSync('../../build/contracts/Testcontract.json');
var contract = JSON.parse(contractData);
var abi = contract['abi'];
var bytecode = contract['bytecode'];
var testContract = new web3.eth.Contract(abi);
var account = 'ACCOUNT_NUMBER';
testContract.deploy({
data: bytecode,
arguments: ['SenderAlice', 'ReceiverBob', 120]
})
.send({
from: account,
gas: 4000000
}, function (error, transactionHash) {
}).once('error', function (error) {
console.log('error', error);
}).once('transactionHash', function (transactionHash) {
console.log('transactionHash', transactionHash);
}).once('receipt', function (receipt) {
console.log('receipt', receipt.contractAddress);
}).once('confirmation', function (confirmationNumber, receipt) {
console.log('confirmation', confirmationNumber);
});
}
使用异步/等待。
changes ::
const fs = require('fs')
const Web3 = require('web3')
const HDWalletProvider = require('truffle-hdwallet-provider')
deploy()
async function deploy() {
const provider = new HDWalletProvider(
'mnemonic',
'https://ropsten.infura.io/v3/id'
)
const web3 = new Web3(provider)
var contractData = fs.readFileSync('./build/contracts/Transfer.json');
var contract = JSON.parse(contractData);
var abi = contract['abi'];
var bytecode = contract['bytecode'];
var testContract = new web3.eth.Contract(abi);
var account = '0x0Fb80359dD096A1Ec1FbfDC07ddEBc2003272b0c';
await testContract.deploy({
data: bytecode
})
.send({
from: account,
gas: 4000000
}, function(error, transactionHash) {
}).once('error', function(error) {
console.log('error', error);
}).once('transactionHash', function(transactionHash) {
console.log('transactionHash', transactionHash);
}).once('receipt', function(receipt) {
console.log('receipt', receipt.contractAddress);
}).once('confirmation', function(confirmationNumber, receipt) {
console.log('confirmation', confirmationNumber);
});
process.exit();
}