基于以太坊的去中心化DApp介绍

摘自:https://baijiahao.baidu.com/s?id=1595328117444628890&wfr=spider&for=pc

一:区块链简介

区块链本质上就是一个分布式(Distributed)数据库,这个数据库维护了一个不断增长的记录列表。 多个数据记录组成的批次就被称为块,块里的每一行数据记录就被称作交易。

二:中心化应用

传统的中心化应用是以服务器为中心。在这样的中心化架构中,总是存在一个(或一组)中心化的 web 服务器,所有的客户端都需要 与这一个(或一组)服务器进行交互。当一个客户端向服务器发出请求时,服务器处理该请求,与数据库/缓存进行交互, 读/写/更新数据库,然后向客户端返回响应。

基于以太坊的去中心化DApp介绍_第1张图片
摘自本文开头提到的链接中

三:去中心化应用

DApp:Dcentralized Application,即去中心化应用,就是一个不存在中心服务器 的应用。每个客户端(浏览器)都是与各自的节点应用实例进行交互,而不是向 一个中心化的服务器请求服务。在网络中成百上千的电脑上,都可以运行该应用的副本,这使得它几乎不可能出现宕机的情况。

如图所示:以太坊的去中心化应用

基于以太坊的去中心化DApp介绍_第2张图片
摘自本文开头提到的链接中

在一个理想的去中心化环境中,每个想要跟DApp交互的人,都需要在他们的计算机或手机上面运行 一个的完整区块链节点 —— 简言之,每个人都运行一个全节点。这意味着,在能够真正使用一个 去中心化应用之前,用户不得不下载整个区块链。

去中心化的挑战

一旦完全去中心化,在网络上就会存在大量的区块链副本(即:全节点),很多事情都会变得比之前中心化 应用环境复杂的多,例如:

如何保证所有副本都已同步到最新状态?

如何保证所有交易都被广播到所有运行和维护区块链副本的节点计算机上?

如何防止恶意参与者篡改区块链

四、 以太坊

以太坊是一种区块链的实现。在以太坊网络中,众多的节点彼此连接,构成了以太坊网络:

基于以太坊的去中心化DApp介绍_第3张图片
摘自本文开头提到的链接中

以太坊节点软件提供两个核心功能:数据存储、合约代码执行。

在每个以太坊全节点中,都保存有完整的区块链数据。以太坊不仅将交易数据保存在链上,编译后的合约代码同样也保存在链上。以太坊全节点中,同时还提供了一个虚拟机来执行合约代码。

1、交易数据

以太坊中每笔交易都存储在区块链上。当你部署合约时,一次部署就是一笔交易。当你为候选者投票时,一次投票 又是另一笔交易。所有的这些交易都是公开的,每个人都可以看到并进行验证。这个数据永远也无法篡改。

为了确保网络中的所有节点都有着同一份数据拷贝,并且没有向数据库中写入任何无效数据,以太坊 目前使用工作量证明 (POW:Proof Of Work)算法来保证网络安全,即通过矿工挖矿(Mining)来达成共识(Consensus)—— 将数据同步到所有节点。

工作量证明不是达成共识的唯一算法,挖矿也不是区块链的唯一选择。现在,我们只需要了解,共识是指各节点 的数据实现了一致,POW只是众多用于建立共识的算法中的一种,这种算法需要通过矿工的挖矿来实现非可信环境下的 可信交易。共识是目的,POW是手段。

2、合约代码

以太坊不仅仅在链上存储交易数据,它还可以在链上存储合约代码。

在数据库层面,区块链的作用就是存储交易数据。那么给候选者投票、或者检索投票结果的逻辑放在哪儿呢? 在以太坊的世界里,你可以使用Solidity语言来编写业务逻辑/应用代码(也就是合约:Contract), 然后将合约代码编译为以太坊字节码,并将字节码部署到区块链上:

基于以太坊的去中心化DApp介绍_第4张图片
摘自本文开头提到的链接中

编写合约代码也可以使用其他的语言,不过 Solidity是到目前为止最流行的选择。

3、以太坊虚拟机

以太坊区块链不仅存储数据和代码,每个节点中还包含一个虚拟机(EVM:Ethereum Virtual Machine)来执行合约代码 —— 听起来就像计算机操作系统。

事实上,这一点是以太坊区别于比特币(Bitcoin)的最核心的一点:虚拟机的存在使区块链迈入了2.0 时代,也让区块链第一次成为应用开发者友好的平台。

4、JS开发库

为了便于构建基于web的DApp,以太坊还提供了一个非常方便的JavaScript库web3.js,它封装了以太坊节点的API 协议,从而让开发者可以轻松地连接到区块链节点而不必编写繁琐的RPC协议包。所以,我们可以在常用的JS框架 (比如 reactjs、angularjs 等)中直接引入该库来构建去中心化应用:

基于以太坊的去中心化DApp介绍_第5张图片
摘自本文开头提到的链接中



写在结尾:

如果此文对你有所帮助,请留下喜欢哦~ღ( ´・ᴗ・` )

                                                                                  -----朵耳

你可能感兴趣的:(基于以太坊的去中心化DApp介绍)