从技术底层解读互联网计算机如何引领 Web3 时代?_STE:ANIME币

随着通讯和可视化移动终端设备的逐渐普及,人们簇拥于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)。这一套协议是通过在多个物理节点之间交换数据,构建一个虚拟的子网。

子网内部的节点对输入输出达成共识,相互验证计算结果,并可以和其它子网之间通讯。多个子网组合在一起共同构建出一个虚拟的计算机,容量可以随着子网的增加而增加,谁都可以在上面跑程序,访问其它人的程序,等等。

不过这听起来和我们现在的互联网好像也没什么差别,尤其是microservice的概念。那为什么现在的互联网不能叫做InternetComputer呢?

这个差别就在于这一套ICP的协议。这个协议的目的是确保所有程序都被正确执行,它们的状态无法被篡改,当一个程序调用另一个程序时,它是可以信任这个调用会被正确执行的。目前的互联网因为缺少这一层协议,导致所有的程序都要自行解决可用性、可靠性以及相互之间的授权等等繁琐的问题,并因此带来各种不兼容和安全性上的包袱。

这里面的核心就是可信任计算,有个说法叫trustlesstrust我觉得很贴切,无需信任的信任。区块链从比特币开始到今天的发展,也应证了可信任计算的威力。但绝大部分应用还是集中在金融领域,而我们的目的是拓展到更广阔的互联网领域上去。为什么区块链上不可以直接跑网站?为什么验证区块链上的计算需要整个链的历史数据?只有正面解决这些问题,才能让区块链成为互联网的核心技术,而不仅仅是停留在记录和转账的层面。

问题1

InternetComputer提供了全新的程序构建范式,有自己的一套“行话”,可否简单介绍这些“行话”以及你认为对于开发者来说,最有用的基础设施有哪些?

回答:可以从几个不同的角度来聊一下,首先从终端用户来看。

访问一个InternetComputer上的应用和访问一个普通网站基本上没有什么不同,使用者并不需要支付任何费用。这和使用传统云服务的时候,费用由项目方承担是同一个意思。其它大多数区块链都是要向使用者收取gas费用,需要预装钱包软件,门槛比较高。

分析:从技术层面来说,Celsius可能已经资不抵债:6月6日消息,据推特用户yieldchad分析,从技术层面来说,Celsius可能已经资不抵债。该项目一共有100万枚ETH,但只有26.8万枚(近27%)是有充足流动性的;另外44.5万枚拿的是Lido的stETH,按当前Curve的汇率只能换出28.7万枚ETH;最后28.8万枚直接质押进了以太坊2.0合约,一时半会(至少1年内)拿不出来。按照每周5万枚ETH的速度,Celsius在五周内就会耗尽具有流动性的ETH。[2022/6/6 4:05:49]

运营一个应用的成本,包括计算和存储等,是以InternetComputer的原生代币cycles来衡量。cycles的价格锚定SDR,1SDR=1TrillionCycles。SDR的价格是国际货币基金组织设定的一篮子货币加权得来的,包括美元人民币等,相对稳定。

回到用户角度,他们不必在意cycles这个概念。但很多应用需要处理用户登录,为此InternetComputer上面也推出了一套匿名的身份管理系统,我们把它做InternetIdentity。这套系统完全是基于web标准,用户不需要安装钱包软件也能使用。

所有这些都是为了降低用户使用的门槛,让区块链的应用能够真正走出去。InternetIdentity主要是为了解决一个身份在多个设备登录的问题。而且这个身份在不同的应用中,应用所拿到的代号是不一样的,这可以防止用户的行为被恶意跟踪。

最后,用户可能也有兴趣参与InternetComputer的治理。这是一个叫做NNS的神经元投票系统,算是我们的一个创新吧。它也是应用层面的,不过它有一个比较特殊的权限,那就是能够管理所有InternetComputer的子网和整个系统的方方面面,包括节点运行的代码,版本升级,创建新子网,接入新节点等等。

要参与投票,首先需要持有ICP代币,锁定一定数量的ICP来得到一个神经元,投票的权重和锁仓数量,锁仓时长,以及神经元的年龄都相关。参与投票也会得到奖励,奖励的多少和投了赞成还是反对无关。还可以跟随其它神经元的决策,自动进行投票。总体这些设定上是为了让用户投票的行为和平台的长期利益挂钩,并奖励用户做出的贡献。

