巴比特Gavin Wood专访

原文地址:http://mp.weixin.qq.com/s?__biz=MjM5MzEwMzIxMA==&mid=2653196760&idx=3&sn=1941d554fc405f2d16714ad72fbad490&chksm=bd4c1ddd8a3b94cb6e2ca78f8b17c59e447fa9d9523301efa12e914c6643655dfbdef545fe46&mpshare=1&scene=1&srcid=#rd

巴比特:您在区块链行业是一个传奇人物,却总是很低调,那么您在日常生活中是怎样一个人呢?
Gavin Wood:好吧,我觉得你必须时刻跟着我才能真正知道我是怎样一个人。但我在生活中其实很平常。我喜欢我的工作,喜欢有一些社交活动。我喜欢美食,喜欢偶尔和朋友一起喝点啤酒。喜欢单板滑雪,喜欢跑步,还喜欢游泳和打网球。当然,我也喜欢旅游,很高兴来到上海,四处走走,看看上海的生活是什么样的。补充一下,我还喜欢桌游。
巴比特:您是一位很资深的程序员,那么您认为,代码对于您来说意味着什么?是一种工作,一种爱好,还是有某些特殊的意义?
Gavin Wood:代码是一种激情,一种艺术形式。我们现在所处这个数字技术时代与欧洲的启蒙时代(实际应指文艺复兴)相似,当时莱昂纳多达芬奇这样的人会发现或重新发现很多东西,比如设计和哲学。我们在某种程度上是幸运的,能够在日常工作中取得突破。
我们能够感觉到我们的工作在某种意义上是创新的。我们正在构建新事物,我们正在发现新事物。我们每天在为尚未解决的问题创造一些新的、令人惊叹的、优雅的解决方案。我会说我们在某种意义上是一群非常幸运且技艺高超的工匠。是的,我们生活在一个幸运的时代。
巴比特:在日常工作中,您还会负责写代码吗?还是说对外宣发,管理之类的工作更多一点?
Gavin Wood:是的,我还是会继续写代码。如果你有兴趣了解我正在编码的内容,你可以查看我的个人资料并获得相关的链接。但我倾向于专注运行时客户端代码的相关内容。我需要关注治理、金库(Treasury)、staking模块、余额模块以及其他几种实用程序代码。但是,我倾向于不参与共识部分,它非常复杂,我很乐意让其他一些团队成员,尤其是Robert处理那部分内容。
我也会负责项目的整体情况。我会提出问题,至少将大问题提交到问题跟踪器中。我负责确保发布按时进行,并确保进入项目的人员着手完成需要优先完成的工作。不过,我在一线的写代码工作上仍然非常活跃。
巴比特:Polkadot是一个跨链项目,就是将不同的区块链项目连接起来,您为什么会决定创建这样一个项目?Polkadot的愿景是什么?
Gavin Wood:我创建这个项目是为了尝试进一步为区块链领域的技术做出贡献。对我而言,我做项目一直是为了技术,市场则次要一些。我的项目就是为了推动技术的进一步的发展,或者说进步。
一开始的愿景实际上只是尝试找到一种更有趣的做事方式,或者只是为了探索和实验而去寻找一些不同的做事方式。但是我认为随着时间的推移,行业的发展,我们会发现区块链行业在内部越来越具有对抗性(antagonism)。
我认为Polkadot在某种程度上至少可以作为对抗这种对抗性的一种手段,成为区块链这个动荡不安的世界中的一个安全港。
巴比特:Polkadot要连通很多区块链,但是区块链项目是分布在世界各地的,您会担心地缘政治问题吗?
Gavin Wood:不担心。我认为在区块链行业中,不同的项目将凭借各自的优势展开竞争。因此,尽管各个项目团队位于不同国家,也不会有什么地缘政治问题。现在已有证据表明地缘政治对于现有项目(以太坊和比特币)来说并不是那么重要。尽管它们已经开始在不同的国家在不同的时间点创建,但它们仍然是非常全球化的概念,并且在每个主要的大陆都有自己的追随者。
因此,我没有看到Polkadot社区存在这方面的问题。我认为对于Polkadot而言,一个有趣的事情将会是,如果两个项目成为Polkadot社区内的竞争项目,它们将如何处理它们的分歧,是否会发生冲突以及这些冲突在一个生态系统中可能如何发展变化。
但我认为,如果我们看看现有的生态系统,至少以太坊和比特币这样的生态系统已经成功承载了竞争性的项目并继续保持良好的状态。例如,在以太坊中,Gnosis和Augur两个项目都试图解决同样的问题。它们已经在以太坊上共存了一段时间了,我们还没有看到以太坊生态系统因为它们出现了什么问题。
巴比特:未来,许可链也可能通过Polkadot连通起来吗?
Gavin Wood:是的,有可能。我认为许可链连接到Polkadot上不存在什么问题。同样,我认为将那些需要许可的智能合约部署在以太坊上也是不成问题的。只要知道平台本身是有用的,许可不许可基本上没什么关系。所以,我非常乐意看到许可链会部署、连通到Polkadot上。
巴比特:现在越来越多的项目正在转向或者使用PoS共识机制,您对PoS和PoW这两种共识机制有什么看法?
Gavin Wood:我觉得PoW很糟糕(PoW is shit)。工作量证明并不是真正的工作量证明。正在做的不是工作量,正在做的是浪费。所以PoW中的“W”真正代表的是Waste(浪费),它是Proof of Waste。我认为PoW实际上是一种化石燃料共识。
PoW是第一个出现的共识机制,因为它是最容易理解的,最容易编码的。就形式逻辑而言,PoW的共识算法大概就三到四行长。非常非常小。如果你看一下PoS,那就非常可怕了。工作量非常大。PoS背后的数学,背后的逻辑极难理解,也很难提高正确性。
这就是为什么比特币不是PoS。 中本聪在编写比特币时,并不想涉及PBFT的细节,也不想去试图证明bonding的持续时间是否足够。这太费劲了。但尽管如此,这就是事情发展的必然过程。就像电力的早期发明者没有尝试发明太阳能技术或地热能源。但随着时间的发展,事情总会发展到这个阶段。我们继续燃烧区块链煤炭(指代PoW)的时间也就是这么长了(因为现在有了更先进的PoS来替代PoW,是时候替换了)。不过,如果有更先进的共识机制,我肯定会把PoS替换掉。
巴比特:作为Polkadot的直接竞争对手,Cosmos在上个月发布了主网,而你们还没有具体的时间表,您会感到有压力吗?
Gavin Wood:我认为Cosmos是否是Polkadot的直接竞争对手还有待争论。不过,我认为这两个项目是为了解决不同的问题,Cosmos有非常不同的技术方向。我主要将Cosmos看成是Tendermint的一种侧链。我认为基本上Parity Bridge和Parity 以太坊PoA链可以或多或少解决相同的问题。xdai是一条单独的区块链,通过某些权限桥接到以太坊,以便它可以共享稳定币DAI。它或多或少是Cosmos的一个竞争项目。
Cosmos不是具有共享安全性的异构多链技术。当然你也知道人们喜欢谈论Cosmos是如何与众不同的,而且以太坊是怎么的不同。但我很确信Polkadot会在任何其他项目到达同等的技术水平之前早早到达它想要到达的目的地。
巴比特:一些人认为,开发者能够在Cosmos上获得更大的自由度,因为他们能够在自己的侧链上创建自己的代币,设置自己的验证节点。因此他们认为,Cosmos更像安卓系统,Polkadot更像iOS。您对这种说法怎么看?
Gavin Wood:对于Polkadot,完全可以在平行链(parachain)上创建自己的代币。事实上,从某种意义上说,它赋予了人们自由去为自己真正想要的代币创造经济学,而不是被迫进入特定的通货膨胀模型以负担自己的安全。至少某些项目可能希望拥有自己共识机制的独立性,但Cosmos的共识机制将永远是Tendermint。Polkadot则不会, Polkadot可以提供Bridge技术,以便允许这些项目保持其共识机制,保持其通胀代币,负担自己的网络安全,但仍然能够连接到Polkadot社区。
我不认为项目希望负担自己的网络安全是一件坏事,但我认为在大多数情况下这是不必要的。但如果一定要这样的话,那么Polkadot拥有适合的产品。但在大多数情况下,我认为实际上项目更好的选择是参与Polkadot提供的共享安全模型。
巴比特:Cosmos采用了双代币的经济模型,其中ATOM是原生的权益抵押代币,Photon是费用代币。但是在Polkadot中,我们只有一个代币DOT。您如何看待多代币的经济模型?
Gavin Wood:我对单代币的经济模型很满意。我的意思是,最终,无论是否有多个代币,它们总归要有一个价格,你可以根据价格来换取代币。而这通常会假设代币市场是一个流动的市场。然后基本上这两个代币之间不应该产生任何摩擦(两者自由兑换实际上就相当于只有一种代币)。
我不认为我们非常需要有不同的代币,比如说费用代币。但是,如果事实证明我们的确需要一个二级市场流动的费用支付代币,效果也更好,那么我非常乐意在未来将Polkadot升级到这种模式。
巴比特:社区对Polkadot主网的上线期待已久,据说主网将在今年年底发布,那么目前你们工作的重点是什么?您能透露下主网到底什么时候上线吗?
Gavin Wood:我们的目标仍然是在今年年底前推出。目前,我们专注于将最后的修改纳入共识机制。所以我们正在实施Babe协议,它将与Grandpa协议一起实施。协议的这一部分专门用于提供区块而不是最终确定(finalize)。这些工作完成后,我们还有关于网络优化的很多其他事情要做。我们需要添加一个或两个附加功能,完成关于安全性和审计的大量工作。所以这基本上就是我们今年接下来的时间要做的事情。
我们希望在夏天,可能是7月的某个时候接近完成功能的完整性。审计工作已经开始。我们已经有团队在检查现有的Polkadot代码库。基本上,根据审计的情况,它可能从7月持续到8月、9月和10月。这些审计的进展情况将准确地决定我们何时进行主网发布。我们一直抱着安全第一的态度。在获得第三方专家的发布建议之前,我们不会发布任何东西。我们需要确信至少在最初的几个月内不会受到大量的网络攻击。
巴比特:Polkadot今年会进行第二次公开的代币发售,您能透露下这次代币发售的相关信息吗?您会考虑通过IEO发售代币吗?
Gavin Wood:我没法说太多,因为目前团队还没有做出任何决定。我们致力于在网络全面发布之前发售最后20%的代币。我们目前的想法是先进行一次私人销售,售出这百分之二十的百分之几,然后相关法律机构都认可后,那么我们将尝试进行公开销售。
我们的目标是在主网发布之前的三个月左右时间发售。因此,如果我们假设11月中旬推出主网,那么我们可以预期在10月、9月和8月中旬进行代币发售。
但就像我说的那样,目前还没有做出任何决定,因为为了进行公开的代币需要完成大量的工作。当然,现在有IEO平台。因此,我们需要研究这些平台,看看它们之间的差异。 IEO当然是一种潜在的发售途径,但目前尚不清楚它们是否必然满足我们的需求,或者它们是否是最佳的平台。我想说可能不太可能,但是,我们还没有完成我们的研究工作,所以最后才会做出决定。当有决定时,我们会发出公告。
巴比特:您对中国社区有什么印象/看法?未来在中国有进一步的计划吗?
Gavin Wood:中国社区非常的兴奋和活跃,可能是世界上最兴奋活跃的社区。 来中国并和大家见面是一件非常棒的事情,特别是在开发者社区方面。 这里的每个人都充满了活力和激情。 我想这是我第三次来上海。 上海正在成为一个我真正喜欢呆在这里并四处乱逛的城市。 这里的食物很棒。我今年接下来的时间没有任何特定的出行计划,但我相信我会抽出时间再次来上海。

