web3p / ethereum-tx

Ethereum transaction library in PHP.
https://www.web3p.xyz/ethereumtx.html
MIT License
183 stars 63 forks source link

Tx Data is always null #23

Closed danirabbani90 closed 5 years ago

danirabbani90 commented 5 years ago

hi there i have just followed the steps you wrote for sending ethereum transaction but unfortunately in the log the ethereum txdata is always null that is why it is unable to sign transactions ?

sc0Vu commented 5 years ago

Hi @danirabbani90, would you like to post code here (please do not include sensitive information)?

huigan commented 5 years ago

你好,我签名后向公共节点(https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc)发起请求,可以返回交易hash,但是这个交易hash用eth_getTransactionByHash查到的信息中blockHash和blockNumber都是null,我用eth_getTransactionCount获取最新交易数,并修改了nonce,但还是这样,我的操作有哪里不对的吗?谢谢了

$transaction = new Transaction([
            'nonce' => '0xd',
            'from' => "0xF728f02b81DfE880A6CD8748893c94925d70a8B6",
            'to' => '0x68484CF447d6E2eA8AF27d2b1DfE9b8DC5d24DB3',
            'gas' => '0x1',
            'gasPrice' => '0xee6b2800',
            'value' => '0x38d7ea4c68000',
            'chainId' => 1
        ]);

        $serialize=$transaction->serialize();
        $signedTransaction = $transaction->sign("PrivateKey");
        $getFromAddress=$transaction->getFromAddress();

        $web3 = new Web3(JSONRPC_HOST);
        $eth=$web3->eth;
        $eth->sendRawTransaction('0x'.$signedTransaction, function ($err, $transaction) use ($eth) {
            if ($err !== null) {
                echo 'Error: ' . $err->getMessage();
                return;
            }
            echo 'Tx hash: ' . $transaction . PHP_EOL;
            $eth->getTransactionByHash($transaction, function ($err, $res) use ($eth) {
                if ($err !== null) {
                    var_dump($err->getMessage());
                    return;
                }
                dump($res);
                //0xcff87fe6c618a7cce954701c954a9c701d981f3b1bcab6c9e931b7fc159a9afa
            });
            //0xcff87fe6c618a7cce954701c954a9c701d981f3b1bcab6c9e931b7fc159a9afa
        });
huigan commented 5 years ago

你好,我签名后向公共节点(https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc)发起请求,可以返回交易hash,但是这个交易hash用eth_getTransactionByHash查到的信息中blockHash和blockNumber都是null,我用eth_getTransactionCount获取最新交易数,并修改了nonce,但还是这样,我的操作有哪里不对的吗?谢谢了

$transaction = new Transaction([
            'nonce' => '0xd',
            'from' => "0xF728f02b81DfE880A6CD8748893c94925d70a8B6",
            'to' => '0x68484CF447d6E2eA8AF27d2b1DfE9b8DC5d24DB3',
            'gas' => '0x1',
            'gasPrice' => '0xee6b2800',
            'value' => '0x38d7ea4c68000',
            'chainId' => 1
        ]);

        $serialize=$transaction->serialize();
        $signedTransaction = $transaction->sign("PrivateKey");
        $getFromAddress=$transaction->getFromAddress();

        $web3 = new Web3(JSONRPC_HOST);
        $eth=$web3->eth;
        $eth->sendRawTransaction('0x'.$signedTransaction, function ($err, $transaction) use ($eth) {
            if ($err !== null) {
                echo 'Error: ' . $err->getMessage();
                return;
            }
            echo 'Tx hash: ' . $transaction . PHP_EOL;
            $eth->getTransactionByHash($transaction, function ($err, $res) use ($eth) {
                if ($err !== null) {
                    var_dump($err->getMessage());
                    return;
                }
                dump($res);
                //0xcff87fe6c618a7cce954701c954a9c701d981f3b1bcab6c9e931b7fc159a9afa
            });
            //0xcff87fe6c618a7cce954701c954a9c701d981f3b1bcab6c9e931b7fc159a9afa
        });

换了一个公共节点,就可以了,之前用的nodesmith.io,改成infura.io的就可以了

sc0Vu commented 5 years ago

@huigan because your transaction wasn't included in the block, you got the null when search the transaction hash. You might need to check the gas or gasPrice.