LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 公链十字路口: 海纳百川的异构分片

公链十字路口: 海纳百川的异构分片

2020-07-13 无涯社区 来源:区块链网络
价值探索39期


上一阶段我们讨论的是DeFi专题, 现在让我们进入公链十字路口系列的第一次分享:"QuarkChain:海纳百川的异构分片", 来和夸克一起聊聊分片这件事。夸克上一次来无涯分享是4月份,时间过得真快, 我们来继续看看夸克最新的想法。
分享人:周期整理:红军大叔(无涯社区)


01

自从4月份以来,我们夸克链进展迅速,4月底上线主网,现在已经稳定运行了大半年了。

第一个,我们主网从4月底上线,中间经过两次大的升级,现在已经支持交易转账和智能合约。可以说我们白皮书大部分的内容都实现了。

第二个,现在节点数目50多个,其中一半多都是社群的节点,分片上面大部分算力都来自社群。

第三个,我们主网已经被包括Upbit, Gate, Kucoin, Piexgo交易所支持,到现在为止都是稳定运行,没有汇报过重大的问题(比如丢币或者无法同步的问题)。

第四个,跨片交易(包括跨片合约的调用,交易所提币打币)都如期的运行。记住,这些都很重要。相对于其他的分片/多链项目而言,比如Cosmos的IBC现在还没有打开,Polkadot还没有主网上线,而我们作为一个从底层重写的项目,现在都已经跑的很不错了:)

另外,近期我们隆重开源了Go版本QuarkChain: https://github.com/QuarkChain/goquarkchain 。

Go语言性能表现比Python语言更好。另外,多个版本之间可以相互验证,互相提供安全性。

因为使用的代码如果有一个发生了错误或者漏洞,还有另一个份不同代码语言,这样就可以在网络正常运行的基础上进行修复,修复之后新版本还能保持同步,安全性更好。

有更多语言更多的程序员可以用,影响力更大。Python开发速度更快,但Go版本性能更好。

跟现在市场上面的项目对比,我可以自豪的说,夸克链QuarkChain是除了以太坊以外唯一的从一开始就支持多语言项目。

Go版本的内测的性能是大概 Python版本的三到五倍,但是上线是多少,我们也不知道。



02

夸克 TPS 挑战赛

所以我们最近举行了第二届的TPS比赛,邀请我们社群的小伙伴们一起帮我们验证, 不需要编程基础,只需要有一定的动手能力就可以。

比赛规则:很简单!在规定时间内,搭建一个QuarkChain 网络并进行负载测试,我们将根据TPS峰值排名进行奖励。

一、最高TPS峰值奖:第一名:0.5 BTC + 1,000,000 QKC第二名:0.15 BTC + 300,000 QKC第三名:0.1 BTC + 200,000 QKC第四 ? 五名:0.05 BTC + 100,000 QKC

二、TPS峰值挑战奖。该奖项用来奖励最先达到100,000 TPS的有效提交:第一个达到100,000+ TPS的:0.1 BTC + 200,000 QKC另外,挑战奖将不设限!当第一个100,000+ TPS得主产生时,我们将公布下一个最先达到TPS的数字以及相应的奖励!

三、参与奖30,000 QKC / 位参与奖用来奖励前50位参与QuarkChain夸克链TPS比赛(以提交时间为准)且TPS峰值达到20,000+的程序员,我们将为每位参赛程序员设立30,000 QKC的奖励!

具体信息,可以请大家关注我们的社群网站 https://community.quarkchain.io



03

Q1提问:

能否用最通俗的语言和大家来解释一下跨链的难点在哪里?你们是怎么解决跨链难题的?有人认为跨链有比较成熟的理论依据, 而分片几乎没有, 你怎么看这个观点?或者, 你们目前的分片是有理论基础的, 或者是找到了工程上的最佳实践?


周期:这个是一个很好的问题。我先说一下,我们的跨链,更直接的应该是说跨分片链的通讯。我们认为我们在理论上,还有工程实现上面都找到了比较好的结论。

