当前位置: 首页 > news >正文

以太坊入门

1. 以太坊简介

        Vitalik Buterin 在 2013 年 11 月提出了以太坊的概念,其关键思想是:开发一种图灵完备(Turing-Complete) 的语言,以允许开发用于区块链和去中心化应用的任意程序(智能合约)。该概念与比特比相反,因为后者的脚本语言本质上是受限制的,并且仅允许进行必要的操作。

        下表显示了以太坊从第一个版本到计划的最终版本在内的所有版本。

版本发布日期
Olympic(奥林匹克)2015 年 5 月
Frontier(前沿)2015 年 7月
Homestead(家园)2016 年 3月

Metropolis (大都会)

Byzantine (拜占庭,大都会的第一阶段)

2017 年 10 月
Constantinople(君士坦丁堡,大都会的第二阶段)2019 年 3 月
Serenty(宁静,以太坊最终版)即将发布

        以太坊的第一个版本为 Olympic (奥林匹克),于 2015 年 5 月发布。

        大约两个月后,即 2015 年 7 月,以太坊的一个名为 Frontier (前沿)的版本发布。

        2016 年 3 月,发布了具有改进功能的名为 Homestead (家园) 的版本。

        2017 年 10 月,Byzantium (拜占庭)版本发布,这是 Metropolis (大都会) 版本的第一阶段。此版本于 2017 年 10 月在区块高度为 4370000 的区块上实施了 Constantinople (君士坦丁堡)硬分叉,这也是 Metropolis 版本的第二阶段。

        2019 年 3 月,以太坊网络在区块高度为 708000 的区块上实施了 Constantinople(君士坦丁堡)硬分叉,这也是 Metropolis 版本的第二阶段。

        以太坊的最终计划发行版本称为 Serenity (宁静),它将计划引入基于 PoS 的最终版本而不是 PoW。

        在以太坊黄皮书中已经描述了以太坊的正式规范,该规范可用于开发以太坊实现。现在我们就来认识一下这个黄皮书。

1.1 黄皮书

        以太坊黄皮书由 Ethereum & Parity 公司创始人 Gavin Wood 博士撰写,并作为以太坊协议的正式定义。任何人都可以通过遵循该黄皮书定义的协议规范来实现以太坊客户端。其网址如下:

https://ethereum.github.io/yellowpaper/paper.pdf

        尽管普通人阅读该黄皮书可能有些挑战,尤其是对于没有代数或数学背景并且不熟悉数学符号的读者来说,想要全面理解可能需要多做功课,但它包含了以太坊的完整、正式规范,该规范可用于实现完全兼容的以太坊客户端。 

        下面将提供该黄皮书中所有符号及其含义的列表,以帮助你更轻松地阅读以太坊黄皮书。在理解了这些符号的含义之后,就能轻松理解该黄皮书所描述的概念和规范。

1.2 有用的数学符号
1.3 以太坊区块链

        就像其他任何区块链一样,以太坊区块链可以可视化为基于交易的状态机。Gavin Wood 博士在以太坊黄皮书中提到了这个定义。其核心思想是:在以太坊区块链中,通过逐步执行交易,将初始状态转换为最终状态,然后将最终转换后的状态作为绝对无可争议的版本。

        在下图中,显示了以太坊状态转换函数,其中交易的执行已导致状态转换。

原文译文原文译文
INITAL STATE初始状态FINAL STATE最终状态
TRANSACTION交易

        在上图中,启动了两个以太坊从地址 4718bf7a 到地址 741f7a2 的转移。初始状态表示交易执行之前的状态,而最终状态则表示交易执行之后的状态。

        状态将作为世界状态(World State) 存储在以太坊网络上,这也称为以太坊区块链的全球状态(Global State)。

2. 从用户角度观察以太坊

        下面将从用户的角度了解以太坊的工作方式。为此,我们将介绍最常见的转帐示例。

        在本示例中,将从一个用户(刘玄德)转帐到另一个用户(张翼德)。我们将使用两个以太坊客户端,一个用于汇款,另一个用于接收汇款。此过程涉及以下步骤:

        (1)转帐双方都可以发起操作。收款人可以通过将请求发送给付款人来要求转帐,付款人也可以直接决定将钱款发送给收款人。

        收款人发起请求时,可以将收款人的以太坊地址发送给付款人。例如,有两个用户(刘玄德和张翼德),如果张翼德粮草不足,要求刘玄德付款,则可以使用二维码将请求发送给刘玄德。刘玄德收到此请求后,将扫描二维码或手动输入张翼德的以太坊地址,然后将以太币发送到张翼德的以太坊地址。该请求被编码为如下图所示的二维码