什么是 Substrate

如果你关注了 Polkadot 项目,可能会多次看到「Substrate」这个词。 它是 Polkadot 项目的重要组成部分,但有关它的信息非常少。 白皮书或黄皮书里找不到, 至少没有专门的介绍「Substrate」。 从较高的层面来看,Substrate 是一个可以创建数字货币和其他去中心化系统的框架。 这太笼统了,本文详细说说。
首先,Parity Substrate 是独立于 Polkadot 的项目。 Polkadot 是基于 Substrate 构建的,现在你可以使用 Substrate 来构建新的区块链项目,而不用等 Polkadot 开发进度。
那到底什么是 Substrate 呢? 它是一个框架,类似于 Express 框架或其他 Web 应用程序框架,只不过是用于构建分布式或去中心化系统,比如加密货币项目,或消息总线系统。 正如大多数 Web 应用程序不需要重新实现自己的 HTTP 一样,我们认为创建新区块链也不需要从头实现网络和共识部分的代码。网络和共识的开发需要密码学专家、网络安全专家、网络工程师、网络运维人员等等,但是其实你应该专注在产品的核心业务逻辑上。 所以如果你使用 Substrate,只需要实现非常少量的回调,就能得到这些特性:
  • 共识机制,不可逆性,出块投票逻辑。 即使你的项目不需要构建加密货币,甚至不是需要区块链的项目,Substrate 也可以用于需要拜占庭容错机制的项目,比如网络中部分节点宕机、失效或者被恶意控制,但整个网络仍然可以继续正常工作。
  • p2p 网络。比如 p2p 节点的搜索,同步等等。
  • 运行时的 WebAssembly 虚拟机。可以运行智能合约,或者其他基于 Substrate 开发的项目。 虽然你可以编写自己的虚拟机解释器,但我们坚信使用 WebAssembly 运行时的好处是,可以让你利用在 WebAssembly 社区的工作成果 ;
  • 在浏览器中运行一个节点,并与其他节点通信 ;
  • 跨平台的数据库 / 文件存储系统,还支持浏览器环境 ;
  • 客户端平滑更新。对于可能影响共识的更新,会将代码编译成 WebAssembly 的执行文件,然后部署时作为网络上的一条消息。 这样的机制提供了这种可能,就是你还可以本地保有多个版本的共识代码,并在本地执行一个与部署环境不同版本的共识,Substrate 会去处理本机环境与部署环境的差异。因为 WebAssembly 有回退机制,所以保证不会有不受控制的硬分叉或其他难以解决的共识导致的问题。
  • Polkadot 发布时立即接入你的项目。 虽然说使用 Substrate 构建的项目可以编译出一个独立的客户端程序(就像现有的区块链项目一样),但是把你的项目接入 Polkadot 就可以共享 Polkadot 的安全性和链之间的互操作性。 Polkadot 本身就是使用 Substrate 构建的。Polkadot 实现了 Substrate API,会对 Substrate 框架中的任何漏洞进行快速反馈,很方便的运行 Polkadot 测试网,甚至再启动一个 Polkadot 链作为侧链。 这篇博客比较详细的介绍了 Polkadot。https://medium.com/polkadot-network/how-polkadot-tackles-the-biggest-problems-facing-blockchain-innovators-1affc1309b0f
