分类目录归档:区块链

PoW,PoS,DPoS 综述

本文禁止任何形式的全文粘贴式转载,本文来自 代码家 的博客
阅读本文需要部分区块链基础,建议通过 《区块链理论学习指南》开始学习。

工作量证明(Proof of work)和 股权证明(Proof of stake)是区块链理论研究中重要的两个概念,也是区块链最核心的一部分。本文将对这两个理念进行详细介绍。

区块链本身就是一个分布式账本,既然是分布式账本,那么必然存在以下两个问题:

  • 如何在去中心化的网络中建立时间序列的概念
  • 当有多个节点完成记录交易的时候,应该采用谁的记录方案作为共识账本中

目前,PoW,PoS 以及 PoS 优化方案成为了解决这两个问题的一些主流方案。

PoW

PoW 通过让每个节点,在准备提交下一个区块 $ B $ 之前,强制规定在区块 $ B $ 中插入一个数 $ nonce $,使得:

$$ H(B) \leq m $$

上述公式中,$H $ 是某个哈希函数,$ m $ 是某个极小的实数,由哈希函数的性质决定,想要找到符合条件的 $ nonce $ ,就必须通过穷举 $nonce$ 的方法来实现。通过调整 $H$ ,$m$ ,就能控制网络中节点,对于每个区块提交的时间窗口的期望。

在 PoW 机制下,由于找到符合要求的 $nonce$ 期望时间是可以调整的,因而构建了去中心化的时间序列机制。同时,也解决了无中心多节点的结果决策问题,即,整个网络采用最早找到合法 $nonce$ 的节点提交的数据。

PoS

在 PoW 机制中,由于想要找到符合条件的 $nonce$ 往往需要花费大量的电力和时间成本,因此,为了使每个 Block 更快被生成,PoS 机制去掉了穷举 $ nonce $ 这一过程,继而采用以下更快速的算法:

$$ H(H(B_{prev}), A, t) \leq balance(A) m $$

  • $H$ 依然为某个哈希函数
  • $t$ 为 UTC 时间戳
  • $B_{prev}$ 指的是上一个区块
  • $balance(A)$ 代表账户 $A$ 的账户的余额
  • $m$ 依然代表某个认为定义的数

等式左边,唯一可以不断调整的参数是 $t$,等式右边 $ m $ 是某个固定的实数,因此,当 $balance(A)$ 越大,找到合理 $t$ 的概率越大。网络中,普遍对于 $t$ 的范围有所限制,如可以尝试的时间戳不能超过标准时间戳 1 小时,也就说,一个节点可以尝试 7200 次,来找到一个符合条件的 $t$,如果找不到即可放弃。因此,在 PoS 中,一个账户的余额越多,在同等算力下,就越容易发现下一个区块

DPoS

Delegated Proof of Stake(委托股权证明) 是 PoS 的进化方案,在常规 PoW 和 PoS 中,一大影响效率之处在于任何一个新加入的 Block,都需要被整个网络所有节点做确认。DPoS 优化方案在于:通过不同的策略,不定时的选中一小群节点,这一小群节点做新区块的创建,验证,签名和相互监督,这样就大幅度的减少了区块创建和确认所需要消耗的时间和算力成本。

PoS 潜在攻击方法

账本分叉问题 ( Nothing at Stake Problem )

在 PoW 机制中,当账本出现分叉时,对 PoW 这种算力敏感的算法,矿工必须选择一个方向进行挖矿。而在 PoS 这种算力不敏感的时候,PoS 矿工往往会两个方向都挖,以争取实现利益最大化。当多数矿工都在两条链上一起挖矿的时候,就会很容易出现双重支付攻击。

冷启动问题 ( Initial Distribution Problem )

PoS 机制中,由于持币量会对挖矿难度产生影响。因此,当一个基于 PoS 体系代币系统启动时,就会面临早期获得代币的持有者,没有动力去花费或者转移代币给第三方。同时,持有越多的币,越容易挖到矿,这样就产生了代币初始流通性问题。

解决方案:早起几个版本,通过 PoW 机制来创建货币,而非 PoS。由于 PoW 本身的性质,矿工在挖矿过程中往往需要资金来升级硬件,所以会让矿工手中的币流通起来。

长距离攻击 ( Long-Range Attack )

PoS 中,产生每个 Block 的速度相对 PoW 快了很多。因此,少数不怀好意的节点会想着把整个区块链共识账本全部重写。这在 PoW 中是经典的 51% 问题,即:当某一个节点控制了 51% 及以上算力,就有能力篡改账本,但达到 51% 算力是件极其困难的事情。而在 PoS 中缺乏对算力的约束,那么就存在潜在可能篡改账本。

