深入分析以太链ETH智能合约DAPP系统开发详情及源码

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

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

  一、简介

  智能合约

  首先,智能合约并不是像人工智能AI那样的超级智能,智能合约的英文名叫Smart contract,,仅仅是Smart而已,还没有到人工智能的intelligence。

  NFT

  上面我们知道了,智能合约类似一种自动售货机,出售的是通证(token)。如果出售的token的类型是独一无二的,并且是不可分割的,这种token就叫做Non-Fungible Token,即是NFT(需要符合ERC-721标准)。例如一个token代表一张体育比赛的门票,因为每一张门票座位编号不一样,所以对应的token独一无二,又因为座位只能出售给一个人,因为对应的token也不能分割。

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

  以太坊区块链网络

  以太坊公共区块链网络

  对区块链最好的描述是将其描述为一个公共数据库,它由网络中的许多计算机更新和共享,并且任何人都可以接入。ETH链上系统开发对接唯:MrsFu123,以太坊公共区块链网络也不例外。目前,以太坊公共区块链网络提供了主网和三个测试网,主网就是智能合约正式上线的区块链网络,三个测试网分别为Kovan、Rinkeby和Ropsten。Ropsten是官方提供的和主网最相似的网络,使用工作量证明;Rinkeby也是官方提供的,使用权益证明。

  节点、Geth、Infura

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

  Infura是什么?Infura是一种IaaS(Infrastructure as a Service)产品,目的是为了降低访问以太坊数据的门槛。通俗一点讲,Infura就是一个可以让你的DApp快速接入以太坊的平台,不需要本地运行以太坊节点。

  Infura是一个免费提供以太坊节点的服务。接下来有Infura的使用说明。

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

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

  智能合约应用组成模块

  Solidity Template——项目模板

  Solidity Template是一个Hardhat项目的模板,除了集成Hardhat,还集成了以太坊linter、代码格式化、代码覆盖率测试等工具。Solidity Template直接clone或者下载回来就能使用,非常方便。

  Hardhat——项目主框架

  Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。使用Hardhat可以方便地开发以太坊的智能合约和dApps。

  Waffle——智能合约应用测试库

  Waffle是一个编写和测试以太坊智能合约的库,比Truffle更加好用,简单和快速,它内部使用了ethers-js、Mocha和Chai。我们将使用它来编写智能合约应用的测试代码。

  Ethers.js——智能合约API库

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

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

  Mocha是一个功能丰富的javascript测试框架,运行在node.js和浏览器中,使异步测试变得简单有趣。Chai是一个针对Node.js和浏览器的行为驱动测试和测试驱动测试的诊断库,可与任何JavaScript测试框架集成。

相关文章
|
8月前
|
存储 NoSQL C语言
GDB学习整理
GDB(GNU Debugger)是一款功能强大的调试工具,用于调试C、C++等程序。它允许开发者启动程序、设置断点、单步执行、查看和修改变量值、检查调用栈(stack frame)等。用户可通过命令行操作GDB,常用命令包括:`run` 启动程序、`break` 设置断点、`next` 单步执行、`continue` 继续执行、`print` 打印变量值、`quit` 退出GDB。GDB还支持初始化文件(如`.gdbinit`),可在启动时自动加载配置或脚本。通过断点条件、监视点、回溯(backtrace)等功能,开发者能高效排查程序错误。
418 0
|
机器学习/深度学习 编解码 人工智能
Vision Mamba:将Mamba应用于计算机视觉任务的新模型
Mamba是LLM的一种新架构,与Transformers等传统模型相比,它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域,让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Models,”
1407 7
|
8月前
|
供应链 前端开发 BI
如何开发一套进销存系统?(附架构图+流程图+代码参考)
本文详解了企业进销存系统的核心功能、业务流程及开发关键技术,帮助企业提升库存管理、销售追踪与采购效率,降低运营成本,并提供实用开发技巧与优化方案。
|
机器学习/深度学习 自然语言处理 算法
深度学习在计算机视觉和自然语言处理中的应用
深度学习在计算机视觉和自然语言处理领域的应用为我们带来了更多可能性,不断推动着人工智能技术的发展。无论是从理论还是实际应用来看,深度学习都在为计算机视觉和自然语言处理领域的发展注入了无限的活力。随着技术的不断创新,我们有理由相信,深度学习将在未来继续刷新我们的认知和想象。
深度学习在计算机视觉和自然语言处理中的应用
|
人工智能 自然语言处理 算法
LLM主流开源代表模型(二)
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
|
NoSQL Redis 数据库
计数器 分布式锁 redis实现
【10月更文挑战第5天】
326 1
|
设计模式 开发者 Python
Python中循环依赖问题及其解决方案
循环依赖是 Python 开发中需要特别注意的问题。通过重新设计模块结构、延迟导入、依赖注入、利用 Python 的动态特性以及代码重构等方法,可以有效地解决循环依赖问题。这些策略不仅有助于提高代码的可维护性和可读性,还能避免潜在的运行时错误。在实际开发中,开发者应该根据具体情况选择合适的解决方案。
|
数据安全/隐私保护 Windows
ImageGlass--售价9.99$的,开源免费Windows看图软件
提到PC端看图的软件,不晓得大家都在用什么,2345看图王纯净版,WPS看图,或者是Win自带的图片浏览器,我身边大部分人都用自带的,我是习惯了2345的纯净版,主要是用习惯了它的PDF阅读器
1224 0
|
Windows
成功解决http error 503.the service is unavailable错误
成功解决http error 503.the service is unavailable错误
6612 0
|
设计模式 JavaScript 前端开发
设计模式 - 混入模式(Mixin Pattern)
在JavaScript中,Mixin Pattern(混入模式)是一种强大的设计模式,它允许开发者在类之间共享方法和属性,实现代码的复用和模块化。Mixin模式可以让我们轻松地扩展一个类,同时保持代码的简洁和可维护性。本文将从浅入深,介绍如何使用JavaScript实现Mixin Pattern。
838 0