知识点总结一
课程链接:https://www.bilibili.com/video/av37065233/
比特币:
P10
Fork class | Describtion |
---|---|
soft fork | 只要系统中拥有半数以上的算例更新了软件,就不会出现永久的分叉临时性分叉![]() |
hard fork | 必须是算有的节点都更新软件才不会产生分叉永久性分叉![]() |
P12
零知识证明:
零知识证明是指一方(证明者)向另一方(验证者)证明一个陈述时正确的,而无需透露除该陈述是正确的外的任何信息。
数学基础:
例如:E(x+y)=E(7)[利用性质三,但是不暴露x和y值]
P13
hash 指针就是hash值
(
k
e
y
,
v
a
l
u
e
)
(key,value)
(key,value)
其中:key:hash值;value:具体内容;
比特币:
- 稀缺性(不具备现实货币的通过膨胀功能)
- 量子计算:在bitcoin的有生之年很难具有威胁
第十四讲以太坊概述
比特币:block chain1.0;以太坊:block chain2.0
proof of work----->proof of stake
第十五讲以太坊账户
- 对于bitcoin:他的账户的余额,或者是账户中的钱,都是基于上一个区块的(hash指针);而对于Ethereum中的账户余额是系统中全节点维护的状态tree中保存的。
- replay attack(重放攻击):收钱的人不诚实,再次将交易信息进行节点广播;
- double spending attack:花钱的人不诚实,将转给别人的钱又重新转给自己。
- 为了防止重放攻击:使用nonce计数机制,并且收到当前节点的签名保护。如果出现重放,并且计数比当前节点中的计数小,就会认为是已经执行过的交易。
- 账户类型:()externally owned account(外部账号)【balance、nonce计数器】(2)smart contract account(合约账户)【code、storage】
- 单纯的Merkel tree 和sorted Merkel tree 不能满足查询与插入。
- 键值分布比较稀疏的时候,可进行压缩,效果好
知识点扩展:
1.Tries 树
Trie树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。
常见的用来存英文单词的trie每个节点是一个长度为27的指针数组,index0-25代表a-z字符,26为标志域。如图:
2.Patricia树
Patricia树,或称Patricia trie,或crit bit tree,压缩前缀树,是一种更节省空间的Trie。对于基数树的每个节点,如果该节点是唯一的儿子的话,就和父节点合并。
3.MPT(Merkle Patricia Tree)树
在以太坊(ethereum)中,使用了一种特殊的十六进制前缀(hex-prefix, HP)编码,所以在字母表中就有16个字符。这其中的一个字符为一个nibble。
MPT树中的节点包括空节点、叶子节点、扩展节点和分支节点:
node name | Description |
---|---|
空节点 | 简单的表示空,在代码中是一个空串。 |
叶子节点(leaf) | 表示为[key,value]的一个键值对,其中key是key的一种特殊十六进制编码,value是value的RLP编码。 |
扩展节点(extension) | 也是[key,value]的一个键值对,但是这里的value是其他节点的hash值,这个hash可以被用来查询数据库中的节点。也就是说通过hash链接到其他节点。 |
分支节点(branch) | 因为MPT树中的key被编码成一种特殊的16进制的表示,再加上最后的value,所以分支节点是一个长度为17的list,前16个元素对应着key中的16个可能的十六进制字符,如果有一个[key,value]对在这个分支节点终止,最后一个元素代表一个值,即分支节点既可以搜索路径的终止也可以是路径的中间节点。 |