主页 > imtoken钱包正确的下载地址 > 1 以太坊和比特币工作机制的区别

1 以太坊和比特币工作机制的区别

1 以太坊与比特币工作机制的区别 2 以太坊基于账户 2.1 重放攻击

由于是基于账户的,所以对双花攻击有天然的防御能力。 消费两次,扣两次,余额可以修改。 但是在这种情况下,可以防止一笔钱被花两次,但是对于收钱的人来说,有可能两次收到这笔钱,因为收钱的一方可以将交易广播给外面的世界,也就是重放攻击。

2.2 重放攻击解决方案

可以通过nonce值记录交易次数,需要花费者签名,比如一笔交易:

梁→曾(1eth)【梁给曾转了一个以太币】
nonce=1 
signed 梁【梁给这一笔交易签名】

当 Liang 签名时,除非知道 Liang 的私钥,否则交易将变得不可更改。

3 以太坊用户类型 3.1 外部账户 3.1.1 外部账户定义

外部账户也指普通用户。 和比特币一样,谁持有私钥,谁就拥有账户。 有了账号之后,就不需要广播让所有节点都知道了。 它仅在您的帐户涉及交易时可用。 让所有节点知道的机会。 外部账户可以主动发起交易,调用合约账户。

3.1.2 主要属性 3.2 合约账户 3.2.1 合约账户定义

合约账户可以根据合约的代码内容执行。 合约账户与外部账户最大的区别在于:

3.2.2 主要属性 3.2.3 合约调用流程

创建合约→返回地址→调用合约(代码内容不变,存储会变)

4 以太坊的基本数据结构

假设简单的用一个Hash表来记录所有的信息,需要考虑交易是否已经被包含在特定的区块中,当前的交易账户余额,这个账户是否存在等等,这就是Merkle证明的问题,那么是不是可以构建一棵Merkle树,把所有的交易都放在里面呢? 但是考虑到更新Merkle Tree的成本太高,每增加一个新的交易,都需要更新。 使用“比特币的Merkle Tree”的图,我们可以知道,在最后插入一条数据时,需要更新半棵树。 更新,最后生成一个新的Merkle Root。 但是比特币的Merkle Tree就没有这种麻烦,因为每个区块中会有大约4000笔交易,而这棵树生成之后不需要再改变,它的Merkle Root就放在了区块中header只是用来标识数据是否被篡改过。

怎么购买以太坊以太币eth_以太坊的出块时间比比特币短_以太坊出块时间是多少

除了检测数据是否被篡改之外,MerkleTree还有一个作用,就是让所有节点保持数据的一致性。

如果单纯的使用Merkle Tree作为数据结构,不利于插入和更新操作。 另外,如果接收到的数据顺序不一致,会生成不同的Merkle Tree。 还是上图。 如果将第一个数据块的哈希值和第三个数据块的哈希值组合在一起计算一个哈希值,将第一个数据块的哈希值和第二个数据块的哈希值组合起来计算一个哈希值值,并且两个Hash值必须不相同。 但是比特币的 Merkle Tree 每个区块只有一个固定的区块,那棵树的结构掌握在记账矿工手中。

那么将所有的Data Blocks排序,形成一棵排序好的Merkle树,就可以解决树结构不一致的问题了吗? 但是插入和更新数据仍然非常昂贵。 所以需要找到一种结合了Hash表和树的特性的数据结构,这就是trie树的引入。

4. 1Trie树 4.1.1 字典树的定义

Trie 树是一种基于树的数据结构,也称为单词搜索树、前缀树,是哈希树的变体。 应用于字符串的统计和排序,常被搜索引擎系统用于文本词频统计。 用于存储字符串以支持快速模式匹配,主要用于信息检索。 Trie 支持的主要查询操作是模式匹配和前缀匹配。 从 luck luxury launch light 生成字典树:

以太坊的出块时间比比特币短_怎么购买以太坊以太币eth_以太坊出块时间是多少

以上面的课文字典树为例:

4.1.2 字典树的缺点

浪费内存,就像幻想这个词非常浪费内存,那么有没有可以减少内存申请的数据结构呢?

4.2 压缩前缀树

它确保 Trie 中的每个内部节点至少有两个单词节点。 通过将单子节点链压缩到每个边缘来强制执行此规则。

怎么购买以太坊以太币eth_以太坊出块时间是多少_以太坊的出块时间比比特币短

只要key分布的越稀疏,压缩的效果就会越好,如fantasy。 还是差一点点,就是把哈希地址值和压缩前缀树结合起来就完美了。

