作为国内最大的区块链技术社群,「密码极客」已经先后邀请到 Polkadot、Dfinity、Cosmos 和 Tezos 等顶尖海外项目来社群线上分享,在国内的区块链圈子里引起了很大的轰动,也得到了很多同行们的赞誉。

昨天我们分享了 Algorand 首席科学家陈婧博士 3 月 15 号在密码极客社群的线上演讲内容。今天的文章是陈婧博士在演讲结束与密码极客社群成员之间的对话整理,陈博士简练而富有逻辑的回答给社群成员留下了深刻印象。

同时,密码极客也感谢合作方 TokenClub、币乎、星球日报、巴比特、金色财经、深链财经、蒜粒财经、世链财经、火星财经、链闻、碳链价值、宏链财经、博链财经、禧钥财经、哔哔 News、CoinVoice、猛犸财经、互链脉搏、SorosReport、布道财经等合作伙伴对这次 Algorand 线上分享的大力支持。

干货 | Algorand 首席科学家对话密码极客社群成员

问答环节全文:

问题一至三,来自吕晟珉,杭州智块网络科技有限公司,TASchain 联合创始人,算法负责人。浙江大学应用数学系博士毕业,毕业后一直从事算法研发方面的工作,在 CAD 与 CG、图像处理、机器学习、密码学方面有十多年算法研发经验。曾发表 2 篇美国发明专利,十多篇国内发明专利。

问题一

吕晟珉:Micali 先生提出的 VRF 算法是一种创新的,低能耗的随机数方案,特别在区块链领域,个人认为是替代 POW 算法现阶段最佳的技术方案。但在 VRF 使用上,想请教:
a) 就是刚才讲到的 Algorand 在使用 VRF 进行抽签时是如何防范女巫攻击的?
b) 我们知道一条公链初期可能用户仅有少数,后期用户会逐步增多,PoW 算法会动态调整出块难度,Algorand 是怎么动态选择 VRF 中的选取阈值的?

陈婧博士:在我们系统里面有两个很有意思的东西,首先来说 VRF 用户的选择,我们刚才一直在提说用 VRF 来选择某一个用户。这其实我刚才没有提到关于 token 相关的内容,那么当 token 进来之后,每一个用户的账户底下可能会有不同数量的 token,有 100 或者 200 个等等的。那么在使用 VRF 做选择的时候,一个最简单的方式,先不考虑系统的效率问题的话,一个最简单的的方式是每一个 token 自己去计算自己的 VRF。在这种简单的情况下,你可以认为一个拥有一百个 token 的用户,他就计算了一百个 VRF。他的输入将会是这样的:有一个输入项是一是二是三四,这样一直到一百,它会计算一百个 VRF 然后每一个都会有被选中还是没有被选中的问题。回到最初的例子,如果这个系统里面不管有多少个用户,可能是一两千个用户,但是可能有 100 万个 token,我们要从这 100 万个 token 里面选出一千个 token,使他们的拥有者来参与系统的话,那么就是每个 token 的 VRF 如果是低于 0.001 的话就会被选中,不然的话就不会被选中。

把 VRF 跟 token 结合起来,是抵抗女巫攻击最直接最简单的方式。一个恶意的用户,不管有多少个身份,也不管怎么样把这些 token 分发到不同的身份里面,仍然是每一个 token 的 VRF 如果是小于 0.001,就会被选中,多于 0.001 就不会被选中。但这个时候大家可以想一下,这样一个非常简单的操作,他的问题在于它的效率。也就是说如果一个用户,比如这个用户他自己拥有 5000 个 token 话,那么为了计算哪一个 token 被选中了,他就要计算 5000 个 VRF 这个是效率非常低的一种方式。而对这个解决方案呢也很简单,也就是说在我们系统里面,当我们用 VRF 的时候,是针对每一个用户的 token 整体被选中的数量的概率来做的。就比如说一个用户,他的账户里面有一千个 token 的话,那么每一个 token 被选中的概率是 0.001。