解决方案:同步时,限制最大能接受的分叉节点数量。

贿赂攻击(Bribe Attack)

贿赂攻击流程如下:

  1. 攻击者购买某个商品或服务
  2. 商户开始等待网络确认这笔交易
  3. 此时,攻击者开始在网络中首次宣称,对目前相对最长的不包含这次交易的主链进行奖励
  4. 当主链足够长时,攻击者开始放出更大的奖励,奖励那些在包含此次交易的链条中挖矿的矿工。
  5. 六次确认达成后,放弃奖励。
  6. 货物到手,同时放弃攻击者选中的链条。

因此,只要此次贿赂攻击的成本小于货物或者服务费用,此次攻击就是成功的。相比之下,PoW 机制中贿赂攻击就需要贿赂大多数矿工,因此成本极高,难以实现。

币龄加和攻击 ( Coin Age Accumulation Attack )

在最早的 Peercoin 版本中,挖矿难度不仅与当前账户余额有关,也与每个币的持币时间挂钩。

$ H(H(B_{prev}), A, t) \leq balance(A) m Age(coins) $

这就导致,部分节点在等待足够长时间后,就有能力利用 Age 的增加来控制整个网络,产生非常显著的影响。

解决方案:限制 CoinAge 的最大值。

预计算攻击 ( Precomputing Attack)

当 PoS 中的某一节点占有了一定量的算力后,PoS 中占有特定算力的节点,就有能力通过控制 $ H_{prev} $ 来使自己所在算力范围有能力去计算 $H_{next}$。

$$ H(H(B_{prev}), A, t) \leq balance(A) m $$

PoW 和 PoS 对比

攻击方法 PoW PoS DPoS
短距离攻击(如贿赂攻击) +
长距离攻击 + +
币龄累计攻击 + +
预计算攻击 +
DDos 可能
女巫攻击(Sybil Attack) + + +

总结

从功能和趋势来看,比特币如果被当做数字黄金的话,PoW 在比特币未来的发展中依旧起着至关重要作用,同时由于历史问题,比特币的 PoW 机制很难被切换到 PoS 中去。

但对于其他以实用功能取胜的区块链项目而言,从经济效益,共识速度而言,PoS 或者 PoW/PoS 混合模式将会是未来的主流共识方案。

如果感觉写的对你有帮助的话:
通过 Bitcoin 打赏: 1QD9entYzxbJKUL97S9ip4YqqJeQvQa8Ej
通过 Ethereum 打赏:0xdbd92588811c76a7a0CD22f45217Df1926B0709D

从投资角度看待区块链

ICO 火爆的背后充斥着鱼龙混杂的区块链项目,在峰瑞内部,我们也做了很多区块链相关的研究、分享和讨论。内部讨论和思考最多的是:1)区块链解决了什么问题 2)区块链技术更适合哪些场景。

区块链从表面来看,是不可篡改的去中心化数据库,再深层次来看是去中心化的信任体系,简单总结而言,一个优秀的区块链项目,应该具备以下一些特质。

链生资产

链生资产所对应的反面,是指尝试将现实资产映射到链上。这件事情是可以实现的,但多数是没有太大意义的。因为资产上链这一过程,所面临的问题依旧是个传统问题,依旧需要中心化的机构来做信息可信性验证。因而区块链所扮演的角色就成了分布式数据库的角色,从效率上而言,又无法超越传统数据库,与其如此,倒不如用一个传统数据库方案。

信任是效率本质

链生资产的基础之上,区块链效率的本质在于充分利用区块链的信任体系,打破个体之间建立信任的成本。尽管区块链方案的执行速度,由于分布共识的原因,多数是慢过传统架构的,但是从信任效率来说,如果区块链不是唯一一个可以做这件事的方案,那么这个项目就没有什么价值。所以不要尝试去挑战目前传统意义效率优先的工具,比如 IM 即时通信工具。

把资源变成资产

比特币是把信任变成了一种资产,所有挖矿的矿工,只要自己好好表现,不去欺骗网络,自己就能得到应得的比特币作为奖励。试想没有区块链之前,你需要和一个合作伙伴做生意,建立信任的成本是很高的,更何况,一个人或是一群人对你的信任不论是信任建立,还是信任消亡,都是需要一个反馈周期的。在建立和消亡的过程中,生产力是受到限制的。而在比特币区块链网络内,信任成为一种热插拔式的方案,信任建立和消亡的反馈周期被大幅缩短,同时任何人转变角色是不会遭受历史包袱的(设想现实中,一个犯罪过的人,即便真心想做个好人的难度),也在某种程度上提升了可用劳动力。

