主页 > imtoken新版本 > 以太坊的设计特点是什么?

以太坊的设计特点是什么?

imtoken新版本 2023-10-05 05:11:47

以太坊之前的几乎所有区块链都有一个“历史”的概念,即所有之前交易、转账及其发生顺序的集合,以及“状态”,它决定了给定交易是否有效以及交易处理后的状态。 关于状态将如何变化的“当前相关”数据。

区块链协议还有一个“状态转换规则”的概念:基于之前的状态,给定一笔交易,这笔交易是否有效? 交易发生后会是什么状态?

我们可以举一个比特币的例子。 在比特币中,状态是账户余额的集合,例如:

地址 39BaMQCphFXyYAvcoGpeKtnptLJ9v6cdFY 有 522.11790015 个比特币

地址 375zAYokrLtBVv6bY47bf2YdJH1EYsgyNR 有 375 个比特币。

状态转换函数获取发送方地址、目标地址和一个值,然后询问交易是否已被发送方以密码方式正确签名? 此外,发送方帐户中有足够的比特币用于此交易。 发送? 如果其中一个问题的答案是否定的,则该交易无效且不能包含在区块中。 如果一个块包含当前状态下的无效交易,则该块将被网络忽略。 如果两个问题的答案都是正确的,交易的价值将从发送者的余额中取出并添加到接收者的余额中(UTXO 机制)。

以太坊的设计特点

国外以太坊币交易网站_以太坊内部转账交易_以太坊国内不能交易

在以太坊中,相关设计会更加复杂。 状态可以看作是所有账户的集合,每个账户要么是一个“外部拥有账户”(EOA,external owned account),要么是一个合约。 如果账户属于 EOA,状态将简单地存储账户的以太币余额(以太坊内部加密令牌,功能类似于比特币或 XRP)和一系列用于防止重放支付攻击的序列值 。

如果账户是一个合约,状态会存储合约的代码,以及合约的存储空间,一个key-value数据库(k/v数据库),这个很重要,也是主要特点之一不同来自传统的加密货币。

以太坊中的交易指定(连同其他所需信息)目标地址、用于交易的以太币数量以及理论上可以存储任何信息的“数据”字段(此外,还有一个人的发送地址,但这在签名中已经指定,因此这里不指定)。 如果交易是针对 EOA 或尚不存在的账户进行的,那么它除了作为一种发送以太币的方式之外没有任何用处。 如果将交易发送到合约,则执行合约的代码。 这些代码的主要作用如下:

 读取交易数据。

 读取交易中发送的以太币余额。

以太坊国内不能交易_以太坊内部转账交易_国外以太坊币交易网站

 读取或写入合约自身的存储空间。

 读取环境变量(如时间戳、区块难度、前一个区块的哈希值)  向另一个合约发送“内部交易”。

本质上,您可以将合约视为一类存储在以太坊状态中的“虚拟对象(具有属性和操作)”,它可以包含自己的内部永久存储,并具有将其他合约发送给外部用户的能力。 操纵权限和关系的能力。 内部交易是由合约创建的交易; 就像普通的“外部”交易一样,它也包含明确的发送方、目的地址、以太币数量和消息数据。 如果将内部交易发送到合约,合约的代码将运行。 合约执行后,合约的代码会返回0或多个字节的数据,可用于内部交易“询问”其他合约获取特定信息。 同时以太坊国内不能交易,一个交易可以通过将合约的代码放在交易的数据中(目标地址未设置)来创建一个新的合约,或者通过操作码(opcode)从合约内部实现这个功能) 的创建。

简单来说,在以太坊公链上,合约机制有以下几个目的:

 作为追踪用户发行人支持资产的数据库;

以太坊国内不能交易_以太坊内部转账交易_国外以太坊币交易网站

 作为可以控制其他资产的“智能合约”,会根据特定条件将这些资产发送给特定的对象; 这通常进一步细分为几个子类别,包括:

(1) 金融合约(如差价合约、二元期权、衍生品)

(2) 担保交易(实现“数字资产去信任原子互换”)

