标签 "web3js" 下的文章

问题:调用合约方法时报错Error: Returned error: VM Exception while processing transaction

解决:参数传递错误导致require条件修饰符不满足,web3.js是1.7

方法:

部署合约时传的参数alice是小写开头的,且为byte32

console.time('deploy time');
const myContract = await new web3.eth.Contract(JSON.parse(interface));
myContract.deploy({
    data: bytecode,
    arguments: [[web3.utils.asciiToHex('alice'), web3.utils.asciiToHex('bob')]]
})
.send({
    from: accounts[0],
    gas: 1500000,
    gasPrice: '30000000000000'
})
.then(function(newContractInstance){
    console.log('合约部署成功:', newContractInstance.options.address) // instance with the new contract address
});

阅读全文

问题:以太坊合约部署失败,报错:TypeError: param.map is not a function 或者 Error: Invalid number of parameters for "undefined". Got 2 expected 1!

解决:官方文档写的比较特别,所以被误导了。web3使用的是1.7.0

方法:
官方文档:

const myContract = await new web3.eth.Contract(JSON.parse(interface));    
myContract.deploy({
    data: '0x12345...',
    arguments: [123, 'My String']
})
.send({
    from: '0x1234567890123456789012345678901234567891',
    gas: 1500000,
    gasPrice: '30000000000000'
}, function(error, transactionHash){ ... })
.on('error', function(error){ ... })
.on('transactionHash', function(transactionHash){ ... })
.on('receipt', function(receipt){
   console.log(receipt.contractAddress) // contains the new contract address
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.then(function(newContractInstance){
    console.log(newContractInstance.options.address) // instance with the new contract address
});

阅读全文