那么这一千个 token,刚刚好有一个被选中的概率是多少?大家是可以算的。刚刚好有两个 token 被选中的概率是多少,这也是严格定义出来的。总的来说,如果一个用户有一千个 token,那么它这个里面有刚刚好 K 个 token 被选中的概率,这是符合一个二项分布 (Binomial distribution) 的。而我们的做法就是用 VRF 的计算结果来映射到这个 binomial distribution 的选择概率。使得一个用户不管他有多少个 token, 他只需要计算一个 VRF 那么系统里面的用户就可以根据他当前持有 token 数跟整个系统里面总的 TOKEN 数的比值,来确定到底应该对他使用哪个二项分布,然后每个人都会有效地计算出来这个 VRF 输出对应的是在他的账户底下有多少个 token 被选中?这样的方式就可以保证了既可以抵御 Sybil attack,也可以保证系统的高效性!

问题二

吕晟珉:Algorand 倡导「用户即矿工」,但我们知道矿工是通过提供算力,存储空间,网络带宽来支撑系统服务,从而赚取其相应的经济回报的。Algorand 的经济模型是怎么样的?而对一般用户来说,他们仅需账户操作、合约调用即可,不需要同步账本参与铸块。Algorand 对用户节点有分类吗?然后在这方面是怎么找到平衡点的?

陈婧博士:这个是关于 token 的经济模型和激励机制的问题。那么关于 token 的发行跟经济方面的管理是会由 Algorand 基金会来负责,详细的模型等等,很快会由基金会给大家做统一的说明。细节方面我就不讲了,我可以给大家说一下,就是关于激励机制,我自己的一些想法。首先来说,因为在 Algorand 的系统里面,用户的计算的要求是非常低的,像我刚才说到。所以不需要给用户非常高的激励,比如说像比特币,如果需要用户挖矿的话,那么有硬件的投入,这个激励机制必须要高到一定程度,用户才会有这个意愿来参与进来。否则这个网络就很难运行的下去。而 Algorand 里面的好处是计算量很低,那么其实用户具体的这个 cost 也很低,所以对于用户来说,在经济方面的激励并不需要很高,就使得用户可以参与到这个网络中来。所以在最初的机制设置里面,我们给用户的激励方式并不是参与什么特别的功能,而是使得用户加入到 Algorand 的网络,所以任何用户只要加入到这个网络里面来,就会收到一定的奖励。

而用户本身可以自主的选择自己是否想要参与到共识机制,如果用户自己不想参与的话,那么系统也不会强制他参与,也对这个系统的机制也没有影响。那么如果用户自己愿意参与的话呢也很简单,只要在系统里面保持在线就可以完全参与,要求很低,一个很简单的电脑设备就足够了。而这个系统里面,我们对于用户的区分不是由系统强制区分的,而是由用户自主选择的。如果一个用户觉得它这个带宽很高,愿意给其他的用户提供,比如说网络中继的服务,他也完全可以把自己注册成一个中继,那么可以帮助其他的用户来做信息的发送,而系统里面的设计也可以保证中继节点不需要被系统信任,就是说完全可以用不被信任的节点来做中继的工作,而不影响到系统里面的安全性。所以我们的系统在设计的时候,会尽量给用户很大的选择性,而同时又要保证这个系统本身的安全性。那么这也是我们目前对于社区建设,还有对激励机制等等方面的最基本的想法。

问题三

吕晟珉:阅读 Algorand 的论文,我们知道 BA*算法中,每轮的验证委员会数量较大(数千名),要求达到 2/3 委员会认可,则相应产生的签名数据会很大,在网络传输,验证签名的性能开销较大。我们注意到今年三月初 Algorand 团队宣布采用 BLS 签名算法来解决签名数据效率的问题,看来会采用一个 VRF+BLS 的技术方案。TASchain (现已测试网阶段)也是采用 VRF+BLS 方案,它是采用验证节点随机选择预先建组,以 BLS 门限签名方式达成组内共识的。能否大致介绍一下采用 BLS 签名后的 BA*算法有什么变化?核心思路还是拜占庭容错算法吗?

