Bitcoin 2.0-Ethereum architecture

The three-tier structure of Ethereum

以太坊由底层服务,核心层,顶层应用组成。
1.底层服务:包括P2P网络(保证节点彼此平等)、LevelDB数据库(区块,交易等数据存储)、
		   密码学算法(保证数据隐私性和区块安全性)以及分片优化(并行验证交易,加大区块生成)等基础服务
2.核心层:区块链(主体)、共识算法(保证一致性和正确性)和以太坊虚拟机(智能合约的载体)等核心元件
3.顶层应用:API接口、智能合约及去中心化应用(DApp)

Insert picture description here

Block

区块链由一连串的数据区块组成,区块之间的指针是区块头散列指针(使用密码学散列算法生成)。
那么区块是什么呢?本质就是一个数据包,将交易记录等进行保存。区块主要由区块头,交易列表和叔区块头
	三部分组成。
	区块头封装了父块散列值,叔块散列值,状态树根散列值,交易书根散列值,收据树根散列值,时间戳等。
	交易列表由矿工从交易池中选择收入区块中的一系列交易。

Account

账户分为外部账户和合约账户。以地址为索引(地址是公钥衍生的,取公钥的最后20字节)。
一个以太坊的账户包含四部分:地址交易的次数,账户目前的以太币金额,账户合约二进制代码,账户存储。
1.外部账户:由公钥和私钥控制的账户。[公钥相当于卡号,私钥相当于密码]一个外部账户具有以下特性
(拥有一定账户余额,可以发送交易,通过私钥控制,以及没有相关联的代码)
注意:以太坊没有可以让用户重置或者找回私钥的功能。使用一定要记住私钥。
2.合约账户:包含合约代码的账户。合约账户不再由私钥文件直接控制,而是由合约代码控制。一个合约账户
具由以下特性:有一定以太币,有相关联代码,代码通过调用激活。

Data structure and storage

	以太坊针对三种对象设计了三棵merkle树,分别是状态树,交易树和收据树。区块,交易等数据的存储
在LevelDB键值对数据库。
	以太坊使用了MPT(merkle patricia trie).MPT是一种加密认证的数据结构,它融合了merkle树和trie树
俩种数据类型的优点。
	1.merkle树:可以是二叉树也可以是多叉树。由一组叶节点,一组中间节点和一个根节点组成。
	创建它的目的是为了允许区块的数据可以零散地传输,节点可以从一个节点下载区块头,从另外的源下载
	与其相关树的其他部分,而依然保证所有数据的正确性。(底层篡改-->根节点改动-->很容易被发现)
	merkle树具有以下特点:每个数据集对应唯一合法的根散列值,容易更新添加或删除树节点,
	不改变根散列值就没办法修改树的任何部分,任何人都可以通过密码学方法证明拥有对应节点的内容在树上。
	2.trie树:也叫radix树,key代表从树根到对应value的一条真实路径。
	优点:如果有俩个value,它们有着基于相同前缀的key,它们的相同前缀的长度占自身比例越大,则代表
	这俩个value在树中的位置越靠近,并且trie树中不会有像散列表一样的冲突,也就是说一个key永远只
	对应一个value。
	缺点:当给一个长度较长的key时,在树中没有其他key与它有相同的前缀时,可能会造成存储不平衡问题。

Consensus mechanism

共识机制是区块链事务达成分布式共识的算法。一种让节点在差不多时间内发生的事务的先后顺序实现共识的机制。
Pow:通过结果证明以确认你完成了一定量的工作。目的是使区块的创建困难,从而阻止“女巫”攻击者恶意重新
生成区块链。
Pos:基于网络参与者目前所持有的数字货币的数量和时间进行利益分配,是一种对货币所有权的证明。

Ethereum

以太币(ETH)是以太坊发行的一种数字货币。

transaction

交易:指一条外部账户发送到区块链上另一账户的消息的签名数据包。主要包括发送者的签名,接收者的地址以及发送者转移给接收者的以太币数量等内容。

Guess you like

Origin blog.csdn.net/qq_38798147/article/details/108925665