发送已签名的事务以部署合同(以太坊)

时间:2018-01-15 07:38:17

标签: javascript transactions ethereum web3js go-ethereum

我的目标是发送已签署的交易以创建智能合约,但是,我面临的问题是我几天都无法解决的问题:

当我发送交易(在私人链上)时,有两个不同的结尾:

- 1 Web3js告诉我它有效,我可以看到块上的事务。但是,在尝试联系合同时,我有以下输出:

  

错误:无法从ABI解码uint256:0x

当我尝试在Geth中运行eth.getCode(contractAddress)时,它会返回0x

- 2 Web3js告诉我,事务没有被挖掘50个块(节点没有时间挖掘50个块)。但是我可以在块中看到该事务(在geth中)。

以下是我使用的代码:

web3g = result;
getContractInstance(function (error, instance) {
    if (error) {
        console.log(error);
    } else {
        let newContract = instance;
        let deploy = newContract.deploy({
            data: bytecode,
            arguments: [MY ARGS]
        }).encodeABI();
        let gas = web3g.utils.toHex(3000000);
        let gasPrice = web3g.utils.toHex(21000000000);
        let gasLimit = web3g.utils.toHex(4000000);
        let nonce;
        web3g.eth.getTransactionCount(req.body.sender_address)
            .then(function (result) {
                nonce = result;
                nonce = web3g.utils.toHex(nonce);
                let transactionObject = {
                    gas: gas,
                    gasPrice: gasPrice,
                    gasLimit: gasLimit,
                    data: deploy,
                    from: req.body.sender_address,
                    nonce: nonce
                };

                web3g.eth.accounts.signTransaction(transactionObject, req.body.private_key, function (error, signedTx) {
                    if (error) {
                        console.log(error);
                    } else {
                        console.log(signedTx);
                        web3g.eth.sendSignedTransaction(signedTx.rawTransaction)
                            .on('confirmation', function (number, receipt) {
                                if (number == 1) {
                                        // do stuff

有人能指出我做错了吗?

注意:我可以使用上述方法发送已签名的事务,以便在地址之间传输以太网。

编辑:估算气体将返回以下内容:错误:

  

返回错误:所需气体超过允许量或总是失败   交易

0 个答案:

没有答案