2019独角兽企业重金招聘Python工程师标准>>>

本文首发于深入浅出区块链社区 原文链接: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.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

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

转载于:https://my.oschina.net/u/3724910/blog/1976047

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

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

    文档原始链接为:https://web3.learnblockchain.cn/0.2x.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. Deep Learning(深度学习)相关网站
  2. Python Module_openpyxl_styles 样式处理
  3. SAP CRM呼叫中心和Hybris Commerce Backoffice的轮询设计
  4. 不同职业的面试着装技巧。
  5. UIButton、UIImageView、UILabel的选择
  6. CleanMyMac X 4.9 for Mac电脑清理软件 中文语言免费版
  7. Activity singleTop启动模式
  8. wepe重装win10用U盘安装系统
  9. 自适应滤波器的FPGA实现
  10. oracle物理备份与恢复,ORACLE数据库备份与恢复详解
  11. LINK : fatal error LNK1181: 无法打开输入文件“xx.lib”(SpaHBridge.lib)
  12. ArcEngine 开发之ITopologicalOperator 处理奇葩问题解决
  13. 用于地址解析的协议是服务器,用于解析域名的协议是什么?
  14. Unity-黑暗之魂复刻-玩家输入输出
  15. 2019.10.26日常总结兼一码学成普及模拟4比赛选解
  16. 大学计算机应用基础绩点,出国留学如何计算GPA平均分
  17. 工具箱@CMD实用命令
  18. 我的股票交易成长经历
  19. 新版Free手机、PC、平板、笔记本四端网站缩略展示图在线一键生成网站源码
  20. 人脸识别相比较其他生物识别技术,人脸识别主要有什么优缺点

热门文章

  1. hibernate之 一级缓存和二级缓存
  2. Eclipse4.4设备egit插件提交本地项目代码到远程仓库
  3. [UI]抽屉菜单DrawerLayout分析(二)
  4. 鱼油账号记录程序 - 零基础入门学习Delphi38
  5. 扩展sp_MSforeach
  6. express的cookie解析和签名源码解析
  7. 共享单车取消月卡优惠 烧钱时代正式结束
  8. saltstack 执行结果返回到mysql
  9. hadoop中的序列化与Writable类
  10. 如何完成从研究型到工程型的转变