当前位置:   article > 正文

区块链-web3与智能合约交互_智能合约和web3的关系是什么

智能合约和web3的关系是什么

web3js

            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)协议,整个通信的模型可以抽象为下图。

package.json的学习

连接:   

https://www.cnblogs.com/whkl-m/p/6617540.html

https://blog.csdn.net/u011240877/article/details/76582670

npm

npm是什么,官方文档介绍的是:

           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 文件至少要有两部分内容:

  1. “name”
    • 全部小写,没有空格,可以使用下划线或者横线
  2. “version”
    • x.x.x 的格式
    • 符合“语义化版本规则”

其他内容:

    description:描述信息,有助于搜索

    main: 入口文件,一般都是 index.js

    scripts:支持的脚本,默认是一个空的 test

    keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目

    author:作者信息

    license:默认是 MIT

            bugs:当前项目的一些错误信息,如果有的话

注意:
如果 package.json 中没有 description 信息,npm 使用项目中的 README.md 的第一行作为描述信息。这个描述信息有助于别人搜索你的项目,因此建议好好写 description 信息。

             我们需要在 package.json 文件中指定项目依赖的包,这样别人在拿到这个项目时才可以使用 npm install 下载。

一个 package.json 文件可以有以下几点作用:

  1. 作为一个描述文件,描述了你的项目依赖哪些包
  2. 允许我们使用 “语义化版本规则”(后面介绍)指明你项目依赖包的版本
  3. 让你的构建更好地与其他开发者分享,便于重复使用

 

本地安装package

npm 使用下面的命令下载一个包:

npm install <package_name>

 

运行下面命令安装web.js

npm install web3

  1. 合约与搭链
  1. 测试链

可以使用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代码

           使用web3js中的web3对象,通过rpc与节点通信。

           Web3中有eth对象,web3.eth,具体来实现与区块俩之间的交互,

首先引入核心js

<script src="./node_modules/web3/dist/web3.min.js"></script>

web3.min.js:是web3核心代码。

获取核心的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 -- * 获取对象的地址。本地直接填上面的就行了。

通过web3获取发布到去区块链的合约

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号