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

为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3。对象。底层实现上,它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。

web3中有eth对象 - web3.eth 具体来表示与以太坊区块链之间的交互。shh对象 - web3.shh表示Whisper协议的相关交互。后续我们会继续介绍其它一些web3协议中的对象。可用的example can be found here

如果你想找一些更复杂的示例,可以看看这里useful Ðapp patterns.

GitHub - ethereum/web3.js at master
https://github.com/ethereum/web3.js/tree/master

入门

添加web3

首先你需要将web3引入到你的工程中,通过如下步骤:

  • npm: npm install web3
  • bower: bower install web3
  • metor: meteor add ethereum:web3
  • vanilla: dist./web3.min.js

然后你需要创建一个web3的实例,设置一个provider。为了保证你不会覆盖一个已有的provider,比如使用Mist时有内置,需要先检查是否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了。

使用callback

由于这套API被设计来与本地的RPC结点交互,所有函数默认使用同步的HTTP的请求。

如果你想发起一个异步的请求。大多数函数允许传一个跟在参数列表后的可选的回调函数来支持异步。回调函数支持error first callback的风格。

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

批量请求

可以允许将多个请求放入队列,并一次执行。

注意:批量请求并不会更快,在某些情况下,同时发起多个请求,由于是异步的,会变得更快。但这里的批量请求主要目的是用来保证请求的串行执行。

关于web3.js中的Big Number的说明

数据类型的返回结果,你将始终会得到一个BigNumber对象,因为Javascript不能正确的处理BigNumber,如下面的例子:

"101010100324325345346456456456456456456"
// "101010100324325345346456456456456456456"
101010100324325345346456456456456456456
// 1.0101010032432535e+38

所以web3.js依赖BigNumber Library1,且会自动进行引入。

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 max 20 floating points
// "13145.23443534645646666646" // you number would be cut after the 20 floating point

  1. Big Number 文档链接: https://github.com/MikeMcl/bignumber.js 

---------------

官方网站:

http://web3js.readthedocs.io/en/1.0/

Web3.js API 中文文档
http://web3.tryblockchain.org/

以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明的更多相关文章

  1. Web3.js API 中文文档

    Web3.js API 中文文档 http://web3.tryblockchain.org/Web3.js-api-refrence.html web3对象提供了所有方法. 示例: //初始化过程 ...

  2. 以太坊智能合约开发工具 Truffle 入门1

    Truffle是以太坊(Ethereum)智能合约开发的瑞士军刀,小巧好用,上手简单. 本篇文章主要展示如何用Truffle 开发第一个Ethereum智能合约. 1.准备工作:(本人针对window ...

  3. Mac下基于testrpc和truffle的以太坊智能合约开发环境搭建

    原文地址:石匠的blog truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约.truffle有一套自动的项目构建机制,集成了开发,测试和部署的各个 ...

  4. 以太坊智能合约开发 Solidity学习

    1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...

  5. 如何通过以太坊智能合约来进行众筹(ICO)

    前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...

  6. 使用web3.js监听以太坊智能合约event

    传送门: 柏链项目学院 使用web3.js监听以太坊智能合约event   当我们在前端页面调用合约时发现有些数据不会立即返回,这时还需要再调用更新数据的函数.那么这样的方法使用起来非常不便,监听ev ...

  7. rpc接口调用以太坊智能合约

    rpc接口调用以太坊智能合约 传送门: 柏链项目学院   在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...

  8. 以太坊智能合约Hello World示例程序

    简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...

  9. 深入以太坊智能合约 ABI

    开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...

随机推荐

  1. dba工作内容

    一.数据库管理员的工作内容 关键词:dba工作内容 转自:http://blog.sina.com.cn/s/blog_44e0d0490102won1.html 1.规划与建设: 1.数据库服务器环 ...

  2. shell 命令 set命令

    set命令输出所有的变量,包括全局变量和局部变量: set-o命令显示bash Shell的所有参数配置信息 set -o nounset              -u                ...

  3. [OpenCV]代码整理

    开发环境:Windows7, VS2010, OpenCV2.4.10 1.图像特征匹配 // AxFeatureExtract.cpp : 定义控制台应用程序的入口点. // #include &q ...

  4. [sh]md5sum接变量,find排除,sh判断文件存在

    1.md5sum md5sum `cat path_to_file|dos2unix` 注: 发现有些linux是gbk编码, 导致md5或ls 接变量后报错.需要dos2unix处理 2.find排 ...

  5. (转)Redis集群搭建与简单使用(最少需要 6个节点)

    介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...

  6. PHP中parent、this、self和static的区别

    参考: http://www.cnblogs.com/devcjq/articles/2424738.html http://www.cnblogs.com/alsf/p/9621002.html h ...

  7. 15个Node.js项目列表

    前言: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台,是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascri ...

  8. xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决

    到这种情况可能不是你的软件包的问题,可能是macos安全设置问题. 解决办法就是: 1.系统偏好设置... -> 安全性与隐私-->修改为任何来源 2.serria里面没有“任何来源”这一 ...

  9. CentOS6.5 安装Kafka集群

    1.安装zookeeper 参考文档:http://www.cnblogs.com/hunttown/p/5452138.html 2.下载:https://www.apache.org/dyn/cl ...

  10. jquery dataTables例子

    https://datatables.net/examples/styling/bootstrap.html http://datatables.club/example/#styling http: ...