我们最近发表了我们的共识文章,玻色子共识Boson Consensus,从理论角度描述了如果能够安全的做到跨分片链的交易: https://github.com/QuarkChain/pyquarkchain/blob/master/papers/boson.pdf 。其中,有一个中文的描述版本可见: https://mp.weixin.qq.com/s/dWTaiw7CbqK6LxL1-h9j4g

这个理论是从我们做QuarkChain上面总结,抽象出来的。但是后来我们发现,Polkadot本身的跨parachain的通讯也可以来描述。

甚至,Vitalik最近写的关于Eth2.0 分片的文章 : https://notes.ethereum.org/@vbuterin/HkiULaluS 也有类似的描述, 比如我们的一个图:

vitalik一个月前proposa的方案我认为,我们找到了一个比较通用的理论解决方案


为什么跨链交易难?这里面关键几点,1,安全,怎么保证源链和目标链上面的操作都能够按照时间顺序完成?Cosmos其实是不能保证的,所以做了很多弱化的处理(虽然他们说没有问题,但是我觉得问题还挺大的), Polkadot和我们都引入叫“共享安全”的模型,可以从理论上证明两个操作(源链和目标链)都可以顺序执行。2,从工程角度来说,我们也非常大的简化了跨片交易对用户体验的影响。Polkadot的跨片交易,在他们白皮书也承认,不能保证每次跨片交易的成功,如果失败的话,需要复杂的恢复过程(白皮书提到,但是怎么恢复现在还是问号)。

我们从代币经济的激励角度出发,用户可以安全的发送跨片交易,包括跨片合约的调用。基本上用户可能都没有意识到一个交易是跨片的。也就是除了地址比ETH长一些,上面所有的交易,基本上跟ETH一样(不管是跨片还是片内)。我认为这对于用户来说是非常重要的。对了,另外说几句,我们会近期把我们的经验,在以太坊社群里面沟通 :)

红军大叔:嗯, 从直觉上大家对于协作模型觉得master slave 的模式比较符合直觉, 或者说一个航母+N个飞机。所以, 可以说“共享模型”更靠谱?


周期:一个航母+N个飞机很形象。我一般喜欢的比喻是一国N制,或者一国多省, 共享模型,大家共享了安全, 但是又可以拥有自己的制度,非常多样化。


红军大叔:「 Qi Zhou: 我们从代币经济的激励角度出发,用户可以安全的发送跨片交易,包括跨片合约的调用。基本上用户可能都没有意识到一个交易是跨片的。」这里感觉你们取了个巧?怎么理解代币经济的激励角度?


周期:嗯嗯,ETH每个块有个gas limit,打包者为了能够获取最大利益,一般会包打满。我们里面,每个块有两个gas limit,一个是片内,一个是跨片。如果一个矿工不打包跨片交易,那么跨片交易这部分的gas limit就会浪费掉。所以会鼓励矿工尽量多打包跨片交易,避免浪费。

而Polkadot说,每个矿工可以跳过打包,甚至丢弃掉。在我们共识里面,相当于这些手续费都不要了,但是不会丢弃掉,下一个矿工还是可以捡起来,继续打包,收手续费。


红军大叔:解决了经济激励之后应该还没有全部解决问题, 即跨片交易过程本身有什么技术挑战吗?


周期:本身的技术还有一些挑战,比如两个不同账本(一个UTXO,一个account)怎么互通,怎么支持更多的账本模型?支持当一模型(比如都是account),根据我们现在主网跑出来的效果,应该是不错的。我建议大家可以试一试 (比如用qpocket.io)


红军大叔:主要是智能合约这块在跨片的时候有哪些核心问题要处理?


周期:嗯嗯,另外一个约束是,我们可以让用户调用不同分片的合约(这里Vitalik最近也写了一个帖子,叫Cross-shard DeFi Composibiilty,其中大部分的例子,我们都可以跑了)

但是合约调用另外一个不同分片的合约,然后这个合约还可以调用其他分片的合约,还是难题。我认为短期没有通用的解决方案。


红军大叔:我印象中以太坊提到了一个pull的动作, 具体没太理解。


