⑴ dapp是啥意思
Dapp是一种应用程序。DApp就是D+App。Dapp(去中心化应用程序)是一种在网络上公开运行的软件应用程序,他们与普通的应用程序没有什么区别,都拥有一样的功能,但不同的是Dapp是在P2P网络上运行。
App我们都知道是客户端应用,是application的简称。DApp就是D+App,D是英文单词
decentralization的首字母,单词翻译中文是去中心化,即DApp为去中心化应用。
因为DApp直接和区块链技术挂钩,和交易数据、交易资产有关联,和不可篡改去中心化存储有关联,所以随着区块链技术越来越成熟普及,DApp将越来越受重视,并更多地出现在各个生活场景中。
拓展资料
去中心化应用(Dapp)一般是指运行在分布式网络上,参与者的信息被安全保护(也可能是匿名的),通过网络节点不同人,进行去中心化操作的应用。从以太坊角度来说它是一个交易协议,根据区块链上设定的条件来执行的一个合约或者一组合约。
在协作白皮书中提供了他们认为对Dapp更严格的定义。在他们的观点中,Dapp必须具有三个特征:
1)应用程序必须是开源的,大部分由Dapp所发行的代币自主运行而不是由某个实体控制,所有的数据和记录都必须加密保存在公开且去中心化的区块链上。
2)应用必须通过一个标准算法或者一组标准来生成代币,在操作开始就可能分配一部分或者全部代币。这些代币必须根据应用的需要来使用,任何提供贡献的用户都应该获得应用支付的代币奖励。
3)应用能够根据市场反馈来改进并且调整自己的协议,但所有的更改必须由它的用户多数一致同意。但总体而言,每个区块链项目对于去中心化应用组成条件的确切技术看法会有一些不同。
⑵ 区块链技术概念
区块链技术概念
区块链技术概念,现如今,区块链已经成为大部分人关注的领域,很多企业也早已深入其中研究该技术情况,但是还有人对于它不是很了解,下面我分享一篇关于区块链技术概念的相关信息。
区块链的基本概念和工作原理
1、基本概念
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
区块链Blockchain、是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性防伪、和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
2、工作原理
区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。 其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。
区块链主要解决的交易的信任和安全问题,因此它针对这个问题提出了四个技术创新:
1、分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。
跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。 [8]
没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
2、非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
3、共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能.
4、智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息包括医疗信息和风险发生的信息、都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔.
3、其它
互联网交换的是信息,区块链交换的是价值。人类历史和互联网历史可以用八个字理解:分久必合合久必分,到了分久必合的时代,网络信息全部散在互联网上面,大家要挖掘信息非常不容易,这时会出现像谷歌和脸 书等的平台,它做的唯一的事情就是把我们所有的信息重新组合了一下。互联网时代垄断巨头们重组的就是信息,并不是产生自己的信息,产生的信息完全是我们个人。一旦信息重组,就会出现一个新的垄断巨人,所以就到了分久必合的时代。现在由于区块链技术产生又到了合久必分时代,又是新的多中心化,新的多中心化之后赋能产生新的价值,这些数据会在我们自己的手上,个人数据产生价值是归自己所有,这是这个时代最最激动人心的时代。
区块链的价值有哪些?低成本建立信任的机制,确立数权,解决数据的.产权。
目前区块链技术不断发展,包括现在的单链向多链发展,而且技术能够在进一步扩展,我想未来还是可能会出现,特别是在交易等方面出现颠覆性的,特别是对现有产业的很多颠覆性的场景。
区块链的本质是在不可信的网络建立可信的信息交换。
一带一路+一链。区块链更大的不是制造信任,而是让信任产生无损的传递,整个降低社会的摩擦成本,从而提高整个效益。
现在区块链本身还是初始阶段,所以包括区块链的信息传递、加密,这个过程中出现量子加密和其他加密,实际上对区块链本身所采用的加密算法攻击现象也时有发生。包括区块链也是作为一种资产的认定,数字资产的一个认定,但是现在我们很多都是用密码算法,或者是作为我们来解密的钥匙,但是如果密码忘记了,很可能你现在的资产就丢掉了,你不能够在得到你原来的这些资产,所以在资产管理,包括信息传递和一些安全这些方面,应该说都还是存在着一些隐患。当然那么从技术角度,现在我们区块链本身处理的速度,或者说本身的扩展性,因为从工作机理的角度来看,是要把整个账本要复制给所有的参与人员,所以在区块链本身的运作效率和扩展性方面还是比较受限的。这些我们觉得都还是需要进一步在技术方面有进一步的发展。
区块链平台这些底层技术,又形成包括区块链钱包、区块链浏览器、节点竞选、矿机、矿池、开发组件、开发模块、技术社区及项目社群等一系列的生态系统,这些生态系统的完善程度直接决定着区块链底层平台的使用效率和效果。
4、蒙代尔的不可能三角
去中心化、高效、安全,不可能实现三者全部同时达到极致。
区块链的本质是一种分布式记账技术,与之相对的是中心式记账技术,中心式记账技术在我们目前的生活中广泛存在。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
区块链Blockchain、,是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性防伪、和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
区块链技术通俗的理解就是:把“物”的前、后、左、右区块用一种技术连接成一个链条,但每个区块的原始数据不可篡改,是一种物联网范畴的、可以让参与者信任的“各个模块链动”的技术。区块链技术的应用,离不开互联道网,也离不开物联网,是建立在二者融合互动基础上的、但又让参与者各自保持独回立的去中心化、、并共同拥有这套价值链共建共享、的技术。
区块链的特征:去中心化、开放性、自治性、信息不可篡改,匿名性。
区块链是一个能够传递价值的网络,对可以传递价值的网络的需求是推动区块链技术产生的重要原因。在对于保护带有所有权或者其他价值的信息需求的推动下,区块链出现了。区块链通过公私钥密码学、分布式存储等技术手段,一方面保证了带有价值的信息的高效传递,另一方面保证了这些信息在传递的过程中不会被轻易的复制篡改。
从区块链诞生的必然性来理解区块链的内涵,区块链是解决了中心化记账缺点、解决了分布式一致性问题的分布式记账技术,同时也是连接互联网升级为保证带有价值的信息安全高效传递的价值网络。
区块链: 区块链就像是一个全球唯一的帐簿,或者说是数据库,记录了网络中所有交易历史。
以太坊虚拟机(EVM): 它让你能在以太坊上写出更强大的程序比特币上也可以写脚本程序、。它有时也用来指以太坊区块链,负责执行智能合约以及一切。
节点:你可以运行节点,通过它读写以太坊区块链,也即使用以太坊虚拟机。完全节点需要下载整个区块链。轻节点仍在开发中。
矿工:挖矿,也就是处理区块链上的区块的节点。这个网页可以看到当前活跃的一部分以太坊矿工:stats.ethdev.com。
工作量证明:矿工们总是在竞争解决一些数学问题。第一个解出答案的(算出下一个区块)将获得以太币作为奖励。然后所有节点都更新自己的区块链。所有想要算出下一个区块的矿工都有与其他节点保持同步,并且维护同一个区块链的动力,因此整个网络总是能达成共识。(注意:以太坊正计划转向没有矿工的权益证明系统(POS),不过那不在本文讨论范围之内。)
以太币:缩写ETH。一种你可以购买和使用的真正的数字货币。这里是可以交易以太币的其中一家交易所的走势图。在写这篇文章的时候,1个以太币价值65美分。
Gas:在以太坊上执行程序以及保存数据都要消耗一定量的以太币,Gas是以太币转换而成。这个机制用来保证效率。
DApp: 以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。DApp的目标是(或者应该是)让你的智能合约有一个友好的界面,外加一些额外的东西,例如IPFS可以存储和读取数据的去中心化网络,不是出自以太坊团队但有类似的精神)。DApp可以跑在一台能与以太坊节点交互的中心化服务器上,也可以跑在任意一个以太坊平等节点上。(花一分钟思考一下:与一般的网站不同,DApp不能跑在普通的服务器上。他们需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据。相对于典型的用户登录系统,用户有可能被表示成一个钱包地址而其它用户数据保存在本地。许多事情都会与目前的web应用有不同架构。)
以太坊客户端,智能合约语言
编写和部署智能合约并不要求你运行一个以太坊节点。下面有列出基于浏览器的IDE和API。但如果是为了学习的话,还是应该运行一个以太坊节点,以便理解其中的基本组件,何况运行节点也不难。
运行以太坊节点可用的客户端
以太坊有许多不同语言的客户端实现即多种与以太坊网络交互的方法、,包括C++, Go, Python, Java, Haskell等等。为什么需要这么多实现?不同的实现能满足不同的需求例如Haskell实现的目标是可以被数学验证、,能使以太坊更加安全,能丰富整个生态系统。
在写作本文时,我使用的是Go语言实现的客户端geth (go-ethereum),其他时候还会使用一个叫testrpc的工具, 它使用了Python客户端pyethereum。后面的例子会用到这些工具。
关于挖矿:挖矿很有趣,有点像精心照料你的室内盆栽,同时又是一种了解整个系统的方法。虽然以太币现在的价格可能连电费都补不齐,但以后谁知道呢。人们正在创造许多酷酷的DApp, 可能会让以太坊越来越流行。
交互式控制台:客户端运行起来后,你就可以同步区块链,建立钱包,收发以太币了。使用geth的一种方式是通过Javascript控制台。此外还可以使用类似cURL的命令通过JSON RPC来与客户端交互。本文的目标是带大家过一边DApp开发的流程,因此这块就不多说了。但是我们应该记住这些命令行工具是调试,配置节点,以及使用钱包的利器。
在测试网络运行节点: 如果你在正式网络运行geth客户端,下载整个区块链与网络同步会需要相当时间。你可以通过比较节点日志中打印的最后一个块号和stats.ethdev.com上列出的最新块来确定是否已经同步。) 另一个问题是在正式网络上跑智能合约需要实实在在的以太币。在测试网络上运行节点的话就没有这个问题。此时也不需要同步整个区块链,创建一个自己的私有链就勾了,对于开发来说更省时间。
Testrpc:用geth可以创建一个测试网络,另一种更快的创建测试网络的方法是使用testrpc. Testrpc可以在启动时帮你创建一堆存有资金的测试账户。它的运行速度也更快因此更适合开发和测试。你可以从testrpc起步,然后随着合约慢慢成型,转移到geth创建的测试网络上 - 启动方法很简单,只需要指定一个networkid:geth --networkid "12345"。这里是testrpc的代码仓库,下文我们还会再讲到它。
接下来我们来谈谈可用的编程语言,之后就可以开始真正的编程了。写智能合约用的编程语言用Solidity就好。
要写智能合约有好几种语言可选:有点类似Javascript的Solidity, 文件扩展名是.sol. 和Python接近的Serpent, 文件名以.se结尾。还有类似Lisp的LLL。Serpent曾经流行过一段时间,但现在最流行而且最稳定的要算是Solidity了,因此用Solidity就好。听说你喜欢Python? 用Solidity。
solc编译器: 用Solidity写好智能合约之后,需要用solc来编译。它是一个来自C++客户端实现的组件又一次,不同的实现产生互补、,这里是安装方法。如果你不想安装solc也可以直接使用基于浏览器的编译器,例如Solidity real-time compiler或者Cosmo。后文有关编程的部分会假设你安装了solc。
web3.js API. 当Solidity合约编译好并且发送到网络上之后,你可以使用以太坊的web3.js JavaScript API来调用它,构建能与之交互的web应用。
⑶ 《区块链项目开发指南》读书笔记
ethash
答:在DAPP中,没有一个中心服务器来协调节点,或者决定什么是对,什么是错,因此应对这个挑战确实不容易,一致性协议(concensus protocol)可用于解决这个问题。
补充:共识算法的核心就是解决拜占庭将军问题(分布式网络一致性问题)。
答:修改bug或者更新DAPP很困难。
如果我需要从一个中心化应用抓取数据,如车辆违章信息,怎么保证抓取的数据是真实有效的?
答:为了访问中心化的API,可以使用Oraclize服务可以作为中间人,Oraclize为从中心化服务智能合约中抓取的数据提供TLSNotary验证。
中心化应用的所有者需要有盈利才能长期维护应用的运行,而DAPP虽然没有所有者,但是跟中心化应用一样,DAPP节点需要硬件和网络资源才能维持运行。DAPP节点需要一些有用的回报来维持运行,于是内部货币登场了。大多数DAPP都有内置内部货币,或者可以说最成功的DAPP都有内置内部货币。如以太币
授权的DAPP不对所有人开放。授权的DAPP继承了免权限DAPP的全部属性,但需要权限才能参与到网络中去。授权的DAPP与免权限的DAPP的共识协议是不同的。授权的DAPP没有内部货币。
超级账本(Hyperledger)项目致力于开发创建授权的DAPP技术。
为什么少数国家认定比特币是非法的,大部分国家对此还没有做出决定呢?原因如下:
星际文件存储系统(InterPlanetary File System)是一个去中心化的文件系统。
目标是通过使交易几乎瞬间完成,并隐藏交易账户的信息,还可以防止他人用ISP追踪所有者。
任何人都可以成为以太坊网络中的矿工。每个矿工独自解决问题,第一个解决问题的矿工是胜利者,它得到的回报是5个以太币和该区块中全部交易的交易费。区块链中有多少个区块没有限制,可以生成的以太币总数也没有限制。
网络中的任何节点都可以检查区块链是否合法,首先检查交易在区块链中是否合法以及时间戳的验证情况,然后检查区块的目标值和随机数是否合法、矿工是否得到合法的回报等。
节点是如何发现网络中的其他节点的呢?
以太坊的节点发现协议:Kadelima,在这种协议中,有一种特殊节点Bootstrap节点。它保存了一段时间内与它连接的所有节点列表,但其本身不保存区块链。
当对等节点连接到以太坊网络时,它们首先连接到Bootstrap节点。
可以有多种以太坊实例,也就是说,不同的网络每个都有自己的网络ID。
两种主要的以太坊网络是主网和测试网。以太币在主网上交易,而测试网供开发人员测试。
一个去中心化的通信协议,它支持广播、用户到用户、加密信息等,但不用于传输大数据。
一个去中心化的文件系统。
geth为其他应用提供了与其通信的JSON-RPC API。使用HTTP、WebSocket和其他协议服务于JSON-RPC API。
JSON-RPC API提供的API分成如下类型:
以太坊网络中的节点默认用 30303 端口通信。
--networkid 用于指定网络ID,1代表主网网络ID,缺省默认值为1,2代表测试网络ID
--dev 标记运行一个私有网络
--etherbase 指定挖矿赚取的回报存入的钱包地址
--unlock 解锁一个或者多个账户
以太坊钱包与geth捆绑在一起。运行以太坊时,它会尝试发现一个本地geth实例并与之连接;如果它不能发现geth正在运行,它就启动自己的geth节点。以太坊钱包使用IPC与geth通信。geth支持以文件为基础的IPC。
以太坊下一个主要更新的名字。Serenity把共识协议改为casper,并将整合状态通道和分片。
Casper 实施了一个进程,使得它可以惩罚所有的恶意因素。这就是权益证明在Casper下是如何工作的:
验证者押下一定比例的他们拥有的以太币作为保证金。然后,他们将开始验证区块。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。
如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事,他们将立即遭到惩罚,他们所有的权益都会被砍掉。正如你可以看到的,Casper被设计成可以在一个无需信任的系统上工作,并且是更加拜占庭容错的。
支付通道 功能允许将两个以上向另一个账户发送以太币的交易合并成两个交易。其工作原理为:假设X是一个视频网站老板,Y是个用户。X每分钟收费1个以太币。现在X想让Y看视频期间每分钟交一次钱。当然,Y可以每分钟广播交易,但是这里有些问题,例如X不得不等待确认,所以视频就会中断一会。支付通道可以解决这个问题。使用支付通道,Y可以广播一个锁定交易,为X把一些以太币(比如100个以太币)锁定一段时间(比如24小时)。现在每看完一分钟视频,Y将发送一个签名记录表示可以解锁,一个以太币就进入X的账户,其余的进入Y的账户。再过一分钟,Y将发送一个签名记录表示可以解锁,两个以太币就进入X的账户,其余的进入Y的账户。Y观看X网站的视频过程中,该过程将持续。现在假设Y看完了100小时视频或者24小时时间到了,X将向网络广播最后的签名记录,以把钱收到自己的账户里。如果X没有在24小时内提款,全款会返还给Y。所以在区块链中,我们将看到lock和unlock两种交易。
Sybil攻击
51%攻击
补充:不能存储较大数据,目前有Swarm与IPFS等分布式存储方式可供选择
把所有东西都存在内存里,因此,节点一旦重启,将丢失以前的状态。
默认监听端口:8545
⑷ 区块链中的Dapp和传统的app有什么区别
1、网络架构不同:
去中心化应用(Dapp)运行在分布式网络上,参与者的信息被安全保护(也可能是匿名的),通过网络节点不同人,进行去中心化操作。分布式网络由分布在不同地点且具有多个终端的节点机互连而成的。网中中任意一条线路发生故障时,通信可转经其他链路完成,具有较高的可靠性。
传统APP则需要通过第三方服务商提供的服务,并可以通过移动通讯网络来实现无线网络接入,这是属于中心化的网络架构模式。
2、开源性不同:
Dapp应用程序必须是开源的,大部分由Dapp所发行的代币自主运行而不是由某个实体控制,所有的数据和记录都必须加密保存在公开且去中心化的区块链上。
传统的APP软件、游戏、导航等应用一般由第三方服务商提供的,应版权保护、经济利益等问题,其程序并不开源。
(4)以太坊上的dapp如何运行的扩展阅读
在2018 年,大量新的DApp 项目启动。据统计数据表明,目前全网大约有两三千个DApp。根据Fluence Labs 的DApp 调查显示, 72% 的DApp 项目启动于2018 年。这意味着,在过去这一年里,全网的DApp 数量翻了三倍还有余。
在所有DApp 中,超过八成的项目在以太坊上开发,大约两成的项目在EOS 上开发,而不到一成的项目在TRON 上开发。值得注意的是,在众多项目中,大约一成的项目在多条主链上同时开发,而在其他主链上开发DApp 的数量都比较稀少。
基于GXChain 上开发的项目约有十余个,其中主要是布洛克城中的小应用。
⑸ 002:以太坊简介|《ETH原理与智能合约开发》笔记
待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。
课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第一课分为四部分:
这篇文章是第一部分的学习笔记:以太坊简介。
以太坊是目前公认的区块链2.0,相比于区块链1.0(比特币),其最大的特点是引入了智能合约,从而从单一的数字加密 Token 技术转化为一个区块链分布式应用的平台。以太坊本身不包含任何具体的应用,它主要是提供基础平台和工具,使得开发者可以在其基础之上开发出各种各样的应用。可以说,以太坊有着巨大的潜力,它最终可能会发展出分布式、自动化、自组织的最高形态。
第一,我们可以通过学习以太坊的技术,领会区块链技术发展的脉络,改进的思路/路径,从而紧跟区块链技术发展的前沿,预测下一步的趋势。
第二,DAPP(分布式应用)生态系统目前的发展也是蒸蒸日上,蓬勃发展,据不完全统计,现在有数百种应用之多,显而易见的,对于开发人员的需求也是水涨船高,需要大量的开发人员。目前非常有名的应用有加密猫、各类侧链应用、ERC20 Token如币安币火币等等。
2013年,创始人 Vitalik Buterin 针对比特币存在的一些问题以及局限性,提出把“智能合约”构想应用于区块链领域,希望打造一个基于区块链的多方计算的智能化通用平台,并通过比特币融资进行开发。
2014年,以太坊基金会在瑞士成立,管理并运营整个项目。
前5大矿池占83%的算力,很集中。
目前大约有16000个全节点,其中,美国5461(34%),中国1839(11.5%),俄罗斯963(6%),德国920(5.7%),加拿大875(5.45%)。全节点每天都有动态变化。分布情况也反映出各个国家的参与热度。
⑹ DApp开发入门
本文仅介绍以太坊系列的DApp开发,其他链原理差不太多。
MetaMask安装完成并运行后,可以在Chrome控制台打印 MetaMask注入的window.ethereum对象
关于ethereum对象,我们只需要关心 ethereum.request 就足够了,MetaMask 使用 ethereum.request(args) 方法 来包装 RPC API。这些 API 基于所有以太坊客户端公开的接口。 简单来说钱包交互的大部分操作都是由 request() 方法实现,通过传入不同的方法名来区分。
⚠️ 即使ethereum对象中提供了chainId,isMetaMask,selectAddress属性,我们也不能完全相信这些属性,他们是不稳定或不标准,不建议使用。我们可以通过上面说的request方法,拿到可靠的数据 。
钱包通过method方法名,进行对应的实现 以获取钱包地址为例
调用 ethereum.request({ method: "eth_requestAccounts" }) ,钱包实现了该方法,那么就可以拿到钱包的地址了。
MetaMask注入的 window.ethereum 就是一个Provider,一个RPC节点也是一个Provider,通过Provider,我们有了访问区块链的能力。 在连接到钱包的情况下,通常使用钱包的Provider就可以了, ethers.providers.Web3Provider(ethereum)
如果只需要查询一些区块链数据,可以使用EtherscanProvider 和 InfuraProvider 连接公开的 第三方节点服务提供商 。JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点。
获取当前账户余额
获取最新区块号
其他RPC操作,可以通过 JSON-RPC 查看。
通过 ethers.js 可以连接ERC20的合约,合约编译后会生成ABI,合约部署后,会生成合约地址,开发者通过 ABI和合约地址 ,对合约发送消息。
合约中的方法大致分为两种: 视图方法(免费),非视图方法(消耗Gas) ,可以通过ABI查看方法类型。
⚠️ ERC20需要多加关注的是 Approve() 方法以及 transfer() 和 transferFrom() 的区别 ,授权过的代币,被授权的那一方,可以通过调用 transferFrom() 方法,转走你授权数量内的代币,所以授权是一个很危险的操作,假设你授权了一个不良的合约,那你会面临授权的token被转走的风险,即使你没有泄露私钥助记词。
便利三方库: web3-react use-wallet
文档: doc.metamask.io ethers
⑺ 什么是DApp
DApp是Decentralized Application的缩写,中文叫分布式应用/去中心化应用,是基于区块链底层开发平台建立的,比如以太坊和EOS。DApp与底层平台的关系,就好比APP与IOS和Android系统。
一个真正的DApp应用,需要同时满足以下几个条件:
1. 应用必须完全开源、自治,且没有一个实体控制着该应用超51%Token。该应用必须能够根据用户的反馈及技术要求进行升级,且应用升级必须由大部分用户意见达成一致之后方可进行;
2. 应用的数据必须加密后存储在公开的区块链上;
3. 应用必须拥有Token机制(可用基于相同底层区块链平台的通用代币或自行发行新币),矿工或应用维护节点需要得到代币奖励;
4. 应用代币的产生必须依据标准的加密算法,有价值的节点可以根据该算法获取应用的代币奖励。
以最著名的以太坊的游戏——CryptoKitties(加密猫)为例,其是一款运行在以太坊的DApp,玩家可以创建、照顾、购买、喂养并出售存储在以太坊区块链中的以太猫,并且每15分钟产出一只小猫,而每只猫都具有独一无二的特性,可以通过配对等繁衍新的小猫。
该DApp并不是由一个实体所拥有,而是创建在以太坊上,永不消失,没有人能够抢走你的猫,没有人能够改变任何一只猫的样子(V神就是在暴雪取消术士的"生命虹吸"技能后开始走向以太坊的创立)也没有一个实体对这个DApp有独断的意志。
在这个游戏发行出来之后,每个人都可以参与该游戏,并且由于以太坊的架构,所以参与者的隐私都能够得到良好的保护。所以在未来,投资DApp有着非常值得想象的升值空间。
⑻ Dapp和App有什么区别
DApp 是 decentralized application 中文分布式 APP 的缩写。
一个 DApp 有后台代码运行在分布式点对点网络中。传统的 APP 的后台代码是运行在中心化的服务器。
一个 DApp 的前端代码可以由任何语言开发,和传统的 APP 一样。还有,DApp 的前端代码可以托管在分布式存储的服务中,例如:Swarm 或者 IPFS。
如果一个 应用 = 前端 + 后台,因为以太坊合约是由运行在以太坊分布式点对点网络中的代码组成的,所以 分布式应用 = 前端 + 合约。
图片演示一个 DApp 架构:
App我们都知道是客户端应用,是application的简称。DApp就是D+App,D是英文单词decentralization的首字母,单词翻译中文是去中心化,即DApp为去中心化应用。这是从字面上去理解这个概念,要在脑中形成清晰、准确、必要的概念,还需要深度去理解DApp。
对比APP,两者最大不同就是中心化与去中心化。App先要有钱,所以先融资;然后再有人,所以招齐人后再开发运营。而DApp则是继承传统App并结合区块链的特点所形成的产物,它更像是众筹模式、共享模式和去中心化模式.
⑼ 什么是DAPP
App大家已经耳熟能详,无非是Application(应用程序)的简写。只要使用智能手机的人都使用过App,最常用的微信就是一个APP。那么现在DApp又是什么呢?
DAPP是Decentralized Application的缩写,中文叫分布式应用/去中心化应用,通常来说,不同的DAPP会采用不同的底层区块链开发平台和共识机制,或者自行发布代币(也可以使用基于相同区块链平台的通用代币)。
同时满足下面三个条件就可以称为是一个DApp了
第一、运行在分布式网络上;
第二、参与者信息被安全存储,隐私得到很好的保护;
第三、通过网络节点去中心化操作。
DApp相比区块链就好比是Android和iOS相比与APP一样的关系。DApp具有以下5个特点:
1. DApp通过网络节点去中心化操作。可以运行在用户的个人设备之上,比如:手机、个人电脑。永远属于用户,也可以自由转移给任何人。
2. DApp运行在对等网络。不依赖中心服务器,不需要专门的通信服务器传递消息,也不需要中心数据库来记数据。数据保存在用户个人空间,可能是手机,也可能是个人云盘。
3. DApp数据加密后存储在区块链上。可以依托于区块链进行产权交易、销售,承载没有中介的交易方式。
4. DApp参与者信息被安全储存。可以保护数字资产,保证产权不会泄露、被破坏。
5. DApp必须开源、自治。可以由用户自由打包生成,签名标记所属权。它的发布不受任何机构限制。 各种创意与创新可以自由表达和实现。只有满足以上四个条件一个DApp才算是一个可以运行下去的应用。
DAPP与APP的区别
从客户体验角度,APP相对于DAPP有四大问题,一是截留用户数据,二是垄断生态平台,三是保留用户权利,四是限制产品标准扼杀创新。
从技术角度,DAPP与APP区别主要有两个方面,一是APP在安卓或苹果系统上安装并运行;DAPP在区块链公链上开发并结合智能合约;二是APP信息存储在数据服务平台,可以运营方直接修改;DAPP数据加密后存储在区块链,难以篡改。
DApp的实际应用
当前市面上的区块链DAPP主要有两类,一类是“区块链游戏”,一类是“手机挖矿”。前者最出名的当属2017年基于以太坊开发平台的以太猫Cypto Kitties。后者则以公信宝布洛克城为显著代表。
CryptoKitties以太猫由设计工作室 AxiomZen打造,是一款虚拟养猫游戏,于2017年11月28日登录以太坊区块链,玩家可买卖并繁殖不同品种的电子宠物小猫。
CryptoKitties的每只猫都是独一无二的,每只小猫都有 256 组基因,不同的基因组合会让小猫的背景颜色、长相和条纹等都有差异,甚至还有隐性基因的设计。玩家可为自己的小猫命名,并通过各种营销手法,让自己小猫的卖相更好。
买卖猫咪成为了CryptoKitties的一大特色,CryptoKitties是基于区块链的,全球的玩家都可以自由交易自己的猫咪。由于受到大量数字加密货币爱好者的热捧,游戏上线之后就犹如病毒般传播,曾一度造成以太坊网络交易拥堵,其中最贵的一只猫在市场上最高标价是340万美元。
之后出现的网络莱茨狗、小米加密兔、网易招财猫等一系列区块链宠物游戏,无疑是蹭了一波以太猫的热度。