那你需要自己实现哪些东西呢?从本质上讲,Substrate 是状态机,可以包括交易等内容。为了使 Substrate 尽可能通用,它本身没有任何交易。它有我们所谓的「Extrinsic 外部交易」,这个「外部交易」是一个二进制 BLOB,可以用来存储你想要的任何数据。对于大多数链而言,这些 BLOB 数据包括了交易,但使用 Substrate,你完全可以从网络中去掉货币的概念,然后创建一个分散的 Erlang 样式的 actor 模型并发系统,赋予该系统一组受信任的权限,来验证网络行为的正确性。
如果你需要货币和交易,那么可能更简单 , 只要约定一个协议和一个数据库来访问数据。它比其他分布式架构(如微服务)更容易 ,因为运行的代码和数据存储在同一个地方,仅为数据存储提供向后兼容性就可以。对于具有私有交易的链,实现要复杂一些。
下面简要介绍启动并运行一个完整的区块链需要做什么:
1、初始化块的函数。该函数根据前一个块的头创建一个新的块。 块的头包括:1. 块高度 ; 2. 块状态的加密索引,主要用于轻客户端验证块是否正确。 加密索引类似于 hash; 3. 块中二进制 BLOB 的加密索引 ; 4. 父块的 hash 值 ;
2、块头的自定义数据。轻客户端仅同步块头,更新轻客户端时,注意处理块头中自定义的数据。
3、将交易写入块的函数。 这个函数也更新链的状态(例如,账户余额);
4、生成块的函数。生成一个写好头、写好 BLOB 数据的块。这个块就可以广播出去了。
5、校验块的函数。 全节点运行这个函数,确认接收到的块在接受之前是有效的。 例如,在资产链中,你可以检查是否有人人花费超过其自身余额的钱。
需要注意的是,块头包含块状态的信息,在生成块的函数里,要把块状态从初始状态设为完成状态,校验块的函数里,要把从完成状态变成校验通过状态。 块状态错了的话可能会导致共识问题。虽然以后可能会用其他方式来处理块状态,但是现在还需要这么做。当前的方式也不会太麻烦,额外写一个校验 BLOB 数据的工具函数就好了。
此外,你需要自己维护一个公钥集合,用于验证块的签名。块的签名验证与链使用的共识机制无关。 给块签名的私钥所对应的公钥应该放进这个公钥集合, 集合里的公钥可以变化,但每个块都由块创建时选择的集合进行验证。公钥集合里的公钥变化会产生的不同的公钥集合版本,以及由此引出的问题 Substrate 都会自动处理好。 公钥越少,安全性越低,公钥越多,验证耗费越多,这里要自己衡量。 通过签名验证后,块就被认为是「最终的」(即不可逆的)²。
使用 Substrate 创建链需要手动的处理 POS,不是所有项目都要在链上发行数字货币。比如,测试网的币就没价值,还有消息总线的项目根本不需要数字货币。但是,在 Substrate 上编写一个库可以很容易地发行数字货币,并自动支持交易和 POS 共识³。比较推荐的使用 Substrate 方式,是在 Substrate 上构建更高级别的库,把 Substrate 作为项目的模块。随着 Substrate 的完善,会像编写现代 Web 应用程序一样轻松构建新链。
现在 Substrate 还没什么学习资料。 如果不是 Polkadot 团队的成员,很难学会本文讲的东西。 不过 Substrate 教程和文档很快就会有了。
补充 3 点:
你可能希望有向后兼容性,以便外部工具可以轻松地与你的链进行交互,你可以使用 protobuf 免费获得高效的向后兼容存储。
举一个例子,像比特币或以太坊这样的纯 POW 链根本不具有终结性,因为可能的验证器集是无限的。
例如,一个简单的 POS 链可能会在每个区块设置一次验证器,通过选择拥有最多权益的 100 个账户,并在获得不当行为证明时惩罚它们的权益。
最初于 2018 年 7 月 9 日在 paritytech.io 上发表,原文 https://medium.com/paritytech/what-is-substrate-29af4231d7e0

Polkadot的轻白皮书

背景:当前区块链技术存在的五大不足
  • Scalability
    现有的区块链技术没有能力运行必要的交易,以实现一个去中心化的世界的承诺。
  • Governance
    现有的区块链治理关注的是PoW和PoS,错误地奖励少数人,而牺牲了许多人。
  • Isolability
    区块链网络是孤立存在的,它们之间没有通信或互操作性。比特币无法与以太坊通信,后者无法与私人链进行通信。
  • Developability
    由于缺乏集成机会,DApp的创建受到了限制,因为在生态系统中既没有可伸缩性,也没有互操作性。
  • Applicability
    由于缺乏可伸缩性、互操作性和可开发性,终端消费者使用案例没有实现。区块链还没有将核心技术与实际应用之间的差距弥合,在这一点上,它仍然是理论性的,而不是实际的。

Polkadot是什么:连接各个区块链的网络

允许新设计的区块链进行通信和共享安全,同时仍然允许它们具有完全任意的状态转换功能。
Palkadot专注解决三个层面的问题:
  • 1.Interoperability 互操作性
  • 2.Scalability 可扩展性
  • 3.Shared Security 共享安全

Interoperability

Polkadot is designed to enable applications and smart contracts on one blockchain to seamlessly transact with data and assets on other chains.
Polkadot的设计目的是让应用程序和智能合同在一个区块链上无缝地与其他链上的数据和资产进行交易。

Scalability

当前的交易是通过网络节点一个接着一个进行处理,从而使得网络可扩展性成为一个瓶颈。
Polkadot gives the ability to run several parachains*, each processing multiple transactions in parallel, which allows networks to obtain infinite scalability.
Polkadot提供了运行并行多链的能力,每一个都并行处理多个事务,这使得网络能够获得无限的可伸缩性。

Shared security

在安全资源上,链自然地相互竞争。然后他们挥霍它。
With Polkadot, security is pooled within the network, which means that individual chains can leverage collective security without having to start from scratch to gain traction and trust.
有了Polkadot,安全就在网络中被集中起来,这意味着单个的链可以利用集体安全,而不必从头开始,以获得牵引力和信任。

The Breakdown

Polkadot is a heterogeneous multi-chain technology.
Polkadot是一种异构的多链技术。
Polkadot有许多具有潜在不同特征的并行多链,这使得他们更容易获得匿名或正式的验证。事务可以在整个链中展开,允许在同一时间内处理更多的事务。
Polkadot确保每一个区块链都保持安全,并且它们之间的任何交易都是忠实执行的。可以建立专门的“桥”来连接独立的链。
  • Relay chain
    在各个链之间进行共识的协调和交易的转发
  • Parachains
    推选出的链进行交易的收集和处理
  • Bridges
    用他们自己的共识将各个链连接起来,比如以太坊

Polkadot Network Participant Roles 网络参与者角色

  • Validators
    通过标记DOTs来保护传递链,验证来自collator的证明,并与其他validators达成一致
  • Nominators
    为了保护传递链,选出更好的validators和标记DOTs
  • Collators
    通过从用户那里收集对用户的交易,并为validators生成状态转换证明来维护对其的支持。他们还监视网络并向验证器证明不良行为。
  • Fishermen
    钓鱼执法者,最后的安全边界,他们监控网络并且证明那些不良行为给validators

没有一条链能通吃全世界