原文译文
Tap to copy this address.Share it with the sender via email or text.点击以复制此地址。可通过电子邮件或短信与发送者(付款人)共享

 可以通过电子邮件、文本或任何其他通信方式共享。Jaxx 钱包的下载地址如下:https://jaxx.io

(2)一旦刘玄德收到此请求,他将扫描二维码或在以太坊钱包软件中复制以太坊地址并启动交易,如下图所示

其中,iOS 上的 Jaxx Ethereum 钱包软件用于向张翼德汇款。该图还显示,刘玄德已输入了用于发送以太币的金额和目标地址。在发送以太币之前,最后一步是确认(Confirm)交易。

(3)一旦在钱包软件中构造了汇款请求(交易),它将被广播到以太坊网络。交易由发送方(刘玄德)进行数字签名,以证明他是该以太币的所有者。

(4)该交易由以太坊网络上称为矿工的节点进行拾取,以进行验证并将其包含在区块中。在此阶段,交易仍未确认。

(5)一旦被验证并包含在区块中,PoW 过程就会开始。

(6)一旦矿工找到了 PoW 问题的答案(通过使用新的随机数重复对区块进行哈希处理),则该区块将立即被广播到其余节点,然后其他节点将验证该区块和 PoW。

(7)如果所有验证都通过,则此区块将添加到区块链中,并相应地向矿工支付奖励。

(8)张翼德得到以太币,并在他的钱包软件中显示出来,如下图所示:

在区块链上,此交易由以下交易哈希标识:

0xc63dce674e1640abd63ee63027c3352aed8cdb92b6a02ae25225666e171009e

可以在 https://etherscan.io/ 的区块浏览器中查看有关该交易的详细信息,如下图所示。

        在上述示例中,我们完成了最常见的以太坊网络操作,即将以太币从一个用户转帐到另一个用户。本示例只是对交易过程的大致介绍,目的是让你形成对以太币交易的粗略概念。

3. 以太坊网络

        和比特币网络一样,以太坊网络也是一个点对点网络,节点参与其中以维护区块链并促进共识机制。根据需求和使用情况,以太网络可以分为 3 种类型:主网、测试网络和私有网络。

3.1 主网

        主网(Mainnet) 是以太坊当前的实时网络。主网的当前版本为 Byzantium(Metropolis),其链 ID 为1。链 ID 用于标识网络,可以使用以太坊浏览器探索以太坊区块链。

3.2 测试网络

        以太坊的测试网络(Testnet) 也称为 Ropsten,是以太坊区块链广泛使用的测试网络。该测试区块链用于在部署到生产实时区块链之前测试智能合约和 DApp。此外,作为测试网络,它也可以进行实验和研究。

        主测试网络称为 Ropsten,其中包含针对特定版本创建的其他较小和专用测试网络的所有功能。其他的测试网络包括测试拜占庭版本而开发的 Kovan 和 Rinkeby。在这些较小的测试网络上实现的更改也已在 Ropsten 上实现。现在,Ropsten 测试网络包含 Kovan 和 Rinkeby 的所有属性。

3.3 私有网络

        私有网,顾名思义就是可以通过生成新的创世区块而创建的私有网络(Private Net)。在私有区块链分布式帐本网络中通常就是这种情况,在该类网络中,一组私有实体启动其区块链并将其用作许可的区块链。

        下表显示了以太坊网络及其网络 ID 的列表,这些网络 ID 被以太坊客户端用来标识网络。

网络名称网络ID/链
以太坊主网
Morden
Ropsten
Rinkeby
Kovan42
经典以太坊主网61

4. 以太坊生态系统的组成部分

        以太坊区块链堆栈包含多个组成部分。

        首先,其核心是在对等以太坊网络上运行的以太坊区块链。

        其次,有一个运行在节点上的以太坊客户端(通常是 Geth)。客户端连接到点对点以太坊网络,从该网络下载区块链并存储在本地。它提供了各种功能,例如挖矿和帐户管理。区块链的本地副本定期与网络同步。

        还有一个组件是 web3.js 库,该库允许通过远程过程调用(Remote Procedure Call,RPC)接口与 geth 客户端进行交互。

        下图显示了以太坊显示的架构。

原文译文
WEB3 OR CUSTOM INTERFACEweb3 或自定义接口
RPC远程过程调用(RPC)
ETHEREUM CLIENT以太坊客户端
LOCAL BLOCK CHAIN本地区块链
Synced with main network与主网同步

