文档
学习文档
去中心化应用程序 (Dapps)

去中心化应用程序

去中心化应用程序可能会让人觉得是普通的应用。但在背后,它们有一些不一样的优秀特性,因为它们继承了所有以太坊的超能力。点击这里了解为什么去中心化应用程序不同于一般应用。

特性

没有所有者

一旦部署到以太坊上,去中心化应用程序代码就无法删除。而且任何人都可以使用去中心化应用程序的功能。即使去中心化应用程序背后的团队解散了,你仍然可以使用它。一旦在以太坊上,它就会留在那里。

抗审查

你不能被阻止使用去中心化应用程序或提交交易。例如,如果Twitter是在以太坊上,没有人可以屏蔽你的帐户或阻止你发推特。

内置付款

因为以太坊有以太币可以直接用于支付。开发者不需要花时间去集成第三方的支付。

即插即用

去中心化应用程序的代码通常是开源和默认互相兼容的。开发团队之间通常情况下都可以互相引用。例如:想要让用户在你的去中心化应用程序中交易代币,你只需要引入支持交易代币的合约代码并使用即可。

匿名登录

在使用大部分去中心化应用程序时,你不需要分享你的真实身份,只需要一个以太坊帐户与付款帐户即可进行登录。

加密保护

密码学可以保证攻击者无法伪造交易和去中心化应用程序交互行为。你可以授权去中心化应用程序来操作你的以太坊帐户,通常是通过你的钱包程序,因此你需要确保证书的安全。

无需下载

一旦去中心化应用程序在以太坊上线就无法单独下线,它只能随着以太坊一起下线,以太坊的规模大到难以攻击。

去中心化应用程序工作原理

去中心化应用程序的后端代码(智能合约)运行在一个去中心化的网络上,而非中心化的服务器。他们使用以太坊区块链网络作为数据存储端,并且用智能合约实现app的业务逻辑。

一个智能合约像是一套设立在区块链上的规则,所有人都可以准确地观察和运行这套规则。设想一下,有一台自动贩卖机:如果向它提供足够的资金和正确的选择,你将得到你想要的货品。正如自动贩卖机一样,智能合约可以像你的以太坊帐户一样存储持有资金。这允许代码之间协议和交易。

一旦去中心化应用程序部署到以太坊网络,你将无法更改他们。去中心化应用程序之所以可以被去中心化就是因为他们被合约中的逻辑所控制,而不是公司或者个人。

前提条件

去中心化应用程序 (dapp) 是在去中心化网络上构建的应用程序,结合了智能合约和前端用户界面。 请注意,就像开放 API 一样,以太坊智能合约具有可访问性和透明性,所以你的 dapp 里甚至可以包含其他人写过的智能合约。

在学习 dapp 之前,你应该了解区块链基础知识,并了解以太坊网络及其去中心化方式。

DAPP 的定义

一个 dapp 的后端代码在一个去中心化 P2P 网络上运行。 与此相对应的,是在中心化服务器上运行后端代码的应用程序。

dapp 可以用任何语言编写(就像是一个 app)。它有前端代码和用户界面,能调用其后端。 此外,它的前端可以托管在去中心化存储上,例如 IPFS(opens in a new tab)。

去中心化 - dapp 在以太坊上运行,这是一个开放的公共去中心化平台,没有任何一个人或团体可以控制 确定性 ,无论执行的环境如何,都执行相同的功能 图灵完备 - dapp 可以根据所需资源执行任何操作 隔离性 - 它们在称为 EVM 的虚拟环境中执行。即使智能合约出现问题,也不会妨碍区块链网络的正常运行 智能合约 要引入 dapp,我们需要引入智能合约 —— dapp 的后端,因为缺少更好的术语。 有关详细概述,请访问我们的智能合约部分。

智能合约是一种在以太坊网络上的计算机程序,它严格按照事先编写的代码来运行。 智能合约一旦部署到以太坊网络中,就无法更改。 Dapps 可以是去中心化的,就是由于它们受智能合约的既定逻辑控制,而不是个人或公司。 这也意味着你需要非常仔细地设计合约,并进行全面测试。

DAPP 开发的好处

零停机时间 – 一旦将某 dapp 的智能合约部署到区块链上,整个网络都能为那些希望与合约互动的客户提供服务。 因此,恶意参与者无法针对单个 dapp 发起 DoS 攻击。 隐私 – 你不需要提供真实世界的身份来部署或与 dapp 进行交互。 抵制审查 – 网络上没有任何一个实体可以阻止用户提交交易、部署 dapp 或读取区块链上的数据。 数据完整性 – 由于采用了加密基元,存储在区块链上的数据是不可更改和无可争议的。 恶意行为者无法伪造已经公开的交易或其他数据。 去信任的计算/可验证的行为 – 智能合约可以分析并保证以可预测的方式执行,而去信任中心化组织。 这在传统模式下是不存在的,比如我们使用网上银行系统时,我们要相信金融机构不会滥用我们的金融数据,不会篡改记录,也不会被黑客攻击。

DAPP 开发的缺陷

维护 – dapp 可能更难维护,因为发布到区块链的代码和数据更难修改。 在部署后,开发人员很难对去中心化应用程序(或其存储的底层数据)进行更新,即使在旧版本中发现了漏洞或安全风险。 性能开销 – 巨大的性能开销,而且难以扩展更多性能。 为了达到以太坊所追求的安全、完整、透明和可靠的水平,每个节点都会运行和存储每一笔交易。 除此之外,达成权益证明共识也需要时间。 网络拥塞 – 至少在当前模型中,如果一个 dapp 使用了太多的计算资源,整个网络都会承担影响。 目前,该网络每秒只能处理约 10-15 笔交易;如果交易发送的速度超过这个速度,未确认的交易池会迅速膨胀。 用户体验 – 设计用户友好的体验可能更难。普通终端用户可能会发现,很难以真正安全的方式设置与区块链互动所需的工具堆栈。 集中化 — 无论如何,建立在以太坊基础层之上的用户友好型和开发人员友好型解决方案最终看起来都像集中式服务。 例如,这种服务可以在服务器端存储密钥或其他敏感信息,使用中心化服务器为前端服务,或在写到区块链之前在中心化服务器上运行重要的业务逻辑。 这消除了区块链与传统模式相比的许多(并不是全部)优势。