主页 > imtoken钱包激活 > 以太坊学习笔记(二)——以太坊工作原理

以太坊学习笔记(二)——以太坊工作原理

imtoken钱包激活 2023-05-07 06:42:13

以太坊要将其最初对人的信任转变为对互联网世界中数学原理、技术和机器的信任以太坊数据同步与存储改进,显然并不容易,但它是通过一套清晰、严谨、复杂的技术体系来实现的。

一、以太坊基本术语

堵塞

它由区块头和区块体组成。 区块头包括区块描述信息、前一个区块的哈希值、时间戳等,区块体是本时间段的交易列表数据。

区块链(区块链)

通过块与块之间的块头保存上一个块的哈希值,使全网的块数据构成一个不易被篡改的“链式”数据库。

帐户(帐户)

以太坊网络的基本工作单元包括用户账户(EOA)和合约账户(COA)。 用户账户由私钥控制; 合约账户由合约代码控制,只能由用户账户触发。

交易

区块链数据记录的基本单位,每一次转账、智能合约的创建、智能合约的调用都构成了一笔交易,交易需要消耗燃料。

工作量证明 (POW)

以太坊主要采用的一种共识机制。数学题由挖矿节点计算,最先计算出的节点获得新区块的封装权(即记账权),挖矿成功的节点(即封装成功该区块)将获得一定数量的“虚拟货币”,获得新区块的封装权概率主要取决于矿工节点在网络中的算力比例

股权证明(POS)

也是目前以太坊采用的主要共识机制之一。 记账权不是由算力决定的,而是由节点账户在网络中预先分配的权益决定新区块封装的概率。

智能合约(智能合约)

一段可以被以太坊虚拟机解释和执行的代码在创建时存储在区块链上并获得一个合约账户(地址),并在执行时向该账户发送一笔交易(即合约被调用,交易包含合约需要消耗燃料和输入数据),合约代码由以太坊虚拟机执行。

以太坊联盟和以太坊的关系_以太坊数据同步与存储改进_以太坊为什么叫以太坊

以太坊(以太币)

以太坊网络的底层“虚拟货币”。 它是以太坊网络的重要应用之一,也是以太坊网络的基础设施,可以用来支撑以智能合约为核心的以太坊网络上各种应用的燃料消耗。

燃气 )

以太坊提供可以进行图灵完备计算的智能合约。 为防止网络资源被浪费、恶意滥用或攻击,要求交易发送账户需要为本次交易使用的计算资源消耗燃料。 (如无特殊说明,本书中的燃料均指在区块链上进行操作时消耗的资源名称)。

二、以太坊的工作机制

除了区块链 1.0 的特性。 不同之处在于:

1、不再支持单一“虚拟货币”应用

以太坊的重点是通过实施智能合约和虚拟机来支持开放和灵活的区块链应用。

2、交易信息内容的扩展

以太坊记录的交易信息内容得到极大扩展,不仅包括转账信息,还包括智能合约代码信息、输入和计算结果数据等。

3. 账户状态追踪

每个账户的状态都可以在以太坊网络中追踪,区块链上的状态变化就是账户之间相关价值和信息的传递。

4. 智能合约

合约账户只有在用户账户发出指令后,才能进行相应的操作。 它只能在用户账户的触发下运行这些功能,并且合约的执行必须是确定性的,即在合约创建和部署时,技术人员可以确定合约执行的过程和预期结果。

以太坊为什么叫以太坊_以太坊数据同步与存储改进_以太坊联盟和以太坊的关系

以太坊解决了以太坊网络可能面临用户无限循环执行智能合约代码的危险,这将造成网络计算资源的巨大浪费,最终崩溃。

以太坊联盟和以太坊的关系_以太坊数据同步与存储改进_以太坊为什么叫以太坊

Dapp结构图参考:

以太坊联盟和以太坊的关系_以太坊为什么叫以太坊_以太坊数据同步与存储改进

3. 以太坊软件架构

软件架构图如下:

以太坊数据同步与存储改进_以太坊为什么叫以太坊_以太坊联盟和以太坊的关系

1、以太坊的矿工(Miner)在分布式网络(Network)中进行挖矿作业,是一种共识算法过程,实现POW(或POS)。

