当前位置: 首页 > news >正文

Web3 详解

1. 使用 Web3 库

        Web3 是一个 JavaScript 库,可用于通过 RPC 通信与以太坊节点通信。 Web3 的工作方式是,公开已通过 RPC 启用的方法,这允许开发利用 Web3 库的用户界面,以便与部署在区块链上的合约进行交互。

        一旦 Geth JavaScript 控制台运行,就可以查询 Web3,如下图所示:

 

1.1 合约部署

        可以使用 Geth 部署简单的合约,并通过 Geth 提供的命令行界面 (控制台或附加) 与 Web3 进行交互。

        其次,将代码粘贴到 Remix IDE 后,它将如下图所示:

下图显示了 Web3 部署脚本:

显示了将 Web3 部署脚本粘贴到 Geth 控制台进行部署时的输出。还可以通过 Geth 日志进行验证,你将看到类似于以下内容的消息:

成功部署合约后,可以查询与此合约相关的各种属性。如下图所示,这包括合约地址和 ABI 定义等。

  

1.2 POST 请求

        可以通过 HTTP 上的 JSONRPC 与 Geth 进行交互。为此,可以使用 curl 工具。

1.3 HTML 和 JavaScript 前端

        网页可以提供更友好与合约进行交互的方式,因此可以考虑使用 HTML/JS/CSS 的网页中的 Web3.js 库与合约进行交互。

        可以使用任何 HTTP Web 甩务器来提供 HTML 内容,而 Web3.js 则可以通过本地 RPC 连接到正在运行的以太坊客户端 (Geth), 并为区块链上的合约提供接口。如下图所示:

2. 安装和使用 Web3.js

        只需发出以下命令,即可通过 npm 安装 Web3:

[admin@daolian ~]$npm install web3

现在,可以使用任何浏览器来通过 TCP 端口 7777 查看服务的网页,如下图所示.

 应该注意的是,此处显示的输出在浏览器的控制台窗口中.

3. 开发框架

        以太坊现在有各种开发框架。从上面讨论的示例中可以看出,通过手动方式部署合约可能会非常耗时,如果能够使用 Truffle 或类似框架(如 Embark),则可以使该过程简单、更快捷。我们选择 Truffle 是因为它拥有更活跃的开发者社区,并且是目前使用最广泛的以太坊开发框架。请注意,现在还没有 “最佳” 框架,因为所有框架都旨在提供简化开发、测试和部署的方法。

4. Truffle 应用示例

        前文简介绍过 Truffle, 本节将讨论 Truffle 的示例项目,该项目将演示如何使用 Truffle 来开发完整的去中心化应用程序。 

        我们将使用 Ganache 作为本地区块链来提供 Web3 接口.因此,你需要确保 Ganache 在后台运行并进行挖矿.在以下示例中,它有 5 个帐户,并在端口 7545 上运行.可以在 Ganache 的 SERVER(服务器) 选项中修改这些选项,如下图所示:

为了验证这一点, 可以在 Ganache 中显示交易的帐户列表,如下图所示: 

 

 还要注意的是,如下图所示,以太币已从帐户中被消耗掉.随着交易的运行,可以在 Ganache 中看到 BALANCE (余额) 更新.

这将显示类似于下图所示的输出.

这 打开 Web 浏览器并转到 http://localhost:8080,这将显示下图所示的输出.

这些交易将显示在 Ganache 上,如下图所示

 

6. 去中心化存储

        为了充分利用去中心化机制,除去中心化状态/计算(区块链)之外,还可以对存储和通信层也去中心化。

         传统上,Web 内容是通过集中式服务器提供服务,但也可以使用分布式文件系统来进行去中心化。

http://www.lryc.cn/news/433496.html

相关文章:

  • Spring 中依赖注入注解的区别详解
  • PTA求一批整数中出现最多的个位数字
  • 探索国产编程工具:如何实现工作效率翻倍
  • 秒懂:进程相关的操作
  • PDF 软件如何帮助您编辑、转换和保护文件。
  • 蓝桥杯嵌入式国三备赛经验分享
  • AI编程工具合集
  • [网络编程]通过java用TCP实现网络编程
  • Python(TensorFlow)和Java及C++受激发射损耗导图
  • IEEE投稿模板翻译
  • log4j 1.x 日志输出线程以唯一ID的形式配置
  • 宏观学习笔记:GDP分析(二)
  • 两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容
  • C高级编程 第十六天(树 二叉树)
  • OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用
  • 904.水果成篮
  • 【网络安全】漏洞挖掘之 2FA 恢复代码安全措施不当
  • 指令微调与参数微调的代码实践与分析
  • Android14音频进阶之高通Elite架构指定通道播放(八十四)
  • 常见的正则化方法以及L1,L2正则化的简单描述
  • 深入理解 Milvus:新一代向量数据库的基础技术与实战指南
  • Maven教程——从入门到入坑
  • 研究生深度学习入门的十天学习计划------第九天
  • perl的学习记录——仿真regression
  • 【Go】go连接clickhouse使用TCP协议
  • Emlog-Pro访问网站时需要密码验证插件
  • Apache ShardingSphere数据分片弹性伸缩加解密中间件
  • Django+Vue家居全屋定制系统的设计与实现
  • 如何把自动获取的ip地址固定
  • Java应用的数据库死锁问题分析与解决