以太坊区块链的众筹DAPP智能合约设计与实现

无水印–格式完整下载地址看右侧—》》》

无水印–格式完整下载地址看右侧—》》》

无水印–格式完整下载地址看右侧—》》》

 

自古以来,信息的传递方式和速度决定着一个时代的兴盛和衰败,比如古代的战时

传递信息的烽火台,由于当时生产力水平比较低,导致了当时的传递信息的方法比较落

后,这些传统的信息传递方式,也反作用于当时的生产力。第二次工业革命以来,人类

科技水平的发展以爆炸式的速度增长着,这背后正是以信息传递速度的提升和传递方式

的改变为依托,从 19 世纪的电报、电话到 21 世纪的互联网,信息的传递的速度越来越

快,形式也越来越多,价值的传递方式也因信息传递方式的发展得到了同步发展,从最

初的物物交换到使用货币这个等价物传递价值,再到现代以银行卡、在线支付、移动支

付为代表的中心化支付网络,价值的传递方式也取得了飞速的发展。

在 20 世纪末 21 世纪初这个被电子通信技术推到风口浪尖的时代,互联网正是为了

更加高效便利的传递数据发明的,在互联网上,传统的信息传输网络并没有对有价值的

信息进行有效保护的内在机制,在网上复制传播乃至篡改一条信息的成本非常低,有时

候我们不知道信息是否被篡改过,更难去了解信息最初的所有者。

一些传统的信息传递行业,比如唱片业、出版业等和版权挂钩的行业,在互联网诞

生后受到了巨大冲击,这是由于传播信息成本低廉,再加上我们无法标注这条信息是否

是正版信息,也就是说无法进行数据的确权。虽然目前各地政府已经加大力度打击互联

网盗版问题,而且网民的版权意识也得到了极大的提高,但是我们仍然无法从技术层面

解决这个问题。

所以到现在为止,虽然整个互联网的信息传输速度越来越快,但是我们却没有与之

匹配的高效可靠的价值传输网络,我们目前所使用的价值传输网络都是中心化的,价值

的传输依赖于第三方机构的背书才能完成,这种完全中心化存储数字货币的形式,不仅

引入了中心化的风险,也提升了传输的成本,当中心化的节点发生故障时,造成的损失

将是不可估量的。

2008 年的金融危机在短短时间内波及全球多个国家,这次危机也暴露出了现有的全

球的金融体系的漏洞。2009 年,中本聪为比特币建立了一个开源项目,描述了一种新的

1

中国石油大学胜利学院本科毕业设计(论文)

在线的可靠的数字货币体系,作为底层技术的区块链也同时受到了人们的极大关注。

区块链就是诞生在这样的复杂的大背景下的,随着一些重要的数据从传统的存储媒

介向互联网上迁移,价值与数据变得越来越密不可分,虽然互联网的信息传输速度越来

越快而且越来越可靠,但是我们却没有一个与之匹配的高效可靠的价值传输网络。也就

是说到目前为止,互联网下的信息传递,不断加大的带宽与现有信息传输的价值是不完

全对等的,而目前全球的带宽信息程度可支撑点对点直接去中心化的信息带所有权的传

输,所以可以在现有的互联网基础上,打破原有的价值传输系统,建立一套新的价值传

输系统,这套系统必然是以区块链作为底层技术的。而且我们所创造的数据并不完全属

于我们自己,而是属于那些中心化机构的,区块链的出现也极大的解决了数据确权的问

题。

1.2 国内外研究现状

中国的区块链发展相对也是比较快的,各地政府,特别是中国沿海地区纷纷成立区

块链实验地、研究院。目前,深圳、杭州、广州、贵阳等地政府都在积极建立区块链发

展专区,给予特别扶植政策。其中广州在 2017 年 12 月正式发布广州区块链 10 条策略,

在黄浦区和开发区打造区块链企业技术创新区。深圳在 2018 年 3 月由深圳市经济贸易

和信息化委员会发布《市经贸信息委关于组织实施深圳市战略性新兴产业新一代信息技

术信息安全转型 2018 年第二批扶持计划的通知》,区块链在扶持方向之列,这是继广

州、贵阳、青岛、杭州之后,国内第 5 个地方政府,出台的关于区块链的扶持政策。