以下是以太坊区块链中所有高级元素的正式列表:

  • 密钥和地址
  • 帐户
  • 交易和消息
  • 以太坊加密货币/代币
  • 以太坊虚拟机(EVM)
  • 智能合约 

 5. 交易和消息

        以太坊中的交易是使用私钥进行数字签名的数据包,其中包含的指令在完成后会导致消息调用或合约创建.

        交易可以根据它们产生的输出又分为以下两种类型:

  • 消息调用交易。此交易仅产生一个消息调用,该消息调用用于将消息从一个合约帐户传递到另一个合约帐户.
  • 合约创建交易。合约创建交易,顾名思义就是交易导致创建新的合约帐户.这意味着,成功执行此交易后,它将创建一个具有关联代码的帐户。

下图对此结构进行了可视化处理,

5.3 消息

在下图中,显示了两种类型的交易(合约创建和消息调用)之间的区别。

6. 以太坊区块链中的状态存储

        从根本上讲,以太坊区块链是一种由交易和共识驱动的状态机。状态需要永久存储在区块链中。为此,世界状态、交易和交易收据都将以区块的形式存储在区块链上。

下图显示了世界状态以及它与帐户字典树、帐户和区块标头之间的关系。

下图显示了交易收据的生成过程。

7. 以太币

        作为对矿工的激励,以太坊会发放它自己的货币,也就是以太币.

        在 DAO 遭到入侵后,提出了一个硬分叉来解决该问题。现在出现了两个以太坊区块链:一是经典以太坊(Ethereum Classic) ,其货币以 ETC 表示; 二是硬分叉版本的代币 ETH,它将继续增长并且正在积极地进行开发。

8. 以太坊虚拟机

        以太坊虚拟机是一个简单的基于堆栈的执行机,它运行字节码指令以将系统状态从一种状态转换为另一种状态。虚拟机的字长设置为 256 位。堆栈大小限制为 1024 个元素,并且基于后进先出(Last In,First Out,LIFO)队列。

下图显示了 EVM 的设计。

 执行环境可以可视化为包含 10 个元素的元组,如下图所示。

8.3 迭代器函数

机器状态可以看作是一个元组,如下图所示

相关文章:

以太坊入门

1. 以太坊简介 Vitalik Buterin 在 2013 年 11 月提出了以太坊的概念,其关键思想是:开发一种图灵完备(Turing-Complete) 的语言,以允许开发用于区块链和去中心化应用的任意程序(智能合约)。该概念与比特比相…...

秃姐学AI系列之:实战Kaggle比赛:狗的品种识别(ImageNet Dogs)

