1.8 热门的DApp - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
1.8 热门的DApp
1096 人参与 2018年09月18日 09:55 分类 : 区块链精品文章 评论
现在我们已经掌握了一些关于DApp是什么、它与中心化应用有何区别等知识,让我们探索一些热门的、有用的DApp。学习这些DApp时,我们只要达到理解其工作原理和它们如何处理不同问题的程度就够了,不用学得太深。
1.8.1 比特币
比特币(bitcoin)是一种去中心化的货币,是最热门的DApp。它的成功展示了Dapp有多么强大,并鼓励人们创建其他DApp。在了解比特币的细节以及为什么人们认为它是一种货币之前,需要账本和区块链的概念。
1.什么是账本
账本(ledger)本质上是一个交易列表。数据库与账本不同。在账本中,我们只能添加新的交易;在数据库中,我们可以添加、修改和删除交易。数据库可以用来实现账本。
2.什么是区块链
区块链(blockchain)是用于创建去中心化账本的数据结构。区块链中的区块按序号排列。区块包含一系列交易、 前一个区块的哈希(hash)、时间戳(timestamp,表明区块的创建时间)、区块回报(blockreward)、区块序号(block number)等。每一个区块包含前一个区块的哈希,由此创建了区块彼此相连的链。网络中的每一个节点都保留区块链的一个备份。
工作量证明(proof-of-work)和权益证明(proof-of-stake)等是用于保障区块链安全性的多 种共识协议。由于共识协议不同,创建区块和添加区块到区块链中的方式也不同。在工作量证明中,通过挖矿创建区块,这让区块链保持安全。在工作量证明协议 中,挖矿涉及解决复杂问题。我们将在后面学习更多关于区块链及其共识协议的内容。
比特币网络中的区块链包含比特币交易。网络向成功挖出区块的节点奖励新的比特币。
区块链数据结构的主要优点是,它自动进行审计,并使应用安全透明,可以防止欺诈和贪污。根据实现和使用方式的不同,它还可以用来解决许多其他问题。
3.比特币合法吗
首先,比特币不是一种内部货币,而是一种去中心化的货币。内部货币大部分都是合法的,因为它们有资产且用途明确。
主要问题在于纯货币DApp是否合法。简要回答就是,许多国家认为它是合法的,少数国家认为它是非法的,大部分国家对此还没有做出决定。
为什么少数国家认定它是非法的,大部分国家对此还没有做出决定呢?原因如下:
·由于DApp中的标识问题,用户账户没有任何标识将它们与比特币挂钩,因此,它可用于洗钱。
·这些虚拟货币不稳定,所以人们丢钱的风险很高。
·用虚拟货币很容易逃税。
4.为什么使用比特币
比特币网络仅用于发送/接收比特币,没有其他用途。所以你一定在奇怪,人们为什么对比特币有需求?
使用比特币的原因如下:
·可以在世界上任何地方快速便捷地发送和接收支付。
·比特币交易费低于在线支付交易费。
·黑客可以从商户那里窃取支付信息,但是在使用比特币的情况下,窃取比特币地址是完全没用的,因为为了让交易合法,必须用相关私钥签名,而用户在支付时不需要和任何人分享私钥。
1.8.2 以太坊
以太坊(ethereum)是一个去中心化平台,可以在其上运行使用智能合约编写的DApp。一个或多个智能合约可以一起构建DApp。以太坊智能合约是在以太坊上运行的程序。智能合约完全按照程序运行,杜绝了停机、中心化操控、欺诈和第三方干涉的可能性。
使用以太坊运行智能合约的主要优点是方便智能合约彼此交互,而且不需要担心整合共识协议等事情,只需编写应用所需逻辑即可。当然,不能用以太坊创建所有种类的DApp,只能创建以太坊支持其功能的那些DApp。
以太坊有一种内部货币叫作以太币(ether)。部署智能合约或者执行智能合约函数需要用到以太币。
本书将使用以太坊创建DApp,并深入介绍以太坊的相关知识。
1.8.3 超级账本项目
超级账本(Hyperledger)项目致力于开发创建授权的DApp技术。Hyperledger fabric(或称simply fabric)是Hyperledger项目的一个实现。其他Hyperledger实现还有Intel Sawtooth和R3 Corda等。
fabric是一个去中心化的授权平台,它允许在其上运行授权的DApp(叫作chaincode,账链代码)。用户 需要部署自己的fabric实例,然后在其上部署授权的DApp。网络中的每一个节点都运行一个fabric实例。fabric是即插即用系统,可以方便 地即插即用多种共识协议和功能。
Hyperledger使用区块链数据结构。以Hyperledger为基础的区块链目前可以选择没有共识协议(即 NoOps协议),或者使用实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)共识协议。它有一个特殊节点叫作证书颁发机构,该节点用于控制谁能加入网络和它们能做什么。
1.8.4 IPFS
星际文件存储系统(InterPlanetary File System,IPFS)是一个去中心化的文件系统。IPFS使用分布式哈希表(Distributed Hash Table,DHT)和Merkle有向无环图(Directed Acyclic Graph,DAG)数据结构。它使用类似于BitTorrent(比特流)的协议来决定如何在网络中移动数据。IPFS的一个高级功能是它支持文件版本 管理。为了实现文件版本管理,它使用了类似于Git的数据结构。
尽管被称为去中心化的文件系统,IPFS并不遵循文件系统的主要属性,即在文件系统中,所存储的内容会一直保留到被删 除之前。IPFS的工作原理不同——每一个节点并不存储全部文件,存储的是需要的文件。如果一个文件不那么受欢迎,许多节点就没有这个文件,那么该文件很 有可能从网络中消失。因此,许多人更喜欢把IPFS称为去中心化的、点对点的文件共享应用。或者可以把IPFS当作完全去中心化的BitTorrent, 也就是说,它没有追踪器,但有一些高级功能。
1.工作原理
当在IPFS中存储一个文件时,它被分成很多小于256KB的数据块(chunk),并生成每个数据块的哈希。网络中的节点在一个哈希表中存储它们需要的IPFS文件及其哈希。
IPFS文件有4种类型:blob、list、tree和commit。blob代表一个实际存储在IPFS中的文件 的数据块。list代表完整的文件,因为它包含blob列表和其他列表。由于列表可以包含其他列表,因此它帮助网络进行数据压缩。tree(树)代表目 录,因为它包含blob列表、列表、其他树和commit。commit文件代表其他文件的版本历史中的快照。由于list、tree和commit与其 他IPFS文件有连接,于是形成了一个Merkle DAG。
所以,用户如果想要从网络中下载文件时,只需要IPFS列表文件的哈希。如果想下载目录,则只需要IPFS树文件的哈希。
因为每个文件都由一个哈希进行标识,所以文件名不容易记住。如果更新文件,就需要与想下载该文件的所有人分享新的哈希。为了解决这个问题,IPFS使用IPNS功能,允许用自行认证的名字或者人性化的名字指向IPFS文件。
2.Filecoin
阻碍IPFS成为去中心化文件系统的主要原因是节点只存储了它们需要的文件。Filecoin(文档币)是一个类似于IPFS的去中心化文件系统,其中有内部货币激励节点存储文件,由此提高文件可用性,并使其更像一个文件系统。
网络中的节点通过赚取文档币来租用磁盘空间,在存储/检索文件时,需要花费文档币。
与IPFS技术一样,Filecoin使用区块链数据结构和数据可检索证明(Proof-of-Retrievability,PoR)共识协议。
在写本书之时,Filecoin仍在开发阶段,因此许多事情尚不明确。
1.8.5 Namecoin
Namecoin是一个去中心化的键-值数据库。它也有内部货币,叫作域名币(Namecoin)。Namecoin使用区块链数据结构和工作量证明共识协议。
在Namecoin中,可以存储数据的键-值对。为了注册键-值对,需要花费域名币。注册之后,需要每35999个区块更新一次,否则与密钥相关的数值将失效。更新也需要花费域名币。不需要更新密钥,也就是说,在注册之后不需要花费任何域名币来存储密钥。
Namecoin有一个命名空间(namespace)功能,允许用户组织不同种类的密钥。任何人都可以创建命名空间,或者使用现有命名空间组织密钥。
最受欢迎的命名空间有a(应用特定数据)、d(域名规范)、ds(安全域名)、id(标识)、is(安全标识)、p(产品)等。
bit域名
如要访问网站,浏览器应先发现与域名相关的IP地址。这些域名和IP地址映射被存储在DNS服务端中,受大机构控制。因此,域名易于审查。如果网站在做非法勾当,或者导致某些损失,或者出于一些其他原因,大机构通常会关闭域名。
正因如此,就需要一个去中心化的域名数据库。因为Namecoin就像DNS服务端一样存储键-值数据,所以 Namecoin可用于实现去中心化的DNS,而且已经用于该用途。d和ds命名空间包含以.bit结尾的密钥,代表.bit域名。从技术上看,命名空间 对于密钥没有任何命名协定,但是Namecoin的所有节点和客户端同意该命名协定。如果想在d和ds命名空间存储非法的密钥,那么客户端会将其滤掉。
支持.bit域名的浏览器需要查看Namecoin的d和ds命名空间,以发现与.bit域名相关的IP地址。
d和ds命名空间之间的区别是:ds存储支持TLS的域名,而d存储不支持TLS的域名。我们已经使DNS去中心化了,也可以使发放TLS证书去中心化。
这是TLS在Namecoin中的工作原理。用户创建自签名的证书,并在Namecoin中存储证书。当一个 对.bit域名支持TLS的客户端试图访问一个安全的.bit域名时,它将服务端返回的证书哈希和Namecoin中的哈希存储进行匹配,如果匹配,则继 续与服务端进行更多通信。
使用Namecoin形成的去中心化DNS是第一个解决Zooko triangle的办法。Zooko triangle定义了有三个属性的应用,即去中心化、身份和安全性。数字身份不仅可以用于代表一个人,还可以代表一个域、一个公司或者其他事物。
1.8.6 达世币
达世币(Dash)是一种类似于比特币的去中心化货币。它使用区块链数据结构和工作量证明共识协议,并解决了比特币面临的一些主要问题。以下是比特币面临的一些问题:
·交易需要几分钟完成,但在目前的环境下通常需要交易马上完成。这是因为比特币网络的挖矿难度不断调整,平均每10分钟创建一个区块。在本书中,我们将在后面学习更多关于挖矿的内容。
·尽管账户没有与其相关的身份,但是在交易所里用比特币和真实货币进行兑换或者用比特币买东西都是可以追溯的,因此交 易所或者商户可以把用户的身份透露给监管机构。如果在自己的节点上运行发送/接收交易,则ISP可以看见比特币地址,还可以用IP地址追踪所有者,因为在 比特币网络中广播的信息不是加密的。
达世币的目标是通过使交易几乎瞬间完成并隐藏交易账户的信息来解决上述问题,还可以防止他人用ISP追踪所有者。
比特币网络中有两种节点,即矿工节点和普通节点。但Dash中有三种节点,即矿工节点(miner node)、主节点(master node)和普通节点(ordinary node)。主节点是使Dash与众不同的原因。
1.去中心化的治理和预算编制
要建立一个主节点,用户需要拥有1000个达世币和一个静态IP地址。在Dash网络中,主节点和矿工都赚取达世币。挖出一个区块,45%收益归矿工,45%收益归主节点,剩余的10%留给系统预算。
主节点使去中心化的治理和预算编制成为可能。由于去中心化的治理和预算编制系统,Dash被称为DAO,因为这就是它的确切含义。
网络中的主节点就像股东,也就是说,它们有权利决定剩余10%的达世币归谁。这10%的达世币通常用于资助其他项目。
每个主节点都有能力使用一次投票权(vote)批准项目。对项目的讨论在网络以外进行,但投票是在网络中进行的。
主节点为在DApp中验证用户标识提供了一种可能的解决办法,也就是说,主节点可以民主地选择节点来验证用户标识。该节点背后的人或者单位可以手动验证用 户文档。回报的一部分还可以回到这个节点。如果该节点不提供良好的服务,那么主节点可以投票给另一个节点。对于解决去中心化的标识问题来说,这不失为一个 好办法。
2.去中心化服务
主节点还形成一个提供多种服务的服务层,而非仅仅批准或者拒绝一个提案。主节点提供服务的原因是它们提供的服务越多,网络的功能就越多,从而增加用户和交易。这样能提高达世币的价值,使区块回报变得更高,由此帮助主节点赚取更多利润。
主节点提供诸如PrivateSend(提供匿名的混合币服务)、InstantSend(提供几乎即时交易的服务)、DAPI(供去中心化API的服务,这样用户不需要运行节点)等服务。
在某个特定时间,只有10个主节点被选中。选择算法将使用当前区块的哈希选择这10个主节点。然后,从这些主节点发出服务请求。从大部分节点接收的结果被认为是正确的,这就是对主节点提供的服务达成共识的办法。
服务证明(Proof of Service,PoS)共识协议用于确保主节点在线、应答和更新区块链。
1.8.7 BigChainDB
BigChainDB允许用户部署自己的、授权的或者免权限去中心化数据库。它使用区块链数据结构以及其他多种特定数据库数据结构。在写本书之时,BigChainDB仍处于开发阶段,所以许多事情尚不明确。
BigChainDB还提供了许多其他功能,例如丰富的权限、查询、线性扩展以及支持多资产和federation共识协议等。
1.8.8 OpenBazaar
OpenBazaar是一个去中心化的电子商务平台,可以在其上买卖物品。OpenBazaar中的用户不是匿名的,因为其IP地址被记录了。节点可以是买方、卖方或者中间人。
OpenBazaar使用Kademlia分布式哈希表数据结构。为了使这些项在网络中可视,卖方必须建立节点并维持其运行。
OpenBazaar使用工作量证明共识协议防止账户被篡改。它使用proof-of-burn、CHECKLOCKTIME验证和基于保证金的共识协议,防止评分和评价被篡改。
买方和卖方用比特币进行交易。买方在购买时可以添加一个中间人。如果买卖双方有争端,由中间人负责解决。任何人都可以是网络中的中间人,中间人通过解决争端赚取手续费。
1.8.9 Ripple
Ripple(瑞波)是一个去中心化的转账平台。它允许兑现货币、数字货币和大宗商品。它使用区块链数据结构,并且有自己的共识协议。在Ripple相关文档中,找不到“区块”和“区块链”等词汇;而是用“账本”(ledger)来代替。
在Ripple中,通过信任链进行钱和商品交换,方式类似于hawala网络。Ripple中有两种节点,即网关 (gateway)和普通节点。网关支持一种或多种货币和/或商品的存取。为了在Ripple网络中变成网关,需要作为网关的权限形成一个信任链。网关通 常是已经注册的金融机构、交易所、商人等。
每个用户和网关都有一个账户地址。每个用户需要把他们信任的网关地址添加到信任列表中,形成一个信任网关列表。对于发现谁值得信赖,并没有任何共识,这完全依赖用户——用户自行承担信任一个网关的风险,即便网关可以添加它们信任的网关列表。
来看一个例子:住在印度的用户X如何能够向住在美国的用户Y发送500美元。假设在印度有一个网关XX,收取现金(实 物现金或者在网上用卡支付)且只用印度卢比给用户Ripple余额。X将访问XX办公室或者网站,存入30000印度卢比,然后XX广播交易说“欠 X30000印度卢比”。现在假设在美国有一个网关YY,它只允许美元交易且Y信任YY网关。假设网关XX和YY不信任彼此。由于X和Y不信任一个共同的 网关,XX和YY不信任彼此,导致XX和YY不支持同样的货币,因此,X为了转账给Y,就需要发现一个中间人网关形成一个信任链。假设还有一个网关 ZZ,XX和YY都信任ZZ,ZZ支持美元和印度卢比。现在X可以发送交易,将50000印度卢比从XX转给ZZ,ZZ把钱兑成美元,然后把钱发送给 YY,让YY把钱给Y。现在X欠Y$500,YY欠Y$500,ZZ欠YY$500,XX欠ZZ 30000印度卢比。但是这都没什么,因为它们互相信任,而此前X和Y不互相信任。但是只要XX、YY和ZZ想,它们随时可以在Ripple之外转账,或 者翻转交易扣除款项。
Ripple也有内部货币,叫作XRP(或瑞波币)。发送至网络中的每一个交易会耗费一些瑞波币。由于瑞波币是 Ripple自有的货币,它可以不需要信任就被发送给网络中的任何人。在形成信任链时,可以使用瑞波币。记住,每一个网关有自己的货币汇率。瑞波币不是由 挖矿生成的;相反,最初就有1000亿个瑞波币,它们最初由Ripple公司拥有。出于多种原因,瑞波币是手动供给的。
所有交易都被记录在去中心化的账本中,形成不可更改的历史。需要共识确保所有节点在一个给定时间的账本都一致。在 Ripple中,有第三种节点,叫作验证器(validator),它是共识协议的一部分,验证器负责验证交易。任何人都可以成为验证器。但是其他节点维 护一个可以信任的验证器列表。该列表被称为唯一节点列表(Unique Node List,UNL)。验证器也有UNL,即验证器信任的验证器,因为验证器也想达成共识。目前,由Ripple决定可以信任的验证器列表,但是如果网络认 为Ripple选择的验证器不值得信任,就可以在节点软件中修改列表。
可以拿出一个以前的账本,把随后发生的全部交易都填上去,形成一个新账本。为了同意当前账本,节点必须同意以前的账本 和随后发生的全部交易。在创建一个新账本之后,节点(普通节点和验证器)启动一个计时器(几秒钟长,大概5s),并收集在创建以前的账本时到达的新交易。 当计时器停下时,它接收至少80%的UNL认为合法的交易,形成下一个账本。验证器向网络广播一个提案(proposal,即它们认为合法的、用于形成下 一个账本交易的一系列交易)。如果它们决定根据UNL提案和其他因素改变合法交易的列表,验证器可以对同一个账本用不同的交易集合,多次广播提案。所以用 户仅需要等待5~10s,由网络确认交易。
有人质疑,每个节点可能有不同的UNL,是否会使账本生成许多不同的版本?其实只要UNL之间有最低程度的相互连接,就会迅速达成共识,这是因为每一个诚实节点的主要目标就是达成共识。
1.9 总结
在本章中,我们学习了DApp的概念,初步了解了DApp的工作原理以及其面临的一些挑战和应对挑战的多种方法。最后,我们接触了一些广受欢迎的DApp,了解了它们的特别之处和工作原理。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=606
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 5.5 LightWallet2018-09-15 15:15
- 6.3 创建合约部署平台2018-09-15 11:12
- 3.4 是投资还是投机?2018-09-28 16:56
- 9.2 比特币作为一个“智能资产”2018-09-12 13:18
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区