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 内容是通过集中式服务器提供服务,但也可以使用分布式文件系统来进行去中心化。