npm install web3@0.20.1
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers
.HttpProvider("http://localhost:8545"));
}
web3.eth.getBlock(48, function(error, result) {
if (!error)
console.log(JSON.stringify(result));
else
console.error(error);
});
为了帮助 web3 集成到不同标准的所有类型项目中,1.0.0 版本提供了多种方式来处理异步函数。大多数的 web3 对象允许将一个回调函数作为最后一个函数参数传入,同时会返回一个promise 用于链式函数调用。
web3.eth.sendTransaction({
from: '0x123...',
data: '0x432...'
})
.once('transactionHash', function(hash) { ...
})
.once('receipt', function(receipt) { ...
})
.on('confirmation', function(confNumber, receipt) { ...
})
.on('error', function(error) { ...
})
.then(function(receipt) { // will be fired once the receipt is mined });
web3.js 通过以太坊智能合约的 json 接口(Application Binary Interface,ABI)创建一个 JavaScript 对象,用来在 js 代码中描述
var batch = web3.createBatch();
batch.add(web3.eth.getBalance.request('0x0000000000000000
000000000000000000000000 ', '
latest ', callback));
batch.add(web3.eth.contract(abi).at(address).balance.request(a ddress, callback2)); batch.execute();
var balance = new
BigNumber('131242344353464564564574574567456');
// or var balance = web3.eth.getBalance(someAddress);
balance.plus(21).toString(10);
//"131242344353464564564574574567477"
web3.version.getNode((error,result)=>{console.log(result)})
查看当前设置的 web3 provider
查看浏览器环境设置的 web3 provider(v1.0.0)
设置 provider
以太单位转换
数据类型转换
字符编码转换
地址相关
coinbase 查询
账户查询
区块高度查询
gasPrice 查询
区块查询
块中交易数量查询
余额查询
交易查询
交易收据查询(已进块)
callback])
交易对象:
var result = web3.eth.call({
to: "0xc4abd0339eb8d57087278718986382264244252f",
data: "0xc6888fa100000000000000000000000000000000000000000000000000
0 0000000000003 " });
console.log(result);
web3.eth.filter(filterOptions[, callback])
// filterString 可以是 'latest' or 'pending'
var filter = web3.eth.filter(filterString);
// 或者可以填入一个日志过滤 options
var filter = web3.eth.filter(options);
// 监听日志变化
filter.watch(function(error, result) {
if (!error) console.log(result);
});
// 还可以用传入回调函数的方法,立刻开始监听日志
web3.eth.filter(options, function(error, result) {
if (!error) console.log(result);
});
web3.eth.contract
var MyContract = web3.eth.contract(abiArray);
// 通过地址初始化合约实例
var contractInstance = MyContract.at(address);
// 或者部署一个新合约
var contractInstance = MyContract.new([constructorParam1]
[, constructorParam2], {
data: '0x12345...',
from: myAccount,
gas: 1000000
});
// 直接调用,自动按函数类型决定用 sendTransaction 还是 call
myContractInstance.myMethod(param1[, param2, ...][,
transactionObject
][, defaultBlock][, callback]);
// 显式以消息调用形式 call 该函数
myContractInstance.myMethod.call(param1[, param2, ...][,
transactionObject
][, defaultBlock][, callback]);
// 显式以发送交易形式调用该函数
myContractInstance.myMethod.sendTransaction(param1[,
param2, ...][, transactionObject][, callback]);
var event = myContractInstance.MyEvent({
valueA: 23
}
[, additionalFilterObject])
// 监听事件
event.watch(function(error, result) {
if (!error) console.log(result);
});
//还可以用传入回调函数的方法,立刻开始监听事件
var event = myContractInstance.MyEvent([{
valueA: 23
}]
[, additionalFilterObject],
function(error, result) {
if (!error) console.log(result);
}
);