09 以太坊技术介绍

embedded/2025/1/24 5:59:42/

以太坊技术架构

架构概述

以太坊属于公链,所有节点都具有相同的功能。

以太坊技术架构自上而下依次为应用层、合约层、通信层、共识层、网络层、数据层、存储层。

应用层

应用层主要对应Dapp应用模块,其中包含多种区块链应用场景典型案例。

合约层

以太坊的合约层中封装以太坊客户端所使用的智能合约部署和调用机制。

通信层

以太坊的通信层封装了以太坊上下游以及以太坊与外部的通信交互协议。

共识层

以太坊的共识层封装了网络节点的多种共识机制算法,主要为Pow(Proof of work)、Pos(Proofof stack)和Casper。

网络层

以太坊的网络层主要封装P2P的组网机制,数据验证以及传播机制。

数据层

数据层封装了底层数据区块的链式结构和Event事件模型,负责处理与以太坊相关的数据结构以及事件通知机制。

存储层

存储层封装了日志和LevelDB模型,负责数据的持久化功能以及系统日志的记录。

以太坊共识算法概述

POW

运行流程

  1. 矿工破解密码学难题,争夺记账权节点
  2. 广播发送到区块链网络等待其他节点验证
  3. 区块打包加入区块链

优点

  • 挖矿过程匿名化,无需许可,即所有人均可参与
  • 作恶成本较高

缺点

  • 吞吐量较低,延迟过高,需要等待PoW难题破解
  • 分叉较频繁,造成大量算力浪费

以太坊PoW的步骤

PoS

运行流程

优点

  1. 节省大量的算力和电力进行共识
  2. 吞吐量大,且延迟较低
  3. 作恶成本较高

缺点

  1. 分叉链的成本较低,导致系统容易出现分叉
  2. 去中心化程度较低,参与验证需要一定的成本

Casper

定义

Casper是一种基于保证金的经济激励共识协议(security-deposit based economic consensus Protocol)。

Casper是由POS衍生出来的一种共识机制,其与POS的区别为Casper的共识按块来达成而非POS按链来达成。

Casper不是单独一个项目,它是两个研究项目的融合:

Casper the Friendly Finality Gadget (FFG)

Casper the Friendly GHOST:Correct-by-Construction (CBC)

Casper的几个概念

下注共识
  • 验证人将部分保证金下注
  • 共识结果又通过验证人的下注情况形成
交易最终确认

当锁定保证金的验证人中绝大多数以非常高的概率下注某个块时,任何不包含这个块的分叉都不可能胜出

防审查

Casper将共识过程看作一个合作博弈,确保每一个节点只有在由所有节点组成的联盟中才能获得最大利益

工作流程

优点

  1. Casper对去中心化更为友好,减少权益集中度的影响
  2. Casper相当于POW降低了能源的消耗与浪费,可以在不消耗大量电力的情况下进行工作
  3. Casper具有经济安全性
  4. Casper非常友好地支持分片,可以有效提高扩展性

缺点

  1. Casper协议会降低货币的流动性,从而对金融市场造成一定的冲击
  2. 需要质押大量代币,从而降低了代币的流动性

以太坊智能合约

智能合约指令

定义

智能合约指令是定义一种特定形式的脚本指令交由以太坊EVM执行,智能合约指令需要定义数据结构,构造函数,逻辑函数以及通知事件。

执行

从智能合约指令到智能合约执行,分为以下四个步骤

  1. 编写智能合约
  2. 将智能合约编译成bytecode
  3. 部署智能合约
  4. 外部调用智能合约

智能合约ABI

简介

ABI全程为Application Binary Interface,表示应用程序二进制接口,是指两个程序模块之间的接口。

形式

以太坊智能合约的ABI包含描述该合约中函数以及事件的数组,数组中的元素统一使用JSON格式进行表示。

智能合约高级语言

开发一款专用于智能合约编写的高级语言,可以有效降低消耗成本。