你去工行,转账给建行的朋友,填单输密码,完成第一步:支付。
但钱并没有到你朋友账上,此时工行开始第二步:结算——把收款人信息发送建行,把钱交给人民银行(人行)。
人行负责第三步:清算——左手收下工行的钱,右手把钱交给建行。最终,建行依照工行发来的收款人信息,把人行送来的钱塞进你朋友账户。
图1 转账资金的实际路径:支付、结算和清算
明明是件小事,为什么要麻烦三家单位、叠出一个倒三角?
因为效率。事实说明,用人民币满足全国支付需求,图1的倒三角效率最高。
人民币是人民银行挖出来的币,光挖就已很辛苦,如果还要管全国人民两两间的支付,一定积劳成疾。
所以,人行只做清算,支付这种小事就拜托商业银行。商业银行是人民银行的帮手,如果换成区块链世界的语言,可以说:商业银行是人民银行的侧链。
一、什么是侧链?
侧链指镶嵌在两条主链间的区块链,相当于一座桥,连通主链数据。广义侧链泛指跨链技术,可以在链和链之间交换信息和价值‍[1]。
实际应用中的两条主链,常常一条是清算链,一条是应用链,而侧链架在中间:
图2 侧链的功能排位
清算链类似人民银行,负责清算资金。最被公认的清算链是比特币,因为没有一个币像它那样被全世界黑客冲撞9年依然滴水不漏。
应用链承担应用功能,可以理解为购物或玩游戏的App,需要付款时,就拜托侧链与清算链沟通,快速完成收付。
可是,为什么不直接用比特币支付?因为效率,用比特币确认一笔交易短则一小时、多则几天,谁如果因为渴想用比特币买水,等币付到账,那人多半就不行了,所以这时有根侧链就能救命。
那侧链是如何连接清算链和应用链的呢?核心逻辑并不复杂:
1、将清算链的密钥存在侧链上
2、在侧链上建立快速支付通道
3、把清算链上的资金充值到应用链上
如果把图1的人民币清算系统上推一层,到我们熟悉的场景,就很容易理解侧链:
图3 支付宝是侧链
支付宝是架在商业银行和商户中间的侧链。银行卡密码相当于私钥,可以充钱进支付宝,进行快速支付。
上文所指都为广义侧链,它包含三种模式:公证人、狭义侧链、哈希锁定。
公证人指由第三方人或机构担任信任中介,属于中心化解决方案,一般用于私有链或联盟链;
狭义侧链指拥有主链所有功能、但不被主链所知的链。具体而言,是把主链的区块头写入侧链,侧链和主链使用同样的共识算法。比如,有种狭义侧链能连通比特币和以太坊网络,用比特币去跑以太坊上的智能合约。
哈希锁是指用哈希技术锁定资产,在无需信任中介的前提下完成交易,哈希锁最著名的案例,来自比特币闪电网络。
二、什么是比特币闪电网络?
比特币闪电网络(Bitcoin Lightning Network)由Poon和Dryja在2015年提出,它的思路特别简单:把交易踢到比特币区块链之外处理,相当于把比特币接上支付宝,建立链下快速支付通道。
“链下”指交易记录不在比特币区块显现,而是记在闪电网络上,但全程都能保证双方权益,具体如何实现呢?
如果你经常要付1个比特币给你朋友,每次都心疼手续费,那闪电网络就能帮到你:锁定10个币,“锁定”的意思是把币打进一个地址,而这个地址的私钥存在闪电网络上,需要用双方在闪电网络上的私钥才能打开。
图4 你和你朋友之间建立的支付通道
这样,你和你朋友之间就建立了一条通道,所有支付都像支付宝那样即时到账、并且免费。
你支付8次后,锁定的10个币中,2个仍属于你,8个归你朋友。同样,你朋友也可以付给你币,可以来回无数次,但10个币的总量始终不变。
交易可以热热闹闹,但在最终结清之前,比特币区块链上并不能查到任何一笔交易,“结清”的意思就是把账记到比特币主链上,但只记双方往来后的最终结果,记完账后,原来锁定的10个币各归其主,通道关闭。
同样的逻辑,可以通过第三方在陌生人之间搭建支付通道:
图5 使用闪电网络建立的第三方支付通道
A和C之间没有直连,但AC都和B有连接,于是,A就能通过B支付给C,可此时有个信任问题:如果A把币给B,B不给C该怎么办?
这时,A就需要一个随机数s来帮忙。
随机数s相当于密码,A把随机数s的哈希值H告诉B。B只凭H无法取到A的钱,所以只能在自己和C建立的通道里把钱给C,但是C也拿不到这个钱。
此时,A把随机数s告诉C,C哈希随机数s,若等于H,则取到B给C的钱。B的钱被C支取后,B也看到s,凭s取到A给B的钱。
用哈希锁接力信任,最终让三方了清。
如果闪电网络能跑起来,最可能变成B的是各大交易所,它们会演变成中转节点,一些人会锁定比特币,和交易所建立通道,能提升全网支付效率。
闪电网络今年3月悄悄上线,目前还在试验性打磨,麻省理工学院5月下旬在模拟环境中测试出闪电网络能达百万级吞吐量,并且能够实现更加复杂的智能合约。
但开发者和市场都很谨慎,目前还未铺开。作为广义侧链技术的一种,闪电网络不仅需要被人了解,更需要被时间了解。但在此之前,最需要的是澄清很多人对区块链的误解。
三、真的会一条链通吃全世界么?
很多人认为:比特币是第一代区块链应用,以太坊算第二代,EOS等属于第三代的萌芽尖。这种观点看似合理,但却暗含一个前提:未来有一条能通吃全世界的链。
不过这条提前未必成立。
因为太阳底下没有新鲜事,我们回溯历史,回顾区块链的前身TCP/IP协议,就能估算大概率的演化脉络。
TCP/IP协议是互联网的基座,核心逻辑用下图就能说清。
图6 TCP/IP协议模型
顶层的HTTP协议能让所有人看到五彩网页,它种在TCP之上。TCP协议保证数据传输无误,它种在IP协议之上。
IP协议负责找对到接收方,是当今互联网的底层。出人意料的是,IP协议极其简单,用5张纸就能写完所有技术细节。IP没有安全功能,没有加密协议,不支持大数据包,不能解析地址,也不管传输质量好坏,简单到简陋。
可IP协议为什么能在过去50年中,成为整个互联网不可替代的支点?
因为它足够简单,IP只负责找准点,其他问题一概不管。至于那些问题的解决方案,并不是通过完善IP协议本身完成,而是在IP之上叠加其他协议完成:UDP、TCP、HTTP、IPsec、QoS、MPLS、HTTPs等都在其列。
最终,互联网变成我们今天层层叠叠的协议组群。可问题是,为什么没有公司做一套完整的协议、解决所有问题?
不是没有试过,很多软硬件厂商都尝试用一套协议打天下的方案,其中包括:
几大通信业巨头组建的ATM协议(异步传输模型),技术高大上,从底层一路通吃到顶层,但现已绝迹。
IBM的SNA协议、微软的Netbeui协议、苹果的Appletalk协议,甚至国际标准化组织ISO的CLNS协议……都试图用全能方案摆平问题,但这些尸体都横在历史的血泊中。无数精英卖命,为什么拼不过一纸IP协议?
用技术口吻说,就是耦合性太低,“耦合性低”的意思是繁文缛节多,使用难度大,最终市场抛弃所有复杂方案,只留下IP协议一个活口。
在IP、TCP和HTTP的帮衬下,互联网已解决信息传递的准确性和多样性,还没有解决价值传输和不可篡改问题,于是往上再搭协议。

你一定看得懂的波卡详解

