主页 > 苹果手机安装imtoken钱包 > 深度解析以太坊链上ETH智能合约DAPP系统开发细节及源码

深度解析以太坊链上ETH智能合约DAPP系统开发细节及源码

苹果手机安装imtoken钱包 2023-01-28 05:53:53

以太坊的顶层是 DApp。 通过Web3.js和智能合约层进行交换。 所有智能合约都在 EVM(以太坊虚拟机)上运行并使用 RPC 调用。 EVM和RPC下面是以太坊的四大核心内容,包括:区块链、共识算法、挖矿和网络层。 除了DApp,其他部分都在以太坊的客户端。 目前最流行的以太坊客户端是Geth(Go-Ethereum)

一、简介

智能合约

首先,智能合约不像人工智能AI那样超级智能。 智能合约的英文名称是Smart contract,只是Smart,还没有达到人工智能的智能。

非同质化代币

如上所述,智能合约就像一台出售代币的自动售货机。 如果出售的代币类型是唯一且不可分割的,这种代币称为Non-Fungible Token,也就是NFT(需要符合ERC-721标准)。 例如,令牌代表体育比赛的门票。 因为每张票都有不同的座位号,所以对应的代币是唯一的,而且因为座位只能卖给一个人,所以对应的代币是不能分割的。

一、以太坊区块链网络简介

以太坊区块链网络

以太坊公共区块链网络

描述区块链的最佳方式是作为一个公共数据库,由网络中的许多计算机更新和共享,任何人都可以访问。 ETH链上系统开发的唯一环节:MrsFu123,以太坊公链网络也不例外。 目前,以太坊公共区块链网络提供主网和三个测试网。 主网是智能合约正式上线的区块链网络。 这三个测试网是 Kovan、Rinkeby 和 Ropsten。 Ropsten 是与主网最相似的官方网络,使用工作量证明; Rinkeby 也被官方提供,使用股权证明。

节点、Geth、Infura

我们的程序需要访问以太坊节点才能连接到以太坊公共区块链网络。 有几种方法可以做到这一点,你可以使用 Geth 来运行你自己的以太坊节点。 但这需要从区块链上下载大量数据并保持同步,既麻烦又昂贵。 更方便的方法是使用 Infura 访问以太坊节点。

什么是 Infura? Infura 是一种 IaaS(基础设施即服务)产品,旨在降低访问以太坊数据的障碍。 通俗地说,Infura 是一个平台,可以让你的 DApp 快速接入以太坊,而不需要在本地运行以太坊节点。

Infura 是一项提供免费以太坊节点的服务。 Infura 的使用说明如下。

一、智能合约应用模块介绍

我们的智能合约应用程序是使用 Solidity Template 项目模板开发框架开发的。 下面简单介绍一下Solidity Template的组成。

智能合约应用组件

Solidity Template - 项目模板

Solidity Template 是 Hardhat 项目的模板。 除了集成Hardhat外,还集成了Ethereum linter、代码格式化、代码覆盖测试等工具。 Solidity Template可以直接克隆或者下载回来使用,非常方便。

Hardhat——项目的主要框架

Hardhat 是一个用于编译、部署、测试和调试以太坊应用程序的开发环境。 可以使用 Hardhat 轻松开发以太坊的智能合约和 dApp。

Waffle - 智能合约应用测试库

Waffle 是一个用于编写和测试以太坊智能合约的库。 它比 Truffle 更容易使用、更简单、更快。 它在内部使用 ethers-js、Mocha 和 Chai。 我们将用它来编写智能合约应用程序的测试代码。

Ethers.js - 智能合约 API 库

Ethers.js 是一个用于编译、部署、测试和调试以太坊应用程序的开发环境。 可以使用 Hardhat 轻松开发以太坊的智能合约和 dApp。 这是我们用于开发智能合约应用程序的 API 最多的库。 这里有中文文档和官方英文文档。

Mocha 和 Chai - 测试框架和断言库

Mocha 是一个功能丰富的 javascript 测试框架,运行在 node.js 和浏览器中,让异步测试变得简单有趣。 Chai 是用于 Node.js 和浏览器的行为驱动测试和测试驱动测试的诊断库Go以太坊开发详解Go以太坊开发详解,可与任何 JavaScript 测试框架集成。