Web3.js是以太坊官方的Javascript API,能够帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互。实际上就是一个库的集合,主要包括下面几个库:css
web3-eth用来与以太坊区块链和智能合约交互html
web3-shh用来控制whisper协议与p2p通讯以及广播前端
web3-bzz用来与swarm协议交互node
web3-utils包含了一些Dapp开发有用的功能git
Web3与geth通讯使用的是 JSON-RPC ,这是一种轻量级的RPC(Remote Procedure Call)协议,整个通讯的模型能够抽象为下图。github
链接: web
http://www.noobyard.com/article/p-rpaccwev-bu.htmlnpm
http://www.noobyard.com/article/p-ssxujmmn-ba.htmljson
npm makes it easy for JavaScript developers to share and reuse code, and it makes it easy to update the code that you’re sharing.网络
简单来讲就是:npm 是一个包管理器,它让 JavaScript 开发者分享、复用代码更方便
在写程序时,咱们不免会使用到其余人写的框架,而这些重复的代码框架被称做package,或者module。一个包能够是一个文件夹里放着几个文件,同时有一个叫作 package.json
的文件。
开发者使用它来管理、安装、发布模块
使用 node.js 的包管理工具 npm 初始化项目,建立package.json
文件,其中保存了项目须要的相关依赖环境。npm init自动生成,也能够手写。
npm init
package.json 文件至少要有两部份内容:
其余内容:
description:描述信息,有助于搜索
main: 入口文件,通常都是 index.js
scripts:支持的脚本,默认是一个空的 test
keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
author:做者信息
license:默认是 MIT
bugs:当前项目的一些错误信息,若是有的话
注意:
若是 package.json 中没有 description 信息,npm 使用项目中的 README.md 的第一行做为描述信息。这个描述信息有助于别人搜索你的项目,所以建议好好写 description 信息。
咱们须要在 package.json
文件中指定项目依赖的包,这样别人在拿到这个项目时才可使用 npm install
下载。
npm install <package_name>
npm install web3
可使用ganach,也可使用testrpc。
链接的方式为
Main Ethereum Network //主网链接
https://mainnet.infura.io/ + key
Test Ethereum Network (Ropsten) // Ropsten测试网 链接其余的测试网络百度
https://ropsten.infura.io/ + key
以太坊测试网络/测试链(Rinkeby):
https://rinkeby.infura.io/<your-token>
以太坊测试网络/测试链(Kovan):
https://kovan.infura.io/<your-token>
以太坊测试网络/测试链 (Ropsten):
Remix IDE上面编写以及部署。
Index,css,js等前端的常规代码。
使用web3js中的web3对象,经过rpc与节点通讯。
Web3中有eth对象,web3.eth,具体来实现与区块俩之间的交互,
<script src="./node_modules/web3/dist/web3.min.js"></script>
web3.min.js:是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:7545"));
}
HttpProvider -- * 获取对象的地址。本地直接填上面的就好了。
A: 地址,合约地址
B: 获取ABI字符串。 复制好的ABI保存到JS。以JSON字符串形式保存。
经过web核心对象加在合约
tokenObject = web3.eth.contract(abi,default_account).at(contractAddr);
abi -- * 以上复制的ABI JSON字符串。
default_account -- 发布合约的帐户地址。不是必须项目。
方法调用成功返回智能合约对象,在就能够调用在智能合约中定义的方法。