4.3 MPT(默克尔帕特里夏树)

将散列地址值与压缩前缀树结合起来。

以太坊出块时间是多少_怎么购买以太坊以太币eth_以太坊的出块时间比比特币短

来源:《以太坊MPT(Merkle Patricia Tree)》第四点

分析图片:

第一部分:四个账户密钥记录Hash后的地址(地址为公钥的Hash)

以太坊的出块时间比比特币短_以太坊出块时间是多少_怎么购买以太坊以太币eth

第 2 部分:将有一个带有压缩的共享半字节

以太坊出块时间是多少_以太坊的出块时间比比特币短_怎么购买以太坊以太币eth

5 以太坊三棵树 5.1 状态树

之所以需要状态树是因为每10s会产生一个块。 当有分支时,必须回滚非法分支的事务。 直接修改账户状态会导致用户数据永久丢失,且无法回滚。 对于交易树来说,找一个账户就是找到这个账户的地址,状态树记录了所有账户的状态(不包括没有交易过的用户)。 另一种情况,如果没有状态树,此时B是一个新账户。 如果在当前区块中找不到对应的信息,就得去寻找上一个区块,直到找到创始区块才会发现没有B的信息。 没有B的信息,就知道B是一个新用户,所以时间复杂度很高。

5.2 交易树

每发布一笔交易,就可以形成一棵交易树,可以提供默克尔证明给轻节点证明某笔交易被打包在区块中。

5.3 收据树

每一笔交易完成后,都会形成一个收据树来记录每一笔交易。 交易树和收据树是一一对应的。 交易树和回执树查找每笔交易的序号,向轻节点证明交易的执行结果。

5.4 交易的条件查询 5.4.1 Bloom filter布隆过滤器

布隆过滤器是一种随机数据结构,空间效率高,判断一个元素是否属于这个集合,但过滤器只支持查询操作,不支持删除操作。

5.4.2 初始化布隆过滤器的过滤步骤时,需要一个长度为n位的数组barr,每个位初始化为0; 首先需要k个哈希函数,每个函数可以将key哈希成一个整数; 当一个key加入set后,使用k个hash函数计算出k个hash值,映射到barr的某个位置,将数组中对应的bit位置置1; 在判断一个key是否在集合中时以太坊的出块时间比比特币短,使用k个哈希函数计算出k个哈希值,查询数组中对应的位。 如果所有位都为 1,则认为它在集合中。

处理完所有元素后获取摘要。

5.4.3 布隆过滤器查询

注意:可能会出现哈希冲突,映射到同一个元素,所以布隆过滤器不保证搜索到的元素一定是正确的。

6 以太坊处理分叉 6.1 孤块

分叉后,不能成为最长合法链上的区块。 如果频繁出现孤块,交易往往要回滚,失去原有的区块奖励,严重打击矿工的挖矿积极性。 分叉也会导致矿工算力分散。

6.2 叔块 6.2.1 叔块定义

孤儿块变成叔叔块,叔叔的交易不会被执行,但是他可以分享一部分挖矿奖励,也就是区块奖励的7/8,他也会被记录在下一个区块中。 叔叔的数量是0~2。

以太坊的出块时间比比特币短_以太坊出块时间是多少_怎么购买以太坊以太币eth

6.2.2 总有人想当侄子

如果产生了两个以上的分支,剩下的叔块将没有机会被侄子记录。 有些节点宁愿不记录叔块以太坊的出块时间比比特币短,自己的收益也会减少,但与叔块相比,叔块反而会更差。 因此,在大多数善意节点的情况下,会要求侄子的儿子记录叔叔区块的信息。 蓝色的两个方块是解决叔叔问题的。 所以侄子和叔叔的关系可能和乔乔一样,叔叔不一定和父亲是同一辈,约瑟夫应该也叫乔鲁诺叔叔。

以太坊出块时间是多少_以太坊的出块时间比比特币短_怎么购买以太坊以太币eth

6.2.3 舅舅的儿子一文不值

恶意节点在叔链后面挖掘,会导致更长链上的更多交易被回滚。 为了防止这种情况,只有分叉链的第一个节点才能获得奖励。

以太坊出块时间是多少_怎么购买以太坊以太币eth_以太坊的出块时间比比特币短

6.2.4 叔块分配

叔块会有奖励,那么会不会有专门分叉的节点呢? 如下所示:

以太坊出块时间是多少_怎么购买以太坊以太币eth_以太坊的出块时间比比特币短

随着往前走,大叔街区里的钱会越来越少。 2/8之后,大叔将不再获得奖励。