谈了用户角度,那我们再从开发者角度来看一下。

跑在InternetComputer上的应用程序,是封装在一个叫canister的轻量级容器里面。这个通常大家比较熟悉的docker容器的概念有点不太一样,canister不仅仅是封装了代码,而且自动对容器的状态做持久化。可以简单理解为一个长期运行的操作系统进程,进程的状态包括内存和消息队列,都是自动保存了,不会因为开机关机而丢失。这意味着在InternetComputer上面已经剥离文件系统的概念,开发者不需要考虑读写文件和硬盘来保存数据,这是一个相当大的简化。

另一个开发者需要了解的是canister之间的通信模式是异步的,属于actormodel。也就是每个canister都是自己的进程,和其它canister发消息来通信,也就是异步方法调用。一个canister内部消息队列的处理都是单线程,不需要考虑锁,每一个方法调用都是满足原子性的。熟悉actormodel编程的很容易上手。

开发一个应用,通常canister容器是作为后端的,前端交互可以是在浏览器里,也可以是单独的APP。之前也提到InternetComputer可以直接跑网站,这里就是说canister可以自行实现httprequest的接口,返回网页包括Javascript到用户的终端。前端后端可以一起打包成canister部署到InternetComputer上。

前端开发我们有现成的库可以使用,Javascript和Rust都有。前端需要调用后端代码的时候,直接做一个异步函数await调用就好了,底层都已由库函数实现。如果需要了解更多的话,这里面有一个接口和数据编码的格式,叫做Candid,支持多个语言的实现。Canister对外部的接口和数据类型,都是用Candid来描述的。

动态 | 经济日报:推动完善区块链产业生态系统 需从技术创新等方面入手:经济日报今日发表题为《推动完善区块链产业生态系统》的分析文章。文章表示,近年来,我国区块链产业发展迅猛,但在技术突破、人才支撑、安全防控等方面仍存在不小挑战。对此,需采取有针对性的措施加以解决,不断完善区块链产业生态系统。文中提到,目前制约我国区块链产业生态系统发展完善的主要因素有以下几个方面:一是区块链技术仍处于发展的初期,基础研究与协同攻关较为薄弱;二是区块链领域的人才缺口较大;三是区块链安全隐患不容忽视,风险防控有待加强;四是区块链产业布局需进一步统筹;五是区块链产业相关政策法规尚不完善。文中建议,进一步推动完善区块链产业生态系统,必须从技术创新、人才培养、风险防控、生态协调、产业监管五个方面着手,寻找解决之道。[2019/12/25]

总的来看,开发者需要了解的都是围绕着Canister这个概念展开的。WebAssembly,Actormodel,OrthogonalPersistence,Motoko,Candid。我还推荐了解一下SystemAPI也就是InternetComputer接口的标准?https://sdk.dfinity.org/docs/interface-spec/

这个资料很详细,涉及了整个系统的方方面面,而且我们做了不少形式化的努力,定义了接口的语义,方便开发者深入理解系统的行为。

如果是做系统层面的开发,比如共识协议,虚拟机,等等,那可以谈的就更多了,可以去看DFINITY官网上技术图书馆的视频系列?https://dfinity.org/technicals

问题2

与传统的阿里云、腾讯云、AWS等平台相比,InternetComputer有什么不同?它们也是公司自建的私有云服务,也是用的数据中心,异地备援,多节点运行的。

回答:目前的云服务平台,都是基于一个基础的架设,你必须依赖这个平台的提供者能够维护平台的安全性,保持网络联通,计算不间断,数据不丢失,等等。

商业平台自身的利益和它所服务的用户之间的利益,虽然多数时候不冲突,但也不是完全一致的。有一个大家应该都比较熟悉的概念PlatformRisk,这里就不展开讲了。

但最重要的一点,这些云平台基础设施提供商,都不希望自己成为commodity,都在各尽所能留存和锁住客户。

InternetComputer首先是作为一个去中心的网络存在的。里面的节点都是由第三方运营,跑在不同的数据中心里。而真个网络的治理,是交给用户的,并不由节点运营商,或者是数据中心来主导。

