如何构建无服务器 DApp?了解 EthSign 的 Web3 技术栈实践

    在架构去中心化的前提下,DApp开发者同样需要合适的Web3协议栈,充分利用已经成熟的基础设施作为功能模块。⻓期看,加密世界会分为完全中心化和完全去中心化两半,前者会积极拥抱监管,扮演好加密世界与传统世界间的桥梁;而后者会保持破坏力,不断地扩张加密世界的领地。能够在这两大阵营中找准定位的会成为赢家,输家会将时间浪费在左右摇摆中。EthSign3.0技术栈去中心化是一个过程,或者说一个方向。项目的治理在初期必然是由开发团队主导的,而后逐渐建立社区和生态、完善激励规则,更加去中心化。而技术架构则应该追求在一开始就尽可能去中心化。这样会帮助开发者及时认识到去中心化在技术上带来的限制,比如低吞吐量、难以抵抗女巫攻击等;架构的去中心化并不意味着所有的应用都需要搭建自己的节点网络,从P2P通信做起。为了避免重复劳动,我们应该构建一个合适的Web3协议栈,充分利用已经成熟的基础设施项目作为功能模块,搭建出我们需要的功能(这也是我们开发团队名字Buildblock的由来)。

    3.0是一个电子签名平台,用户可以通过手中已经掌握的私钥(钱包)或通过邮箱、手机号码、Twitter等社交媒体账号生产的私钥对特定文件进行签署,并将数字签名和相关操作记录一并保存在链上,而被签署的协议文件则会在加密后被存入去中心化存储网络中。基于以上功能,我们将用到的功能模块分为三层(顺便一提,Multicoin很早之前画了一个更加全面通用的,如果您有兴趣可以对照着看):终端用户,与保存在用户手中的去中心化身份进行交互。我们把这层分为私钥管理和身份管理两块,前者主要是软硬件钱包和身份映射协议,帮助用户管理私钥并用私钥签名。Torus和Fortmatic是专⻔用于Web2用户接入的身份映射协议,可以通过用户已有的Email、Google、Facebook、Twitter等账户为其生产公私钥对。身份管理协议引入一层身份到地址的映射关系,用户可以在身份不变的情况下更换地址。我们已经集成的ENS是目前最主流的域名系统,它可以将一个域名解析为不同链上的不同地址、Email甚至一个图像Avatar。我们可以肯定越来越多的组织和个人会参与这一体系,并以域名作为公开的身份标志。链上链下交互,负责链上链下之间的互相访问。

    这一层对于存证类应用的用户体验非常重要,用户在习惯传统互联网的上传下载传输速度之后使用完全去中心化应用的体验无异于在习惯支付宝转账之后使用区块间隔十分钟的比特币。这一层按照数据传输方向可以分成两块,Chainlink和TheGraph分别满足了多数应用做两个方向上的主要需求。中在EthSign中,链上到链下的数据查询的需求最为普遍。用户在登录dApp后,一般情况下网⻚需要快速遍历整个区块链。然而,这一过程并非我们习惯的那么方便,:如果直接与节点rpc通信,这一过程需要至少数分钟而且数据流中断出错的概率较高。我们与TheGraph建立了,通过在不同链上建立Subgraph,我们可以在几秒钟之内完善上述过程。链上信息到链下到另一场景是通知推送,例如Alice在链上指定Bob为签署人,而Bob在真实世界中毫不知情,需要搭建一个信息推送服务,将相关事件及时通过短信或者邮件推送给相关方。TheGraph投资的EPNS是一个解决方案,与之并驾⻬驱的还有Alchemy,但如果无法满足EthSign相关多链的需求,我们也可能自己在TheGraph上搭建一个类似的服务。

    Chainlink是链下信息上链的任务承担者。新推出的Chainlink2.0进一步拓展了预言机的具体用例,其中的关键组件KeeperNetwork即将上线,EthSign的新产品SmartAgreement已经开始使用Kovan测试网上的ChainlinkKeeper来监测特定事件并自动触发合约执行。去中心化网络,是Web3应用的基石。与DeFi不同,多数Web3项目都会同时使用智能合约区块链和存储型区块链。大量的Metadata需要被存储到存储网络中,然后将索引存回智能合约中。关于智能合约平台,现在多链以太坊体系已经基本成型,兼容EVM的区块链也在努力兼容Metamask、TheGraph、Chainlink等配套设施;不同链在多链以太坊生态内天然的形成不同分片,EthSign不做区别地全部部署以增加更多用户覆盖。EVM生态内留存着最多的智能合约范本、函数库和各种生态项目,可组合性给了我们充分的想象空间:Superfluid的流支付或者Ampleforth的Rebase这些只可以发生在链上的创新将会通过EthSign接入真实世界中!关于存储网络,IPFS在CryptoArt、Metaverse等有大量Metadata存储需求的场景中占据了主导地位,相关的基础设施最多,但其上仍然缺乏一个非常好的激励层来保障文件的稳定存储。

    Filecoin拥有众多的节点,但仍然只能提供一段时间的存储,无法与链上「永久存储」的需求适配。Arweave提供的永久存储特性逐渐受到了很多项目的⻘睐,但如何在智能合约区块链和存储区块链之间去中心的互相操作仍然需要更多组件,这一领域正在⻜速发展。EthSign正在同时使用IPFS和Arweave,Arweave推出的将允许一份文件同时存储在两个网络之上,一方面在IPFS上便于检索,另一方面通过Arweave提供持续性。EthSign上所有的协议和链下数据都会默认用这种方法存入这两个网络,之后我们也会接入Filecoin和Skynet为用户提供更多选择。Web3应用的时代正在到来EthSign3.0搭建在上述灵活且实用的技术栈之上,完全没有服务器,项目的运维成本不会随着用户数增加而增加。另一方面,由于业务逻辑和数据都不保存在服务器之上,开发者需要适应这个框架。在以太坊上,新的智能合约无法覆盖旧合约,也就是说,开发者部署新版本实际上与老版本并行。当用户用新版本检索过去交互过的协议时,我们必须保证新版本的前端也会索引之前合约中存储的数据。EthSign3.0采用了可升级的智能合约,使开发者在保留用户数据的前提下单纯对合约逻辑进行升级。这个特性对任何正式发布的产品都至关重要——用户数据不到万不得已的情况下绝对不能有丢失。诸如此类,Web3应用开发是一个尚未被充分讨论的话题,随着基础设施的成熟,市场的目光很快将很快投向这一领域。