波卡是一个跨链项目,跨链项目是可以连接不同公有链项目(比如我们熟悉的比特币,以太坊,EOS 等)更底层的协议,但跨链不仅仅于此,还可以连接不同的 DAPP, 传统商业世界的企业服务,政府公部门数据等。
这些都是波卡未来可以做的
团队靠谱吗
波卡的团队首先不缺钱,(融了 1.4 亿美元等值 Eth,其中一半以上是法币),领头人物是 GavinWood,团队成员很多来自 Parity,Parity 有多牛逼呢 ? 当年以太坊网络遭受 DDOS 攻击,以太坊官方的 geth 客户端无法运行,只剩下 Parity 客户端,因此大多数节点都转向使用 Parity。有经验的 Parity 团队阵容坚强,根据追踪目前为止波卡的开发进度都按预定时间表完成
重要的时间轴
2017 年 10 月众筹
2018 年底提到 2019 正式上线前会有第二次众筹
2019 年上半季度,治理及 PoS 共识架构(我们推测会有经济白皮书,关于每年通胀多少,如何委托代理,怎么抵押等规则)
2019 年 7.8 月,Parachain 的接入
2019 年第三季波卡正式上线(推测只是主网运行,能进行委托代理,但真实的跨链场景没有那么快,后续还需要接入 Grandpa 共识,跨链通讯,中继链的 routing 架构,完整版的波卡应该会在 2020)
波卡的 DOT 币价值支撑在哪里?
(官方对币的价值不予评论,只提到了持有 DOT 的功能,一参与治理,二参与 PoS 共识,三作为价值奖励机制,参与波卡网路共识的用户能获得奖励)
1. 维系整体网络
DOT 是串起波卡系统的灵魂,DOT 用来维系整个波卡跨链系统的稳定,在 PoS 共识下,DOT 可以类比为 PoW 下的矿机,有了 DOT 就有权力进行挖矿,参与挖矿的同时就是为网络安全做出贡献。
2. 共享安全性概念(维系整体网络的延伸)
我把安全性看做为信用,用古代的钱庄举个例子,一群商人想做钱庄生意,但因为知名度不够,普通人又对新钱庄信用存疑,于是有一家大钱庄跳出来说,我们建立一个联盟吧,大家都用我印有我样式的纸钞做生意,我来替大家提供信任与安全的背书,加入这个联盟的新钱庄就不用担心信用问题,可以专心在自己业务上。
下面是详细解释:
区块链世界提出去中心化的概念,去中心化靠的是全世界各地有不同的节点共同维持网络,但随着链与应用越来越多,区块链世界其实已经面临到一个问题,“节点不足”,没有足够分散的节点就可能被质疑中心化与不够安全。
每一条链都希望有足够多的节点,但不是每条链都有足够的影响力号召和提供经济激励给这些节点,波卡预见了这个问题,提出了共享安全性的概念,也就是接入波卡协议的链,可以通过放弃自身链的最终共识,使用波卡节点提供的安全性,波卡会为不同的链随机分配节点来维系网络
这些节点要运行就必须要有 DOT,随着联盟扩大,DOT 支撑的信用与安全性就越大越重,波卡就是像个老大哥,保护大家的同时,提高自己影响力与增加价值。
3. 手续费
手续费产生于在区块链上的任何操作,衡量关键就在于有多少应用操作需要消耗到 token,目前看来只有交易所的交易手续费场景会消耗大量的 token,大部分的区块链手续费消耗很难称其链的价值。未来手续费的消耗会随着使用波卡的操作场景变多而增加,从而支撑波卡价值。
波卡的应用场景
我就用几个点简单举例
1. 最简单的是去中心化交易所,通过跨链与中心化交易所竞争
2.更复杂的是智能合约的服务调用(比如说一家专做反洗钱业务的公司,将查询比特币地址的服务写成了智能合约接入了跨链,任何交易所或公部门想要查某一个违法地址,就可以通过消耗 Token 在链上调用这项服务)
3. 政府部门的数据链接(EOS 的 CEO 在推特发表,这是区块链价值很大的一部分)
真实的跨链应用场景,是需要双方或是多方配合完成的,因此在大家没有广泛认识到区块链技术前是很难出现的,就比如互联网出现很久后,直到手机普及,电子支付普及,在中国才诞生了我们每天使用的外卖服务。跨链最先的应用会先从 Token 与 Token 的交换开始,复杂的智能合约服务互相调用及与政府部门数据跨链使用是一个将来的故事了。
波卡技术架构详解
在介绍明星跨链项目波卡前,我想先说一个社群里一般用户的疑问,跨链项目可以是侧链项目吗,差别在哪里?
两个概念是有共通点的,侧链是两个人间手拉手,分享资源解决问题,跨链是一群人手拉手,分享资源解决问题。
区块链里的扩容问题,链与链的交互问题,实际上跨链与侧链都可以解决。
侧链是 在原有的区块链外,搭了一条平行的区块链来解决原有区块链的问题
比如:比特币交易速度很慢,可以有一条侧链专门解决比特币交易速度问题,但用户依然使用比特币;比如以太坊扩容问题被质疑,TPS 低很多应用跑不了,可以有一条侧链专门跑以太坊上跑不动的应用,但用户使用 ETH
主链与侧链间通过双向锚定,持币人持有主链的代币,但使用侧链上的功能。
跨链是
有一个像路由器的中心,中心外是各式各样的区块链,持币人可以持有 BTC,并通过跨链去使用比特币上无法实现的功能
,也可以理解成上面有好几条链,因为有了路由中心,所以互相为侧链。
任何的想法其实都是在解决问题,只是实现的方式不一样,我觉得结论很有意思:区块链的演化路径只有一个:专业的链做专业的事,其他事让更专业的链去做。侧链或跨链作为管道,连接成果。
我们进入今天主题,波卡的跨链模型怎么实现呢?
**
**
波卡的实现由 Relay chain,Parachain,和 bridge chain, 通过双向锚定实现。(下面是一个故事)
想象一下,在太平洋上,有好多好多不同的小岛,因为交通不发达,小岛上的居民只能自己自足,到了大航海时代,来自英国的公司叫波卡(波卡真的被英国政府投资了),来到了太平洋,告诉了大家加入我这个波卡联盟,以后你们岛上的榴莲呀,苹果呀,橘子呀都可以通过我而与各个岛做交换,甚至是岛上的任何技术,通过波卡作为中心,会记录各个小岛资源的信息库,同时也会把各个小岛想要交换的物品,资讯,通过中心,有顺序的安排转入与转出,于是各个岛因为交换,岛上的居民生活变得更好了。
跨链就是解决区块链孤岛效应的问题,下面我们说说怎么实现的 , 继续上面的例子,但不是真实的水果,真实的水果互相交换需要的是物流中心与快递,区块链里的交换是链上的虚拟资产与服务。
情境:假设 Alice 要将 Parachain A 链上的 Apple 币和 Bob 在 Parachain
O 链上的 Orange 币做交换。(备注:Parachain 就是故事里孤立的岛,Relaychain 就是波卡信息中心)
信息状态的记录步骤如下:
1. Alice 在 Parachain A 链发起交易,将交易信息 (我要将我的 Apple 币换掉) 放入转出队列 outgoing
2. Relaychain 接收到这个转出队列 (outgoing) 信息后,Relaychain 作为中继站将信息取出来,整理好放入到 Parachain O 链上的转入队列 (incoming)。
4. Parachain O 链接收到转入队列 (incoming) 的消息后,便记录 Bob 拥有了 Parachain A 链上的 Apple 币
5. 重复以上的步骤,Bob 在 Parachain O 链上发起的交易,最后 Alice 接收到 Parachain O 链上的 Orange 币。
以上是关于 Relaychain(中继链的信息记录),实际上有一个问题,信息是信息,但实际资产是资产,有读者可能有这样的疑问,我如何知道 Alice 有把 Apple 币确实的转出来,而 Bob 确实拥有所有权呢?
这中间呢其实取了一个巧,波卡系统将 Apple 币转入智能合约里在 Parachain A 链进行锁定,同时发行了一个叫波卡-Apple 币给到了 Bob,这个波卡-Apple 币其实就是 Bob 的所有权证明,当 Bob 想要动用 Apple 币,他可以像波卡系统提出要求,将智能合约里的 Apple 币取出来,同时波卡系统会销毁波卡-Apple 币。
反之亦然,另一个方向的 Orange 币也是这么解决,这就是前面提到的“双向锚定机制”,不仅仅是跨链项目,侧链项目也是通过这个办法证明所有权,进行链的转换,以太坊通过双向锚定,可以在侧链上跑更流畅的应用,在结束时顺利的将 ETH 转换回以太坊主链。
最后还有 Bridgechain,桥链是特化的 parachain,因为不是每个 parachain 的共识都和波卡系统相似,比如比特币及以太坊属于 Pow,波卡属于 Pos,彼此的通讯需要特化的协助,桥链顾名思义连接,通过运行完整的比特币链,以太坊链,整个波卡 Relaychain 系统可以精准掌握不同链上的所有情况。
波卡的经济架构里几个参与者
PoS 的架构里,基本的参与者都差不多,大家只要读懂一两个,接下来的了解速度就会很快,首先Nominator (提名人)
,也可以理解为一般持币人,每一个持币人在 PoS 里都有权利,这个权利能让持币者获得收益,但持币者没有那么多的时间精力去关注区块链,所以可以通过委托的方式,将权利委托给信任的人,间接行使权利获得收益。
这个信任的人就是Validators(验证人)
,验证人是维护区块链网络的重要部分,大家可以理解为矿工,但 PoS 里没有矿机,币就是矿机,验证人在波卡的中继链中运行节点,负责验证收集人(下一个会提到),在各平行链打包好的区块,验证成功获得奖励,最后将奖励依照一定比例分给 Nominator(一般持币人)
Collator (收集人)
这边比较特别一些,是一般区块链没有的角色,在跨链中收集人就像是收快递员一样,打包好信息放入到 Relaychain(中继链) 的角色
Fisherman (钓鱼人)钓鱼人其实就是波卡系统中的警察,检查验证人和收集人有没有不合规定的操作而影响到系统的安全性。
区块链系统就是一个去中心化的平衡,有普通人,有被选出来维系网络的验证人,有负责监察纠错的人,通过奖励惩罚方式,这些参与者被引导做正确的事。
目前波卡详细的经济体系要 2019 第一季才会出来,到时候大家就可以了解通胀率,奖励分配,锁定日期,还有关于共识机制,目前只知道主体是 PoS,但波卡肯定是 PoS 的变形,等到 Grandpa 共识有更详细的介绍出来会为大家详细说明。

波卡下一次众筹!什么形式什么价格

明星项目 Polkadot (波卡)又要众筹了?Gavin Wood 20 号在他的 medium 提到还未分配的 20% 波卡币 dot 的发售计划。
这篇我会告诉你当初众筹价格,拍卖形式,及我们对下一次众筹价格的想法,要看到最后哦,下面是 Gavin 英文原文。
**

**

波卡有多么热门呢?
当初一共募集了 485,331 个 ETH(以太坊),由号称以太坊隐形大脑的 Gavin Wood 领军的项目,Gavin
Wood 是以太坊技术黄皮书的撰写者,Partiy 的创始人,这个跨链项目被很多人追捧是区块链 3.0。
Polkadot (波卡)是什么?
Polkadot 是一个跨链项目,用来连接不同公有链,私有链,及传统公司的数据和服务,是下一代价值互联网的基石,后续会有文章介绍。
Polkadot (波卡)当初募资情形与价格
2017 年 10 月 15 号-10 月 27 号,波卡的第一次众筹
采取变形的荷兰式拍卖原则,总共售卖总量为 1 千万总量的 50%
看一看 Polkadot (波卡)代币的分配
除了团队保留的 30% 外,并没有私募,而且还有 20% 还没由售出
我们来看一看当初售卖的情形,大家也可以评估一下什么价格我要入手下一阶段的 Polkadot (波卡)代币?
**
**
先说结果
波卡第一次众筹,结束日期 2017 年 10 月 17 号,众筹价格 1 DOT=0.109ETH, 当天以太价格 320 美金,换算 1
DOT 成本 =35 美金左右。
(第一个小时内参与荷兰式拍卖的投资人有 15% 的折扣,随着时间递减到 0)
想看荷兰拍卖细节的继续往下,这对决定 DOT 价格非常重要,也可以跳过直接看我对未来售卖形式与价格的猜想。
荷兰式拍卖细节详解
荷兰式拍卖有别于传统拍卖,喊一次,两次,三次,逐渐递高价格,最终拍板。
荷兰式拍卖有两个显著特点。
1. 价格随着一定的时间间隔,按照事先确定的降价阶梯,由高到低递减。
2. 所有买受人 (即买到物品的人) 都以最后的竞价 (即所有买受人中的最低出价) 成交。
Polkadot (波卡)是变形的荷兰式拍卖,投资人不是对一个固定价格进行出价,而是对你愿意拿出多少钱投资 DOT 为一个整体进行出价 ,
最后系统会算出成交价格,再结算出投资人拿到多少数量 DOT
重点一 , 投资者并不知道自己最后会以什么价格买到 DOT。
重点二,每一个投资人拿到的价格都是一样的。
重点三,一旦决定要购买 DOT,请尽快,早参加有折扣。
**