区块链在开源领域也有非常好的发展,超级账本(Hyperledger)是由 Linux 基金会

于 2015 年发起的推进区块链数字技术和交易验证的开源项目,吸引了包括 IBM、英特

尔、Fujitsu、UPS、Cisco、华为、Redhat、Oracle、三星、腾讯云、百度金融等众多公

司参与,目前已经有超过 200 家会员单位。Apache 基金会创始人 BrianBehlendorf 担任

超级账本项目的执行董事。

2017 年 2 月,企业以太坊联盟(EEA)正式成立。联盟轮转董事会的创始成员包括

埃森哲、桑坦德银行、BlockApps、BNY 梅隆、芝商所、ConsenSys、英特尔、摩根大

通、微软、Nuco、IC3。截至 2018 年 2 月,企业以太坊联盟已经吸引了超过 150 家成员

加入。

2

中国石油大学胜利学院本科毕业设计(论文)

1.3 论文主要研究内容

本文主要介绍如何使用 node.js 完成一个小型的区块链,并且完成一个可用的基于

以太坊的分布式应用。

这包括:

学习区块链的基本运行逻辑和底层原理,研究其主要的技术,p2p 共识网络,非对

称加密等基本的加密方法,编写并设计区块链的基础结构和其重要的业务逻辑,包括挖

矿,转账,以及各个网络之间区块信息和交易信息的同步。

搭建智能合约以及整个 DAPP 所需要的开发环境。包括本地开发测试框架 truffle 的

安装与使用,本地测试链 ganache 的安装与使用,存储节点 ipfs-desktop 的安装与使用,

各种 node.js 插件包比如 web3.js、antdesign、react 的安装和使用。

深入研究智能合约开发语言 solidity,以及前端框架 react 和 ant.design 等前端技术,

使用这些技术完成众筹 DAPP 的开发。

1.4 论文组织结构

第一章 阐述了本研究课题课题的背景及意义和国内外研究现状。提出了本文研究

的主要内容。

第二章 介绍本课题用到的关键技术,区块链和智能合约以及它们的现状,简单的

运行机制和区别于其他的技术的特性。

第三章 描述整个开发环境的搭建过程。

第四章 小型区块链和众筹 DAPP 的需求分析

第五章 小型区块链和众筹 DAPP 的概要设计

第六章 主要对小型区块链和众筹 DAPP 进行实现

第七章 为全文总结。列举本论文的研究成果,以及在系统开发过程中的遇到的问

题,并分析研究工作的不足,展望进一步研究的内容和方向。

3

中国石油大学胜利学院本科毕业设计(论文)

第二章 区块链与智能合约技术研究

2.1 区块链

2.1.1 区块链的技术背景

2008 年,美国爆发金融危机,原有的建立在全球化背景上的金融结构也受到了极大

地冲击,同时也暴露出了其严重的失衡问题,危机爆发后的几个月里,一些密码学以及

共识方面的技术专家都在思考怎么建立一种更加安全可靠的货币体系,以此来代替现有

的中心化价值传输网络,比特币自诞生发展到现在,已经快有十年的时间了,通过这十

年的稳定发展,主流媒体讨论的重点也从比特币是否是个骗局,转移到比特币是否能成

为未来的价值传输系统的主流货币。同时,区块链以优秀的去中心理念得到了人们极大

的关注,还有基于密码学的加密体系以及基于时间戳的链式叠加结构,都极大保证了区

块链不可篡改,非常安全,作为一个面向未来的新型互联网价值传输协议,它看似简单

的原理却可以重新构造整个互联网的底层,足以支撑起整个价值传递系统,使全球信息

的价值传递成为了可能。

2.1.2 区块链简介以及运行机制

首先来解释几个与区块链密切相关的名词

1) 去中心化

去中心化,顾名思义,就是不再中心化,权力相对不再集中,而是全部分散开来,

每个节点都高度自治,不会因为中心节点的错误而导致整个系统无法运行。在说个通俗

的例子,去中心化就像是一个辩论会,每个参与者都可以畅所欲言,而不是被动式的接

收信息,参与者可以直接点对点互相交流,以此来保证所有参加者之间得到的信息的都

