主页 > 华为怎么下载imtoken > 以太坊 2.0 架构:以太坊区块链
以太坊 2.0 架构:以太坊区块链
比特币的区块链架构主要围绕支持虚拟货币的变现展开。 虽然它具有一定的灵活性,但在支持虚拟货币以外的应用场景方面仍然非常有限。
近年来,区块链逐渐受到IT行业的关注,逐渐成为独立于比特币的平台架构,其重要性也越来越受到重视。
区块链2.0的概念也应运而生。
其核心思想是将区块链作为一种可编程的分布式信用基础设施来支持智能合约应用,以区别于过去作为虚拟货币支持平台的比特币区块链。
具体来说,不仅仅是将区块链作为去中心化的虚拟货币和支付平台,而是通过在链上增加可扩展性功能,扩大区块链的技术范围,支持去中心化的市场。
交易的内容可以包括房产证、股权和债务凭证、知识产权,甚至汽车和艺术品。
区块链 2.0 提供了一套新的协议(blockchain 2.0 协议)来支持新的去中心化应用。 如果用互联网协议来类比,区块链1.0相当于TCP/IP协议,区块链2.0相当于HTTP、SMTP、FTP等高级协议。
甚至有人将区块链1.0比作手机,将区块链2.0比作智能手机。
在比特币之后,出现了很多被称为区块链2.0的平台,其中最具代表性的就是以太坊平台。 下面简单介绍一下以太坊架构。 以太坊的设计主要基于比特币架构。 下面仅重点介绍与比特币架构不同的账户设计和区块链设计的主要方面。
1.账户设计
比特币没有账户的概念。 每个用户的余额都是根据他们在区块链上的 UTXO 计算得出的。 以太坊有两种类型的账户。
一个是外部拥有账户(EOA),另一个是合约账户。
所有外部账户都是我们一般意义上的用户账户,由私钥控制。
合约是存在于以太坊区块链上的特殊可编程账户,是代码(其功能)和数据(其状态)的集合。
合约由代码控制并由所有外部账户激活。 以太坊的设计是将区块链作为管理对象状态转换的通用去中心化平台,账户是有状态的对象。
所有外部账户的状态都是余额,而合约账户的状态可以是余额、代码执行、合约存储。
以太坊网络的状态是所有账户的状态,由每个区块的交易来更新,需要在全网形成共识。
用户和以太坊
用户与以太坊区块链的交互需要通过账户的交易来实现。 每个以太坊的所有外部账户都由一对密钥定义,一个是私钥,另一个是公钥。 区块链上的 EOA 账户由其地址索引。
取公钥后20位为地址,与比特币地址不同。 每个公私密钥对都被编码并存储在一个密钥文件(Keyfile)中。
密钥文件为JSON格式,可以使用文本编辑器查看。
密钥文件的私钥是用创建账户时输入的密码加密的。 密钥文件存在于以太坊节点数据目录下的keystore子目录中。 密钥文件需要经常备份,否则如果密钥文件丢失,账户中的以太币将无法找回。
合约账户可以执行图灵完备的计算任务,也可以在合约账户之间传递消息。 合约被编译成以太坊虚拟机字节码(Ethereum Virtual Machine Bytecode)并记录在区块链上。
所有外部账户都可以通过向合约发送交易来调用合约。 这需要提供几个参数。
比如EOA的地址,合约的地址,数据。 数据部分包括合约中需要调用的方法(method)及其传递的参数。
这需要使用应用程序二进制接口 (ABI) 作为编码和解码传输数据的标准。
有关 ABI 的更多信息,请参阅以太坊维基页面。
2. 区块链设计
比特币使用默克尔树将交易的哈希值按照一定的算法形成二叉树结构。 顶级节点的哈希值相当于整个交易列表的指纹,可以用来验证交易列表。
中本聪采用 Merkle 树设计,也为轻量级节点通过 SPV(简化支付验证)轻松验证交易。
SPV不需要下载整个交易列表,只需要区块头中交易列表中最顶端节点的哈希值,以及与自己节点相关的交易,就可以通过向其他节点查询来完成交易其他相邻交易。 验证交易是否包含在区块链的块中。
以太坊区块链的每个区块不仅保存了交易列表,还保存了最新的状态。 以太坊作为一个通用的区块链编程平台,引入了账户的概念,也带来了更复杂的验证和查询需求。
比如查询一个账户的余额,判断一个账户是否存在,单靠比特币的Merkle树是无法满足要求的。 因此,以太坊使用 Merkle Patricia 树来实现交易和状态的验证和查询。
让我们看看交易和状态所面临的问题。 以太坊的状态包括一个键值映射以太坊区块链信息存储在哪里,其中键是地址以太坊区块链信息存储在哪里,值是账户,其中声明的变量包括余额、随机数、代码和账户存储(存储也用树来表示,在树的形式)。
与交易数据只能增加不能改变不同,账户的状态经常变化,其余额和随机数也经常变化。 另外,新账户频繁插入,密钥在商店中频繁插入和删除。
因此,默克尔树不适合这种情况,而是一种可以在插入、更新和删除操作后快速计算出一个新的树根哈希值而无需重新计算整棵树的数据结构。
同时,树的深度是有限的,即使攻击者试图通过故意发送很多交易来增加树的深度,否则攻击者可以操纵树的深度,使每次更新变得很慢,在平台上实施拒绝服务攻击。
还有一个要求就是树的根哈希只与树的数据有关,与更新的顺序无关。
不同的更新顺序甚至重新计算整棵树的根哈希都不会改变树的根哈希。 Patricia 树是满足这些要求的数据结构。
简单来说,以太坊账户的状态由一个键值表(Key-Value Map)表示。 在 Patricia 树中,密钥被编码为沿着树向下的路径。
在以太坊的 Patricia 中,每个节点都有 16 个子节点,所以路径是用十六进制编码的。
比如键“dog”的十六进制编码为6461567,那么要访问键“dog”对应的值,就必须先从根节点开始,往下到第6个节点,再从这个往下走node 到第4个节点,依此类推,直到结束。
在区块链的区块头中,不像比特币那样只存储一个交易列表的默克尔树根哈希值,而是存储了三个根哈希值。
一个是交易的 Merkle 根哈希。 另一个是状态的根哈希。 还有一个是收据的根哈希。 与比特币的另一个区别是,以太坊区块链中的每个区块都保存了区块链编号和区块难度。
据中新网消息,9月4日,联合国贸易和发展会议(UNCTAD)发布了《数字经济2019》报告。
报告指出,美国和中国目前拥有超过 75% 的区块链技术相关专利,占全球物联网支出的 50%,以及超过 75% 的云计算市场。
最近的文章