**

波卡荷兰式拍卖具体原理的小白解释
第一次售卖有 500 万个 DOT
供给方面:
1. Polkadot 官方会设定一个与以太兑换比例非常高的价格(比如 1 ETH=1 DOT), 这个价格会高的离谱。
2. 根据荷兰式拍卖规则,这个拍卖价格会随着时间逐渐下降,也就是图中的黑线(图中是以市值做表示,我简化为价格,市值公式如下:ETH 数量 =500 万个 DOT
* 与 ETH 兑换之比例)
需求方面:
3.投资人参与荷兰式拍卖投入的以太数量,也会产生一个价格,投入以太数量越多,需求方的价格也会越高,也就是图中粉红色的线。(图中是以市值做表示,我简化为价格,价格公式如下:投资人投入的 ETH/500 万个 DOT= 价格)。
4.拍卖结束的触发条件是,当图中上面的供给线(黑线)与图中下面的需求线(红线)相交。换句话说,当前价格下计算系统设定能接收的 ETH 数量上限 (供给线)= 投资人投入的 ETH 数量(需求线),拍卖结束,供需平衡。
5. 最终价格就会是 500 万的 DOT 除以供需平衡下的 ETH 数量 (相当于投资人总投入的 ETH 数量)。
6. 荷兰式拍卖结果是 1 DOT=0.109ETH
下一阶段可能的众筹形式
我个人推测很有可能与上一次的荷兰式拍卖相仿,由市场决定结果,如果是定死的价格,太高有人会吐槽,太低又会有当初投资人批评。
Gavin 说要等法律文件跑通后才会公布,预计明年初,Wetez 会为你继续跟踪
(中国用户要注意 , 当初波卡众筹是禁止中国人与美国人的,嗯,这个嘛,聪明人自由办法,嘿嘿嘿)
价格的猜想
那多少价格你会买波卡呢?我们来分析一下
1. 有谣言下一次的众筹会是一个 DOT=190 美金 ? 正确吗?
我们先看看目前唯一一个有交易波卡期货的交易所 Toktok,12 月 22 日价格 245 美金。
和当初募资价格相比涨了 7-8 倍,看起来好像有可能哦?
但是我们比较一下当初 Tezos 的情况,在 Hitbtc 上期货价格最高 1 xtz 到了 75 美金,现实情况开盘却不是如此,只有 1.6 美元,所以期货只能当作参考。
2. 那我们从不让当初投资人亏钱的角度出发?
当初大约是 35 美金一个 DOT, 换算到 12 月 22 号以太价格是 1DOT=0.32ETH, 相比当初对以太的众筹价格涨了 3 倍左右
3. 我们再从极端情况考虑,假设漫漫熊市波卡对以太破发了呢?
好的项目在熊市大概率也是破发的,并且打了 5 折,不好的项目在熊市一开盘就对以太只剩 1/10。
假设对以太破发一半,也就是 1 DOT= 0.06ETH, 换算成 12 月 22 日美金价格就是 1DOT=6.5 美金左右

Polkadot的Substrate基础链简介

如果你关注了Polkadot项目,可能会多次看到“Substrate”这个词。 它是Polkadot项目的重要组成部分,但有关它的信息非常少。 白皮书或黄皮书里找不到, 至少没有专门的介绍“Substrate”。 从较高的层面来看,Substrate是一个可以创建数字货币和其他去中心化系统的框架。 这太笼统了,本文详细说说。
首先,Parity Substrate是独立于Polkadot的项目。 Polkadot是基于Substrate构建的,现在你可以使用Substrate来构建新的区块链项目,而不用等Polkadot开发进度。
那到底什么是Substrate呢? 它是一个框架,类似于Express框架或其他Web应用程序框架,只不过是用于构建分布式或去中心化系统,比如加密货币项目,或消息总线系统。 正如大多数Web应用程序不需要重新实现自己的HTTP一样,我们认为创建新区块链也不需要从头实现网络和共识部分的代码。网络和共识的开发需要密码学专家、网络安全专家、网络工程师、网络运维人员等等,但是其实你应该专注在产品的核心业务逻辑上。 所以如果你使用Substrate,只需要实现非常少量的回调,就能得到这些特性:
·共识机制,不可逆性,出块投票逻辑。 即使你的项目不需要构建加密货币,甚至不是需要区块链的项目,Substrate也可以用于需要拜占庭容错机制的项目,比如网络中部分节点宕机、失效或者被恶意控制,但整个网络仍然可以继续正常工作。
· p2p网络。比如p2p节点的搜索,同步等等。
· 运行时的WebAssembly虚拟机。可以运行智能合约,或者其他基于Substrate开发的项目。 虽然你可以编写自己的虚拟机解释器,但我们坚信使用WebAssembly运行时的好处是,可以让你利用在WebAssembly社区的工作成果;
· 在浏览器中运行一个节点,并与其他节点通信;
· 跨平台的数据库/文件存储系统,还支持浏览器环境;
· 客户端平滑更新。对于可能影响共识的更新,会将代码编译成WebAssembly的执行文件,然后部署时作为网络上的一条消息。 这样的机制提供了这种可能,就是你还可以本地保有多个版本的共识代码,并在本地执行一个与部署环境不同版本的共识,Substrate会去处理本机环境与部署环境的差异。因为WebAssembly有回退机制,所以保证不会有不受控制的硬分叉或其他难以解决的共识导致的问题。
· Polkadot发布时立即接入你的项目。 虽然说使用Substrate构建的项目可以编译出一个独立的客户端程序(就像现有的区块链项目一样),但是把你的项目接入Polkadot就可以共享Polkadot的安全性和链之间的互操作性。 Polkadot本身就是使用Substrate构建的。Polkadot实现了Substrate API,会对Substrate框架中的任何漏洞进行快速反馈,很方便的运行Polkadot测试网,甚至再启动一个Polkadot链作为侧链。 这篇博客比较详细的介绍了Polkadot。https://medium.com/polkadot-network/how-polkadot-tackles-the-biggest-problems-facing-blockchain-innovators-1affc1309b0f
那你需要自己实现哪些东西呢?从本质上讲,Substrate是状态机,可以包括交易等内容。为了使Substrate尽可能通用,它本身没有任何交易。它有我们所谓的“Extrinsic外部交易”,这个“外部交易”是一个二进制BLOB,可以用来存储你想要的任何数据。对于大多数链而言,这些BLOB数据包括了交易,但使用Substrate,你完全可以从网络中去掉货币的概念,然后创建一个分散的Erlang样式的actor模型并发系统,赋予该系统一组受信任的权限,来验证网络行为的正确性。
如果你需要货币和交易,那么可能更简单 , 只要约定一个协议和一个数据库来访问数据。它比其他分布式架构(如微服务)更容易 ,因为运行的代码和数据存储在同一个地方,仅为数据存储提供向后兼容性就可以。对于具有私有交易的链,实现要复杂一些。
下面简要介绍启动并运行一个完整的区块链需要做什么:
1、初始化块的函数。该函数根据前一个块的头创建一个新的块。
块的头包括:1. 块高度; 2.块状态的加密索引,主要用于轻客户端验证块是否正确。 加密索引类似于hash; 3.块中二进制BLOB的加密索引; 4.父块的hash值;
2、块头的自定义数据。轻客户端仅同步块头,更新轻客户端时,注意处理块头中自定义的数据。
3、将交易写入块的函数。 这个函数也更新链的状态(例如,账户余额);
4、生成块的函数。生成一个写好头、写好BLOB数据的块。这个块就可以广播出去了。
5、校验块的函数。 全节点运行这个函数,确认接收到的块在接受之前是有效的。 例如,在资产链中,你可以检查是否有人人花费超过其自身余额的钱。
需要注意的是,块头包含块状态的信息,在生成块的函数里,要把块状态从初始状态设为完成状态,校验块的函数里,要把从完成状态变成校验通过状态。 块状态错了的话可能会导致共识问题。虽然以后可能会用其他方式来处理块状态,但是现在还需要这么做。当前的方式也不会太麻烦,额外写一个校验BLOB数据的工具函数就好了。
此外,你需要自己维护一个公钥集合,用于验证块的签名。块的签名验证与链使用的共识机制无关。 给块签名的私钥所对应的公钥应该放进这个公钥集合, 集合里的公钥可以变化,但每个块都由块创建时选择的集合进行验证。公钥集合里的公钥变化会产生的不同的公钥集合版本,以及由此引出的问题Substrate都会自动处理好。 公钥越少,安全性越低,公钥越多,验证耗费越多,这里要自己衡量。 通过签名验证后,块就被认为是“最终的”(即不可逆的)²。
使用Substrate创建链需要手动的处理POS,不是所有项目都要在链上发行数字货币。比如,测试网的币就没价值,还有消息总线的项目根本不需要数字货币。但是,在Substrate上编写一个库可以很容易地发行数字货币,并自动支持交易和POS共识³。比较推荐的使用Substrate方式,是在Substrate上构建更高级别的库,把Substrate作为项目的模块。随着Substrate的完善,会像编写现代Web应用程序一样轻松构建新链。
现在Substrate还没什么学习资料。 如果不是Polkadot团队的成员,很难学会本文讲的东西。 不过Substrate教程和文档很快就会有了。
补充3点:
你可能希望有向后兼容性,以便外部工具可以轻松地与你的链进行交互,你可以使用protobuf免费获得高效的向后兼容存储。
举一个例子,像比特币或以太坊这样的纯POW链根本不具有终结性,因为可能的验证器集是无限的。
例如,一个简单的POS链可能会在每个区块设置一次验证器,通过选择拥有最多权益的100个账户,并在获得不当行为证明时惩罚它们的权益。
最初于2018年7月9日在paritytech.io上发表,原文 https://medium.com/paritytech/what-is-substrate-29af4231d7e0

