


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、以太坊dApi开发教程(如何一步步构造一个全栈式去中心化应用)(一)背景及环境搭建、简介本教程帮助你在以太坊区块链上构建去中心化的应用(dApp),教你如何写第一个以太坊智能合约,来实现对两个候选者的选举投票功能。我们会对合约编写测试代码,把合约部署到以太坊区块链上,开发一个前台界面以让用户投票,我们还会介绍几个关键概念:什么是区块链、智能合约,dApp如何工作。视频教程见资源:二、基本概念什么是区块链我们先看一个web应用,通常我们使用浏览器通过网络连接到中心服务器,所有web应用的代码都存在于中心服务器,所有数据存在于数据库中,你使用web应用时必须和中心服务器通信。如果我们要建立投票网站
2、,需要解决以下两个问题:数据库数据可能改变,数据可能被使用多次或者完全被移除web服务器上的源代码也可能随时改变我们想把应用部署在区块链上,使任何能访问网络的人都可以参与投票,我们要保证投票被记下来,且只记下一次,现在看看我们怎么做的。Insteadofhavinganetwork,acentralserver,andadatabaset,heblockchainisanetworkandadatabase.Aallinoneblockchainisapeer-to-peernetworkofcomputers,callednodes,thatshareallthedataandthecode
3、inthenetwork.区块链使由节点组成的点对点网络,在其中共享所有数据和代码。如果你是网络中的节点,将存储所有数据和代码的拷贝。区块链没有中心服务器。不像中心化的数据库,区块链的交易数据存储在一系列的区块中,这些区块连接在一起组成公开的分布式账本,包含了所有区块链中的数据,通过密码学的hash函数保证安全,通过分布式共识算法保证一致性。本例子的投票系统在区块链上开发,因为我们需要保证每个投票都被记录而且不能更改。首先,用户需要一个有几个以太币的账户,当他们连接到区块链网络,并且投票后,支付一小部分代价(gas)以把这笔交易写到区块链中,当投票发生后,一些矿工节点竞争记账权,谁通过POW成
4、功创建区块,就能获得交易代价的一部分奖励。投票者就能确定自己的交易永久记录下来了。注意:查看区块链上的数据是免费的,但写数据需要代价。什么是智能合约我们的投票过程就是通过智能合约完成的,以太坊区块链允许智能合约通过以太坊虚拟机(EVM)来执行智能合约。智能合约是应用的一些业务逻辑,也是dApp的核心部分,负责读写区块链上的数据、执行一些业务代码。智能合约用Solidity书写,类似于JavaScript。智能合约很像网络上的微服务,如果公开账本是数据库层,智能合约就是业务逻辑层。本应用中创建这个合约的人负责计数,其他投票者每人一票,得票最多的候选者获胜。以下是本dApp的结构图:我们有一个传统的用HTML,CSS,Javascript写的前台客户端,客户端会连接到本地的以太坊区块链,智能合约会部署在本地。3.本系统效果图这个是客户端的web界面,将与区块链上的智能合约交互。三、安装软件需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论