2. 网络同步(Sync)是指各个矿工的共识过程同步,共识后产生的新区域:区块链(Blockchain)形成的最新账本也需要通过节点间实现数据同步同步模块。 每产生一个新的区块(Block),都需要经过共识过程来验证区块(Blockvalidator),即需要进行哈希计算验证、签名、排序等。 因此,区块链、共识机制、矿工和网络是以太坊产生和维护区块链的核心组成部分。

3. 以太坊平台上的各种去中心化应用需要编写和部署智能合约代码。 智能合约代码由大方虚拟机调用和解释处理区块链和共识相关事务,同时基于RPC协议(一种用于规范网络向远程计算机请求服务的协议)进行挖矿和网络程式)。 层交易交互,从而实现各种交易如转账等具体应用。

4. 以太坊客户端

1. 以太坊客户端

在以太坊项目的早期,有多个不同操作系统上的客户端项目。 这些客户端客户端使用不同的编程语言,具有不同的接口特性,但是基于相同的协议,它们可以在同一个网络中进行交互和共存。

目前以太坊支持的客户端有go-ethereum、Parity、pyethapp、cpp-ethereum。 领先和广泛使用的客户端是go-ethereum和Parity,分别得到以太坊基金会和Ethcore的支持,代表了以太坊的一个非常高的水平。 go-ethereum 客户端的应用非常广泛,Parity 也因为一些显着的特点,如运行速度快,支持 POS 共识机制等而广受用户欢迎。

以太坊联盟和以太坊的关系_以太坊数据同步与存储改进_以太坊为什么叫以太坊

2.以太坊虚拟机

以太坊虚拟机是以太坊客户端的重要组成部分。 以太坊本身其实是一个可编程的区块链,它是通过在客户端嵌入一个支持智能合约代码解释和执行的以太坊虚拟机来实现的。

以太坊允许用户根据自己的需要和意愿创建各种复杂的操作功能。 基于这种能力,以太坊已经转变为许多不同类型的去中心化区块链应用程序的平台,包括但不限于加密“硬币”。 基于该平台,用户可以灵活地创建各种基于公共账本的去中心化应用。

以太坊数据库的维护和更新是由许多连接到网络的节点共同完成的。 网络中的每个节点都运行以太坊虚拟机并执行相同的命令。 这就是以太坊被称为“全球计算机”的主要原因。

5.以太坊网络

以太坊网络是由许多运行以太坊客户端的节点组成的 P2P 网络。 这些节点将维护和保障区块链数据的安全,维护网络的稳定,实现以太坊分布式共识机制,为以太坊用户提供可持续的服务。

基于以太坊客户端可以构建三种不同类型的以太坊网络。 这三种不同网络之间的主要区别如下。

1. 公链

公链是一种世界上任何人都可以查看、发送交易和记录符合规则的交易,并可以参与共识过程(共识过程决定将哪个区块加入链中,从而决定当前区块链的状态)区块链。

2.联盟链

联盟链是一种区块链,其中共识过程由预先选择的节点决定。 联盟链是一个半中心化的网络,需要联盟成员之间达成共识,具有中心化平台和区块链的综合特征。

区块链的查看权限可以是公开的,也可以仅限于参与机构,也有混合权限的情况,比如区块的根哈希是公开的,而其余的需要通过联盟机构设置的API授权查询.

例如,一个由 20 个银行机构组成的联盟,每个银行机构运行一个节点,需要至少 12 个节点来签署每个有效块。

3、私有链

以太坊联盟和以太坊的关系_以太坊为什么叫以太坊_以太坊数据同步与存储改进

私有链的区块链写入权由中心化节点或组织控制,区块链查询权公开或受到不同程度的限制。

使用封闭的私有链提供服务和传统的中心化平台对于用户来说没有什么本质区别,也没有特别明显的技术优势。

6. 账户和智能合约

账户(地址)在以太坊网络中扮演着非常核心的角色。 它的数学基础是通过非对称加密和解密机制形成的一对公钥和私钥。 签署发送的数据和接收发送到其帐户的数据。 智能合约是大方在区块链上的一项重要创新。 它的本质是存储在账户存储空间中的一段代码,可以被以太坊虚拟机基于账户解释执行。

1.以太坊账户

用户账户和合约账户,一般来说,账户是指用户账户,用户账户是用户自主创建的,通过持有私钥来控制账户的所有权,合约账户属于自己创建的用户账户。

以太坊将用户账户和智能合约称为账户,因为它们都是状态对象。 用户账户记录用户账户余额,智能合约记录账户余额、合约代码和数据内容。

