查看原文
其他

详解以太坊:关于去中心化应用

岳小鱼 岳小鱼 2023-04-05


Web3世界依旧处于早期阶段,因此在研究这个领域时,不可避免地要了解很多关于技术层面的东西。
对于没有技术基础的行业新人来说,去理解底层技术会非常困难,然而收益却没有那么大。
就像当我们去研究黄金时,我们不需要去钻研黄金的化学分子构成,而是会研究黄金的基本属性、市场价值、流通体系等等。
因此,本系列文章将从一个产品经理的视角出发,输出“用户体验友好”的内容,尽量不去深究技术细节,而是从整体架构、运作机制等方面剖析以太坊。
本文是《详解以太坊》系列文章的第5篇,之前的文章请参见:
详解以太坊:整体框架
详解以太坊:关于交易机制
详解以太坊:关于共识机制
详解以太坊:关于智能合约

应用层是可以直接面向普通用户们的产品,也是我们可以直观感知到的东西。

去中心化应用到底是什么?Web3应用和Web2应用有哪些区别?Web3应用有哪些核心构成?

只有了解了去中心化应用是什么以及不是什么,我们也才能对Web3世界中各种鱼龙混杂的项目有一个更清晰地认识。

01 什么是去中心化应用
DApp,全称是Decentralized Application,即去中心化的应用程序。
我们目前在移动互联网上使用的都是中心化应用,也就是说,这些应用的服务器都在每个互联网公司,这些公司一旦倒闭或关闭应用服务,你的数据就都找不回来了。
而去中心化应用运行在公链上,因此DApp有许多优点是传统的中心化应用无法提供的:
(1)弹性:只要区块链平台仍在运行,DApp就不会停机,并且将持续运行下去。
(2)透明:DApp的上链特征使得任何人都可以对代码进行检查,并审核它的功能。任何与DApp的交互都会永久地存储在区块链上。
(3)抗审查:只要能访问以太坊节点,就能与DApp交互,一旦代码被部署到区块链的网络中,任何服务商甚至智能合约的所有者都不能对其进行修改。
不过,也正是由于去中心化应用运行在公链上,因此非常依赖公链的性能。
比特币就像当年的大哥大,只有打电话功能;以太坊就像当年的小灵通手机,除了打电话外,还可以运行一些小游戏,比如俄罗斯方块;而以太坊以及其他的新兴公链正在努力成为第一代iPhone,除了打电话、运行小游戏外,还支持上网、发电子邮件等商业应用。
目前各种公链正在努力提升自己的性能,以使得能够运行更高并发量的、更复杂的去中心化应用,这也是为什么DeFi(去中心化金融)、GameFi(区块链游戏)等去中心化应用这两年突然兴起。
底层基础设施完善之后,才会有应用层的蓬勃发展。
02 去中心化应用的构成
一个去中心化应用主要包含以下方面:
· 后端软件(应用逻辑)
· 前端软件
· 数据存储
· 消息通信
· 名称解析
我们具体来看下每一部分的具体内容。
1.关于后端(智能合约)
你可以把智能合约看成一个常规的应用程序的服务器端(也就是后端)组件。
其中一个最主要的区别是任何在智能合约中执行的计算都特别昂贵,所以应该保持智能合约尽量小。因此,确定一个应用的哪些组件需要去中心化的执行,平台显得尤为重要。
一个体量非常大的单个合约在部署和使用的时候会花费非常多的gas。因此,一些应用程序会选择链下计算和外部数据源。
但让DApp的核心业务逻辑依赖于外部数据(如来自中心化服务器)意味着你的用户必须信任这些外部资源,这也是很多DApp的风险之一。
关于智能合约架构设计,还有一个主要考虑因素是,一旦合约代码被部署,就无法对其进行修改。
2.关于前端(Web用户界面)
编写DApp的业务逻辑需要开发者理解EVM以及如Solidity这样的全新编程语言,而DApp客户端界面的开发只需要基础的Web前端技术(如HTML、CSS、JavaScript等)。
与DApp的交互,例如,签名消息、发送交易以及密钥管理等操作,通常通过MetaMask等浏览器扩展工具完成。
虽然也可以创建移动端的DApp,但是目前没有创建移动端DApp的最佳案例,主要原因是缺少具有密钥管理功能的移动客户端来承担轻客户端角色。
3.关于数据存储
由于昂贵的gas费用以及当前较低的区块gas上限,智能合约不太适合存储和处理大量数据。
因此,大多数DApp利用链下数据存储服务,这意味着它们将大量数据存储在(链下)数据存储平台上,而非以太坊链上。
数据存储平台可以是中心化的(例如典型的云端数据库),也可以是诸如IPFS和以太坊自有平台Swarm等去中心化形式的。
星际文件系统(IPFS)是一个去中心化的、内容可寻址的存储系统,它可以在P2P网络中分配存储的对象。IPFS的目标是在Web应用程序的分发上取代HTTP协议。
Swarm是另外一个内容可寻址的、类似于IPFS的P2P存储系统。Swarm是以太坊基金会创建的,作为Go-Ethereum工具链的一部分。
4.关于去中心化消息通信协议
任何应用都会包含的重要组件是进程之间的通信。
这意味着不同的应用之间、相同应用的不同实例之间,以及同一应用的不同用户之间可以交换信息。
对DApp来说,最值得关注的P2P消息协议是Whisper,它是以太坊基金会Go-Ethereum工具链的一部分。
5.关于名称解析服务
在传统互联网上,域名服务(DNS)允许我们在浏览器中使用人类可读的名称,并可以将其解析为对应的IP地址,或者其他幕后的标识符。
比如你看到www.baidu.com这个网址,背后其实是一串IP代码,通过DNS技术,可以做到两者的映射。
在以太坊区块链上,以太坊名称服务(Ethereum Name Service, ENS)以一种去中心化的方式解决了同样的问题。
我们在创建账户时,会有一个地址,这个地址是一长串的代码,日常使用时非常不方便,因此我们会通过ENS来将一个易读的域名和地址关联起来。
比如,你可以给域名【dog.eth】进行转账,这个域名背后映射的地址是【0x640Ac467fD8D1b1a9dFB37bCC1722e4fBD6AAE5D】。
ENS的设计遵循“三明治”理念:基础层非常简单,中间是复杂但可以替换的代码层,顶层也非常简单,主要作用是将所有数字货币保存在不同的账户中。
(1)ENS的基础层是由ERC137定义的一个非常简单的合约(少于50行代码),它只允许节点的所有者设置有关其名称的信息,以及创建子节点(等价于DNS子域名)。
(2).eth的域名通过一个拍卖系统被分发,并且没有保留列表或者优先级,获得名称的唯一办法就是使用该系统。拍卖系统的代码非常复杂(超过500行), ENS的大部分早期开发工作(和bug)都包含在这个系统中。这个系统是可替换和可升级的。
(3)ENS的顶层是另一个超级简单的合约,目的只有一个:持有资金。
03 关于去中心化应用的迷思
不要陷入去中心化的名词之争,也不要为了去中心化而去中心化,一切都要回归到用户价值本身:产品到底给用户提供了什么价值?解决了什么问题?创造了什么需求?
我们得明白,去中心化应用存在的价值来自去中心化能给用户带来中心化所不具备的价值。
去中心化应用不应该为去中心化而去中心化,有些应用天生需要中心化,其中心化解决方案更好,因此去中心化应用针对那些真正有去中心需求的场景。
因此,并不是说,当前Web2中的中心化应用都可以直接搬到Web3再做一遍,Web3也不是为了替代Web2。
Web3创造的是新的需求和新的价值,可能顺带解决了Web2的问题。
就像移动互联网时代之前的“黑车”问题,乘客常常被“被宰”,当时常常有各种新闻,宣传政府部门在各种整治“黑车”,然而屡禁不绝,但是等到滴滴出现之后,黑车问题自己就消失了。
目前有很多人不认可Web3,核心原因就是他们还没有获取到Web3去中心化应用带来的价值,因此Web3还有很长的一段路要走。
但就像移动互联网,也是到了2015年左右才被大多数人认可,被承认其价值。
最后
5年前的区块链行业,还在基础设施完善阶段,只有比特币和以太坊,区块链只能用来“发币”,除此之外,一片荒芜;
如今的Web3世界,有了DeFi、GameFi、NFT,区块链技术已经逐渐应用到了各种场景,并诞生了一个日渐繁荣的初期应用生态。
简单说,区块链行业正从搭建基础设施阶段过渡到构建应用层阶段,这也是为什么很多Web2的从业者蜂拥而至。
只有真正体验了这些去中心化产品、真正进入了这个行业,才会发现,很多有意思的事情正在发生。



推荐阅读

详解以太坊:整体框架
Web3行业全景地图:我是谁?我在哪?我要做什么?


··················END··················
你好,我是岳小鱼,一名在路上的产品经理。
会和你聊聊职场和产品经验,也会漫谈生活、电影、读书。
希望我们能一起交流进步。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存