随着通讯和可视化移动终端设备的逐渐普及,人们簇拥于web3或元宇宙的概念。而对于通往全新世界的道路要怎么走?却没有很明晰的答案。DFINITY在5年的探索经验中,摸索出了”互联网计算机“的道路,它会成为一个行之有效的解决方案吗?
我们邀请到DFINITY核心技术工程师PaulLiu来从其技术底层为我们进行解读。PaulLiu是Dfinity的核心技术工程师,加入Dfinity之前,Paul在英特尔实验室的研究科学家岗位工作了7年。在英特尔实验室时期,他为X86架构构建了一个性能高度优化的Haskell编译器。Paul拥有耶鲁大学博士学位,师从Haskell编译器的发明者之一的PaulHudak博士。Paul是Haskell研讨会和IFL成员,发表过大量学术论文。
介绍
DFINITY是一个总部在瑞士的非盈利组织,所有的收入只能用于一个目的,就是参与研发和推动InternetComputer这个去中心化的开源网络项目。虽然这个项目是由DFINITY主导研发的,但自从上线那一天起,治理系统就已经启动了,而且网络的实际物理节点也是许多个第三方独立运营商自主运营。
整个项目归属于治理代币的持有人,也就是整个社区。DFINITY会作为主要的技术贡献者继续参与开发和推广整个平台,但我们只是贡献者之一。在上线短短三个多月的时间,已经有不少其它的社区团队参与进来。这个平台的发展离不开整个社区的贡献。进一步推动去中心化,是我们当下最主要的目标。
作为InternetComputer这个平台的创建者,DFINITY的愿景是blockchainsingularity,也就是说所有能在互联网上面跑的应用,都应该用区块链的技术构建。
为了做到这一点,我们在TCP/IP层面之上,应用层面之下,添加了一层基于区块链共识技术的协议,我们把它叫做InternetComputerProtocol(ICP)。这一套协议是通过在多个物理节点之间交换数据,构建一个虚拟的子网。
子网内部的节点对输入输出达成共识,相互验证计算结果,并可以和其它子网之间通讯。多个子网组合在一起共同构建出一个虚拟的计算机,容量可以随着子网的增加而增加,谁都可以在上面跑程序,访问其它人的程序,等等。
第三点则是tokenization,也就是应用的代币化。这可以说是整个互联网应用发展的下一个趋势,不可阻挡。传统的云服务商也最多是提供和区块链之间的桥接组件,一整套做下来它的架构不可避免还是相当臃肿的。InternetComputer既然能够直接跑网站,跑应用,作为原生区块链,做tokenization的整合是非常容易的。
问题3
InternetComputer上的每个智能合约都是“可扩展”的,具体说说协议的扩展在技术层面是如何运行的,目前有无扩展的案例?
回答:扩展性有好几个维度,一个是存储空间上的,一个是网络流量上的,还有一个是计算能力,单位时间能够处理多少事务。是否可扩展主要是看能否绕过已知的瓶颈。在一个公共平台上,我们还要考虑不同用户之间,不同应用之间,有限的资源如何分配的问题。
InternetComputer在设计上主要的思路是scaleout,也就是遇到瓶颈时通过增添资源,创建新的子网来解决。这个和主流的web应用的思路基本上是一致的,当一个应用无法通过一个canister来处理所有用户请求的时候,合理的做法是在应用层面上使用多个canister各自处理一部分的用户请求。也就是说在设计应用的时候,需要考虑到这一点,至少要留出一个迁移到新架构的可能性。目前我知道OpenChat的设计是走多个canister的,DSCVR也留有这样的余地,但目前还是集中在一个canister。
从系统层面,通过canister扩容,可以超越目前4G内存的门槛。计算方面,也是从并发的指导思想出发,没有选择以太坊那种全局原子性的设计。所以不同canister处理各自的消息,都是在自己的线程里面,只要硬件负载容许,是不影响其它canister的性能的。至于网络方面,基本上带宽决定了扩展的上限,任何一个区块链都无法避免这个物理瓶颈,只能通过分片,对应到InternetComputer这里就是不同的子网。
当然系统层面也有各种各样的优化方案可以带来性能的提升,我们一直也在做这方面的工作,希望能够充分发挥硬件的性能。
问题4
哪些类型的Dapp更适合搭载于其上?我们发现目前InternetComputer上的DeFi协议比较少,未来InternetComputer上Dapp的赛道都有哪些方向?
回答:DeFi主要还是需要流动性来推动,出于安全考虑,目前尚未开放canister转账ICP的功能,这同时也限制了流动性。不过这个限制是暂时的,目前来看整个网络自从上线后,稳定性还是不错的,在适当的时机相信会通过NNS投票来解除这个限制。我相信已经有不少开发者都做好了准备,DeFi应用的爆发只是时间问题。
我个人对目前InternetComputer上面的socialdapp还是很看好的。这个赛道一旦有了tokenization的加持,会非常迅速成长,绝对不会逊于DeFi和NFT游戏这类的。其它区块链上也有一些社交属性的dapp,但都受制于起步的门槛,毕竟正确使用钱包这一步,就已经难倒了很多用户了。在InternetComputer上面的dapp,使用Web标准的技术,任意浏览器均可访问。
另外一个我看好的方向是面向个人用户和面向中小企业的应用。像项目管理,文件共享,创作者经济这种,虽然目前互联网上已经都有比较成熟的解决方案了,但平台风险始终存在。前面也提到云服务的平台风险,相信大家对各种其它领域的巨头垄断都有一定的切身体会。现在去中心化的结构是一个新的可能,平台本身应该变成透明的存在,而不是盘踞在食物链的上游用霸王条款来吞噬用户的利益。
归根结底,哪个赛道有前途,取决它的应用能否快速汇集价值。这个价值,不是说你的项目锁仓有多少,因为这个量它随时都可以在变。而是说有你建立了多少和用户之间的联系,建立了多少和其它应用之间的联系,这种关联随着信任加深,随着用途增多,它会越来越有价值。代码可以粘贴,但这种关联是无法拷贝的。而如果运用得当,代币在一定程度上可以加速价值的聚集,但最终还是取决于项目本身的内在价值。
问题5
Canister作为Webassembly运行的容器,承载了Dapp链上运行的环境。最近关于Canister有哪些新进展?
回答:就在这周一,DFINITY发布了开发路线图,欢迎社区的参与。https://dfinity.org/roadmap。其中和canister相关的的有:
1、Stablememory扩容
2、CanisterECDSA签名
3、应用AMDSEV保护数据隐私
扩容目前主要是针对stablememory也就是不受代码升级影响的内存管理。之前是受到Wasm虚拟机4GB的限制,不过现在已经可以放开,上限受制于子网的内存总量,目前大约在300GB左右吧。
ECDSA阈值签名技术,简单讲就是让每个canister在不存储私钥的前提下,也能对数据做出签名,并且此签名可以通过公钥验证,每个canister都可以得到一个唯一的公钥。这个是和我们已经实现的ChainKey技术一脉相承的,它的应用也很广泛,比如canister可以直接发起一个比特币或者以太坊的交易并且签名。
这意味着原来必须在私密环境下才能把私钥交给程序做的事情,现在可以放到一个去中心化的环境里来做。还可以应用在颁发SSL证书,DNS定制域名等等方面。
使用AMDSEV的技术主要是为了在一定程度上保护Canister的数据隐私,这样就算是节点运营商也无法窥探用户数据。我们一直在做这方的准备,难度也比较大。好在目前节点所采用的硬件都已经支持SEV技术了,所以到时候希望是一个平稳的升级。
问题6
“开放互联服务”可以实现永久性API,可以让开发者放心地构建依赖于其他服务提供的数据或功能,并且不会存在撤销的风险。“开放互联服务”如何部署到互联网计算机上?
回答:提供永久API最简单的做法是通过把canister控制者设定为空集,来让它的代码成为不可修改的。
我个人也做了一个很简单的canister,叫做blackhole。它的主要目的是让其它canister可以把控制者设成blackhole,这样不仅代码成为不可修改的了,blackhole还提供额外的查询功能,比如查看账面cycles的余额,或者查看代码的哈希值。blackhole本身的控制者被设成它自己,它的代码也是公开,很容易验证哈希值的正确性。如果有需要让自己的canister被其它人信任,把它的控制者设置成blackhole是一个简洁的方法。
但如果还需要保持代码升级功能的话,这就需要引入社区治理功能了。我们正在开发中的ServiceNeuronSystem可以让应用通过锁定代币创建神经元,然后进行投票,来管理应用的方方面面,包括代码升级。
当然我们做的这套SNS系统还在开发中,尚无实例。而且它只是候选方案之一,社区现在已经项目有在这方面做其它的尝试,相信都会逐渐成熟起来。
问题7
安全性是计算机的重要议题,InternetComputer运用哪些机制来替代类似防火墙等功能?在防篡改上,DFINITY与其他区块链底层相比有哪些特点?
回答:防火墙的一个主要功能是防止黑客入侵系统,取得内网权限,从而达到盗取或者篡改数据的目的。首先,这个内网外网权限的划分,就很有问题。它相当脆弱,因为一旦被攻破,内网所有默认的权限都被暴露在攻击者面前了。所以我们看到不少公司已经抛弃了这种做法,改成给每个服务设置权限,使用统一身份管理的技术来对用户授权。
与之对应的则是InternetComputer上面的身份管理。一个公钥对应一个用户的身份,然后每个canister都能够获得调用者的身份。这个身份是无法被第三方篡改的,无论是用户调用canister还是canister之间的调用。之所以能够做到这一点,是因为这种调用必须通过共识协议,尤其是跨子网的调用,在发起方和回应方都要通过共识协议,经过验证才会被认可与执行。
而要快速高效地认证任意子网签名的有效性,就必须用到我们研发的chainkey的技术。它能够在保证阈值签名公钥不变的同时,支持动态的节点连入和移出。这一点其它区块链目前都无法做到,所以在验证交易这方面InternetComputer目前是领先的,它的子网之间基本上不需要同步数据。
想在InternetComputer上面篡改数据,仅仅攻破一个节点的权限是不够的。必须要能够控制一个子网的2/3以上的节点数才能做到。所以子网的安全性在一定程度上取决于节点数量。而且通过节点的不定期轮换,也能进一步加强这方面的安全性。就算是一个子网被攻破,它也无法假冒其它子网的身份,所以损失的范围也是可控的。
保障数据真实可靠不被篡改是一方面,对数据隐私的保障则是另一方面。大多数区块链都是公开数据,所以也谈不上什么隐私保护。真正的隐私保护可以通过应用层面来实现,用同态加密这样的技术,但目前效率不够。所以我们目前的计划是应用AMDSEV技术,在硬件层面加密。但整个InternetComputer的安全性并不依赖于硬件,有SEV的保障是一个加分项。
问题8
DFINITY的名号其实早在6年前就已经打响了,虽然主网上线的过程比较慢,但我们可以看到DFINITY团队是真的想做一些颠覆性的东西,共识也是十分强大的。从“以太坊的姐妹链”到“世界级互联网计算机“的转变受到了哪些因素的影响?
回答:WorldComputer的口号是以太坊最先提出来的,也激励了很多人,虽然现在它更多的是在数DeFi和数字资产方向发力。“世界级互联网计算机”方向也一直是DFINITY努力的目标,并不是融资以后才更改的路线。
起初由于团队条件的限制,只是在BLS和共识协议方面有明确的创新,所以开始第一步是打算先从这方面入手,推出一个链再逐步迭代。但后来我们意识到,不解决跨子网通信的问题,那我们将永远停留在“又一个区块链”的窠臼中,难以创新。也正是因为团队的坚持,才有了在chainkey方面的突破,解决了跨子网验证的难题,实现了scalability的承诺。
回头来看,其实我们只要不断地问自己一个问题:为什么去中心化的区块链不可以跑网站?
首先要解决一个效率问题,就是访问网站是需要毫秒级的响应的,怎么能做到?我们的答案是把只读的查询和状态的修改分开,那么99%的网络流量都是只读的,是可以做到毫秒级响应的。修改状态我们也通过共识协议方面的创新做到两到三秒之内的响应。
效率达到了,那如何验证内容的正确性?如何让普通的浏览器也能做到?那就必须精简验证的所需要的条件。能不能抛弃历史区块,仅仅通过一个公钥?用BLS公钥的话,怎么解决节点动态变化的问题?怎么解决中心化域名和SSL证书的问题?访问流量增多的话,如何扩容?扩容的瓶颈和边界在哪里?扩容的需求和同步合约调用的方式冲突了怎么办?
只要你不停地追问下去,不停地寻找答案,相信一个切实可行的方案会逐步浮现出来。这也是DFINITY过去几年坚持在做的事情。
问题9
以太坊刚完成EIP-1559升级,迈出了通缩的第一步,代币价格也逐渐走高。你认为对于去中心化基础设施来说,代币的表现给支持者激励更大还是技术上的颠覆性更重要?怎么做到两者的相对平衡?
回答:我是这样看的,代币的短期表现取决于市场参与者的信心与预期,长期表现还是要回归平台的价值本身。以太坊的技术可以说是经历了时间的检验,尽管有各种不足之处,还是得到了加密货币整个市场的认可。至于通缩还是通胀,各有弊端,我是不太能够认同BTCmaximalist那套说辞的。DeFi在流动性和激励方面的创新也是非常精彩,不过放长来看,多数项目其实并没有增加价值,更多的是一场数字的游戏。短期通过代币价格的提升得到的用户,也可能因为价格回落,或者另一个项目的崛起而流失用户。
技术的创新,也很容易被竞争对手拷贝过去。不过我们从整体来看,这些创新是一直推动整个行业向前的。落到单个项目上,到底能否因为纯粹技术创新而获益,还真不好说。业内都在说生态建设,生态项目在一个平台上到底能有多少保障,尤其是初创平台,怎么能说服开发者来投入,不是一件容易的事情。
我觉得最值得努力的方向就是把尽力圈子扩大,从支付转账,到DeFi,到NFT和游戏,就是一个不断开疆扩土的进程。在这个大趋势下,尽力把区块链技术拓展到更广泛的领域中去,比如让原生网站跑在区块链上这种目标。用技术的创新和代币的激励,一起来获取新的用户,才能繁荣生态,提升价值。
问题10
很多人认为InternetComputer是web3应用的主要阵地。每条公链或多或少都有自己对于web3的见解和技术实现路径,如波卡、以太。DFINITY对于通往web3之路的见解和未来规划/Roadmap是怎样的?
回答:DFINITY的宗旨是抛开一切不必要的包袱,向BlockchainSingularity的目的地进发。InternetComputer这个项目还有许多未能完善的地方,离完全实现这个目标还有一定的距离,我们希望更多的人能加入进来,一起推进平台本身的技术进步和构建更丰富多彩的上层项目,来赢得客户。
每个的公链侧重点不太一样,我们相信一切能用区块链构建的,最终一定会用区块链实现。所以也并不排斥结合其它公链的技术,比如我们周一发布的路线图中,有和以太坊、比特币的深度整合项目,对双方而言都是一个完美的互补。这会进一步激发资产跨链的流动与融合,简化应用架构,抛弃云服务这种中心化的包袱,从而提升应用整体的安全性和强壮性。
跑网站是重要的一步,但它只是InternetComputer的第一步。我相信当下InternetComputer所打下的基础,一定会在未来成为BlockchainSingularity这个宏伟拼图的一部分。
问题11
请问下CanisterSignature是什么?Canister用于签名的私钥存放在哪里?Canister里是否支持类似以太坊智能合约的Event机制,可以通过订阅来获取某个updatecall是否是caller根据返回值获取?最后,普通Canister什么时候可以处理ICP代币?
回答:CanisterSignature是指用子网的公钥给canister的计算结果做签名。目前我们使用的是BLS阈值签名,它有一个很好的特性就是公钥和签名的唯一性,是其它聚合签名的技术不具备的。
阈值签名,简单讲就是各个不同的节点,它们有各自的私钥对计算结果签名,一旦集齐了达到限定数量的签名,则可以得出一个唯一的阈值签名,用一个公钥即可验证,所以这个公钥被当作是子网的公钥。这里是没有一个相对应的子网私钥的,节点的私钥是各存各的,都不一样。
一个子网上可以跑很多canister,用merkletree的方法,很容易得到指向其中一个canister计算结果的路径,所以可以把子网的签名加上这个路径看作是Canister对某条数据的签名。
Canistersignature一定程度上相当于eventlog或者收据。因为我们不要求节点保留所有的历史区块,单独为了eventlog做这些也没有很大意义。毕竟通过querycall和certifiedvar也能实现这样的功能,并且更强大。
Canister处理ICP代币在技术上早就不是问题,是因为安全的考量才没有放开权限。随着系统的稳定我们的信心也增强不少,所以如果没有意外,估计近期就会通过社区投票来决定。
社区提问
提问:我发现icp的开发者比较喜欢开发社交应用,请问icp为什么适用于开发社交应用或者开发者为什么喜欢在icp开发社交应用?
回答:我的理解,价值的聚集,首先是来自人的聚集。所以一旦一个区块链平台可以直接把人聚集起来,一定会有这样社交类的项目诞生。但现在的Web环境下想要做出一个社交类的爆款相当不易,所以这些项目一定会去尝试不同的玩法。tokenization代币化还没有固定的套路,我也很期待看到这里面的创新。
提问:开发中有个担心,举个例子A容器调用B容器,B容器调用C容器,如果在C容器更新了状态,正常返回值给B容器之后,B容器挂了,此次A容器也会失败但是,C容器的状态已经变更了,有没有推荐的方案解决类似的原子性问题?
回答:以太坊的原子性设计是一旦调用栈上的一个合约发生状态回滚,所有的合约都必须状态回滚。这意味着有一个全局锁,在处理一条用户事务会锁住所有相关的合约,直到它全部处理完成,在此期间被锁住的合约不能处理任何其它事务。这样的设计虽然开发者编程方便,但是先天缺陷是性能无法扩展。所以我们在最初设计canister的模型时就摒弃了这种做法。
如果需要这方面的组合性,传统数据库已经有很成熟的解决方案了,比如两步提交(two-phasecommit)。这在完全可以在应用层面商议一个标准经由canister接口实现,不一定需要在系统层面支持。
系统设计上总是要做一定的取舍,有时候添加限制比较好,有时候提供选择比较好。我们的看法是单个方法调用符合原子性是一个比较合适的粒度,没有必要强制整个调用栈一起做原子化。
提问:我是个币圈小白,觉得Dfinity生态上的钱包太难用,后期会改变吗?
回答:首先现在的钱包,所谓的互联网身份II不是必须的,它是一个可选项。我自己做的App就没有用它。其次,我的理解是现在各个设备使用浏览器的支持比较好,但是手机上App的支持有一定难度,这需要进一步的研发工作。在中国使用安卓手机的用户,如果上面不能安装GooglePlay服务的话,会导致无法使用WebAuthn,这也需要一个合适的解决方案,我们正在调研。
提问:我是一名正在互联网计算机上构建应用的开发者。我想问后端何时可以进行外部http/https调用?此外,由于每个容器4GB的限制,我必须实现我的分布式存储系统,那么BigMap什么时候发布或有其他更好的可扩展文件存储方式吗?
回答:对外部进行http/https调用可以分开看,一个是读,一个是写。前者需要预言机,后者如果对方满足ren-entrancy则完全是可行的。
提问:以太坊上的DAPP可以直接转到IC上用吗?
回答:solidity可以编译到Wasm了,但编程模式不太一样,而且需要支持的系统接口也不一样,所以还需要做一定的工作才能支持。
提问:问一个共识的问题,子网中共识属于PoS吗?子网节点共识中作恶的话,是否有惩罚机制呢?
回答:是PoS,目前没有要求节点质押代币。因为是准入机制,节点不可以匿名,所以相关的惩罚机制比较容易实现。节点需要定期领代币作为工资,目前的惩罚机制是从中扣除。
提问:stoic钱包助记词不能导入plug钱包,问了一下stoic开发者,说是加密算法选择的不同。同时我看官方的钱包助记词更不一样,这个后续会有统一的标准吗?能够实现像以太坊那样的一个助记词多个钱包导入吗?
回答:的确会造成一个不通用的问题,所以短期内只能提醒用户标注一下哪个助记词是哪家的。长期来看,希望社区能够协商达成一个通用标准。
如果你对于Dfinity生态感兴趣,请关注星际视界公众号并回复“ICP”,进入Dfinity生态探索交流群。
——End——
标签:ANI区块链BOOBOOKMechanic Chain.AI区块链运用的技术中不包括哪一项技术HeroBookBitBook
根据Web3Index的排名,PocketNetwork现在是排名第一的中间件服务协议,上个月开发者支付的费用增长了208%,比与其收入最接近的协议高出7倍之多.
中创热点:AllinMetaverse(元宇宙),扎克伯格在豪一个未来!仅一个小时的时间,有关“Facebook正式改名Meta”的消息就冲到了微博热搜前五,引发了近3亿人讨论关注.
近日,一位名叫“柳夜熙”的元宇宙概念美妆虚拟博主在热门短视频APP中横空出世,瞬间席卷了整个网络,引起了美妆博主间的内卷热潮,元宇宙这个概念也开始正式出圈,火爆全网.
这几天,全球股市的暴跌是大家关注的焦点。这件事发生在这个节点对所有投资市场的投资者是一个很大的考验。表面上看整个暴跌的直接原因是恒大的暴雷。恒大的暴雷实际上代表中国房地产狂飙突进时代的正式终止.
前言 北京时间12月13日,知道创宇区块链安全实验室关注到针对Definer预言机的攻击事件。作为第三方区块链安全机构,受Definer、Cherryswap和OEC组成的调查小组邀请参与本次攻.
STEPN正在他们的社群中开展一个大型的NFTAirDrop活动,用于奖励早期参与者。符合条件的玩家可以获得NFT运动鞋,12月20日STEPN会正式发布可下载的APP,为我们在圣诞与新年长假期.