Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互。实际上就是一个库的集合,主要包括下面几个库:
web3-eth用来与以太坊区块链和智能合约交互
web3-shh用来控制whisper协议与p2p通信以及广播
web3-bzz用来与swarm协议交互
web3-utils包含了一些Dapp开发有用的功能
Web3与geth通信使用的是 JSON-RPC ,这是一种轻量级的RPC(Remote Procedure Call)协议,整个通信的模型可以抽象为下图。
连接:
https://www.cnblogs.com/whkl-m/p/6617540.html
https://blog.csdn.net/u011240877/article/details/76582670
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
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/
以太坊测试网络/测试链(Kovan):
https://kovan.infura.io/
以太坊测试网络/测试链 (Ropsten):
Remix IDE上面编写以及部署。
Index,css,js等前端的常规代码。
使用web3js中的web3对象,通过rpc与节点通信。
Web3中有eth对象,web3.eth,具体来实现与区块俩之间的交互,
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 -- 发布合约的账户地址。不是必须项目。
contractAddr --* 合约地址。
方法调用成功返回智能合约对象,在就可以调用在智能合约中定义的方法。
实例:https://blog.csdn.net/qq_40452317/article/details/87989140