是一致的,这样即使整个讨论会只剩下很少的人,通过不断的交流也可以保证他们之间

获取到信息都是最新最可靠的信息,而且在做一些重大决定时,大家都托票决定哪些是

正确的哪些是错误,多数票决定决定的结果,这样极大地保证了系统的可靠性和可信性,

而不会出现中心节点有问题导致整个系统瘫痪的情况。

再回到计算机系统中来说,一个系统的运行不再依赖于某一个固定的中心点或者再

具体一点说就是服务器,而是依托于所有分散的节点运行,每个节点之间都高度自治,

这些节点之间可以自由的相互连接,已形成新的节点单元,只要这个系统内还有运行着

4

中国石油大学胜利学院本科毕业设计(论文)

的节点,这系统就不会崩溃,节点和节点可以直接交换数据,而不用通过中介节点,在

发生数据交换之后,要告诉所有的在线的节点,他们两者之间交换了数据,其他几点就

会将他们的操作行为记录,也就是说所有节点之间的数据是完全同步的,只要不是绝大

多数节点数据全被篡改了,少数节点在数据出错后,会及时将正确的信息再次同步回来,

所以去中心化的系统是相对安全的可靠的,它的这些特性决定了去中心化系统有非常多

的有点,以太坊的创始人 vitalik 已经给出了系统的回答。

第一点,容错性非常高,因为系统中的所有节点都是相对分散,并且独立的,所以

在系统整体上并不容易破坏,只要不讲所有节点全部破坏,只破坏其中任何一个或多个

节点不会使整个去中心化系统出现问题。

第二点,抗勾结性比较高,分散式的多节点系统中,单个节点通过和系统勾结来获

取利益的难度非常的高,因为要勾结半数以上的节点来篡改某一个数据,成本也比较高,

同样的,去中心化的节点和节点之间,也很难勾结起来。传统的中心化系统就很容易勾

结,打个比方,传统的企业很容易因为利益关系而勾结起来,以损害客户利益。

三,抗攻击型很高,去中心系统中,没有所谓的敏感中枢节点,想要使整个系统瘫

痪,就要攻击所有的节点,可想而知,成本是非常高的。

除去这些核心的有点之外,去中心化系统还有很多非常好的优点,比如说去中心化

系统的多元性,因为权力的下放,每个节点是相对独立的,它们会有自己的特点和想法,

这项节点直接在数据交互之后可能就会产生新的特点,如此一来节点和节点之间就会互

相形成一个多元化的系统。除此之外,去中心化网络对资源的利用也有所提高,比如说

做区块链存储的 IPFS,它将用户上传的信息打散存储在全世界各地的其他节点用户空闲

的硬盘中,极大提高了硬盘空间的利用率,还有去中心化系统也极大地提高了每一个节

点宽带资源的利用率。它的可信性非常的高,就拿数字货币来说吧,节点之间可以直接

转账,而不需要任何中心化结构做背书,在互联网这个不可信度非常高的系统中创造和

完善信任体系,它对很多信息都进行了签名加密,以保证信息未被篡改,保证了其可信

性。

但是我们需要看到的是,去中心化也存在一定的弊端,我们不能盲目的去追求去中

心化,而彻底推翻原先中心化的一些应用场景,如果去做一个实时性要求特别高的系统,

那么用去中心化的思想去做肯定是不适合的,因为去中心化系统的效率是到目前为止还

没有完全解决的问题。所以在开发系统时,一定要斟酌一下,系统要的效率还是安全性

5

中国石油大学胜利学院本科毕业设计(论文)

和可靠性。

2) P2P 网络

P2P 的英文全称为 Peer-to-peer,既点对点技术,是对等计算模型在计算机网络的应

用层形成的一种网络形式,这个网络中所有节点都是对等,没有客户端和服务器之分,

是一种在 Peer(对等节点)之间分配任务的去中心化架构,所以大部分人把它理解为对

等网络,所有 P2P 网络的参与者共享其他节点的空闲资源,可以是空闲的硬盘,也可以

是网络带宽,或者计算能力,这些节点为通过网络为其他的节点提供服务,而且这些节

点之间无需第三方中介,可以直接进行连接,P2P 网络中的节点即既是资源和服务的贡