陈婧博士:关于用签名选择用户,然后参与拜占庭协议的消息的效率问题。

首先有一个很有意思的特点,就是说在 Algorand 的协议里面,需要选择的签名数基本是一个常数,是不根据系统里面区块的大小或者交易量或者是用户数的变化而增加的。

所以我们可以很容易地调节区块的大小,它包含的交易量的大小,使得这个系统里面整个拜占庭协议所占用的系统的带宽资源,相对于区块所需要的这个资源只是一个比较小的部分。这是第一点。

第二点,就是当这个系统,哪怕这个系统里面的用户,签名数量再少,它也会是占有一定的带宽的,所以确实我们在将来是会使用 BLS 做这个 aggregatable signature,可聚合签名,来进一步压缩传输签名等信息所需要占用的空间,以及存储签名等等需要占用的空间。

需要提到的就是说 BLS 它只是一个签名系统,它并不是一个 VRF,我们在里面做了一定的工作,使得可以把 BLS 既可以用来做可聚合签名,也可以用 BLS 来做一些 VRF 方面的工作。这些东西会在将来陆续发送出来。

BLS 本身跟 VRF 还是有比较大的距离的,比如说你在设计一个 VRF 的时候,你需要保证这个签名本身是唯一的等等,针对这些方面,Algorand 在内部也是做了一些工作,使得它可以确实被用作签名聚合和做 VRF。使用 BLS 之后,我们的拜占庭协议的基本框架并没有改变,而是在需要用到这些签名的时候把它加入进来,所以这两部分其实是一个非常好,非常容易的结合点。

问题四

来自密码极客、TokenClub、Algorand 官方社群

Q:Algorand 和 Thunder、Conflux 等项目都有一个特点:学院派的教授出来创立的项目。外界对此也有质疑,学院派的理论是否能落实到区块链项目开发的工程能力上呢?Thunder 的测试网出来后,其开发工程能力就饱受外界微词,Algorand 是否也会碰到类似的问题,即其开发实力无法完成理论上所描述的技术愿景?

陈婧博士:这个问题是关于理论跟工程的结合的,我觉得问得很好。首先来说呢我觉得单纯的一个学院派的标签,可能不能够体现一个项目内在对于理论跟工程之间结合的理解。Algorand 在设计之初,理论跟工程方面的结合就是非常密切的,我们在系统方面的原型验证,在整个公司团队成立之前就是已经完成了的,是在我们有了充分的系统验证的信心之后,认为这个事情在工程上是确实可行的,然后我们才真正把它在商业上在公司里面真的把它落实进去。

而现在我们的工程师团队呢,也有很强的技术背景,首先是在早期参与原型验证的团队,有很多在从事工程方面有很多年非常有经验的同事加入进来,另外也有产品等等,还有开发者社区等等各个方面非常有经验的成员加入。应该说我们从一开始就非常重视要两条腿走路的问题,就是理论跟实践的结合一定要非常密切,而从现在的开发进度来看,也是比较符合我们的预期的,可以说一切都在按部就班的进行。不管是理论方面,原型方面,还有代码以及代码的 Review,还有开源,还有落地以及 layer2 的 Use case,还有 SDK 等等的各个方面,都在按部就班的进行。

问题五

来自腾讯区块链场外论坛、碳链价值学习社群、禧钥财经陆家嘴社群

Q:基于 PoS 类型共识算法的区块链,初期在投票权的分配上有个问题,如果太分散,那么整个链很容易被个别人收买控制;如果太集中,又会导致普通的个人参与者权重太大,很难得到激励,制约区块链的发展。Algorand 是如何解决这个问题的?又是如何做到在主网发展期间,仍然保持诚实节点的投票权大于 2/3 的 ?