目录 前置准备 整理数据集 图片增广 读取数据集 微调预训练模型 训练函数 训练和验证模型 Kaggle提交结果 前置准备 常规导包 import os import torch import torchvision from torch import nn from d2l import torch as d2l 使用小规模数据样本 d2l.DATA_HUB[dog…...

图神经网络介绍3

1. 图同构网络:Weisfeiler-Lehman 测试与图神经网络的表达力 本节介绍一个关于图神经网络表达力的经典工作,以及随之产生的另一个重要的模型——图同构网络。图同构问题指的是验证两个图在拓扑结构上是否相同。Weisfeiler-Lehman 测试是一种有效的检验两…...

浅谈 React Fiber

想象一下,你正在搭建一个乐高积木城堡。 传统的搭建方式:一次性把所有积木拼好,如果中途发现某个地方拼错了,就需要拆掉重新拼。这个过程就像 React 15 之前的版本,一旦开始渲染,就很难中断,效…...

Winform实现石头剪刀布小游戏

1、电脑玩家类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace RockScissorsClothApp {public class Computer{public Card Play(){Random random new Random();int num random.Next(0, 3…...

计算机的错误计算(九十)

摘要 计算机的错误计算(八十九)探讨了反双曲余切函数 acoth(x)在 附近的计算精度问题。本节讨论绝对值为大数的反双曲余切函数值的计算精度问题。 Acoth(x) 函数的定义为: 其中 x 的绝对值大于 1 . 例1. 计算 acoth(1.000000000002e15) .…...

对游戏语音软件Oopz遭遇DDoS攻击后的一些建议

由于武汉天气太热,因此周末两天就没怎么出门。一直在家打《黑神话:悟空》,结果卡在广智这里一直打不过去,本来想找好友一起讨论下该怎么过,但又没有好的游戏语音软件。于是在网上搜索了一些信息,并偶然间发…...

解锁Android开发利器:MVVM架构_android的mvvm

// 从网络或其他数据源获取天气数据return Weather(city, "25C") }} 2.定义View:class WeatherActivity : AppCompatActivity() { private lateinit var viewModel: WeatherViewModel override fun onCreate(savedInstanceState: Bundle?) {super.onCre…...

llama.cpp demo

git clone https://github.com/ggerganov/llama.cpp cd llama.cpp 修改Makefile使能mfma参数 MK_CFLAGS -mfma -mf16c -mavx MK_CXXFLAGS -mfma -mf16c -mavx 安装python3依赖 cat ./requirements/requirements-convert_legacy_llama.txt numpy~1.26.4 sentencepie…...

OpenCV结构分析与形状描述符(19)查找二维点集的最小面积外接旋转矩形函数minAreaRect()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 找到一个包围输入的二维点集的最小面积旋转矩形。 该函数计算并返回指定点集的最小面积边界矩形(可能是旋转的)。开发者…...

[SWPU2019]Web1 超详细教程

老规矩先看源码,没找到啥提示,后面就是登录口对抗 弱口令试了几个不行,就注册了个账户登录进去 可以发布广告,能造成xss,但是没啥用啊感觉 查看广告信息的时候,注意到url当中存在id参数,可能存…...

【区块链通用服务平台及组件】基于向量数据库与 LLM 的智能合约 Copilot

智能合约是自动执行、无需信任的代码,可以在区块链上运行,确保了数据和程序的透明性和不可篡改性。然而, 智能合约的编写、调试和优化仍然是一个具有挑战性的过程,因为它需要高度的技术专长,且发布后的智能合约代码通常…...

mfc140u.dll丢失有啥方法能够进行修复?分享几种mfc140u.dll丢失的解决办法

你是否曾遇到过这样的情况:当你满怀期待地打开一个应用程序时,却被一个错误提示拦住了去路,提示信息中指出 mfc140u.dll 文件丢失。这个问题可能会让你感到困惑和无助,但是不要担心,本文将为你详细解读 mfc140u.dll 丢…...

【PyQt6 应用程序】在用户登录界面实现密码密文保存复用

在开发现代应用程序中,为用户提供既安全又便捷的登录体验是至关重要的。特别是在那些需要用户认证的应用中,实现一个功能丰富且用户友好的登录界面不仅能增强用户满意度,还能提升整体的安全性。基于PyQt6框架和QtDesigner,本文将展示如何在已有的用户登录页面基础上,进一步…...

赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践

赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践 AI 语音交互大模型其实有两种主流的做法: All in LLM多个模块组合, ASR+LLM+TTS实际应用中,这两种方案并不是要对立存在的,像永劫无间这种游戏的场景,用户要的是低延迟,无障碍交流。并且能够触发某些动作技…...

游戏论坛网站|基于Springboot+vue的游戏论坛网站系统游戏分享网站(源码+数据库+文档)

游戏论坛|游戏论坛系统|游戏分享网站 目录 基于Springbootvue的游戏论坛网站系统游戏分享网站 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…...

【go】pprof 性能分析

前言 go pprof是 Go 语言提供的性能分析工具。它可以帮助开发者分析 Go 程序的性能问题,包括 CPU 使用情况、内存分配情况、阻塞情况等。 主要功能 CPU 性能分析 go pprof可以对程序的 CPU 使用情况进行分析。它通过在一定时间内对程序的执行进行采样&#xff0…...

Python | Leetcode Python题解之第397题整数替换

题目: 题解: class Solution:def integerReplacement(self, n: int) -> int:ans 0while n ! 1:if n % 2 0:ans 1n // 2elif n % 4 1:ans 2n // 2else:if n 3:ans 2n 1else:ans 2n n // 2 1return ans...

JDBC使用

7.2 创建JDBC应用 7.2.1 创建JDBC应用程序的步骤 使用JDBC操作数据库中的数据包括6个基本操作步骤: (1)载入JDBC驱动程序: 首先要在应用程序中加载驱动程序driver,使用Class.forName()方法加载特定的驱动程序&#xf…...

633. 平方数之和-LeetCode(C++)

633. 平方数之和 2024.9.11 题目 给定一个非负整数 c &#xff0c;你要判断是否存在两个整数 a 和 b&#xff0c;使得 a2 b2 c 。 0 < c < 2的31次方 - 1 示例 示例 1&#xff1a; 输入&#xff1a;c 5 输出&#xff1a;true 解释&#xff1a;1 * 1 2 * 2 5示…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...