今天我们将就以下几个主要的问题来进行探讨:
1. 为什么要建立 Qtum 量子链
2. Qtum 量子链的技术基础
3. Qtum 量子链的技术创新
4. Qtum 量子链的生态系统
1. 为什么要建立 Qtum 量子链
首先很多熟悉区块链的开发者朋友肯定会有这样的疑惑, 我们已经有了比特币和以太坊为什么还要建立 Qtum 量子链呢? 如果要给 Qtum 量子链一个定义的话, 我个人的理解是: Qtum 量子链是首个基于 UTXO 模型, 并采用 PoS 共识机制的智能合约平台其中包含了三个概念: UTXO 模型共识机制 PoS 还有智能合约平台, 稍后我会对他们一一进行详解
Qtum 量子链项目从 2016 年 3 月就已经开始筹划和执行, 2017 年 6 月时发布了第一版测试网络, 2017 年 9 月时主网正式上线, 所以 Qtum 量子链在产品的更新迭代方面还是比较快的另外 Qtum 量子链也可以说是站在了巨人的肩膀上, 结合一些成熟的区块链生态的优势, 稍后也会解释
先来看一下 Qtum 的一些基本参数, 区块大小: 2MB; 出块时间: 128 秒; 共识机制: MPoS;
链上理论最大 TPS: 70~100 笔交易 / 秒; 初始发行量: 100,000,000 QTUM; 当前挖矿奖励: 4 QTUM, 每四年减半; 挖矿奖励总额: 约 7,884,000 QTUM; 基础代码框架: 比特币 Bitcoin core; 支持以太坊虚拟机 EVM
关于 Qtum 的设计理念, 不得不提比特币和以太坊首先要简单解释一下这两者, 比特币是点对点的电子货币系统, 它主要考虑的是货币属性, 因此会主要考虑安全稳定去中心化以及存储传输价值的特性此外, 从安全性方面考虑, 比特币脚本被设计成非图灵完备的作为数字货币, 比特币实际上是比较成功的, 从 2009 年至今, 并没有出现过任何一笔错账但除此之外, 你很难再在比特币之上建立复杂应用, 因为它从设计之初就仅仅考虑了其货币属性
而以太坊则是目前全球第二大的区块链生态, 是以平台的角度去设计的平台必须能够保证其可扩展性和 TPS, 从而支持成千上万种 DApps 它同时也是个智能合约平台, 有用于执行智能合约的环境, 比如 EVM, x86VM 同时以太坊也需要有合理的经济模型激励开发者, 从而促进生态发展作为平台, 多样性隐私性 (不受网络中其他应用的影响) 也是需要考虑的问题以太坊有一套图灵完备的语言, 简单说来就是可以支持循环, 从而可以实现比较复杂的智能合约逻辑
以太坊作为一台平台可能并不那么成功, 首先它的 TPS 不够高举个简单的例子之前在以太坊上有个应用叫云撸猫, 就把以太坊给搞宕机了在安卓系统上你很难想象一个应用会因为另一个应用得影响而遭殃, 但是在区块链上这种可能是存在的就好比云撸猫, TPS 都被用于撸猫, 那么正常的交易就无法被保证了以太坊作为一个智能合约平台, 它得智能合约功能的确是能支持一些简单的逻辑, 但是编程语言仅仅局限于 Solidity(还有几种语言基本无人使用), 而不是大家比较熟悉得主流编程语言, 所以在这一点上有所欠缺
比特币和以太坊各有优缺点, 但作为全球最大的两个区块链生态, 它们是相互独立的, 没有太多交集 Qtum 设计的初衷是希望打通比特币和以太坊这两大生态, 使开发者既能享受到货币的稳定性和安全性, 又能具备去中心化应用平台的便利根据开源软件思想, Qtum 量子链决定不重复造轮子, 取比特币和以太坊的精华并在此基础上继续演进
在此之前, 在比特币上运行图灵完备的脚本语言是不可能的, 所以 Qtum 建立了一个逻辑上的抽象层使之成为分层的结构也就是 AAL 账户抽象层还有就是目前所有的公有链的通病在于治理协议比较混乱, 所谓的治理协议其实就是软件的升级和迭代在中心化的公司或者平台比如 App store 上面开发者只要把更新好的 App 上传供用户下载就可以了, 但是在去中心化的系统上就不一样了一个用户要对软件进行更新, 其他人不一定会支持, 那么就需要一个治理协议去决定整个生态应该如何进行治理 Qtum 量子链对这个问题有自己的想法, 也就是 DGP 分布式治理协议, 能够自行对区块链参数进行动态调整而不必进行硬分叉, 实现了区块链的自治
从共识角度来说, 我们知道比特币和以太坊所使用的都是 PoW 共识机制, 优点大家很清楚就不赘述了, 但是缺点同样突出那就是对能源消耗巨大比如矿机非常耗电, 这些电力也成为了比特币的挖矿成本所以 Qtum 量子链使用的使 PoS 共识机制作为更好的替代方案, 其实它已经被提出很久的时间, 目前 Qtum 用到现在经过很多次迭代也运行良好另外一个使用 PoS 的原因是移动设备和物联网设备上很难实现 PoW 另外正如之前提到的以太坊虚拟机仅支持 Solidity 这个比较冷门年轻的语言, 有多少开发者会去为了智能合约的编程再去重新学习一门全新的语言? 所以 Qtum 目前在研发 x86 虚拟机, 能让大部分开发者用熟悉的主流编程语言比如 CC++ 更简单地开发智能合约这样就能大大提高社区内开发者的工作效率, 让更多去中心化应用能够落地
2. Qtum 量子链的技术基础
首先是 UTXO 模型, 英文是 Unspent Transaction Output(未花费的交易输出)我们来看一下比特币和以太坊网络上的两个典型交易以太坊上的交易对于普通人来说相对好理解, 就是从一个地址到另一个地址, 一笔 Token 的传输而比特币交易就没那么简单了, 它是由若干个 input 和 output 组成的, Output 当它未被花费的时候就是 UTXO, 将成为下一笔交易的输入所以所有比特币网络上的交易都是由 input 和 output 串联起来的 UTXO 的可取之处在于:
l 安全性 (解决双花问题, 支持原生多重签名)
l 匿名性 (拥有多个地址, 找零地址)
l 可扩展性(并行, 离线交易)
l 轻钱包 (SPV, 支持移动端验证交易的合法性)
目前除了 Qtum 以外基于 UTXO 模型的各种币的底层脚本语言都不是图灵完备的,, 所以 Qtum 量子链才会开发账户抽象层 AAL 使 UTXO 模型与以太坊虚拟机账户模型能够无缝交互
再来说一下共识机制的问题, 首先回顾一下什么叫区块链, 刚才提到交易, 接下来用户对每一笔交易进行签名以保证其安全性, 拥有私钥才能花费一笔资产每十分钟内的所有交易被打包为区块, 每个区块中所有交易的组织形式为 Merkle 树(https://zhidao.baidu.com/question/1047592469520906459.html), 它是一个二叉树, 每个叶子节点都代表一笔交易, 而非叶子节点均为其子节点的哈希值, 任何一笔交易被篡改都会影响根节点的哈希值最后, 每个区块都有一个指向上一区块的哈希指针所以简单来说区块链就是一个不可篡改的分布式数据库, 那为什么需要挖矿呢? 这里以 PoW 挖矿为例首先, 区块链主要分为: 公有链私有链和联盟链它们的核心区别在于记账权, 公有链是去中心化的, 赋予网络上的每个节点记账的权力, 而私有链和联盟链的记账节点为少数几个指定节点只有公有链才需要挖矿, 因为要维持节点不断地在网络上记账, 那么挖矿就成了网络对记账节点的激励机制依靠区块奖励鼓励节点记账, 共同维护区块链网络的生态那为什么大家挖矿用户也要去监听记录别人的交易呢? 因为手续费也会作为区块奖励挖矿的另一个原因了保证记账节点的的随机性, 否则固定的记账节点很容易被 DoS 攻击另外, 挖矿也是一个代币分发的过程, 从而把币随机地分发出去, 而不是只在个别人手中整个比特币的精髓就在于它的激励机制, 但 PoW 共识机制也并非没有问题, 比如:
l 加入网络的门槛较高, 需要花费很多钱买矿机才能成为比特币的全节点进行挖矿
l 越来越趋性中心化, 大部分的挖矿所得被少数几个大矿池占据
l 能源耗费巨大
基于这些问题, 2012 年时有人提出 PoS(权益证明机制), 原理很简单, 只要用户拥有该网络的 Token 并证明这一点, 就可以参与记账另外, 代币持有人也更有动力维护网络的安全 PoS 机制同样也能达到比特币的随机性安全性和 Token 分发等功能, 而且相比于 PoW 来说显得更加去中心化中本聪在设计 PoW 共识机制时并没有想到会有矿机的出现从而使得比特币越来越中心化, 而 PoS 的挖矿根本不需要使用矿机, 只需要一台普通电脑树莓派就可以参与
除此之外还有几种共识机制比如 DPoS(代理权益机制)选出一些代理人来进行记账 pBFT,dBFT 等则是改进后的拜占庭容错机制解决方案上述几个共识机制都是相对比较偏中心化的, 比较容易导致一些中心化的问题或者被攻击像某些网络的计算节点比较少, 一些节点挂掉就会导致整个网络瘫痪, 但这些在比特币或者 Qtum 上都没有发生过
第三个技术基础就是智能合约, 简单来说就是可以在区块链上运行且达成共识的一段代码以太坊是目前最流行的智能合约平台, 目前以太坊虚拟机也是唯一一个可以真正意义上运行智能合约的虚拟机, 但是它却有不少缺点:
l 移动端不友好
l solidity 等少数语言, 具有局限性
l 安全性(DAO,Parity)
第四个技术基础是去中心化网络只有在去中心化的网络上 Token 才有它的价值, 否则就跟 Q 币没什么区别, 只能在腾讯的体系内使用而并不会有什么价值的提升说了去中心化那么多好, 也来谈谈它的缺点在分布式领域有个 CAP 理论也就是一致性可用性和分区容忍性不能同时满足所以去中心化的程度与 TPS 是有矛盾的, 去中心化程度越高越难达成共识, 那就很难再很短时间内达到交易的确认所以如果用户希望追求比较高的 TPS, 那必然会牺牲去中心化但如果真的想要两者兼得, 则要借助分层网络来实现, 闪电网络雷电网络这些技术都能够用来实现较高的 TPS 比特币上的闪电网络和以太坊的雷电网络目前都在开发中且发布了测试版而 Qtum 量子链因为能够兼容这两个生态, 所以日后这两个技术开发完备之后 Qtum 也都能使用
3. Qtum 量子链的技术创新
首先是 AAL 账户抽象层, 因为 Qtum 量子链兼容两种生态, UXTO 模型不支持智能合约功能, 所以我们需要账户抽象层的上层兼容以太坊虚拟机编写智能合约这种分层设计能够让上层的应用层和底层相互解耦, Qtum 设计的抽象层使上下层能够通信适配
至于如何实现其实是在比特币脚本中增加 3 个新的 opcode:OP_CREATE: 创建智能合约
OP_CALL: 调用智能合约 (向合约发送 QTUM) 以及 OP_SPEND: 花费智能合约中的 QTUM 这样一来比特币底层就可以识别上述三种操作, 并将他们作为信号发送给上层的以太坊虚拟机, 使其在运行智能合约的同时也能将一些信息反馈回底层
所以对于开发者来说, 这还是一个比较容易理解的账户模型, 而它的底层还是跑在 UTXO 这样一个比较安全的模型上的账户抽象层的优势如下:
l 允许 EVM 在 UTXO 模型上运行
l 兼容多种虚拟机(不仅是以太坊虚拟机, 还有目前以太坊, eos 正在研发的 webassembly 和未来 Qtum 的 x86 虚拟机)
l 底层具有比特币的安全性
l 智能合约开发者只需要关注账户模型
l 解除底层协议与上层应用的耦合
这里我想再强调一下 PoS 共识机制, 它一共经历了 3 次大的迭代:
l PoS1.0: 依赖币龄, 长期不在线, 双花问题
l PoS2.0: 移除币龄, 增强安全性
l PoS3.0: 针对 short-range 攻击, 采用区块时间和交易时间确认 UTXO 的年龄
想解释一下为什么 Qtum 没有用 PoS3.0, 因为它存在一个问题, 攻击者可以通过支付比较昂贵的 gas 发起一些恶意的智能合约从而伤害到整个网络刚刚也提到矿工是可以获得 transaction 中的 gas 作为奖励的, 那也就是说这些攻击者能够将他们用于攻击的 gas 全部收回, 那么他们就可以不断地进行攻击
但是为何现有用 PoS 共识机制的区块链项目就不会有这个问题, 因为它们大部分只支持非图灵完备的脚本语言, 但是在 Qtum 上既要保证 PoS, 又要能够调用智能合约有可能出现这个问题所以 Qtum 的解决办法就是: 通过和其他节点分享收益并将收益延迟化, 增加攻击的成本换句话说, 攻击的成本如果能很快还给攻击者, 那么他会不断进行攻击, 但如果延迟五个小时再还给他, 那么势必能有效降低攻击的频率, 让攻击者要花上很多倍的成本进行攻击
接下来我再解释一下我们的 MPoS 机制, 它基于基于 PoS 3.0: 修改激励机制, 每个区块所得 10 人平分, 其余奖励延迟 500 区块 1/10 奖励立刻获得, 其余 9/10 奖励在 500 个区块之后连续 9 个块中获得挖矿奖励 = 区块所得 + 手续费 + 运行智能合约 gas 费用这是 Qtum 在激励机制上做的一个简单的改进, 但是效果还是不错的
很多朋友肯定会比较关心如何进行 Qtum 的挖矿, 其实非常简单, 只要你拥有一定数量的 Qtum, 下载 Qtum 钱包, 把 Qtum 打入 Qtum 钱包, 等待 500 个区块确认之后, 只要钱包是未加密状态你就可以开始挖矿了这其实币比特币的挖矿要简单地多, 一台 PC 就可以搞定, 你也可用用树莓派等设备或者其他带有 Qtum 节点的物联网设备上进行挖矿
比特币目前全球的全节点大约是 12000 个, 以太坊接近 20000, 而 Qtum 运行了 6 个月到现在已经拥有了 3000 多个全节点, 分布在全球各地正式因为进入的门槛低, 所以才会有那么多的节点全节点数量和网络的去中心化程度是成正比的
下一个 Qtum 量子链的技术创新是 DGP 分布式自治协议, 治理我们之前有提到, 在一个去中心化网络怎样对软件系统进行升级迭代等等问题比特币之前分叉成 BTC 和 BTH, 分叉的分歧就仅仅于区块大小问题, 正因为比特币是个去中心化网络所以导致这个争论持续了很长一段时间分叉并不能说是绝对意义上的坏事, 但我们认为为了这个问题争论了那么久浪费如此多的口舌是挺没有意义的影响分叉的因素分为以下三类:
l 算法功能的改变(共识算法加密算法交易脚本虚拟机)
l 策略参数类(区块大小出块时间交易数量 Gas 策略)
l 关键漏洞(DAOParity 多重签名钱包)
策略方面的的因素其实是最容易达成共识的, 另外两类有事必须通过分叉来解决而比如区块大小的改变并不一定需要通过分叉来进行所以 Qtum 就考虑是否能让区块链进行无缝的升级, 分布式自治协议 DGP 就是这么来的其实它本身也是通过智能合约来实现的, 其基本的治理结构是这样, 在整个社区内部的矿工区块生成者和持有者都是区块链治理的参与者, 通过投票去完成治理的过程最终让区块链能够实现自我管理升级和迭代的系统
那么 Qtum 分布式自治协议技术选择有两种: 自治协议的实现需要某种可编程技术, UTXO 和 EVM 提供这种特性一是基于交易脚本, 通过在交易脚本上实现协议逻辑, 非图灵完备, 实现比较复杂二是基于智能合约, 具有图灵完备的可编程能力, 可以灵活实现复杂的逻辑
自治协议核心逻辑的实现, 是由一系列的智能合约组成, 区块链核心代码在共识过程中执行协议的智能合约, 获得当前的共识状态同时它能通过 Transaction 完成区块链网络的状态转换, 升级无需区块链网络软件更新出于安全性考虑, 智能合约本质是一段代码理论上, 采用了图灵完备的智能合约可以实现任意复杂度的协议设计, 甚至是区块链的核心协议, 如共识部分的代码等; 权衡效率安全等; 当前协议仅适用于在安全范围内对特定参数进行更改, 同时对参数生效时间采取一定的时间限制而参数的更改提案通过后, 在一定数量的区块后生效, 避免产生可能分叉
在合约部分: 创世块嵌入了常见的区块链参数治理的智能合约, 每个治理的主题都由独立的智能合约控制(模板), 这意味着每个功能有独立的治理授权机制以及内置限制条件 Block size, Min GasPrice, Block GasLimit, Gas Schedule 此外 DGP 合约还具备自毁功能, 能在提案治理上发生意外时启动, 治理参数退回到默认状态
最后我们再来说一下 Qtum x86 虚拟机, 以太坊虚拟机的缺点很多, 之前也提过, 再罗列一下:
l 编程语言局限性(Solidity)
l 缺少标准库
l 256bit 整数, 大部分处理器不能原生支持, 运行效率降低
l Gas 模型不合理, 难以估计 Gas 消耗
l 生成的 bytecode 较大, 浪费区块存储资源
l 难以测试和调试
那么针对以太坊虚拟机的这些弊端呢, 我们 Qtum 正在设计 x86 虚拟机, 设计目标如下:
l 支持多种主流编程语言: C/C++/Go/Rust 等等
l 丰富的标准库, 提高开发效率
l 更加优化的 Gas 模型 -- 为标准库函数设定合理的 gas, 便于估计, 利用 DGP
l 解锁 AAL 的强大功能 合约 P2SH 交易, segwit
l 冯. 诺依曼结构, 加强版的智能合约 代码即数据, 多任务协作, 中断和恢复
l 第一类 Oracles 无需运行合约即可获得某些合约数据
l 区块链动态分析 -- 更全面地分析区块链状态
l 选择性数据存储, 节省宝贵的区块链上资源
l 清晰的依赖关系树, 有可能并行运行智能合约, 降低 gas 费用
到这里, 我们技术创新方面也就介绍到这里了我们的 slogan 是重新定义区块链经济, 让不同种类的应用能够快速落地, 这也反映了我们 Qtum 团队真正想让区块链技术快速会渗透到人们的生活中去
4. Qtum 量子链生态系统
Qtum 目前的生态系统对于在座各位更多的是如何去体验, 我们的桌面钱包可以支持:
收发 QTUM 收发 QRC20 Token 智能合约交互调用智能合约部署智能合约发 Token
和 PoS 挖矿, 这是我们比较主要的一个钱包, 几乎拥有一切功能另外就是手机移动端钱包, Qtum 的一个优势就在于你可以在手机端收发 Token, 只需要花上 20 秒你同样也可以使用它发行 Token 和 crowdsale 上述的这一切在网页版钱包中也是可以实现的, 它甚至可以从其他客户端恢复钱包和发送离线交易
那比较注重安全性的用户会比较倾向于使用冷钱包, 也就是硬件钱包那用的比较多的比如 Ledger 钱包也是可以支持 Qtum 的, 并且可以配合 Electrum 使用 Qtum Electrum 是可以支持多重签名轻钱包, 也同样能够支持 Qtum 的收发和智能合约, 而且还可连接硬件钱包
另一个就是区块链浏览器, 可以说它是区块链世界的入口, 在上面可以查询到区块记录追溯每个区块的出块时间大小还有交易时的 ID 等等
除了这些, 对于 Qtum 感兴趣的朋友可以去查看以下链接, 所有的资源都是开源的, 如果大家有一些比较细节的问题, 在这里也可以找到详细的答案:
Qtum 官方开源仓库: https://github.com/qtumproject
Qtum 开发者指南: https://github.com/qtumproject/qtumbook
Qtum 百科: https://github.com/qtumproject/qtum/wiki
Qtumjs:https://github.com/qtumproject/qtumjs
非官方 Qtum Web.js:https://github.com/bodhiproject/qweb3.js
最后呢 Qtum 的生态系统发展到现在已经拥有超过 50 个去中心化应用了, 其中几个比较具有代表性的像预测市场菩提还有清洁能源的交易解决方案 Energo 等这些项目就不一一介绍了, 大家有兴趣也可以登陆 http://eco.qtum.org, 更加鼓励大家投入到 Qtum 的网络上开发自己的去中心化应用
5. 总结:
今天我分享了关于 Qtum 量子链的一些设计理念或者技术创新等, 在座各位一定也有很多想法, 如果你是认同这些观点的, 那你一定是天然的 Qtum 开发者, 欢迎大家上 Github 为我们的底层技术做些贡献, 也会获得比较丰厚的回报当然也会有人不认同我们的观点, 比如你认为去中心化没用, TPS 反而更重要或者 PoW 才是最佳共识机制我们的社区也同样欢迎类似的开发者以质疑的态度做一个全新的产品说这些是想告诉各位 Qtum 的社区对任何开发者都会秉持开放的态度, 只要开发者是真心愿意去为整个区块链生态做一些努力和开发工作, Qtum 量子链也会为他们提供一些技术支持和经济支持谢谢大家!
来源: https://juejin.im/post/5ab8a5786fb9a028e25d8bcb