Node.js 如何在部署web3.js时获取智能合约地址

Node.js 如何在部署web3.js时获取智能合约地址,node.js,ethereum,smartcontracts,web3js,Node.js,Ethereum,Smartcontracts,Web3js,我尝试从web3.js节点库部署SmartContract,我从中获得了一个事务哈希,但在矿工挖掘后如何获得合约地址?在对象后添加.address var contact = web3.eth.contract.new(abi,{from: web3.eth.accounts[0], data: bc}); console.log(contract.address); // Prints address 最后我得到了答案 var Tx=require('ethereumjs-tx') cons

我尝试从web3.js节点库部署SmartContract,我从中获得了一个事务哈希,但在矿工挖掘后如何获得合约地址?

在对象后添加
.address

var contact = web3.eth.contract.new(abi,{from: web3.eth.accounts[0], data: bc});
console.log(contract.address); // Prints address

最后我得到了答案

var Tx=require('ethereumjs-tx')
const Web3=require('web3')
const web3 = new Web3('https://rinkeby.infura.io/xxxxxxxxxxxxxxxxxx')

const account1='0xf2b6xxxxxxxxxxxxxxxxxxx83e9d52d934e5c'
const privateKey1=Buffer.from('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','hex')    


web3.eth.getTransactionCount(account1,(err,txCount)=>{
//smart contract data
const data = 'your data here'

//create transaction object
const txObject={
nonce:web3.utils.toHex(txCount),
gasLimit:web3.utils.toHex(1000000),
gasPrice:web3.utils.toHex(web3.utils.toWei('10','gwei')),
data: data
}

//sign the transaction
const tx = new Tx(txObject)
tx.sign(privateKey1)
const serializedTx = tx.serialize()
const raw='0x'+serializedTx.toString('hex')

//broadcast the transaction
web3.eth.sendSignedTransaction(raw,(err,txHash)=>{
console.log('err : ',err,'txHash : ',txHash)
//use this hash to find smartcontract on etherscan
}).on('receipt', console.log,);

})

.on()方法等待块挖掘结束并返回事务地址(此处为合同地址)。如果您不想使用metamask对事务进行签名并向网络广播,则此方法适用

欢迎来到StackOverflow!请提供您已经拥有的一组代码。