客观: 1. 去中心 2.公有 3. 钱包地址通过私钥,公钥非对称加密. 只有私钥的人才能操作自己的数据.
1. 数据历史不可修改 [不是通过hash值链,pos可以无hashCode,而是由于去中心] 除非你攻破51%公网节点,然后修改所有值. hash 值链只是增加了篡改难度
2. 整体的代码执行逻辑是一致的. 所以这个代码执行不一定是处理帐户余额加减. 可以是执行物品的持有和不持有.(资产上链原理) 其实还是有点不明白资产上链的原理? 资产的概念不再是比特币传统的帐户计数了.
主观: 1.可信 (历史数据可信,交易过程可信.只有私钥的人才能操作自己的数据.) 2.透明性 3.开放性 6.匿名性.
附录:
1. PBFT算法设计和实现上,虽然IBM理论很强,拥有许多顶尖的PBFT论文,但在实现上和运行上并不如tendermint稳定,tps也相对较慢,所以1.0摒弃了0.6的PBFT,改用新架构并且采用SBFT
2.
共识算法的比较:Casper vs Tendermint
1-去中心化;2-透明性;3-开放性;4-自治性;5-信息不可篡改;6-匿名性。
传统互联网做法.
先来看看传统互联网,怎么储存数据和避免篡改. mysql innodb ,如果使用b+tree 作为索引, 那么数据结构是二叉树,排序根据id(createTime 也行). 附带查询索引. 为了避免数据篡改,我们一般会增加一个 hashCode ,来对应某个数据. 读取的时候校验下. 这种方式还是避免不了篡改: 1. 知道 hash 算法,把值和 hash 值直接修改 2.不知道 hash 算法,拷贝其他行的值和 hashCode 修改之.
比特币的做法
1. 去中心,增加其他节点. 你改了自己的节点. 其他节点的数据是可靠的.你改不了. 2. 把所有行的变更行为通过链条串起来,下一个 hash 值和上一个有关系. 增加篡改的工作量. [其实也可以用二叉树, 用顺序插入法来保证插入只在叶子节点,其实和链表又是一样了,这种二叉树无法查询. 如果可以在中间插入的话,每次插入需要修改下游的节点的 hash 值. 插入成本比较大.]
这种做法,又引入了新的难题,分布式节点如何接受写请求,并且避免恶意节点,即 1.拜占庭将军问题(一个更新共识是否有恶意节点),2.以及乱发提案的问题. 3.接受到更新时优先认可哪个提案的问题. 对应的解决方案有 1. 类似 paxos 的二阶段选举法,存在问题是如何惩罚恶意作弊节点 2. 通过 hash 计算难, 验证简单的特性来屏蔽恶意节点. 并且认可长链的方案. pow通过惩罚计算用的电力来天然解决这三个问题. 3. 通过pos来解决1问题, 惩罚的机制 来解决2,3问题. Tendermint .
正是以上的做法,保证
1.不过单就PBFT算法设计和实现上,虽然IBM理论很强,拥有许多顶尖的PBFT论文,但在实现上和运行上并不如tendermint稳定,tps也相对较慢,所以1.0摒弃了0.6的PBFT,改用新架构并且采用SBFT
2.共识算法的比较:Casper vs Tendermint
Casper的PoS提议机制与Tendermint提议机制最大的区别是相比较伪随机选择领导者,前者的验证者可以基于自己见到的块提出块。
Casper(s)对于倾向于活跃性而非安全性环境而言,它就是Tendermint核心思想的一个改编。
Casper的PoS共识最重要的一个部分就是检查点(checkpoints)。Casper在50区块增量的时候评估最终确定性就称之为检查点,每50个块片段就称之为周期(epoch)。通过验证者在每个周期发送投票消息时触发这个处理过程。