时间:2023-07-26|浏览:184
用戶喜愛的交易所
已有账号登陆后会弹出下载
撰文:Yolo
来源:大脑杆菌
我们都知道常见的DeFi应用一般都采用三层架构,前端-中间件-后端(智能合约),而这个三层架构当中只有后端是部署在区块链上,一经部署不可更改。而前端和中间件都是部署在中心化的服务器上,这也意味着前端和中间件这些衍生的结构容易受到攻击和作恶。
简介:常见DeFi的架构
当我们使用DeFi应用的时候,各个环节是如何协作的呢?图上所示的是一个正常网络环境下的调用。当我们输入{website}的时候,用户的游览器会访问DNS服务器,去查询{website}对应的IP。查到这个IP之后,对面DNS服务器会返回IP地址,游览器会再次根据IP地址去寻找web服务器。一般来说,我们的网址所需要的图片,文字,交互等内容会放在web服务器上(可能是真的物理服务器,也可能是云)游览器读到这些信息之后就会返回呈现给用户。之后用户的点击,都会经由游览器,Web服务器,去和链上的智能合约进行交互。经过用户的签名之后,行为会经由共识机制和链上广播,变成可信的状态。
那么这个过程之中,项目和用户分别存在什么风险呢?
- 托管平台的干预。早年应用部署在单个服务器上,单一服务器的物理状态成为风险之一。随着技术成熟,云逐渐出现,通过将计算分布在大量分布式计算机上,避免了单一服务器的物理风险。但是目前这种技术的仍然存在风险,这种风险就是云平台作恶的风险,前端的数据信息暴露在big-tech的视野之下,无从躲避。 - 偷换前端。目前来看,大多数项目都会开源前端代码让用户独立审查,用户下载前端代码在本地运行之后,便可自行与托管在区块链上的智能合约进行交互。通过这一流程,用户可以评估前端的风险。但是由于实际前端仍然托管在中心化的服务器上,用户很难验证公开前端是否就是目前正在运行中的前端,前端仍然存在偷梁换柱的可能。举例来讲,正常前端连接到官方的智能合约,而恶意前端就可能连接到恶意合约,通过用户授权对用户造成伤害。
为了应对上述两类风险,市场上看到了一些实践,主要是Uniswap的IPFS方案和Liquity的ICP方案。
方案一:Uniswap的IPFS的方案
Uniswap直接将前端部署上IPFS,他们具体是怎么做的呢?
- 前端文件存放于Github,通过GithubAction向IPFS部署,每天至少一次。 - 通过pinata.cloud用户的游览器可以获取前端的页面。
从用户视角来说来说,当他们在登录Uniswap的时候,互联网到底发生了什么呢?用户登录app.uniswap.org,游览器查看DNS记录找到了前往cloudflare-ipfs.com的CNAME,再通过CloudflaresIPFSgateway的云网关,查询DNSLinkrecord,找到存放在IPFS上的hash码,最终通过hash码获取前端的文件。
方案二:Liquity的ICP方案
Liquity是以太坊上的抵押型算法稳定币,该DApp拥有一个非常有趣的特性:开放式前端。开放式前端,指的是不同的前端运营商可以独立运行前端,并且设置自己的kickrate(kickrate会调节用户所得到的相关收入和奖励,如果kickrate=99%,意味客户拿到99%,前端拿到1%)
在结构上,Liquity分为前端界面和后端智能合约,在商业上,Liquity也将由前端运营商和后端智能合约开发商,分开运作。Waterslide是Liquity的前端运营商之一,也是第一个部署在Dfinity上的DeFi前端,下面介绍的实践主要来自于Waterslide。
ICP方案当中前端应用的主体身份是根据域名来的。也就是说域名和Canister的内容是永远联系在一起的,这一点适合传统互联网截然不同的。当项目组创造了自己Canister,并将前端页面所需要的的文件托管在canister中,caniser就会被