一、一句话描述游戏
Fomo3D,一个典型的资金盘游戏,玩家以递增的价格买钥匙,如果一段时间内无人买钥匙则游戏停止,最后一个钥匙买家赢得沉淀资金的一半,另一半资金均价回购所有的钥匙。
怎样使其不是骗局?1、没有人控盘,最后拿钱跑路;2、资金盘(“旁氏”)的规则是公开的。
二、一句话拆解
游戏规则一旦被制定、被部署,就无法被修改,连运营者开发者都也无法修改;所有玩家不需要信任游戏的开发者不会作恶,也不用担心相信游戏的运营过程会有任何的猫腻。
在业务全部信息可形式化的范畴内,让这个计算系统可以自证清白。
三、如何实现自证清白
(一)前提或限制: 相关业务的信息必须能够被形式化并体现在系统内部
例子:比特币的储值、支付、发行过程(规则)可以形式化
但是比特币对法币的价格不在系统内部(无法形式化)
(二)业务信息的载体:系统承载的业务逻辑代码必须开源,并且可以证明实际系统中运行的代码就是源码公开的那一份
(三)保障开源、公信运营的方法论:没有授权控制方,系统的运营不属于任何一方。所有人在这个系统中都没有既定规则以外凌驾于其他人之上的特殊优势,包括开发者
(例子:比特币作为支付系统,任何接入方无需申请,也不需要和任何方签订协议,也不会被费率歧视或者担心哪天会被吊销)
(四)实现这种方法论的方法:系统的物理计算设备去中心化
四、关于系统的物理计算设备去中心化的理论:脱离特定物理计算设备的图灵机
(一)图灵机:"输入集合、输出集合、内部状态、固定的程序指令"
存储带输入初始状态(输入)--->读写头读取状态--->内部状态存储器记录图灵机的当前状态-- ->控制程序指令,指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态存储器的值,令机器进入一个新的状态或保持状态不变--->由读写头向存储带写入新状态(输出)
图灵完备(前提或限制):能够抽象成图灵机的系统或编程语言就是图灵完备的;一切可计算的问题图灵机都能计算,因此满足这样要求的逻辑系统、装置或者编程语言就叫图灵完备的。
(二)图灵机的物理实现:冯-诺依曼结构
整个系统的输入、执行逻辑和原始状态都被可信的单一方控制
图1:冯-诺依曼结构
(三)冯-诺依曼结构+无中心物理设备
具体组织方式和过程:
1、多个(理论上无数多个)物理设备(节点)
2、使用点对点网络技术,使得通讯没有一个固定的接入点,不依赖于特定的IP地址(无阻碍的接入)
3、每个节点都获得计算所需要的上下文和输入数据(已确认区块以及未确认交易,即账簿的状态(ledge))--形成类似“memory unit”内存
4、进行计算(计算的逻辑,即其中央处理器执行的是硬编码(hardcoded)在区块链节点软件中的交易逻辑,或者是第三方部署的智能合约)
5、构造成链,不断维护账簿的最新状态
6、广播至全网,试图在链尾追加新的区块--需要取得全网共识,共识机制是工作量证明(PoW)、权益证明(PoS)或者拜占庭容错(BFT)等。
7、形成新的区块,并广播全网记录。
图2:去中心的冯-诺依曼结构
图3:以比特币账簿为例子展示上述流程3在干什么
由于每一手都再次进行数字签名哈希加密(例如第一手得到的X32),得到不可篡改的特性
五、从结构看缺点
(一)速度慢
原因:不可调和的区块大小和出块间隔之间的矛盾
1、区块数据的广播延迟:上述3、7全网同步记账、6全网广播确认共识的过程需要大量带宽;因为任何共识算法,在出下一个区块之前,需要保证前一个区块在全网有一定的同步率,从而约束了每个区块不能太大,出块频率也不能太高(所以优化共识算法并对提升效率作用有限)
2、受限的账簿容量:上述的ledge受限于单台节点的内存容量(例如以太坊会占用将近4GB的内存,是驻留内存,不是硬盘),因为单台全节点必须随时保持全网每一个用户、每一个 DApp 相关的状态在内存里,以供交易验证实时访问
3、注意,单节点算力的提高和区块链体系性能的提高没有联系。任何加速 hash 算法的软件或者硬件都不会提高区块链系统单位时间的吞吐量。例子:比特币区块链的全网 hash 算力提高了万亿倍,但是其吞吐量一直是 7 TPS 左右。
(二)PoW(Proof-of-Work)共识机制下有分叉可能性,进而导致算力攻击基准降低
PoW简述:PoW 设定一个 Hash Target,而 Hash 值必须根据新区块数据拼合一个 Nonce 数据(简单理解为为了获得符合条件的区块签名而生成的随机数)计算而得。找到满足 Hash Target 对应 Nonce 的任何一个节点,便获得了出块的权力。由于只能通过随机穷举的方式找 Nonce+Hash
PoW机制实现了完全非许可(premissionless)的出块权随机指定,竞争节点之间完全不需要协同和通讯,可以支持任意数量的出块节点共同竞争--->强去中心特性。
由于这一点,这个算法导致了区块广播延迟和出块间隔之间的矛盾。当出块间隔较短时,一个新的区块尚未充分全网广播之前(即上述的第6步骤),就有另一个矿工在同样的高度出了另一个新的区块,即发生了所谓的分叉(Fork)。这种情况下,最终其中一个区块会被抛弃掉(ophaned)。发生这种情况的概率不能太高,否则会显著降低原为51%的算力攻击基准(Selfish Mining),极端情况甚至会导致分叉始终无法到达稳定收敛。
参考(区块链到底有什么了不起、区块链公链如何才能快起来)