ethereum/casper——github

github链接https://github.com/ethereum/casper/tree/9106ad647857e6a545f55d7f6193bdc03bb9f5cd

Readme: 

Casper
该库包含Casper合约和JSON-RPC后天程序
Casper Contract
以vyper(一种智能合约语言)实现,实现Casper消减条件和动态验证器集,实现“分叉选择规则”,决定了“规范链”,是PoW中“最长链规则”的替代品
Casper Daemon
通过与JSON-RPC接口的交互实现Casper 验证器的逻辑
EIP-1011
Casper FFG Pow/PoS混合共识模型的标准
VALIDATOR_GUIDE.md 
实现一个CasperFFG 验证器的有关信息

ethereum casper与以太坊go 代码中的ethash共识算法是一个东西吗?

分叉选择规则(fork choice rule)(一时半会搞不懂,回头再看)

parent: 父检查点(即第100个祖先)
commit_frac:已经提交的验证器的百分比,更确切的说是get_main_hash_committed_frac() 2/3以上的输出
pow_head:检查点块的子块(后代块),与父检查点处于同一阶段(最高99级后代块),总难度最高
max_td:pow_head的最高难度
score = commit_frac + epsilon *max_td #已提交验证器的百分比 + 精度 *pow_head的最高难度
subtree_score:此检查点或者它的后代中以太的最高score
preferred_child:subtree_score最高的子检查点
preferred_child_subtree_score:preferred_child的subtree_score

 Casper背景

以太坊将从纯粹的工作证明过渡到混合PoW/PoS。在这个方案中,所有的工作量证明机制将会继续存在,但是将会增加额外的PoS机制,并且将修改分叉选择规则(fork choice rule)(即客户端决定哪一个链是“规范链”的方法)把PoS/PoW机制添加进账户。

Casper合约将会在某个地址CASPER_ADDR发布,此合同将允许任何人存储他们的以太,指定一段“验证码(validation code)”

(有点像公钥)可以被用来签署消息,并成为验证者(validator)。一旦用户被引入到激活的验证者池,他们将能够发送消息以参与PoS共识过程。激活的验证器池中一个验证器的大小指的是他们存储以太的数量。

PoS共识过程的目的是“确定(finalize)”称为“检查点(checkpoints)”,每100个块会有一个检查点。为了最终确定一个块,激活的验证器池中的一个子集,其总大小至少为激活验证器池总大小的三分之二,需要为该检查点提交“commit”消息.一旦最终确定,理论就是“一个人永远不回头”;即时99%的旷工开始不支持一个链包含一个区块,客户端仍然会接收该区块的最终确定。

Casper合约实现了一组称为“消减条件”(slashing conditons)的规则,这组规则经过精心设计,具有以下特性:如果最终确定了两个不兼容的区块(例如A和B最终确定,其中A和B都是C的子节点),那么无论这种情况如何产生,都必须存在某组验证器,其总大小至少等于最近一些有效验证器集的1/3,这组验证器发送的消息触发一些消减条件。如果一个验证器这么做了,那么这个事实的证据“evidence”可以被发送到Casper合约,该验证器的全部存款将会被销毁(除了4%,证据提交者将作为发现者的费用“finder fee”).因而,恢复一个最终确认的块是非常昂贵的,可能比购买足够的采矿设备以便永远对目前仅有额PoW以太坊链进行重复的51%(半数以上)攻击更昂贵。

猜你喜欢

转载自blog.csdn.net/liudaoqiang_tj/article/details/81351226