陈婧博士:这个问题问的很好,我相信所有的基于 POS 的系统都会有同样的想法。就好像 POW 的系统可能一开始的时候是一个非常分散的,但是可能经过很短的时间就会出现算力集中的问题。而 POS 的发展趋势可能正好相反。在系统的开始之初,为了保证系统的安全性,可能要经过有一段时间,使得系统里面的 token 逐渐的分发出去,有一个引导 (bootstrap) 的过程。而这个过程可能会持续一段时间,使得系统逐步的达成去中心化。

所以我们在把 token 分发出去时有很多关于安全性的考虑,比如我们会邀请一些全世界一流的大学来加入,来作为我们的节点,来帮忙做 bootstrap 的事情。另外也会邀请好的开发者团队来帮我们做 bootstrap。总的来说 bootstrap 是一个很重要,然后需要长期的过程,而不是说第一天马上就是这个系统里面 token 完全的分散出去。是要在安全性方面有一个很大的保证。我们认为这个时间是完全值得花的,因为从目前来看,很难有系统完全可以做到长期的去中心化,又长期的安全性的运行。所以哪怕是花上很长一段时间,也是很值得的。我们的目标并不是说在第一天就有一个完全的分散的状态,而是说在经过一段时间之后,达到一个很稳定的一个分散的状态。

而在这个过程当中,随着 token 的分发,随着有其他的应用,其它的 Asset 加入到区块链上面来,整个链的价值也会增高,而随着链的价值增高,对于这个链进行攻击的代价也会不断的增高,这样子就可以使得即便在一段时间之后,系统里面的 token 状况是一个非常分散的情况,而要对它进行攻击的话的也是一个很不容易的事情。

问题六

来自大饼抗战站-麟角、真本聪日记交流群、爱德媒 Block ADM 学习群

Q:每个节点选取验证候选人时,必须要从 2000 人的候选池筛选,为什么一定要 2000 人呢?这个数量导致的网络通信的问题怎么解决?

陈婧博士:首先需要纠正一下,选择验证候选人的时候,并不是每个节点去决定是哪 2000 个人会参与,而是每个节点独立的决定自己是不是被选中了。而每个节点其实在这个时候是不知道其他人会不会被选中,不知道谁会被选中的,他只知道自己是不是被选中。

系统里面通过参数的设置,通过对选择概率的控制,使得在期望的情况下,整个系统选中的数量的期望值是我们需要的。也不一定是问题里面提到了的 2000 人,我们在拜占庭协议不同的步骤里面有不同的安全性的要求,会根据这个要求计算系统里面需要有多大的候选人的群组,能够保证这一步以及下面步骤的安全。所以实际上每一步的这个系统里面会选出候选人的这个期望值是不一样的。而至于这个数量会导致的通讯问题,我刚才在前面的解答里面也有提到。首先来说呢这些候选人群组大小的期望值是常数,不随网络规模和用户数的增加而增加,从而保证了可扩展性。

我们的系统因为计算量很小,其他的开销也很小,所以对于区块的调节是很容易的,比如说可以通过调节区块大小,使得整个由数字签名而带来的这个信息量,以及对于通信渠道的占用,在整个区块链对通信渠道占用的比例里面会很小,而绝大部分对通信渠道的占用是因为区块和里面的交易信息,而这些东西在任何的区块链系统里面都是不能避免的。这是第一点,那么第二点就是我们在后续的开发里面会加入可聚合签名,aggregatable signature,用这些签名就可以进一步压缩在区块链上传输这些数字签名以及存储数字签名所需要的空间跟通信渠道。

干货 | Algorand 首席科学家对话密码极客社群成员

【密码极客】是一群来自前阿里、蚂蚁金服的技术人员与阿里创业帮一起发起的区块链技术创投社群,也是杭州最大的区块链技术创业社群,截止 3 月,社群技术人员超过 2000 位,社群成员超过 8 万,孵化合作阿里系区块链技术项目超过 30 个。

扫描二维码加入我们

干货 | Algorand 首席科学家对话密码极客社群成员

来源链接:mp.weixin.qq.com