主要分为两大类:声明式编程语言和指令式编程语言

目前的高级语言有:

Solidity语言

Solidity是一种面向对象的静态类型编程语言,语法神似JavaScript。学习成本低,简单易上手,同时具有普适性,目前也被广泛运用于多个区块链平台(不仅仅是以太坊)。solidity的结构如下:

智能合约编写

智能合约编写是使用contract关键字和标识符来声明,合约体主要包含数据结构、构造函数、业务逻辑函数以及通知事件。

部署与调用

智能合约部署是将智能合约部署到以太坊网络中获取合约地址作为访问以太坊网络中智能合约的一个标识。

智能合约的调用是通过RPC调用合约地址中的智能合约函数中的接口,完成对合约的调用与访问。

Truffle和DApp开发

Truffle简介

Truffle是一个基于solidity的世界级开发测试框架,致力于让以太坊上的智能合约与DApp开发变得简单。

Truffle特点

Truffle具有以下四个特点:

  • 高效开发工具
  • 基于node运行时的框架
  • 轻松实施自动化开发DevOps
  • 不需要手动编译和部署

Dapp架构

Dapp开发流程

Dapp的开发是从客户端连接区块链到最终用户通过客户端、网页操作Dapp的全流程开发。

Truffle开发Dapp流程

Dapp开发流程基本类似,下面以Truffle为例

钱包Mist

钱包Mist是以太坊官方的图形化区块链钱包。

作用

第一个图形交互界面的钱包

支持简易合约部署

将ERC20代币标准进行推广

支持根据ABI创建合约虚拟交互界面

功能

部署合约

创建账户

比特币

备份钱包

转账

钱包MetaMask

MetaMask是一款基于MIT开源协议去中心化的以太坊轻钱包,由全球分布式开发者进行开发与维护。

Geth

Geth是以太坊客户端命令行工具,用于与以太坊网络进行交互,主要对开发者比较友好,更利于开发者连接进行Dapp的开发。


http://www.ppmy.cn/embedded/156488.html

相关文章

2025年黑客技术之网络安全简介(入门篇)

目录 前言 一、什么是网络安全? 二、网络安全的重要性 1、保护数据安全和隐私 2、防止服务中断和数据丢失 3、防止经济损失和法律责任 4、维护公共安全和国家安全 5、提升技术发展和创新 三、网络安全等级保护 1、第一级(自主保护级&#xff…

【测试】UI自动化测试

长期更新,建议关注收藏点赞! 目录 概论WEB环境搭建Selenium APPAppium 概论 使用工具和代码执行用例。 什么样的项目需要自动化? 需要回归测试、自动化的功能模块需求变更不频繁、项目周期长(功能测试时长:UI自动化测…

【数据结构】二分查找

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

Flutter 改完安卓 applicationId 后App 闪退问题。

一、问题 当我们项目创建完,想 build.gradle 改 applicationId 的时候,再次执行的时候可能会出现 app 闪退问题, 控制台不显示任何错误提示 也不出现 Exit 停止运行的情况。(像下方这样, 而 app 只是在模拟器中一闪而…

计算机毕业设计Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系

今天刚好看到官方发布了一篇文章,用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别,突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”,刚好可以放一起聊一聊。 最近写的几篇内容写的太干&…

【Elasticsearch】inference ingest pipeline

Elasticsearch 的 Ingest Pipeline 功能允许你在数据索引之前对其进行预处理。通过使用 Ingest Pipeline,你可以执行各种数据转换和富化操作,包括使用机器学习模型进行推理(inference)。这在处理词嵌入、情感分析、图像识别等场景…

redis报错如何解决

错误复现 我启动我的redis,发现启动不成功。 查看错误日志 我们使用下面这个命令,来看看具体的错误原因。到底是为啥 journalctl -xe 我这个错误是因为,在我安装redis的时候,我的redis安装目录是,/usr/local/src/re…