主页 > imtoken百科 > 2.以太坊账户

2.以太坊账户

imtoken百科 2023-03-10 07:42:26

1 简介

以太坊是一个可编程的区块链,内置了成熟的图灵完备

一种可以用来创建“合约”的编程语言,允许用户创建自己任意复杂的操作(比特币只能进行交易),以太坊作为不同区块链应用的平台。

从狭义上讲,以太坊是一系列协议,其核心是一个以太坊虚拟机,可以执行任何符合该协议的复杂代码。 以太坊虚拟机是图灵完备的,开发者可以使用javascript、python等友好的编程语言在虚拟机上创建应用程序。

以太坊的目的是为去中心化应用创建一个协议,提供一套新的解决方案,对大量去中心化应用非常有用,特别强调快速开发,对于小而少的应用非常安全(Applications that are 51%),并且不同的应用程序可以有效交互。

以太坊通过构建一个本质上是抽象的基础层来做到这一点:

具有内置图灵完备编程语言的区块链,允许任何人编写智能合约和去中心化应用程序,他们可以在其中创建任意规则、交易格式和自己功能的状态转换。 一个简单版本的 Namecoin 可以在以太坊上用两行代码编写,而其他协议如货币和信用系统可以用不到 20 行代码构建。

与任何区块链一样,以太坊包含一个点对点网络协议。 以太坊区块链由链接到网络的每个节点维护和更新。 网络中每个节点的虚拟机执行相同的指令共同维护区块数据库。 为此,以太坊有时被称为“世界计算机”。

我们可以将区块链理解为一个全球共享的分布式事务数据库。 以太坊全网大规模并行计算,不仅仅是为了提高计算效率,而是为了保证全网数据的一致性。事实上,这使得以太坊上的计算比传统计算机慢很多,而且成本贵多了。 全网各虚拟机的运行

都是为了保证整个网络数据库的一致性。

2.以太坊账户

以太坊的基本单位是一个账户,每个账户有一个20字节的地址。以太坊区块链跟踪每个账户的状态,区块链上的所有状态转移都是代币(代币是以太坊)和账户之间信息的转移

以太坊有两种账户类型:

以太坊交易违法吗_以太坊币交易官方网站_比特币和以太坊违法吗

对于大多数用户来说,最基本的区别是:

一个以太坊账户包含以下 4 个字段:

“以太”是以太坊内部主要的密码燃料,用于支付交易费用。

3.交易

“交易”是指以太坊中一个签名的数据包,它存储了从外部账户发送过来的消息;

交易包括以下内容:

前三个是每个加密货币都有的标准字段。

默认情况下,第四个数据字段没有功能,但合约可以访问这里的数据;

比如一个合约在区块链上提供域名注册服务以太坊交易违法吗,它会想把这个数据字段的数据解析成两个字段,第一个字段是域名,第二个字段是域名对应的IP地址name.合约将从数据字段中读取值并适当保存

STARTGAS 和 GASPRICE 字段用于防止以太坊中的拒绝攻击,非常重要。为了防止代码中意外或恶意的无限循环或其他计算浪费,每个交易都需要设置一个限制来限制其总计算量脚步

步骤是一个显式值。 这个计算的基本单位是“gas”; 通常,一次计算花费 1 滴 gas,但有些操作消耗更多的 gas,因为它们的计算成本更高。交易数据中的每个字节需要

以太坊币交易官方网站_比特币和以太坊违法吗_以太坊交易违法吗

消耗 5 滴汽油。 这样做的目的是让攻击者为他们消耗的每一种资源付费,包括计算、带宽和存储; 所以消耗的网络资源越多,交易成本就越大。

4.新闻

合约有能力向其他合约发送“消息”。 消息是永远不会序列化的虚拟对象,只存在于以太坊执行环境中。

消息包含以下内容:

5.以太坊状态转换函数(交易过程)

以太坊币交易官方网站_比特币和以太坊违法吗_以太坊交易违法吗

图片.png

以太坊的状态转移函数APPLY(S,TX) -> S'可以定义如下:

例如,假设合约的代码如下:

如果 !self.storage[calldataload(0)]:

self.storage[calldataload(0)] = calldataload(32)

以太坊币交易官方网站_以太坊交易违法吗_比特币和以太坊违法吗

请注意,实际的合约代码是写在底层 EVM 代码中的; 这个例子是用一种叫做 Serpent 的高级语言编写的。假设合约的存储开始时是空的,并且发送了 10 个以太币、2000 个气体的交易

