4.3 JavaScript API for Dapps

优质
小牛编辑
137浏览
2023-12-01

Web3 JavaScript Ðapp API

要使您的Ðapp在Ethereum上工作,您可以使用web3.js库提供的web3对象。在底层,通过RPC调用与本地节点进行通信。web3.js与任何暴露出RPC层的Ethereum节点一起使用。

web3包含eth对象 - web3.eth(特别用于Ethereum块链互动)和shh对象 - web3.shh(用于Whisper交互)。随着时间的推移,我们将为每个其他web3协议引入其他对象。这里可以找到工作实例

如果您想使用web3.js查看一些更复杂的示例,请查看这些有用的Ðapp模式

使用回调

由于此API旨在与本地RPC节点配合工作,并且其所有功能默认使用同步HTTP request.con 如果要进行异步请求,可以将可选的回调作为最后一个参数传递给大多数函数。所有回调都使用错误第一的回调样式:

web3.eth.getBlock(48, function(error, result){
    if(!error)
        console.log(result)
    else
        console.error(error);
})

批量请求

批量请求将请求排队,并立即处理它们。

var batch = web3.createBatch();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(web3.eth.contract(abi).at(address).balance.request(address, callback2));
batch.execute();

关于web3.js中大数字的注释

查询余额值的时候,你始终会一个BigNumber对象,因为JavaScript无法正确处理大数字。看下面的例子:

"101010100324325345346456456456456456456"
// "101010100324325345346456456456456456456"
101010100324325345346456456456456456456
// 1.0101010032432535e+38

web3.js取决于BigNumber库并自动添加。

var balance = new BigNumber('131242344353464564564574574567456');
// or var balance = web3.eth.getBalance(someAddress);

balance.plus(21).toString(10); // toString(10) converts it to a number string
// "131242344353464564564574574567477"

下一个例子是行不通的,因为我们有超过20个浮动点,因此建议,以wei为单位获取余额值,只把它呈现给用户的时候才转换为其他单位:

var balance = new BigNumber('13124.234435346456466666457455567456');

balance.plus(21).toString(10); // toString(10) converts it to a number string, but can only show max 20 floating points
// "13145.23443534645646666646" // you number would be cut after the 20 floating point

Web3 Javascript Ðapp API参考

未翻译,可参见:https://ethereum.gitbooks.io/frontier-guide/content/web3.html