周期:主要是这个核心问题。不过好处在于,大部分的DeFi的composibility只需要token能够在不同分片移动就可以,这个我们是完全支持的。相应的帖子在 https://ethresear.ch/t/cross-shard-defi-composability/6268

Q2提问:

我看pyquarkchain里有不少从以太坊里Fork的内容, 夸克和以太坊应该是关系很近了, 那么能否说说夸克从以太坊这里学习和借鉴的思想以及教训?


周期:先说明一下,我们分片链可以使用任何的单链共识,账本模型,交易模型和代币经济学.

我们现在实现的分片主要是基于以太坊的模型,但是我们计划马上要支持类似比特币(还有比如zcash)的账本和交易模型,也就是一个网络,支持多种共识和账本,交易模型。做到海纳百川。

以太坊拥有使用最广泛的虚拟机,还有开发环境,以及社群,我觉得都是非常不错的。

另外,我认为以太坊的成功,其实是相对于比特币而言,提供了更好的灵活性 - 通过合约可以不需要做链就可以发币了,可以通过币来参与DeFi,等等.

但是以太坊的交易模型(gas),以及必须使用以太坊作为gas,我觉得灵活性还是差了一点。很多dapp都需要向用户解释,为什么需要购买他们的币之外,还需要eth,什么是gas。

我们这一方面,对自己的革命做的更加彻底。每个用户可以发行自己的原生代币,可以使用原生代币直接调用合约,并且支付手续费。直接跳过了QKC。这样每一步对用户的要求降低,我认为对于dapp来说,都是好处。

另外,除了代币经济提供更高的灵活性,我们还可以在其他维度提供更高的灵活性。

在以太坊在公链的4个维度里面,其他的比如共识机制(PoW),账本模型(Account)和代币经济(ETH),都是写死的。对于很多社群来说,就不能完全满足要求。

比如最近Aragon项目就自己做了一个链,Polkadot也可以做一键发链。但是对于大部分社群而言,自己做链的成本太高了。另外,对社群有很不好的效果,就是每添加一个新链,都会某种程度上,对社群进行割裂

比如挖矿社群,ASIC和GPU社群就是相对独立的,到现在PoW社群和PoS社群又进一步分化,ASIC社群内部比如比特币挖矿也因为BCHABC/BSV的出现,进一步分裂。

为了凝聚社群的共识,我们着力打造的就是一套公链系统的灵活性,QuarkChain每一个分片可以单独保持自己的特点,不需要和其他分片保持一致(实现了不同分片共识机制、账本模型、交易模型和代币经济四个维度的可定制化)。这样一来,如果有新的单链功能,就可以通过开设新分片的方式加入,并且能够和其他分片互联互通,不用担心会稀释已有社群的共识,大家可以很方便的在同一个网络里面共建生态。

Q3提问:

看到夸克也有在同时做多个客户端开发, 能说说当前两个项目各自的状态和感悟?以及为什么考虑做多个客户端。


周期:首先,夸克链QuarkChain始终手握核心技术,坚持自主创新,不受行业大环境波动影响,始终聚焦技术开发。在测试网上线、代码开源、主网上线、开放交易、智能合约功能如期上线后,为了鼓励更多开发者的参与,提升网络的稳定性和进一步优化QuarkChain主网性能,经过10个月开发后,Go语言版本今日如期上线。是夸克链QuarkChain团队的技术实力、工程实力、交付实力的体现。

除了展示技术能力外,更关系着夸克链QuarkChain对区块链行业未来发展的重要布局。更多的编程语言的支持,意味着能够覆盖更多的开发者,让开发者们充分利用不同编程语言的优势,并提供更加稳定的网络,避免单个版本可能出现的单点系统故障。但是目前的行业仅有夸克链QuarkChain和以太坊在多语言方面在一开始进行布局。

另外一开始用Python是开发效率高,现在的Go版本,运行效率更高。但是两个语言版本的外部功能完全一样,包括共识协议和JSON-RPC。这样,网络会更加稳定,为了保证网络不会因为一个版本出错而导致网络故障,Python版本也会继续维护和更新。

