深入分析以太链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测试框架集成。

相关文章
|
5月前
|
Ubuntu 数据安全/隐私保护 Docker
|
5月前
|
供应链 前端开发 BI
如何开发一套进销存系统?(附架构图+流程图+代码参考)
本文详解了企业进销存系统的核心功能、业务流程及开发关键技术,帮助企业提升库存管理、销售追踪与采购效率,降低运营成本,并提供实用开发技巧与优化方案。
|
机器学习/深度学习 编解码 人工智能
Vision Mamba:将Mamba应用于计算机视觉任务的新模型
Mamba是LLM的一种新架构,与Transformers等传统模型相比,它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域,让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Models,”
1267 7
|
人工智能 自然语言处理 算法
LLM主流开源代表模型(二)
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
|
机器学习/深度学习 自然语言处理 算法
深度学习在计算机视觉和自然语言处理中的应用
深度学习在计算机视觉和自然语言处理领域的应用为我们带来了更多可能性,不断推动着人工智能技术的发展。无论是从理论还是实际应用来看,深度学习都在为计算机视觉和自然语言处理领域的发展注入了无限的活力。随着技术的不断创新,我们有理由相信,深度学习将在未来继续刷新我们的认知和想象。
577 0
深度学习在计算机视觉和自然语言处理中的应用
|
NoSQL Redis 数据库
计数器 分布式锁 redis实现
【10月更文挑战第5天】
245 1
|
12月前
|
人工智能 自然语言处理 算法
Qwen-Coder:通过Qwen 2.5模型实现智能代码生成的技术实践
Qwen-Coder:通过Qwen 2.5模型实现智能代码生成的技术实践
|
缓存 数据安全/隐私保护 虚拟化
windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。
4851 2
|
机器学习/深度学习 TensorFlow 算法框架/工具
交叉验证(Cross-Validation)
交叉验证(Cross-Validation)是一种常用的评估机器学习模型性能的技术。它通过将数据集分为训练集和验证集,并多次重复这个过程,以获得对模型性能的更准确估计。
543 2
|
存储 弹性计算 移动开发
2023阿里云无影云电脑使用教程分享(详细)
2023阿里云无影云电脑使用教程分享(详细)阿里云无影云电脑即无影云电脑,云电脑如何使用?云电脑购买后没有用户名和密码,先创建用户设置密码,才可以登录连接到云电脑。云电脑想要访问公网还需要开通互联网访问功能。阿里云百科来详细说下阿里云无影云电脑从购买、创建用户名密码和访问互联网全过程
1962 0

热门文章

最新文章