献者,又是受益者,他们一般不依赖中心服务器运作,没有主从之分,每一个节点既可

以发出服务请求,又可以响应其他节点的服务请求,为其他的节点提供服务和资源,相

对于其他的中心化的网络结构,这种网络结构有着天然的优点,他有良好的可扩展性,

加入的节点越多,可提供的资源就越多,服务能力也就越强,信息流通的速度也就越快,

健壮性也是这个网络的一大有点,因为服务是分散于各个节点的,所以部分节点受到破

坏后,对整体的影响是很小的,性价比也比较高,网络中的节点可以贡献出空闲的资源

供其他的节点使用,极大提高了资源的利用率,又由于这些节点都是对等的,部分服务

器和客户端,资源分布在不同的节点上,使整个 P2P 网络的负载更加均衡,最后网络中

提供的资源都是分散在各个节点上,一个节点不会存储完整的数据,所以隐私也极大的

得到了保护,使用广泛的 BT 下载就是基于 P2P 网络的。它底层所使用的协议可能是不

一样的,比如说比特币的 P2P 网络底层就是完全使用的 TCP/IP 协议,但是以太坊和比

特币有些不一样,以太坊如果找到新节点以后,数据交互又会切换到 TCP 协议上。P2P

网络这就是最原始的去中心化网络。

3) 共识算法

共识既让所有参与者意见一致,每个参与者都要支持这些决定。机制就是建立明确

的规则,然后遵从这些规则,以实现特定的目标,那么共识机制就是采用去中心化的方

式进行投票,通过投票的等共识规则,在短时间内让参与者达成一致,完成信息的校验

和确认,也常被成为共识算法,通过共识算法,可以保证真实有效的交易消息和事务记

录在区块链上。共识算法的作用就是更加安全将数据更新到去中心化的区块链中,大大

提高了区块链的容错率。

常用的共识机制有工作量证明机制(PoW),通过这种机制可以激励和调动网络参

6

中国石油大学胜利学院本科毕业设计(论文)

与者的积极性,最常见的我们熟知的比特币就采用了这种方式,对旷工进行比特币奖励

以此来鼓励他们更加积极的投入到挂矿的工作中去,除此之外常用的共识机制还有权益

证明机制(PoS),以及使用拜占庭机制(PBFT)。

这些算法是通过他们共有的几点特性的差异程度来评判的,1)安全性 2)拓展性 3)

性能效率 4)资源消耗。

通过这些共识机制保护起来的网络,是一个无需信任的网络,并且无需中央数据和

中介,所以我们认为区块链上的数据是相对来说非常安全且错误率非常低的。

4) 非对称加密

区块链中涉及到很多的加密技术,因为最初的时候,比特币的概念就是出自一个密

码学的讨论会,所以区块链的很多地方都用到密码学的知识,其中使用最广泛的就是非

对称加密了,这种加密方式区别于传统的加密方式的地方,是密钥分为公钥和私钥一对,

公钥加密的密文可以用私钥来解开,私钥加密的密文可以用公钥解开,而不是只有一个

密钥,传统的加密方式是使用一个密钥进行明文的加密,然后再使用同一个密钥对密文

进行解密,这样如果密钥被公开,密文也就随着公开,相对来说很不安全

非对称加密算法非常难以被破解,它相当于去计算一个复杂的数学问题,它的破解

难度和密钥的长度有很大关系,如果密钥的长度小于 256 位的话,一台普通的电脑在几

个小时内就可以将其成功破解,但是如果密钥的位数达到了 2000 位左右,那么传统电

脑大概需要花费十亿年的时间,这显然是接近不可能的事情,所以非对称加密算法加密

的数据还是很安全的,由于它是一对密钥,所以很多时候数据的发起者都会使用自己的

私钥来进行数据的签名,然后数据的获取者使用公钥解密数据,以保证数据未被篡改过。

了解了以上的基础名词,也就基本上了解了区块链的运行机制,那么区块链是什么

呢,说白了,在最开始,它就是一个去中心化的用来记录交易信息的数据库,或者说是

个电子账本,每一个小的区块就是这个“账本”上的一页数据,与其他的中心化交易系统