夸克链QuarkChain从一开始秉承开源精神,鼓励社区参与。我们认为,对行业的推动都需要切实落实在可以理解、改进和复用代码上,因此我们坚持开源以供社区检验和参与优化。此次Go版本上线同时开源,不仅是自身实力的表现,更展现了夸克链QuarkChain的开放胸怀和为区块链行业贡献累加式创新的努力意愿。


红军大叔:python和Go版本的代码量是什么样的?


周期:我们的go程序员经常说,为啥python一行语句,go要写10行


红军大叔:在夸克的开发者工具栈目前有哪些?包括前端?


周期:前端我们有javascript的库(web3库),后段有jsonrpc, 另外,其他工具,比如quarkchain上面的标准合约库也在不断更新, 见 https://github.com/QuarkChain/quarkchain-contracts .


红军大叔:标准合约库?是内嵌在链上的合约?

周期类似ERC20这样的库,包括发行新的原生代币, 包括staker和挖矿质押挖矿的操作, 等等。

Q4提问:

大部分对分片总体上还是了解比较少的, 能否说说以太坊2.0的分片方案和你们的分片方案有哪些主要的不同?


周期:主要不同来自于我们的灵活性,以太坊2.0将共识机制从PoW改成了PoS,各个分片也都是同质的,也就是各个分片的虚拟机、共识机制、代币经济学、账本模式都是完全一样的(虽然虚拟机上面可以做拔插式的)。

而我们的特点就是不同分片可以支持不同的虚拟机、共识机制、代币经济学还有账本模式。可以提供更高的灵活性。

另外,可能比较明显的是我们的开发进度和功能设计方面。以太坊2.0因为已经是一艘“大船”了,所以转向比较困难,现在分片还没有上线,跨片交易细节还是研究和设计中,这两项功能我们现在已经实现了。

比如之前提到的分片技术不会影响DeFi的可组合性,就是不同DeFi的应用都能够互相简单的沟通。比如我可以用ETH质押做DAI,然后通过DAI去Compound做抵押,换取利息。这里面的关键桥梁是用户发行的代币(ERC20)是否可以方便的在不同分片直接转移。

并且实现转移之后,他给了几个DeFi的例子,来表现用户可以通过这些代币,在不同的DeFi应用(包括在不同的分片),怎么满足可组合性。这里,我们很欣喜的发现,Vitalik提出的这些例子,现在都可以在QuarkChain上面实现了!!!

首先,用户可以发行自己的原生代币,可以跟QKC在分片/链之间做转账操作,测试网已经完全支持。我们最近也在做关于原生代币发行的标准(QCEP)。

另外,通过发行用户原生代币(比如DAI),用户可以使用这些代币,直接调用不同分片上面的合约,参与DeFi。而且从用户体验来说,跟现在的以太坊基本上没有区别!!!可以说,我们已经提前实现了以太坊,Vitalik上个月提出来的构想。


红军大叔:是不是也从另一方面说明, 同质的分片更容易实现?或者说问题更少?


周期:对的. 尤其是共识同质,大家整齐划一,就会容易很多。

而我们自己叫一国N制,也就是一个区块链网络里面,多个制度(多个共识,账本,交易,代币经济)都运行。

我们一开始也是从同质入手的,而且现在的主网的分片也是比较同质的。但是后面发现,即使不是同质,我们的系统的泛化能力一样可以支持,后来我们玻色子共识的论文因此就出来了。