案例分析

负面

  • UIP:构建所谓『未来版权,开启个人IP共享时代,该交易平台可为艺术工作者提供文娱作品版权存证、IP 和 IP 衍生版权去中间人交易、IP 创作众筹以及未来的 IP 版权共享等服务。』,文娱作品版权存证这件事情,就是把链下资产(如文学作品)搬到链上的过程,这个上链过程,无法通过去中心化的方案证明提交者拥有作品本身版权,如果想要证明,就又回归到一个传统的中心化机构(如:国家版权局)所正在做的事情。所以整个链,完全就是脱裤子放*,纯粹炒概念罢了。

正面

  • ugChain: 尝试打通游戏间帐号体系,同时建立账号之间游戏资产兑换(比如:用王者荣耀金币兑换皇室战争金币)。本身金币就是链生资产,同时解决了企业间合作过程中的信任问题,个人认为是个非常不错的 idea。
  • ipfs(Filecoin):过去一段时间大热的 ipfs,把我们曾经闲置的硬盘和带宽从资源变成了资产。IPFS 之前,P2P 文件共享已经非常普遍了,但 P2P 的核心问题在于,P2P 并没有将其视为资产,更多的是一种无偿的分享精神作为网络支撑。人是逐利的,P2P 在 IPFS 面前未来可能难以生存。

因此,对于一个优秀的项目,应当从以上三点进行整体评估,不过也有一种项目形态在于协议优化。这种区块链项目更好理解,但也需要更多的技术基础。比如:Monero 强化了比特币区块链本身交易的不可见性,使得每次交易匿名性更好,因此是个值得投资的项目。

大家日常在 ICO 过程中,也应当充分考虑项目本身的质量,越是有价值的项目,越是符合以上几条,不得不承认,ICO 给了『穷人』暴富的机会,但是最终泡沫破裂后,优秀项目的代币才是最有价值的资产。

区块链理论学习入门指南

本文禁止任何形式的全文粘贴式转载,本文来自 代码家 的博客

区块链理论在国外发展迅速,但国内一直没有什么进展,知网上确实存在几篇论文,但多数也是凑热点水出来的。最近在峰瑞资本持续的研究了几个月区块链理论部分,收获很多,想分享一些自己学习路径出来,希望能够帮助国内区块链爱好者快速上手。

研究区块链理论部分,不可避免的是读论文。如果纯粹想开发以太坊合约搞个 ICO 的话,只用看官方文档就行了。读论文的顺序大致如下:

入门论文和白皮书

第一篇:Bitcoin: A Peer-to-Peer Electronic Cash System,这是比特币的原始论文,通篇几乎没有什么公式,只是通过文字来描述整个网络的结构类型,通过简单的数据结构方案,完成了一个去中心化的信任体系网络。如果这篇论文看着有些吃力的话,可以配合《区块链-技术驱动金融》这本书,必须要强调的是:比特币的论文是其他区块链项目(以太坊,ZCash 等)的基础,所以务必花足够多的时间搞懂它。

第二篇:A Next Generation Smart Contract & Decentralized Application Platform Vitalik Buterin 2014 年发表的以太坊白皮书,整篇文章主要讲述了一些比特币网络的缺陷以及自己的一些新的想法,最最核心的部分应属智能合约部分的提议。更多更细节的技术描述在 Gavin Wood 发表的 Ethereum: A Secure Decentralized Generalized Transaction Ledger 一文中,这篇 Paper 是一篇论述非常严谨的文章,在以太坊的发展中起到了至关重要的作用。文章用严谨的数学符号描述了整个网络的工作原理以及细节。(如果你很努力看了,也没看懂,没有关系,只要掌握第一篇的核心思想暂时足矣。)

第三篇: IPFS – Content Addressed, Versioned, P2P File System,IPFS 是基于区块链实现的分布式文件存储系统,对于整个区块链产业的发展起到了很大的作用,在我看来,比特币是单片机,他的诞生只干一件事情,就是记账,而以太坊是一个计算器,可以执行一些简单的运算程序,IPFS 其实就是更底层的存储介质,在未来整个区块链产业的发展中至关重要。IPFS 的整个核心理念更多的是在结合现有技术,并进区块链中。最重要的应该是 KAD 协议,如果大家日常用过种子下载,那 ed2k 协议的基础就是 KAD。说来背后也有很多故事在里面,最早一个叫 Jed McCaleb 的程序员第一次实现了 KAD 协议,发布了 eDonkey(电骡)软件,后来沉浸到去中心化的研究中,持有一定量的比特币后,看到论坛很多人想要交易比特币,因此又开发了全球第一个比特币交易网站 Mt.GOX,曾经一度是全球最大的比特币交易网站,后来不幸被盗,又加入了 Ripple,现在单独 ICO 后在做 Stellar 网络,Stellar 网络也是一个非常有意思和想象空间的网络,大家有兴趣可以去看他的网络白皮书。