不一样的是,这个账本上的信息,每个节点都会有一份备份,只要发生挖矿也就是结算

信息和交易信息,通过共识机制,所有的节点都会进行同步,所以说所有在线的区块链

节点都会有一份相同的账本,区块链的去中心网络、非对称加密和共识机制决定了它的

信息可信度极高,但是相对的,效率却比较低,还有因为整个区块链是基于时间戳的链

式叠加结构,后一个区块会记录前一个区块的 hash 值,如果想要篡改某一个区块的信

7

中国石油大学胜利学院本科毕业设计(论文)

息,并且让共识机制承认区块链合法,必须得把这个区块后面所有区块的 hash 重新生

成一遍,前面也说过,因为区块的 hash 值是将区块上所有的信息 hash 运算得到的,如

果前一块的 hash 改变,那么当前块存储的前一区块的 hash 值也得发生变化,这样当前

区块就要重新进行 hash 运算,才能保证当前区块是有效区块,以此类推,要修改无数

个区块中的信息,而且每次 hash 运算都要计算一个复杂的数学题,会耗费大量的算力

和时间,所以在当代计算机模型下,想要去篡改个一个节点的区块链上的信息几乎是不

可能的,就算是真的篡改了某一个节点的信息,还有第二层保证,那就是共识机制,当

某一个节点区块链数据出现篡改而失效后,共识机制会让其迅速链接到其他的存有正确

信息的节点,然后把正确的信息同步回来,除非能篡改绝大部分节点上的信息,不然都

是徒劳,拿比特币来说,除非能修改全球 51%的节点上的同一个区块的信息,才有可能

篡改成功数据,但是显然,这是不可能的,所以区块链的上信息是基本上不可能被篡改

的。除了安全性,去中心化和不可篡改的性质,区块链还具有匿名性,自治性和开放性

等特性,目前区块链的应用场景还不是非常的多,可以用在金融,存储,法律,物联网,

版权验证,食物溯源,个人信息验证等领域,相信在未来,区块链会应该用在更加广阔

的领域。

2.2 智能合约

2.2.1 智能合约

智能合约是将一些协议数字化为加密代码,存储在区块链中,在一定的条件下,履

行和执行这些协议条款代码。说白了就是运行在区块链上的代码。它是区块链 2.0 的产

物。

智能合约也是非常的安全的,它和数字货币一样,也需要使用各个节点来验证合约

是够已经全面完成,只有一个节点完成不是不会同步到其他的节点的,当所有节点完成

合约的执行,整个合约才算执行完成,而且智能合约是完全透明的,并且可以向追溯其

执行的过程。智能合约的所有数据都是以去中心化的方式存储在区块链中的,在合同完

成之前,所有的资金都存于智能合约中,没有任何人可以控制资金,直到合约完成条件

触发后,资金才可以转出流通。每个合约都有一个自己的特殊的地址,用来定位合约和

调用合约,而且智能合约的每一个状态都可以保存到区块链上,每修改合约上的一次数

据就要花费一定的燃料(gas),燃料是直接从修改者的账户中扣除的。由于它的特性,

它体现出来的有点也是非常明显的。

8

中国石油大学胜利学院本科毕业设计(论文)

1)因为它不需要其他的人为干预,高效并且准确的实时更新和执行。

2)安全性和可靠性非常高。

3)运行成本比较低。

但是也是由于人为干预比较少,所以它运行会造成后果的不可见性也非常大。智能

合约开发就相当于传统的后台程序的开发,前台可以直接与之交互获取智能合约的数

据。或者调用智能合约函数来处理一些其他的事情。

2.2.2 Solidity

Solidity 是基于以太坊智能合约的编程语言,它是一种类 JavaScript 语法的语言,但

是也有大量独特的关键字,如 payable,可以直接调用带有 payable 的函数进行支付操作。

通过 solidity 语法可以编写智能合约,通过编译,部署到区块链上,就可以通过 web3.js

直接和合约进行通信,最后 solidity 语言有强大异常处理能力,当执行出现错误时,会

进行回滚操作。

2.2.3 DApp

DApp 英文全称 Decentralized Application,中文意思就是去中心化应用,通俗的讲