而主网的成功上线,也给我们更多的信心。`


红军大叔:说到这顺便补充下你们团队情况吧


周期:好的,我们团队现在大概30人,虽然不多,但是非常精悍。一般多都是程序员(包括我本人),有Google, FB, Uber, 微软,Adobe,EMC出来的工程师。

另外也打下广告,我们长期招聘优秀,对区块链感兴趣的小伙伴,不管是工程师,市场,bd,我们都需要哦.

团队也分布在中国,韩国,美国硅谷, 计划欧洲,这样所有大的时区都有.

Q5提问:

目前看来,异构分片的夸克链QuarkChain每条分片可以支持不同的虚拟机,共识,账本以及代币经济学,这感觉其实就是可以支持灵活定制的’链’。听起来和cosmos, polkadot的构想非常类似,你们和这两个项目的异同点是什么?


周期:


Cosmos的思路是每个链自己负责自己的安全,这里面我们认为安全问题还是会发生。Polkadot跟我们一样,会共享安全,Polkadot的Substrate也做的很不错。但是Polkadot还是非常依赖于PoS的共识模型,包括parachain根据现在代码是不能随意配置共识的,灵活性方面相对于夸克链来说,约束多一些。

另外,Cosmos和Polkdot的网络还在早期(比如Cosmos还不支持跨链),而我们的主网已经稳定运行了6个多月。跨片/链的交易,在上面已经跑了3-4个月,现在没有发现任何主要问题。所以不管是灵活性还是开发进度而言,我们都是走在前面的。

Q6提问:

如果对分片发起算力攻击, 会是通过什么方式?有多大难度?你们在算法兼容上目前是如何做的?


周期:如果分片要被攻击,我们共识一个重要的属性是这个攻击必须也要攻击根链。


比如这个图里面,攻击者想要攻击b3。如果只是攻击分片链,比如创建一个更长的分片链,是不能成功的。

要攻击,就需要创建一个更长的根链。但是攻击根链的成本就高很多了。这个原理,也是玻色子共识的核心原理。

红军大叔:

这张图问一个小细节问题, 攻击后的Fork为什么在Rootchain上是B0而不是B1?


周期:因为B1包含了b3块,因为攻击了b3,所以B1的fork (B0 <- B1)就必须也要被攻击, 所以最后根链的fork变成了 B0 <- B2 <- B3


红军大叔:关于算力再补充问下:市面上现有哪些类型的矿机是可以直接挖QKC的?


周期:显卡矿机(ethash)或者CPU也可以, 后面,我们会支持更多的矿机哈。


红军大叔:那这种情况其他币种的算力迁移过来没有51%的问题?


周期:不会的,因为被根链保护。另外,我们也提供了押币挖矿的算法,需要质押(应该少数)的QKC,所以解决方案是挺多的.

这个是我们提升系统安全性的一个想法,主要是结合PoS和PoW的好处。避免51%的攻击, 而且我希望很多小币,尤其是被攻击过的小币都可以通过这个方法提高自己的安全性。

Q7提问:

1024讲话之后, 很多公链也开始考虑加入到联盟链的研发和提供咨询服务中, 夸克对联盟链有什么自己的想法?以及, 未来的区块链的落地会是一个怎样的方式是可能的?


周期:我们在2B的领域一直有所布局,从去年开始已经同多家企业或机构签署协议,依靠我们的玻色子共识,我们就可以支持联盟链或者私有链。

其中玻色子共识 和 QuarkChain的关系,类似于区块链和比特币的关系。我们发现使用玻色子共识,做联盟链,或者私有链,可以做到现在很多做不到的功能,所以我们认为这里是一个非常大的市场。

早期版本Go语言主网作为我们面向企业的,已经提供。另外,我们也希望好的技术,能够给更多的实体赋能。

比如我们认为,央行推行的数字人民币,如果使用区块链和玻色子共识,我认为完全可以达到visa的处理能力,并且支持全球流通,能够更好的发挥人民币国际化的作用。

虽然,这个领域有了比如IBM的竞争者,但是我们拥有自己的独立研发的核心技术,我认为中国人在这里领域里面,也可以走在最前列!

Q8提问:

近期Nervos也是刚刚上线, 他们采用的是Layer1,Layer2的分层方案, 你觉得夸克的分片和Nervos的分层不同主要在哪里?


周期:Layer2的方案,包括闪电,侧链,等等,跟分片很大的不同在于,分片技术可以保障分片链上面数据的正确性。

但是很多layer 2从原理不能保证,需要从经济激励来满足。一方面提高了复杂度,另外一方面,安全性也会降低。所以我们现在可以做到基本上对eth1.0的无缝支持,但是layer2 很难。

但是,分片和layer2不是冲突的, 而且我们一个分片可以自定义共识,账本,交易模型。所以任何layer1上面对layer2的创新,我们都可以海纳百川,包含进来的哈。

Q9提问:

DeFi发展当前热度较高, 你们怎么看待DeFI,夸克链上有DeFi相关的项目规划么?


周期:这也是我们在研究分片DeFi的Composibility,并且注意到Vitalik的帖子, 我们近期已经有若干项目对我们在分片上面做DeFi感兴趣,可能短期就看到相应的进展。

Q10 提问:

夸克链的特点是根链 + 分片, 根链为分片提供算力安全保护, 同时也从分片链上收税来保持整个生态的运转, 很像一个国家像诸侯国收税的模式, 夸克自己的分片链本身也是一条相对独立的链。那么问题是, 什么样的项目愿意进到夸克的体系里来做一个“小国”?现有的项目更多觉得自己可以来“打拼”, 或者说自己来做“更性感”, 那么剩下来的, 对于夸克链更感兴趣的群体似乎是之前做dapp这类的应用为主的群体, 你觉得会是这样的吗?分片就是一个独立的应用模式可能吗?


周期:我觉得是一步一步的关系, 第一步是我们先把国家做好。美国一开始也就只有东海岸的几个州, 但是随着实力增加,越来越多的地方参与(包括扩张,吞并).

这一方面,我们自己也在做早期几个方向:

不断求新:通过添加新分片的方式,支持针对应用优化的共识(比如DPoS,BFT),Ewasm虚拟机,隐私技术等等。所有的QuarkChain用户能够立即获得新分片的好处。

老币赋新能:通过分叉已有的币,可以让现有的持币用户,享受QuarkChain网络带来的好处。比如分叉莱特币之后,所有的莱特币用户都能够在QuarkChain上面调用智能合约,玩DApp,并且参与DeFi。

但是历史也告诉我们,当一个国家到了一个高度之后,自然会有外部想要加入,比如夏威夷就是想加入美国,结果美国还要投票。现在的波多黎各想成为美国一个州,美国还不让。

所以我们从历史经验出发,我们要不断的完善自己,扩张新的社群(挖矿,隐私,dapp)。一旦我们量级达到一定规模,自然会有项目过来,以一个分片的形式加入。

而且我可以断言,大部分的为了单个dapp的链,很难成功,因为社群的冷启动,是很困难的。而且跨链操作的体验也会非常差。但是如果以分片加入进来,就可以立即享受我们社群的用户,这个对很多早期项目来说,是非常有吸引力的。


红军大叔:假设莱特币的社区觉得夸克链对他们有吸引力,迁移到夸克链复杂吗?迁移到夸克之后会新产生一个代币是吗?


周期:需要一定的支持,但是我们逐步简化。迁移过来,会有一个莱特币的分片,上面是币是莱特币分叉出来币。相当于我们用我们上面的一个币对所有的莱特币社群空投。

莱特币的社群的好处是,每个人多按比例多了一个夸克链的币,而且可以使用这个币完dapp,做defi,等等。我认为对于莱特币社群(甚至其他比如ETC,或者ETH),都是一个大大的利好。


红军大叔:嘿嘿, 如果空投多一个token挺好哈, 这么说, 条件合适, 你们可以选几个项目"霸王硬上弓"吗?


周期:“霸王硬上弓“这个词好。我们会准备几个项目,跟我们现在提供的功能差异化比较大的,比如莱特币就是一个例子,新的分叉出来的莱特币,就可以享受原来没有的智能合约功能。另外一个例子就是zcash,除了可与你享受智能合约,我们现在的用户还可以使用zcash的隐私功能,真正做到 1 + 1 > 2的效果!

我们期望以后文案是:QuarkChain(夸克链)在做下一轮分叉分片链投票,BTC, ETH, EOS社群同时要求QuarkChain分叉,投票过程非常火热????


红军大叔:吴军曾经说过"第三眼美女"这个概念, 我觉得夸克对我来说有点像‘第二眼美女“, 哈哈, 第一次看到的时候觉得很多东西不太理解, 不过了解的越多觉得很多有意思的东西逐渐被发掘出来了。祝夸克顺利。

—-

编译者/作者:无涯社区

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...