(3) 多方协议,如拍卖、保险合同、鼓励特定信息披露的经济博弈等。

 作为基于区块链的域名系统的注册记录管理;

以太坊国内不能交易_以太坊内部转账交易_国外以太坊币交易网站

 作为代表用户或组织的账户,具有复杂的访问控制,如多重签名;

作为一个软件库(DApp),可以编写代码,发布到区块链,供他人使用;

因此,“智能合约”的概念可以简单定义为“直接控制和操作数字资产的程序”,这一点非常重要。 因为合约有自己的地址,可以像用户一样成为数字资产的持有者。 如果一个合约真的“拥有”了数字资产,这意味着:

(1) 只有合约本身才能执行相关代码向对方发送资产

(2) 每个参与者都可以看到并验证资产是否真的在区块链上的程序控制之下。

国外以太坊币交易网站_以太坊内部转账交易_以太坊国内不能交易

比如你可以实现资产A和资产B的无信任交易,通过资产A的所有者将资产发送给一个程序,这个程序的代码定义了“如果我在24小时内收到资产B,那么我将将资产 A 发送到发送者的地址,将资产 B 发送到我的创建者,否则我将把资产 A 发送回我的创建者。” 资产 B 的所有者可以看到合约确实控制了资产 A,并且知道一旦他们将资产 B 发送到合约的账户,合约将进行公平正确的交易。合约没有“所有者”的概念;当资产A的原所有者将资产发送给合约,他们无法通过操纵合约取回资产,只能等待交易成功完成并收到交换的资产B,或者24小时后,如果交易还是不成功,他们会自动取回资产A。

640.webp.jpg

以太坊区块链有点像比特币的高层次区块链。 它的重要特征是区块链由一系列区块组成,每个区块包含一个指向前一个区块的指针,以及一个排序的交易列表。 区块通过工作量证明来维护,“最长链”(由整体难度决定)定义了一系列已确认的交易及其执行顺序。

为了达到以太坊区块链上的“当前状态”,一个节点可以从“初始状态”(这是嵌入在每个以太坊客户端中并且每个人都同意的初始状态)开始,并处理每个交易,并顺序执行交易处理和代码执行过程带来的余额/序列值/代码/存储变化。 同样的过程也发生在比特币中; 而以太坊的独特之处在于它强调交易执行过程的“状态变化”模型(在比特币中,交易通常被视为历史上一笔交易花费的“输出”,而不是状态中的对象)。 但在以太坊、比特币、瑞波币、狗狗币等协议中,这部分工作的代码运行方式基本相同。

以太坊使用了对内存要求很高的hash函数,叔叔激励机制,难度调整算法,gas limit调整算法等,这些是以太坊的一些值得注意的差异,但这些都是优化工作,可以说本质上不是中心化的以太坊。

以太坊中另一个值得注意的特性(在比特币中没有)是深度使用 Merkle 树,允许“轻客户端”仅下载和验证区块头,同时还能够决定和安全地验证区块链状态的任何特定部分。 在比特币中,区块头仅存储包含交易的 Merkle 树的根哈希。 在以太坊中,每个区块都包含一个“状态根”,它本质上是一个包含整个当前状态(账户余额、序列号、代码和存储)的加密哈希树的根哈希。

640.webp (1).jpg

因此,如果轻客户端需要知道状态中的某个值(例如“账户 0x124b6f72 中的余额是多少?”或“账户存储”,轻客户端通常只能下载区块头(每 17 秒约 500 字节)空间中key值为178233的记录对应的是什么数据?”),它可以请求网络中的任意一个“全节点”提供一个“分支”,即由网络中的数据块组成的一系列哈希值(Merkle) 树结构哈希,指定具体信息到树的根部,轻客户端可以自己验证该分支的完整性。 如果分支是正确的以太坊国内不能交易,它接受答案。 “轻客户端”模式对使用智能手机、物联网和嵌入式设备的以太坊用户很有用,对电脑性能低、网络带宽差的用户也很有用。