所以这里面并没有一个中心化的商业机构来做所有的决策。整个治理系统的设计,也是尽量从长远的角度出发,希望保持用户的利益和平台发展的一致性。这个平台是付费给节点运营商的,某一个节点到底是由张三还是李四来运行根本不影响,这是一个自由市场。所以对于InternetComputer而言,硬件和网络这些基础设施,已经成为了commodity。

回顾整个PC行业的发展史,我们其实可以看到,基础设施成为commodity是历史的必然规律,在云服务这里我相信也不会是一个例外。

可以说InternetComputer这样的计算平台,已经和硬件的基础设施建设剥离开了。这种商业模式,如果没有去中心化,如果没有区块链的技术,是没法想象的。但今天它已可以成为一个现实,这是时代进步的最好诠释。

从比特币以太坊一路走来,有的人只是看到了币价炒作和旁氏局就对这个新兴事物持否定态度,其实时代的变革就在眼前。

除开利益方面的一致性,另一个方面用要更先进的技术来简化系统冗余,从而节省整个平台开销,也意味着为用户带来节省。

前面我们也说了不少可信任计算的优势,其实这里面还要加上一个分布式的优势,和一个使用前沿的加密技术的优势。它们意味着很多传统的技术维护方面的工作,比如防火墙这种,基本上已经不再必要。一个客户要想使用好目前这些云平台,它必须要在运维上投入很多。而InternetComputer则能够节省很多这方面的成本。

声音 | 王春蕊:区块链已从技术构想走入现实 在智慧城市建设中将大有作为:新京报智慧城市研究院研究员王春蕊今日发表题为“智慧城市和区块链能擦出怎样的火花?”评论文章。文章中提到,区块链在智慧城市建设中将大有作为。区块链实现信息共享,保障数据安全;“区块链+政务”,为数字社会增信;“区块链+民生”,能够提供更智能的公共服务。区块链作为核心技术,已经从技术构想走入现实,在智慧城市领域特别是信息共享方面彰显出了巨大应用潜力。(新京报)[2019/11/5]

第三点则是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标准的技术,任意浏览器均可访问。

另外一个我看好的方向是面向个人用户和面向中小企业的应用。像项目管理,文件共享,创作者经济这种,虽然目前互联网上已经都有比较成熟的解决方案了,但平台风险始终存在。前面也提到云服务的平台风险,相信大家对各种其它领域的巨头垄断都有一定的切身体会。现在去中心化的结构是一个新的可能,平台本身应该变成透明的存在,而不是盘踞在食物链的上游用霸王条款来吞噬用户的利益。

声音 | 李晓枫:建议从技术方面推进区块链标准化评测:新华财经消息,4月10日,“2019中国国际区块链技术与应用大会”在深圳会展中心召开,中国人民银行科技司原副司长李晓枫在本次活动上表示,金融和区块链有着天然的联系,目前区块链领域一链一应用、一链一联盟现象愈发明显,信息孤岛将成为区块链治理的重大挑战。因此,建议从技术方面推进区块链标准化评测,强化监管、完善法律法规,逐步建立适应区块链金融产业发展的长效机制。[2019/4/10]

归根结底,哪个赛道有前途,取决它的应用能否快速汇集价值。这个价值,不是说你的项目锁仓有多少,因为这个量它随时都可以在变。而是说有你建立了多少和用户之间的联系,建立了多少和其它应用之间的联系,这种关联随着信任加深,随着用途增多,它会越来越有价值。代码可以粘贴,但这种关联是无法拷贝的。而如果运用得当,代币在一定程度上可以加速价值的聚集,但最终还是取决于项目本身的内在价值。

问题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可以让应用通过锁定代币创建神经元,然后进行投票,来管理应用的方方面面,包括代码升级。

腾讯研究院金融科技研究中心杜晓宇:应从技术、应用、市场等维度来展开区块链与法律的研究 :在第一期“法律人的互联网思维”系列研修会上,腾讯研究院金融科技研究中心副主任杜晓宇进行了“区块链技术对法律的影响和挑战”的主题发言。他认为,区块链链对法律的影响与挑战不宜从单一角度笼统去概括,可以考虑从“区块链技术与法律”、“区块链应用与法律”、“区块链市场与法律”、“区块链子与法律”四个维度来展开分析。[2018/4/19]

当然我们做的这套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——

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:62ms0-3:765ms