从设计哲学对比波卡与Cosmos

原创:张先生Wetez
前言
初视波卡与Cosmos觉得两个项目挺像的,都是基于中继链/侧链的跨链解决方案,后来为了写这篇对比文章找了很多资料,逐渐的发现设计哲学对项目后续发展不同的影响,得出了一点心得,欢迎大家一起讨论,。
每个人看项目的角度都不一样,安全重要?扩展重要?生态重要?哪一个要先发展?
在波卡与Cosmos开发人员的问答直播里,答案明显呼之欲出,两个项目一致共识从安全出发,这给我很大的体悟,从安全为起点思考这两个项目才是正确的方向。
没有安全就没有根基,为什么早些时候货币是金银,因为很难伪造,为甚么政府要在纸钞上做出这么多花样,因为假钞扰乱了真钞,正如这些货币,区块链上的加密货币一样如此,一条链出现了双花攻击,凭空造币等安全问题,那这条链大概率就声誉全毁,技术及远景再牛逼都是一场空。
以下开始正题:
第一个不同点
Cosmos与波卡两个跨链项目在安全上不同的设计哲学
Cosmos强调自治,希望能有一个更自由更自主的跨链生态,白话说如果一条链是一个国家,Cosmos这个大世界里,每个国家都有自己的军队与主权维护安全,所以在中心Hub和区域Zone上各自的验证人节点不同,自行维护安全。
Polkadot强调团结,希望更多的项目团结来增加跨链生态的安全,白话说在Polkadot这个大世界,大家共同建立一个联合政府,联合政府会指派军队去保护各个区域安全,所以在Polkadot上,中心Relaychain与区域Parachain的验证人节点统一由Polkadot系统分配。
第二个不同点
这样的安全设计理念下两者各自会遇到什么样的恶意攻击呢?
Cosmos下,中心Hub与区域Zone各是不同国家,每个国家负责安全的军队都不同,当跨链场景从ZoneA 到Zone B发生时,外部人怎么知道ZoneA 与Zone B的军队(验证人)是善良诚实的?在高速复杂的跨链场景下,某一个Zone被攻击后,可以发出虚假信息进而扰乱整个Cosmos大系统。
Polkadot下,所有军队(验证人节点)由Polkadot随机挑选并分发到不同区域(Parachain)上,如果随机分配到Parachain上的一群节点,是互相勾结的坏人,那外部人就有理由怀疑上面发生的跨链交互是有问题的。
如何解决呢?两者各有应对方案,在理想情况下
Cosmos本身团队是Tendermint出身,Tendermint团队深耕于在区块链上实现拜占庭容错,拜占庭容错能容许一定节点作恶下,系统依然不崩溃而正常运行,所以Cosmos有底气设计这样的自治生态,同时Cosmos的Hub中心会有一个全局观的代币状态,在最重要币的安全上,中心Hub有责任去检验不同区域Zone上的操作是否真的有这么多数量的代币,如果发现全局观的代币记录与分区上代币记录不一致,可以将中心Zone与区域Hub间的联系中断,有效遏止作恶引起的系统崩溃,具体实现等Cosmos上线后将会有更多的讨论。
Polkadot通过随机挑选验证人节点,维护每一条围绕Polkadot的链,当可以被随机挑选的验证人池子越大,那就会越公平与安全,想作恶的一群人被划分在一起的概率会下降,所以Polkadot官方希望有1000个节点来维护Polkadot这条链, 同时加入钓鱼人Fisherman这项角色,作为系统内警察,通过揪出作恶操作获得奖励来进一步加强系统安全。
PS: 真实的攻击和变化肯定更多,我不是安全专家,只是举了最容易了解的攻击形式
第三个不同点
安全设计哲学下如何影响代币价值与生态发展
币价和安全性有什么关系?
我们都知道比特币里一部分的安全是由矿工运行矿机来保证,算力成本的高低和币价有一定关联性(虽然不是直接因果关系),在PoS共识下,没有实体矿机,大家手中的币就是矿机,币通过委托代理Stake进行挖矿,同时维护链的安全,如果要攻击一条PoS的链,攻击代价就是控制1/2甚至要到2/3比例的代币。
先说Polkadot共享安全shared security的概念(就是前面提到的团结哲学),Polkadot认为不是每一个新的区块链都可以找到这么多节点来维护安全(事实也是如此,很多新公链最大问题就是节点不够,不够就代表不去中心化不够安全),Polkadot说我提供大家安全性,大家的链接入到我整个系统,所以Dot代币将来提供的不仅仅是Polkadot自身安全,还包挂围绕在Polkadot旁Parachain的安全,可想而知Dot用途更广了,价值也扩大了。
Cosmos强调了自治思想,所以每个区域Zone需要自己的验证人节点提供安全,在PoS共识架构下,每个自治Zone的代币都承担了安全保护的功能与价值,但同时Cosmos原生代币Atom的用途也相对Dot减少了。
反过来想Polkadot的模式其实是抢夺了其它链原生代币安全保护的功能与价值,建立在Polkadot上的链就只剩下本身业务场景才能撑起币的市值(打了一个大大折扣),所以我猜测一个希望自己做大(市值高),有自主权的链,会选搭建在Cosmos之上。
当然Cosmos也有在讨论提供共享安全性的想法,以现阶段区块链还在早期的阶段,市场上确实没有足够且去中心化的验证人节点来为新的区块链服务(必须要有足够的经济诱因),我认为共享安全性是一个不错的点子。
第四个不同点
瞄准场景的不同
Cosmos专注在代币流动的领域,还有支持跨链下使用代币进行的物件化模块功能调用。
Polkadot专注在整个信息的流动,其它Parachain的最终共识由Polkadot提供,使Polkadot的中心Relaychain在记录整个网络的所有信息状况更容易,Polkadot上可以做到直接调用其它链上的智能合约。
两个项目其实都可以向外扩展,或是向某个方向专注,特化下自然会形成两者各自的特色而吸引各自的项目开发者与使用者。
最后一些有趣的讨论
1. 不管是Cosmos和Polkadot都要面临验证人节点不足的问题,从我们参与社区的观察,一条链拥有超过100个不同背景的验证人节点现阶段是很难的(短期内区块链还没有发展那么广为人知,可能由基金会自己运行,投资机构运行,或同一个团队运行多个节点来满足)
2. Cosmos, Polkadot及Tezos, 这三个项目的验证人节点有很大一部分重叠,作恶问题,垄断问题可能发生,是一个有趣的事实。
3. 项目开发进度与回应速度,我会比较担心Cosmos,Cosmos项目已经延期,而且从我们递交给官方信息的反馈速度来看,Polkadot远胜Cosmos。
4. 跨链项目不会这么快,观察他们如何完美的解决连接以太坊及比特币再说,这两个最主要的区块链社区,互相连接上了才会有更多的交互的创意与应用,连接以太坊是这两个项目上线后最主要的目标,同时他们也提到连接比特币更困难,但还没有确定时间轴。
5. Cosmos团队提到2019年要开始宣传可组合型Composibility,Cosmos SDK是一个可以节省开发者大量时间的工具包,内置委托代理,治理,跨链等基础功能模块,Polkadot也做了一个类似工具包Substrate。除了设计哲学,谁能更好的说服及宣传自己的工具包,谁就能掌握更多的开发者。

