Web3 JavaScript app API for 0.2x.x

注意:这里是对web3.js 0.2x.x版本的,若使用1.0版本,则参阅网址

要使得app在以太坊上工作,可使用web3.js库的web3对象,在其下是通过RPC调用与本地节点通信。web3.js与任意以太坊节点通信,它向外暴露一个RPC层。

web3包含eth对象 - web3.eth(用于以太坊区块链交互)和shh对象 - web3.shh(用于Whisper交互),今后还将为web3协议引入其他对象,可通过此地址查看到有效实例。

若想要查看web3.js的更复杂实例可查看这些有用的app模式

开始:

1.添加web3

首先需要将web3.js载入工程中,可使用如下方式:

npm:npm install web3

brower:brower install web3

meteor:meteor add ethereum:web3

vanilla:连接dist./web3.min.js

之后需要创建一个web3实例,设置一个provider。为了避免在mist内时覆写已经设置的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了。

2.使用回调函数

由于这个API设计与本地RPC节点工作,所有函数默认使用同步HTTP请求。

若想使用异步请求,可以以最后一个参数的方式来传一个可选的回调函数到大多数函数。所有回调函数正在使用一个错误优先回调风格:

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

3.批量请求

批量请求支持将请求排队,然后一次性对它们进行处理。

注意:批量请求不一定会更快,实际上一次性产生许多请求在某些情况下比如请求被异步处理时是会更快的。批量请求确保对请求的串行处理时有用。

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关于大数的注意事项:

当JavaScript不能够正确处理大数时,则需要为数值获取一个BigNumber对象,参考如下实例:

"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 upto 20 digits
// "13145.23443534645646666646" // your number will be truncated after the 20th digit

Web3.js API参考:

web3

web3对象提供所有方法。

实例:

var Web3 = require('web3');
// create an instance of web3 using the HTTP provider.
// NOTE in mist web3 is already available, so check first if it's available before instantiating
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

使用HTTP基本认证

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545", 0, BasicAuthUsername, BasicAuthPassword));
//Note: HttpProvider takes 4 arguments (host, timeout, user, password)

web3.version.api

web3.version.api

返回值

String - 以太坊js api版本号

实例:

var version = web3.version.api;
console.log(version); // "0.2.0"

web3.version.node

web3.version.node
// or async
web3.version.getNode(callback(error, result){ ... })

返回值

String - 客户端/节点版本

实例

var version = web3.version.node;
console.log(version); // "Mist/v0.9.3/darwin/go1.4.1"

web3.version.network

web3.version.network
// or async
web3.version.getNetwork(callback(error, result){ ... })

返回值

String - 网络协议版本

实例:

var version = web3.version.network;
console.log(version); // 54

web3.version.ethereum

web3.version.ethereum
// or async
web3.version.getEthereum(callback(error, result){ ... })

返回值

String - 以太坊协议版本

实例

var version = web3.version.ethereum;
console.log(version); // 60

参考网址






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值