所有账户的状态就是以太坊网络的状态,这些状态不断被全网一致同意的新区块更新。

账户代表外部代理人(如自然人、挖矿节点、自动代理人)的身份,使用私钥加密对每笔交易进行身份验证,使得以太坊虚拟机可以通过公钥安全地识别每笔交易发送方的身份(帐户或地址)。

2.密钥文件

每个账户都有一对密钥,一个是私钥,一个是公钥。 帐户按地址索引,地址取自其公钥的最后 20 个字节。 由私钥和地址组成的密钥对被编码并存储在密钥文件中。 密钥文件为JSON文本文件格式,可以用文本编辑器打开浏览。

密钥文件的关键部分——私钥由创建账户时输入的密码加密保护。 密钥文件可以在以太坊节点数据目录的子目录 Key store 中找到。

新建立的以太坊账户中没有“虚拟货币”,需要用户通过挖矿获得。

用户请务必经常备份密钥文件,以确保账户安全。 丢失密钥文件或密码就意味着丢失账户和账户上的“虚拟货币”,没有人可以帮助用户找回。

以太坊为什么叫以太坊_以太坊联盟和以太坊的关系_以太坊数据同步与存储改进

3. 智能合约

智能合约是存储在以太坊网络上特定地址的一组代码(函数)和数据集。 合约账户可以互相发送消息,拥有图灵完备的计算能力。

合约以以太坊特有的二进制格式存在于区块链上,即以太坊虚拟机的字节码,由以太坊虚拟机解释执行。

智能合约一般采用Solidity等高级语言编写,然后编译成字节码加载到区块链上。 智能合约也可以用其他语言编写,比较有名的有Serpent和LLL。

( 1 ) 坚固性

Solidity 是一种类似 JavaScript 的语言,用于开发智能合约并将其编译成以太坊虚拟机的字节码。 它是以太坊非常著名的旗舰语言。

(2) Serpent Serpent 是一种类 Python 语言,用于编写智能合约并将其编译成以太坊虚拟机的字节码。 它的目标是提供一种简洁、高效的低级语言和易用的高级语言,是一种兼具两者特点的语言,并且在合约编程中加入了一些特定领域的特殊功能。

(3) LLL类Lisp语言(Lisp Like Language, LLL)是一种类似于汇编语言的低级语言,也就是说它非常简洁,基本上是直接对以太坊虚拟机的字节码进行简单的封装就形成了一种语言。

7.燃料和以太坊

1. 在以太坊公网部署智能合约应用,发布者需要拥有以太坊。 获取以太坊的途径有很多,比如成为以太坊矿工,使用以太坊钱包Mist(beta 6以上)等软件获取以太坊相关接口等。

2. 以太坊的重要功能是换取燃料,这是使用以太坊网络资源的重要条件。

3、以太坊的运行规则是交易发送方在使用以太坊的计算资源时会消耗一定的燃料,也就是说交易发送方在使用以太坊的计算资源时需要花费一定的燃料费用。

4. 在以太坊网络中,燃料总成本的计算方法是:燃料需求乘以当前燃料价格。 为了更好地理解燃料,突出显示了以下四个与之相关的术语。

(1)燃料成本。 燃料成本是指计算需要多少燃料的静态值。 Gas成本是根据交易的复杂程度和计算量来设定的。 由于每个计算步骤所需的燃料通常不会改变以太坊数据同步与存储改进,因此其燃料成本会随着时间的推移保持稳定。 (2) 燃油价格。 燃料价格是指以太坊对单一燃料所需的“虚拟价格”,由用户和矿工在“市场”平衡的基础上设定的价值决定,即通过用户期望的价格和燃料的数量。最终在以太坊网络中接受的处理节点。 与以太币的“虚拟价格”保持平衡。 (3) 燃油补贴。 gas limit是指每笔交易允许的最大gas量,用于计算最大计算负载、交易数量或区块大小,矿工可以逐渐改变这个值。 (4)燃料成本。 gas 成本是运行特定交易或程序(合约代码)所消耗的有效 gas Ether 的总成本。 区块的 gas 费用可用于表示计算负载、交易量或区块大小。 gas费将奖励给成功封装区块的矿工(使用POW共识机制)或区块验证者(使用POS共识机制)。

因此,燃料是以太坊网络稳定运行的重要设施,其价值在于保障网络安全。

(本节结束)

上一节:以太坊学习笔记(一)——基本概念与架构