准备好在 Polkadot 上开发吧!

之前我们已大致申明了我们相信 Polkadot 可以吸引开发者的理由:Polkadot 会解决限制区块链普及和创新的最大困难。在这篇博文中,我们会提出一系列的建议,帮助开发者为 Polkadot 的发行做好充足的准备。

我们相信,让开发者继续使用他们已经熟练掌握的技术来开发是有可能的。在可开发性上,我们的目标是尽可能移除开发去中心化技术的障碍,虽然长远来看,切换到使用一门可以编译到 WASM 的语言来开发会更好。其中的推论过程我们会在本文中详细说明。

现在我们要讨论两个主题:(1)部署在 Polkadot 平台上的去中心化应用的开发路径;以及(2)简单介绍开发者如何能够开发一条功能完整的平行链(Parachain),参与到 Polkadot 的多链环境中。

有意愿在 Polkadot 上部署智能合约的 dApp 开发者不是非得创建一条平行链,因为 Polkadot 将会有配备图灵完备状态机的平行链。如果你对开发一条平行链感兴趣,我们来深入了解下你需要实现的东西、你可以用来实现它的工具、以及一旦实现了你可以在链上做些什么。

在 Polkadot 上开发 dApp 和平行链

现在,有些开发者可能会问:“我们可以为 Polkadot 的发行做些什么准备工作吗?”

答案是“当然可以”!

我们非常乐意与想在 Polkadot 原生平行链上开发 dApp 或是开发新平行链的团队接洽。我们的建议是在一种可以编译到 Wasm 的语言上写智能合约以及平行链运行环境。

打造一条基于 EVM 的平行链、让开发者可以继续使用 Solidity 写智能合约也是有可能的。然而,我们并不推荐这样做,因为以太坊也希望在实现分片的时候(将虚拟机)转变为 Wasm。幸运的是,现在人们正在开发一种叫“Yul”的工具(原来叫 Julia),可以将 Solidity 编译到 Wasm。

从长期来看,我们希望 Wasm 对区块链开发者来说变成一种自然而然的选择,这也是为什么我们建议开发者应该开始研究 Wasm 智能合约。要阅读更多关于 Wasm 的材料,请看 Parity 对 Wasm 的解释以及他们的 Wasm 智能合约开发引论。

在 Polkadot 上开发 dApp

创建最终可以被部署到 Polkadot 上的智能合约,可以有两种主要的开发路径:(1)在 Wasm 上写合约,让它可以在原生平行链上运行,或者是(2)使用 Solidity 部署 dApp 在一条基于 EVM 的链上。后者对那些想要用现有可用工具来开发的开发者来说比较有吸引力,但从长期来看,切换到 Wasm 上会更好。

遵循选项(1)会是为平行链在未来启动做的准备措施。在 Wasm 中开发和测试 dApp、以及在 Kovan 测试网 或是一个自己部署的 PoA(权威证明)网络上做测试都是有可能的。来自 Parity 的 Fredrik Harrysson 在 EthCC 上解释了如果在装载 WASM 的 Kovan 测试网上运行 Rust 合约。围绕 Wasm 智能合约的工具有限,可能让测试更加困难,但这一点不重要。更多信息可以看 Parity 博客中关于 Wasm 虚拟机和智能合约的推文。

对那些倾向于遵循选项(2)并继续使用 Solidity 来开发 dApp 的开发者来说,我们建议仿效选项(1)。当然,这要部署在基于 EVM 的 PoA 链上,这也会让开发者可以测试数据流并得到一个具备一定可扩展性的可用产品。当以太坊连接到 Polkadot 之时,现有的 dAPP 便可以从系统提供的新功能中受益,包括扩展以及跨链通信。

调试一条 PoA 链是非常简单的,现在已经有很多教程,并且最终来说,这些链也可以在 Polkadot 创世块构造好之后(预期在 2019 年第 3 季度)连接到 Polkadot。假设切换到 Wasm 的趋势会持续下去,而以太坊会成功地实现分片,我们强烈建议使用 Wasm 作为首选语言。

具体流程如下所示:

  • 部署一条 PoA 链以及一个桥接合约(Bridge Contract)
  • 让 dApp 在 PoA 链上跑起来

桥接合约提供了消息传递功能,让孤立的链可以跟 Polkadot 联系起来。Polkadot 平台会拥有很多不同的链,在类型上也会百花齐放。

开发一条平行链

平行链这个概念一开始是在我们的白皮书中提出的,一篇之前发表的名为《Polkadot: The Parachain》的博文则在细节上进一步阐发了这个概念。

“平行链(Parallelizable Chain,直译为‘可平行化链’)是区块链的一种更简单的形式,它会附加由一条‘中继链(Relay Chain)’提供的安全性,而不是由自己来提供。中继链为附属的平行链提供安全性,也提供平行链之间信息传递的安全保证。”

后者解除了对桥接合约的需要,因为信息传递功能已经被整合进了协议中。

创建一条原生于 Polkadot 的平行链需要理解 Substrate。更多细节请看 Gavin Wood 博士在 Event Horizon 中的演讲以及 Polkadot GitHub 的子目录 Substrate。

Polkadot 多链架构的设计让开发者可以指定他们平行链有效性的概念。要实现一条平行链,开发者要实现一个状态转变验证函数、决定一种状态形式以及一种交易池机制。实现了自己的平行链只要,要将它与 Polkadot 整合起来和需要一系列额外的措施。要做到这一点,你还需要将状态转变验证函数部署到中继链上,然后分发一种包含交易池机制的核对者节点客户端(Collator Node Client)。

创建所有这些部分需要思考:一个核对者节点应该如何构造你的链的区块链、这些区块的有效性又如何能够被验证者节点(Validator Node)检查和验证。这里有两个选项:(1)从头开始编写核对者节点;或是(2)使用一个已有的可以运行各种状态机的核对者节点。在写这篇文章的时候,我们还没有余裕来写一个核对者节点,虽然更多细节会随着 PoC(概念验证)的发布而披露出来。

编写状态机的一个要求是使用一种可以编译到 Wasm 的语言。这是一种设计上的选择,可以保证足够的灵活性,比如为运行环境实时更新。研究在推进,平行链也可以容易地升级以实现最新的技术,比如分片。

我们希望一些热门平行链的代码可以被复制并重用到其他链上,甚至用到独立的区块链上。Web3 基金会邀请开发者们开始创建平行链以及所有其它对 Polkadot 的成功来说关键的通用组件,比如区块浏览器、钱包、中继节点和核对者节点的替代性实现。请移步 Riot以联系团队中的成员。

展望未来

Polkadot 启动以后能为开发者带来的好处是非常有吸引力的。无论是区块链之间和平行链之间的互操作性、可扩展性上的提升、大量执行中的效率提升,还是动态链上治理系统,很多理由值得你考虑在 Polkadot 平台上开发。

我们希望,已经在以太坊上部署 dApp 的开发者们、正试图在 Polkadot 上开发的以及刚刚开始起步的开发者们,能够从本文中得到对必要迁移的更清楚的认识。

我们计划在 2019 年 3 月启动 Polkadot 主网。因为我们正在推进概念验证和测试网,我们欢迎社区成员帮助我们推进项目;加入我们,让 Polkadot 网络落地。

我们邀请所有人下载 Polkadot 的代码,编译一下,连接到全球测试网。安装之后,请记得来 Riot 的聊天频道拿一些测试网的 DOT 代币!

开发快乐!

原文链接: https://medium.com/polkadot-network/preparing-to-build-on-polkadot-349ff5002885
作者: Polkadot
翻译: 阿剑