文档原始链接为: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.providersweb3 = 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));elseconsole.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

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

Web3.js 0.20.x API 中文版翻译相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 本文首发于深入浅出区块链社区 原文链接:Web3.js 0.20.x API 中文版翻译原文已更新,请读者前往原文阅读 文档原 ...

  2. 以太坊:Web3.js 0.20 使用说明

    web3简介 注意 web3.js 有两个不兼容的版本:0.20.x及1.0beta,1.0对0.20版本做了重构. 本文档是web3.js 0.20.x版本翻译,其对应的官方文档地址在 JavaSc ...

  3. SIP.js 0.20.0版本简单Demo

    SIP.js的0.20.0版本是使用typescript开源的JavaScript库 首先从npm上加载SIP.js npm install sip.js 可以根据习惯使用ts或js来开发 <s ...

  4. 以太坊web3.js文档翻译及说明

    这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前**web3.js 0.20.x 版本** 已经翻译完成,欢迎大家前往查阅. 这里还几个实用DEMO ...

  5. Web3.js 学习

    web3.js Web3 JavaScript app API web3.js是一个JavaScript API库,一般使得DApp在以太坊上运行 web3.js通过RPC调用与本节点通信,用于任何暴 ...

  6. 以太坊学习路线——(二、下)以太坊编程接口:web3.js

    这篇博客演示的基本操作系统环境是CentOS 7,参考书籍:以太坊开发实战--以太坊关键技术与案例分析 第六章(吴寿鹤.冯翔.刘涛.周广益   著).要运行本博文相关程序,需要搭建以太坊私有链.安装t ...

  7. Bootstrap Table API 中文版(完整翻译文档)~!

    /* * *$('#table').bootstrapTable({}); *看网上有中文版的,但有些就是字面直接译过来了,而且有的就没有翻译,那就打算自己再翻译一遍,每一条会尽 *最大可能结合尽可能 ...

  8. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别

    一.前言 博主在安装web3.js的时候,偶然间安装了不同版本的web3.js,API操作也不相同,虽然都能达到目标,但是到底区别在哪呢?网上查找半天并没有人专门总结一下这块,所以今天斗胆总结一下,也 ...

  9. 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明

    以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...

最新文章

  1. [Share]Web Directions Conferences
  2. springboot工程中使用spring.version导致无法启动
  3. c语言常量x,C语言的数据、常量和变量
  4. HtmlParser提取网页中的纯文本信息
  5. JDK9新特性实战:简化流关闭新姿势
  6. WPF 操作 richTextBox
  7. 【转】IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段
  8. MyEclipse8.5中的可视化界面JTable和JComboBox应用,及常用方法
  9. Laravel多用户博客系统
  10. RS-422接口定义
  11. 开虚拟机服务器cpu百分之百应该管,为何我在虚拟机里开游戏CPU使用率90--100
  12. 怎么用计算机检测颜色的深浅,真假10bit? !怎么测试呢?两种测试显示器10位色深的方法...
  13. R语言实战 ---学习心得08
  14. 美国 android手机号码,格式编辑文本为美国电话号码1(xxx)-xxxx你输入android?
  15. python和办公软件有什么区别_WPS与OFFICE办公软件有哪些区别
  16. Centos 桌面卡死解决办法,不关闭程序重启桌面
  17. 天津市建筑物矢量数据(Shp格式+带高度)
  18. 如何下载金融街街道卫星地图高清版大图
  19. A站复兴?B站说NO
  20. 哥哥与弟弟的游戏故事

热门文章

  1. 《汽车驾驶自动化分级》国家标准发布
  2. 反思脑机接口技术:机器真的能控制我们的大脑吗?
  3. 中国学者变革300多年来的活塞!MIT、哈佛联手,动力3倍以上,可节能40%
  4. 工业富联2018年报来了!上市后首张成绩单大起底
  5. 展望2021年:智能机器人可监督工业机器人干活,效率提升30%
  6. AI 岗位年薪下降 8.9%,程序员越“老”越吃香,最新薪酬报告发布!
  7. 不发项目奖金,程序员怒删代码,被判 5 个月!
  8. 新信号!阿里 AI 工程师趋于年轻化,高端AI人才严重短缺
  9. BBSSDK插件技术方案
  10. linux中的tasklet机制【转】