就是使用 solidity 编写的智能合约充当传统开发中的后台,处理一部分主要的业务逻辑。

这种应用没有后台程序, 一般也不使用数据库,它的去中心化体现在两个方面,一是

权限的去中心化,二是部署到去中心化的网络中。相比于传统的应用, DApp 应用中更

加弱化中心化的权限,而将权限下放,用户之间的权限基本上都是对等的。

2.2.4 Token

Token 是为了激励智能合约系统中的用户,使其更加活跃,而奖励的一种数字数字

货币,这类货币可以与法币进行双相兑换,我们通常也成为代币,因为可兑换,所以也

可以用来设置为权益代币和债券代币,用来兑换相应的权益。有人说 Token 的发明堪比

智能合约,我们可以限制自己发的 Token 只在我们自己的系统中使用,留出法币接口进

行和其他币的兑换,这样我们可以自定义代币的价值,在系统内建立自己的一套价值体

系,相对来说也是非常安全的。

2.2.5 智能合约未来的发展方向

现在智能合约的应用场景还比较窄,还是围绕着数字货币展开的,比如说发布通证

(Token),红利分成、彩票,和区块链游戏。

比较有名智能合约项目像,区块猫,和 Ether Delta 这样的数字货币交易所。

9

中国石油大学胜利学院本科毕业设计(论文)

2.3 用户界面

前端页面使用了一个前端框架,Facebook 开发的 React,React 可以更加高效灵活的

渲染前端组件,是目前市面上最流行的前端框架。而前端 UI 使用的是蚂蚁金服出品的

一款 UI 组件 Ant.Desgin,它以 React 组件的形式可以很好的和 React 融合,方便并且高

效,成倍提升了前端的开发效率。除此之外,还使用了 React-Router,用来方便跳转前

端页面,最后还有一个 react-video 播放视频的插件。

2.4 数据存储

虽然区块链可以存储数据,但是毕竟是资源有限,而且更新智能合约要话费 gas,

合约上智能存储一些比较稀有的数据,比如说其他合约的地址,或者一些相对重要的信

息,其他的图片,视频和相对不重要的信息可以存放到 IPFS 上。

IPFS 全称 Inter-Planetary File System,中文称为星际文件系统,是一个面向全球的、

点对点的去中心化文件存储系统,它的目标是替代 http 服务,传输到 IPFS 上的文件,

将会被打散,然后分布存储到全球不同的节点上,即使拿到某一块数据,也不会解密出

原来的文件,所以用 IPFS 来存储数据非常的安全。

2.5 小型区块链所使用的的技术

为了理解区块链的底层技术,本课题还将完成一个小型的区块链,这个项目将使用

node.js 编写,使用 udp 协议完成了 p2p 网络,然后使用 elliptic 插件对数据进行非对称

加密,使用 vorpal 将功能函数封装然后展示到命令行中。

2.6 本章小结

本章详细介绍了区块链及其周边的技术,包括去中心化网络,非对称加密,共识算

法等区块链技术中常用的技术名词,简单介绍了区块链的运行机制和其特性,智能合约、

以太坊以及智能合约相关的技术,智能合约的运行机制和智能合约的特性,介绍了构建

DApp 前端页面所使用的技术 React 和 ant.design,最后介绍了开发小型区块链所使用的

的技术。

10

中国石油大学胜利学院本科毕业设计(论文)

第三章 开发环境的搭建

本章主要介绍了 DApp 智能合约和小型区块链开发环境的搭建。

3.1 材料准备

(1)Visual Studio Code

(2)nvm

(3)ganache

(4)ipfs-desktop

(5)metamask

(6)chrome

3.2 安装 Node.js

nvm 是一个 node 的版本管理工具,通过这个工具,可以直接下载管理不同版本的

node.js,而且会直接将 node.js 的包管理工具 npm 安装好,nvm 选择的是最新的 1.1.7,

下载地址:https://github.com/coreybutler/nvm-windows/releases

直接选择最新的非安装版本,也就是`nvm-noinstall.zip`这个包

图 3-1 下载 nvm 安装包

点击下载,下载完成后,在某一个盘下新建一个文件夹,在此文件夹下新建 nvm 文

件夹和 nodejs 两个文件夹。

