Ropsten 网络连接与 web3.js(版本 1.0.0-beta.34)

Posted

技术标签:

【中文标题】Ropsten 网络连接与 web3.js(版本 1.0.0-beta.34)【英文标题】:Ropsten network connection with web3.js(Version 1.0.0-beta.34) 【发布时间】:2018-09-30 10:39:00 【问题描述】:

我有一个严重的问题,两天以来我一直在尝试解决,但没有成功。 我想使用 web3.js 连接 testnet ropsten,我想我成功了,但问题是我在 ropsten 网络上有一些平衡,但 web3.js 只显示 0。

你可以在这里查看我的地址,它有一些测试 4.999873784 Ether: https://ropsten.etherscan.io/address/0x0346d2e50E29065b3b3c73B878FaFDcEb8Ee13f0

这里我将描述我的流程(所有链接和ips都是假的):

    第一次开始geth

    geth --testnet --networkid 3 --rpc --rpcaddr "36.241.154.2" --rpccorsdomain "shahzad.com, http://shahzad.com, https://shahzad..com" --rpcapi="db,eth,net,web3,personal, account" 
    

    我在我的网页中包含了 web3.js。

    //https://github.com/ethereum/web3.js
    <script src="http://shahzad.com/myapp/web3.js-1.0.0-beta.34/dist/web3.min.js"></script>
    
    <script type="text/javascript">
    //var Web3 = require('web3');
    var web3 = new Web3(new Web3.providers.HttpProvider('http://36.241.154.2'))
    
    $(function()
    
    web3.eth.getBalance('0x0346d2e50E29065b3b3c73B878FaFDcEb8Ee13f0' , function(err, res)
        console.log("getBalance: "+res); //Displaying 0 //https://ropsten.etherscan.io/address/0x0346d2e50E29065b3b3c73B878FaFDcEb8Ee13f0
    
    );
    web3.eth.net.getId(function(err, res)
            console.log("Net: "+res); //Displaying 3
    );
    web3.eth.net.getNetworkType(function(err, res)
            console.log("getNetworkType: "+res); //Displaying ropsten
    );  
    web3.eth.getBlockNumber(function(error, result)
        console.log("Block Number: "+result); // Displaying 0
    )
    );
    

采取的其他步骤:

eth.syncing

 currentBlock: 3069355,
 highestBlock: 3069421,
 knownStates: 27609511,
 pulledStates: 27597775,
 startingBlock: 3069303


这里有什么问题,任何线索都会非常感激。

【问题讨论】:

您的余额在我的节点上正确显示,因此您的问题必须与您的节点或 HttpProvider 有关。可以尝试的几件事 1) 在调用 getBalance 之前,通过向 web3.eth.currentProvider 输出调试调用来确认您连接到正确的提供程序。 2)您是否使用端口 80(或者这只是您屏蔽 IP 的一部分)?您没有指定 --rpcport,默认值为 8545。 3) 当您启动 geth 时,正确的网络 ID 是否显示在您的控制台中(您不需要同时使用 --networkid--testnet。只需使用--testnet)? @AdamKipnis 谢谢,问题出在我的节点上,它没有完全同步,所以现在我的 currentBlock 和highestBlock 数量相等,你能把你的评论改成答案吗? 【参考方案1】:

余额通过我的本地节点和 MetaMask 正确显示,表明 OP 的节点存在问题。 OP 通过 cmets 表示,一旦节点完全同步 (currentBlock == highestBlock),余额显示正确。

请注意,在帖子中,currentBlock 已超过交易发生的时间点,但余额直到完全同步后才显示。这可能是由于 state trie 尚未同步。

【讨论】:

以上是关于Ropsten 网络连接与 web3.js(版本 1.0.0-beta.34)的主要内容,如果未能解决你的问题,请参考以下文章

Web3.js的基本使用(与以太坊智能合约的交互)

以太坊系列 - Web3.js

使用 Trezor(硬件钱包)将签名交易发送到 Ropsten 或 Truffle 开发网络

Ropsten 网络中禁止 Etherscan API 请求 403

我无法更改 Web3js 的版本

web3.js 中的连接超时