一般来说,一款应用软件由前端和后端两部分组成。常见的应用软件的前端代码(如用户界面等)运行在用户机器上,而后端代码(如存储和管理等逻辑)运行在一个中心化服务器上。与一般的应用软件不同,DApp的后端运行在分布式网络中的各个用户节点上,包含一套实现数据的去中心化存储和管理等逻辑的协议代码。在以太坊区块链上,DApp后端代码由智能合约具体实现。相比于现有的中心化应用软件,DApp具有以下几个特点及优势。
第一,DApp均为开源项目,具有公开透明的特点。 从理论上讲,DApp的运行过程应该由代码自治管理并且任何个人或组织均不能单独地决定其操作。尽管软件的协议等内容可以根据改进计划或市场反馈等进行修改,但所有的代码修改必须由大多数用户达成共识所决定。为使所有用户可以检查验证DApp的代码逻辑,DApp的源代码应该被公开。例如,基于以太坊的DApp不仅其字节码会被记录于区块链上的交易数据中,其智能合约代码也应该被开源。此外,以太坊本身也是开源的,因此所有用户均可以检验DApp代码的运行细节。
第二,去中心化是DApp所具有的最大特点。 DApp运行的所有操作必须被记录于一条公开的、去中心化的区块链之上,可以有效地避免中央服务器发生错误带来的问题。基于以太坊的DApp在运行过程中,其智能合约部署过程和调用操作均被记录于以太坊区块链上的交易记录中,实现了应用数据的去中心化存储。
第三,DApp具有激励机制。 在一般的中心化应用软件运行过程中,开发者需投入一定成本用于维护软件在服务器上的运行。而DApp运行于网络中各用户节点之上。为了使网络中众多用户愿意投入一定的资源以用于运行和维护该应用,DApp需要设计激励机制,用于奖励投入算力、内存空间等资源以维持DApp运行的用户。例如,在以太坊等区块链项目中,区块的制造者(“矿工”)投入了一定的算力资源用于执行交易和制造区块,在区块得到共识认证之后,该区块的制造者会得到相应的以太币奖励。
第四,DApp具有共识协议。 不同于中心化应用的服务器集中管理,DApp在运行过程中还需要一套协议机制,用于使大多数用户对其运行过程达成共识。DApp开发者需设计或选择一套共识协议,使得网络中各用户节点在运行该DApp的过程中,通过密码学算法展示某种特定的价值证明,向其他用户节点证明其运行的正确性,从而使网络中的所有节点对某一运行过程达成共识。例如,以太坊中现有的工作量证明(PoW)共识协议以及未来计划实现的股权证明(PoS)共识协议就是用于确保大多数用户节点对区块的正确性达成共识的机制。