图 3-2 新建 nvm 文件夹

11

中国石油大学胜利学院本科毕业设计(论文)

然后将下载好的压缩文件直接解压到 nvm 文件夹中。

图 3-3 解压安装包到 nvm 文件夹

右键以管理员的身份运行 install.cmd 直接按回车。

图 3-4 运行 install.cmd

然后会弹出一个 settings.txt 文件,修改里面的 root 和 path 参数,把 root 参数改为

nvm 的路径,把 path 参数改为刚刚创建的名为 nodejs 的空文件夹路径,然后将其另存

为 nvm 下。这里需要注意的是,因为镜像在国外,下载速度可能比较慢,可以提前设置

一下国内淘宝的镜像,这样一会在下 node.js 的时候比较快。

图 3-5 为 settings.txt 设置参数-1

图 3-6 为 settings.txt 设置参数-2

12

中国石油大学胜利学院本科毕业设计(论文)

配置 nvm 和 Node.js 环境变量,上一步完成之后,nvm 会在系统环境变量中创建一

个名为`NVM_HOME`的变量,我们需要把其值设置为 nvm 的路径,它还创建一个

`NVM_SYMLINK`,我们要并把值设置为 nodejs 文件夹的路径。

图 3-7 为 nvm 配置环境变量

将其加入到 path 变量中。一定不要忘了`%`

图 3-8 把 nvm 环境变量加入到 path 中

打开命令行,输入`nvm`,看是否安装成功。

图 3-9 命令行中输入 nvm

然后使用`nvm install 10.15.1`命令来安装 10.15.1 的 node.js 环境。

图 3-10 安装 node.js 版本为 10.15.1

13

中国石油大学胜利学院本科毕业设计(论文)

我们用`nvm use 10.15.1`来使用其中的一个版本。这里使用 10.15.1 这个相对稳定的

版本。

图 3-11 使用 10.15.1 的版本

使用`node -v`命令查看当前 node.js 的版本号,正是我们使用的`v10.15.1`

图 3-12 查看当前 node.js 的版本

使用`npm -v`命令查看当前使用的 npm 版本

图 3-13 查看当前使用的 npm 版本

在系统环境变量添加一个新的变量名为 NPM_HOME,值为 npm 的安装路径,path

中添加%NPM_HOME%,`注意了,这个一定要添加在 %NVM_SYMLINK%之前`。

图 3-14 设置全局 npm 仓库

14

中国石油大学胜利学院本科毕业设计(论文)

此时 node.js 环境就已经安装完毕。

3.3 安装 VScode

从官网下载完成后,直接点击安装包。

图 3-15 打开 vscode 安装包

然后一直下一步,直到安装完成。然后打开 vscode。

图 3-16 完成安装

15

中国石油大学胜利学院本科毕业设计(论文)

安装后点击扩展按钮,安装几个重要插件

1) Solidity 是 solidity 语言支持插件

2) ES7 React/Redux/GraphQL/React-Native snippets 是 React 和 JS 支持插件

3) HTML Snippets 是 html5 片段插件

4) IntelliSense for CSS class names in HTML 是 CSS3 支持插件

5) Simple React Snippets 是 React 代码片段插件

6) antd intellisense 是对 ant.design 的支持插件

7) Ant Design Snippets 是 ant.design 代码片段插件。

8) Node Debug 对 node.js 代码进行调试。

图 3-17 安装 vscode 插件

至此 vscode 配置完成。

3.4 安装 Ganache

去 Truffle 官网下载最新的 Ganache 安装包,注意 Ganache 的安装包是 windows 的

app 包,点击之后就直接安装了。安装完成后我们需要对 Ganache 进行一个简单的配置,

这里可以直接开始一个项目,但是在 Ganache 关闭后,链上的数据也随之清空,当然也

可以选择 new workspace 选择一个合适的工作空间,这样的话,链上的数据就会被保存

下来,以供后面进行开发和测试。

16

中国石油大学胜利学院本科毕业设计(论文)

图 3-18 安装 Ganache

启动后的界面

暂无优惠

已有13人支付

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 以太坊区块链的众筹DAPP智能合约设计与实现

提供最优质的资源集合

立即查看 了解详情