第四篇: 其他各种白皮书,目前 ICO 火爆,白皮书多如牛毛,多翻翻看别的白皮书,很快就能判断出项目靠不靠谱,做的事情是否有意义。

进阶论文

比特币被人诟病最多的大致有三点:匿名性、交易速度和费用、浪费电力资源,而针对其缺陷,也有很多学者提出了不同方案。

匿名性

比特币的安全性一直是个非常严重的问题,尽管账户并没有和人做绑定,但比特币所实现的只是伪匿名,交易之间有链接关系(Linkable),整个交易可以被追踪(Traceability)的网络。CryptoNote v2.0 这篇论文成为了目前几乎所有主打安全数字货币的论文基础,如 Monero,Dash,BlackCoin 等都是基于此论文提出的理论做的实现。论文提出两个主要方案,一个是通过椭圆曲线结合 Diffe-Hellman 密钥交换生成了只有交易双方可见的一笔交易,解决了 Linkable 的问题。另一个方案是通过一次性循环签名(One-time ring signatures)机制让每一笔交易不可被追踪。

另外值得一提的是零币(zerocoin)和零钞(zerocash)的概念。零钞是对零币的优化方案。整体思路在于通过零知识验证的方法实现数字货币的匿名性。零知识验证是密码学里比较重要的一个概念。后面的博文我也会继续给大家分享一些相关细节。相关的两篇论文如下:

交易速度和交易费用

交易速度和交易费用的背后本质原因是一样的,即每次交易成本高,并且耗时。因此所有的优化方案基本都是从将多数的交易从链上搬离到链下,即,不实时同步交易数据到整个网络,只有在必须要同步,或达到某个约定条件后再同步到网络,这样就能大幅减少网络共识的损耗,提升速度,降低交易手续费。

电力损耗

比特币电力损耗的一大主要原因是来自于共识机制,为了让网络中对于每一笔交易达成共识,需要消耗计算资源来产生共识和去中心化网络时间戳,因此多数网络优化方案就是替代基于大量计算的共识机制,即替换掉 Proof of Work 工作机制,转而成为 Proof of Stake 机制,因此这方面推荐的论文如下:

  • POS vs POW:这篇主要描述了两种共识机制的方案差异。
  • Proof of Stake FAQ:以太坊创始人 Vitalik 撰写的 POS 机制的一些细节描述。
  • Plasma:下一代以太坊扩容自治方案,里面提到了 POS 部分。

所需理论基础

区块链背后依赖的是密码学共识算法、和博弈论

密码学

目前整个区块链网络更倾向于安全性更高的椭圆曲线方案,也包含一些常规的摘要、加密、密钥交换算法。如果没有密码学基础,买一本书,看 Paper 的时候不懂的地方参考参考即可。密码学中也涉及一些抽象代数学科的内容可以买本书也作为参考。

共识算法

共识算法的核心抽象是拜占庭将军问题,相关的文章论文非常多,学习过程中多搜索多看即可。拜占庭将军目前解决方案较为成熟的是 PaxosRaft 算法。

博弈论

博弈论在区块链的设计中起着非常隐性的核心作用,其最终目标是如何让网络达到一个平衡,坏人没有动力使坏,好人会努力维护网络。

总结

学习区块链理论部分需要非常多的耐心和毅力,去了解很多理论细节,网络协议的设计往往都是最有挑战的事情,工程实现并不是最难的。因此如果对区块链非常感兴趣的话,一定要准备好下苦功夫,后面我还会写一些相关博文,从更多的角度详细介绍区块链的理论部分以及深入到代码和工程中去探讨区块链。ICO 的火爆只是一群骗子(大多数都是)的狂欢,迟早爆炸,而后面大浪淘沙,优秀的项目需要更多区块链人才,所以快去做好准备吧。

如果有兴趣和我交流,欢迎加我微信:daimajia,如果文中要不正确的地方,欢迎斧正。

通过 Bitcoin 打赏: 1QD9entYzxbJKUL97S9ip4YqqJeQvQa8Ej
通过 Ethereum 打赏:0xdbd92588811c76a7a0CD22f45217Df1926B0709D