资讯专栏INFORMATION COLUMN

Web3.js 0.20.x API 中文版翻译

jsliang / 606人阅读

摘要:使用回调由于这套被设计来与本地的结点交互,所有函数默认使用同步的的请求。批量请求可以允许将多个请求放入队列,并一次执行。这里的批量请求主要目的是用来保证请求的串行执行。列表本教程由登链学院翻译,由深入浅出区块链发布。

本文首发于深入浅出区块链社区
原文链接:Web3.js 0.20.x API 中文版翻译原文已更新,请读者前往原文阅读

文档原始链接为:https://web3.learnblockchain.cn/0.2x.x/,欢迎大家前往查阅,本文只是节选开头部分的介绍及API列表索引,以下为翻译正文:

为了开发一个基于以太坊的去中心化应用程序,可以使用web3.js库提供的web3对象, 在底层实现上,web3通过RPC调用与本地节点通信, web3.js可以与任何暴露了RPC接口的以太坊节点连接。

web3 包含下面几个对象:

web3.eth 用来与以太坊区块链及合约的交互

web3.shh 用来与Whisper协议相关交互

web3.net 用来获取网络相关信息

web3 包含一些工具

web3使用示例:

官方示例

使用web3.js API在页面中转账

多个API 使用Demo

Dapp 模式

想要学习去中心化应用(DAPP)开发,这门课程不容错过区块链全栈-以太坊DAPP开发实战

引入web3

首先你需要将web3引入到应用工程中,可以通过如下几个方法:

npm: npm install web3

bower: bower install web3

meteor: meteor add ethereum:web3

vanilla: link the dist./web3.min.js

然后你需要创建一个web3的实例,设置一个provider。为了保证你不会覆盖一个已有的provider(Mist浏览器或安装了MetaMak的浏览器会提供Provider),需要先检查是否web3实例已存在,示例代码如下:

if (typeof web3 !== "undefined") {
  web3 = new Web3(web3.currentProvider);
} else {
  // set the provider you want from Web3.providers
  web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

成功引入后,你现在可以使用web3对象的API了。

使用回调

由于这套API被设计来与本地的RPC结点交互,所有函数默认使用同步的HTTP的请求。

如果你想发起一个异步的请求。大多数函数允许传一个跟在参数列表后的可选的回调函数来支持异步,回调函数支持Error-first回调的风格。

web3.eth.getBlock(48, function(error, result){
    if(!error)
        console.log(JSON.stringify(result));
    else
        console.error(error);
})
批量请求

可以允许将多个请求放入队列,并一次执行。

注意:批量请求并不会更快,在某些情况下,同时发起多个异步请求,也许更快。这里的批量请求主要目的是用来保证请求的串行执行。

var batch = web3.createBatch();
batch.add(https://web3.learnblockchain.cn/0.2x.x/web3.eth.getBalance.request("0x0000000000000000000000000000000000000000", "latest", callback));
batch.add(https://web3.learnblockchain.cn/0.2x.x/web3.eth.contract(abi).at(address).balance.request(address, callback2));
batch.execute();
web3.js中的大数处理

如果是一个数据类型的返回结果,通常会得到一个BigNumber对象,因为Javascript不能正确的处理BigNumber,看看下面的例子:

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

所以web3.js依赖BigNumber Library,且已经自动引入。

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 upto 20 digits
// "13145.23443534645646666646" // your number will be truncated after the 20th digit
Web3.js API列表 web3

web3.version.api

web3.version.node

web3.version.network

web3.version.ethereum

web3.version.whisper

web3.isConnected

web3.setProvider

web3.currentProvider

web3.reset

web3.sha3

web3.toHex

web3.toAscii

web3.fromAscii

web3.toDecimal

web3.fromDecimal

web3.fromWei

web3.toWei

web3.toBigNumber

web3.isAddress

web3.net

web3.net.listening

web3.net.peerCount

web3.eth

web3.eth.defaultAccount

web3.eth.defaultBlock

web3.eth.syncing

web3.eth.isSyncing

web3.eth.coinbase

web3.eth.mining

web3.eth.hashrate

web3.eth.gasPrice

web3.eth.accounts

web3.eth.blockNumber

web3.eth.register

web3.eth.unRegister

web3.eth.getBalance

web3.eth.getStorageAt

web3.eth.getCode

web3.eth.getBlock

web3.eth.getBlockTransactionCount

web3.eth.getUncle

web3.eth.getTransaction

web3.eth.getTransactionFromBlock

web3.eth.getTransactionReceipt

web3.eth.getTransactionCount

web3.eth.sendTransaction

web3.eth.sendRawTransaction

web3.eth.sign

web3.eth.call

web3.eth.estimateGas

web3.eth.filter

web3.eth.contract

Contract Methods

Contract Events

Contract allEvents

web3.eth.getCompilers

web3.eth.compile.solidity

web3.eth.compile.lll

web3.eth.compile.serpent

web3.eth.namereg

web3.eth.sendIBANTransaction

web3.eth.iban

web3.eth.iban.fromAddress

web3.eth.iban.fromBban

web3.eth.iban.createIndirect

web3.eth.iban.isValid

web3.eth.iban.isDirect

web3.eth.iban.isIndirect

web3.eth.iban.checksum

web3.eth.iban.institution

web3.eth.iban.client

web3.eth.iban.address

web3.eth.iban.toString

web3.db

web3.db.putString

web3.db.getString

web3.db.putHex

web3.db.getHex

web3.shh

web3.shh.post

web3.shh.newIdentity

web3.shh.hasIdentity

web3.shh.newGroup

web3.shh.addToGroup

web3.shh.filter

本教程由登链学院翻译,由深入浅出区块链发布。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97509.html

相关文章

  • Web3.js 0.20.x API 文版翻译

    摘要:使用回调由于这套被设计来与本地的结点交互,所有函数默认使用同步的的请求。批量请求可以允许将多个请求放入队列,并一次执行。这里的批量请求主要目的是用来保证请求的串行执行。列表本教程由登链学院翻译,由深入浅出区块链发布。 本文首发于深入浅出区块链社区原文链接:Web3.js 0.20.x API 中文版翻译原文已更新,请读者前往原文阅读 文档原始链接为:https://web3.learn...

    SexySix 评论0 收藏0
  • 以太坊web3.js文档翻译及说明

    摘要:这些天,为了录制以太坊开发实战课程,我准备把文档全部翻译一下并做适当的补充,目前版本已经翻译完成,欢迎大家前往查阅。 这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅。 这里还几个实用DEMO,供大家参考: 使用web3.js API在页面中转账 web3.js 0....

    赵春朋 评论0 收藏0
  • 以太坊web3.js文档翻译及说明

    摘要:这些天,为了录制以太坊开发实战课程,我准备把文档全部翻译一下并做适当的补充,目前版本已经翻译完成,欢迎大家前往查阅。 这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅。 这里还几个实用DEMO,供大家参考: 使用web3.js API在页面中转账 web3.js 0....

    makeFoxPlay 评论0 收藏0
  • 如何使用Web3.js API 在页面中进行转账

    摘要:本文首发于深入浅出区块链社区原文链接如何使用在页面中进行转账原文已更新,请读者前往原文阅读本文介绍如何使用在页面中进行转账,是我翻译的文档中文版及区块链全栈以太坊开发实战中的文章说明。 本文首发于深入浅出区块链社区原文链接:如何使用Web3.js API 在页面中进行转账原文已更新,请读者前往原文阅读 本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.j...

    xiaolinbang 评论0 收藏0
  • 如何使用Web3.js API 在页面中进行转账

    摘要:本文首发于深入浅出区块链社区原文链接如何使用在页面中进行转账原文已更新,请读者前往原文阅读本文介绍如何使用在页面中进行转账,是我翻译的文档中文版及区块链全栈以太坊开发实战中的文章说明。 本文首发于深入浅出区块链社区原文链接:如何使用Web3.js API 在页面中进行转账原文已更新,请读者前往原文阅读 本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.j...

    zhisheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<