摘要:使用回调由于这套被设计来与本地的结点交互,所有函数默认使用同步的的请求。批量请求可以允许将多个请求放入队列,并一次执行。这里的批量请求主要目的是用来保证请求的串行执行。列表本教程由登链学院翻译,由深入浅出区块链发布。
本文首发于深入浅出区块链社区
原文链接: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 digitWeb3.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.netweb3.net.listening
web3.net.peerCount
web3.ethweb3.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.dbweb3.db.putString
web3.db.getString
web3.db.putHex
web3.db.getHex
web3.shhweb3.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 中文版翻译原文已更新,请读者前往原文阅读 文档原始链接为:https://web3.learn...
摘要:这些天,为了录制以太坊开发实战课程,我准备把文档全部翻译一下并做适当的补充,目前版本已经翻译完成,欢迎大家前往查阅。 这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅。 这里还几个实用DEMO,供大家参考: 使用web3.js API在页面中转账 web3.js 0....
摘要:这些天,为了录制以太坊开发实战课程,我准备把文档全部翻译一下并做适当的补充,目前版本已经翻译完成,欢迎大家前往查阅。 这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅。 这里还几个实用DEMO,供大家参考: 使用web3.js API在页面中转账 web3.js 0....
摘要:本文首发于深入浅出区块链社区原文链接如何使用在页面中进行转账原文已更新,请读者前往原文阅读本文介绍如何使用在页面中进行转账,是我翻译的文档中文版及区块链全栈以太坊开发实战中的文章说明。 本文首发于深入浅出区块链社区原文链接:如何使用Web3.js API 在页面中进行转账原文已更新,请读者前往原文阅读 本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.j...
摘要:本文首发于深入浅出区块链社区原文链接如何使用在页面中进行转账原文已更新,请读者前往原文阅读本文介绍如何使用在页面中进行转账,是我翻译的文档中文版及区块链全栈以太坊开发实战中的文章说明。 本文首发于深入浅出区块链社区原文链接:如何使用Web3.js API 在页面中进行转账原文已更新,请读者前往原文阅读 本文介绍如何使用Web3.js API 在页面中进行转账,是我翻译的文档Web3.j...
阅读 3536·2021-11-22 09:34
阅读 3150·2021-11-15 11:38
阅读 2822·2021-10-27 14:16
阅读 1155·2021-10-18 13:35
阅读 2384·2021-09-30 09:48
阅读 3340·2021-09-29 09:34
阅读 1487·2019-08-30 15:54
阅读 1767·2019-08-26 11:57