石油和汽油价格为0.001比特币,64字节数据,其中0-31字节代表数字2,32-63字节代表字符串CHARLIE。 在这种情况下,状态转换函数的处理如下:

Checker 交易有效且格式正确;

检查者交易的发送者至少有 2000 * 0.001 = 2 个以太币。 如果是,从发送者账户中减去2 ETH;

初始化汽油(gas)=2000;

假设交易长度为170字节,每字节成本为5,则减去850,还剩1150汽油;

从发送者账户中减去10 ETH,并添加到合约账户中;

运行合约的代码;

在这个例子中,检查合约存储的第二个索引是否已经被使用,注意没有,然后将数据存储的第二个索引的值设置为CHARLIE; 假设这个操作消耗了187 gas,那么剩下的gas总量就是1150 – 187 = 963;

向发送者账户添加 963 * 0.001 = 0.963 以太币,然后反转结果状态。

如果交易的接收端没有合约,那么总交易费用就是gas价格乘以交易的字节长度,与交易一起发送的数据字段中的数据将无关紧要。

以太坊币交易官方网站_比特币和以太坊违法吗_以太坊交易违法吗

请注意,消息和事务在恢复方面的处理方式相同:如果消息执行耗尽 gas,消息执行和其他触发的执行将恢复,但父执行不会恢复。

6.代码执行

以太坊的合约代码是用底层基于堆栈的字节码语言编写的,称为“以太坊虚拟机代码”或“EVM代码”。 此代码由一系列字节组成,每个字节标识一个操作。 通常,代码执行是一个无限循环,直到代码运行到最后或遇到错误,或检测到 STOP 或 RETURN 指令。

这些操作具有三种类型的空间可用于存储数据:

7. 区块链与挖矿

以太坊币交易官方网站_比特币和以太坊违法吗_以太坊交易违法吗

图片.png

以太坊的区块链和比特币的区块链有很多相同点和不同点。

以太坊和比特币在区块链系统中最重要的区别是:

以太坊区块包含交易列表和最新区块的状态,

除此之外,区块中还存在另外2个值,区块号和难度值。

以太坊交易违法吗_以太坊币交易官方网站_比特币和以太坊违法吗

以太坊中最基本的区块验证算法如下:

检查前一个块的存在和有效性。 检查本块的时间戳是否大于前一个块且小于15分钟。 检查区块号、难度值、交易根、叔叔根和gas limit是否有效。 该区块的工作证明是有效的。 将 S[0] 设置为前一个块结束时的状态。 使TX成为该区块的交易列表。 如果有n笔交易,做一个for循环For i in 0... n-1,设S[i+1] = APPLY(S[i],TX[i])。 如果任何一个应用失败,或者这个区块的总gas消耗量达到GASLIMIT,返回一个错误让S_FINAL等于S[n],但是把支付给矿工的奖励添加到区块中。 检查这个状态S_FINAL的默克尔树根是否与区块头信息中提供的状态根相同。如果是,则该区块有效,否则无效

乍一看,这种方法似乎效率低下,因为它需要将整个状态存储在每个块中,但实际上,效率应该与比特币不相上下。 原因是状态存储在树结构中,每个块后只需要修改树的一小部分。另外以太坊交易违法吗,由于所有状态信息都是最后一个块的一部分,因此不需要存储整个区块链history - 一种策略,如果它可以应用于比特币,将节省 5-20% 的磁盘空间时间

以太坊网络中的交易由验证网络的节点收集。这些“矿工”收集、传播、验证

证明并执行交易,然后组织和归档这些交易,将它们打包成一个区块,并与其他矿工竞争将区块添加到区块链中

,成功添加的矿工将获得奖励。通过这样的措施,鼓励人们为整个区块链网络提供更多的硬件和动力

支持。

八、申请

以太坊框架本身并没有做任何特别的事情。 就像编程语言一样,它做什么是由企业或开发者自己决定的,比如复杂金融合约的自动化。

比特币允许用户直接兑换货币,无需通过第三方机构,如银行、政府等。但以太坊的介入可能会产生更深远的影响,因为任何复杂的金融操作都可以自动执行,并且可以被编写为在以太坊上运行的代码。 当然,除了金融,无论如何,只要是对信用、安全、持久性有极高要求的,比如资产登记、投票、管理、物联网等,都可能受到影响。以太坊平台。

总的来说,以太坊上有三类应用。第一类是金融类应用,包括子货币、金融衍生品、对冲合约,以及一些雇佣合约等; 第二类是半金融应用,有钱但也有很多非钱的方面

面条;

最后,还有完全非金融的应用,比如在线投票和去中心化治理