Как получить адрес Smart Contract при его развертывании с web3.js - PullRequest
0 голосов
/ 10 октября 2018

Я пытался развернуть SmartContract из библиотеки узлов web3.js, я получаю из нее хэш транзакции, но как получить адрес контракта после того, как он был добыт майнером?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

наконец-то я получил ответ

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 () метод ждет до конца майнинга блока и возвращает адрес транзакции (здесь адрес контракта).Этот метод применим, если вы не хотите использовать метамаску для подписания транзакции и трансляции в сеть.

0 голосов
/ 10 октября 2018

Добавить .address после объекта.

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