查看原文
其他

五一大礼包:手把手教你一小时开发DApp,千万奖金等你拿

2018-04-28

作者 星云社区

昨日,星云官方公布了第一季星云激励计划,此次5月7日正式开始的激励计划总奖金达到46万NAS(按照4月28日价格,约2,500万人民币),鼓励更多开发者在星云链主网上持续开发更多更好的去中心化应用(DApp)。


此次计划参加门槛很低,只要会写Javascript,愿意学习DApp开发,成功提交DApp就100%可以拿到奖励(约等值上万人民币),月度大奖等值百万人民币且上不封顶(了解详情)。


“带薪”学区块链DApp开发,如此利好,激不激动?动不动心?

什么?不会?不知道从哪里下手?

不知道怎样的DApp才算符合标准?


没关系,此前主网上线后,已经有爱好者开发出了符合这次标准的DApp。为了让大家更好地理解此次DApp开发的评选标准,并且帮助各位首次进行DApp开发的新手快速入门,我们征得开发者同意,转载了这个实例。 


此外,星云团队也准备了帮助文档,聚合了所有开发所需的资源(长按二维码跳转,还可点击文末阅读原文)。

△长按二维码查看开发资源合集△


一小时入门,五一在家学起来啦?



项目实例


这次DApp选取了一个简单的场景:建立一个用户自己的词典——Super Dictionary。用户能够用它在区块链上查询词条释义,并抢先注册新的词条。


代码下载地址:

https://github.com/15010159959/super-dictionary 


制作这个简单的DApp,我们只需三个步骤:


1 制作一个有文本框和按钮的Web页面。

2 制作一个只需要用JavaScript编写几十行代码的智能合约。

3 完成Web页面与智能合约的交互。


第一步,Web页面制作。


过程略过,简单讲一下交互方式。


网页的交互方式很简单:


(1)用户在输入框中输入要查询的词条。

(2)如果查询到结果,则返回该词条的详细内容(图1)。

(3)如果没有查询到,则允许用户添加释义(图2)。


图1


图2


第二步,编写智能合约


Super Dictionary智能合约所需要完成的业务逻辑并不复杂,尤其当开发语言是JavaScript的时候,只需几十行代码就可以完成,简单快捷。


本例中所涉及到的智能合约大体包括三个部分:

(1)词条数据结构

(2)查询词条的函数

(3)新增词条的函数


(1)编写词条数据结构


在这个项目的智能合约中,我们为每一个词条定义一个结构:包括作者(author)、词条名(key)、词条内容(value),如下图所示:



(2)设置查询词条 & 新增词条:


星云链的智能合约运行环境内置了存储对象LocalContractStorage,可以存储数字,字符串,JavaScript对象,存储数据只能在智能合约内使用,其他合约不能读取存储的内容。所以查询词条就可以简化成了类似在map上对词条key值进行get操作。新增词条则演化为往map中进行put操作。



在智能合约写好之后,需要将合约部署到Nebulas上进行后续调用。部署的方式有很多种,比较推荐的方式是使用星云官方WebWallet的合约部署功能。在Contract/Deploy选项内,你可以很方便的把你的合约部署在星云链上,在右上角可以选择部署到测试网或者主网。如下图所示:



星云钱包地址:

https://github.com/nebulasio/web-wallet

星云钱包教程地址:

https://medium.com/nebulasio/creating-a-nas-wallet-9d01b5fa2df6


(3)Web页面与智能合约交互


Web页面制作完成,智能合约完成部署之后,我们需要让Web页面能够方便的调用智能合约中的函数。


为了解决这个问题,星云官方提供了完整的API 

https://github.com/nebulasio/neb.js 

提供用户对于已经部署好的合约进行调用的SDK。


此外,社区小伙伴为方便在Web页面进行交互,提供了浏览器插件。


项目的地址是:

https://github.com/ChengOrangeJu/WebExtensionWallet 。只需要在Web页面中向浏览器插件POST message 即可唤起插件的内置功能,调用上文已经部署的智能合约中的功能函数,完成Web端与智能合约的交互。


如:在监听按钮点击的函数内添加如下代码,即可调用插件钱包。



下面是这个插件与星云链交易确认/等待结果/发布成功三个步骤的截图。


       

这样子一个完整的DApp开发就算完成啦!


是不是很简单?赶紧操作起来啦。


补充材料:

如何开发一个DApp应用(英文):

https://medium.com/nebulasio/how-to-build-a-dapp-on-nebulas-part-1-da4eaf9399bc


星云主网开发帮助文档,聚合了所有开发所需的资源(也可点击文末“阅读原文”):

https://github.com/nebulasio/wiki/blob/master/tutorials.md



关于星云链


星云链是新一代区块链公链,致力于构建可持续升级的良性生态。星云链具有三大理念:

价值尺度:独创的区块链价值发现体系

星云指数(Nebulas Rank)衡量区块链世界多维度的数据价值。 

◆ 自进化:避免硬分叉的自进化能力

星云原力(Nebulas Force)提供快速迭代、无需硬分叉的升级能力。 

◆ 原生激励:前瞻性的激励和共识机制

星云激励(Nebulas Incentive)奖励对生态有贡献的开发者和用户。


星云链1.0鹰星云版具备以太坊所有功能,是比以太坊更优秀的区块链公链之选:

◆ 面向开发者友好,支持使用JavaScript编写智能合约和DApp,更易上手;

◆ 唯一使用LLVM的区块链公链,性能优越,采用并发技术,交易处理能力达到2000TPS,系统更加安全稳定,可扩展性强,且具备智能合约调用和协议升级能力。


获取更多信息请访问

官网:nebulas.io

中文博客:blog.nebulas.io

英文博客:medium.com/nebulasio



您可以前往Github了解更多

github.com/nebulasio/go-nebulas

在Slack加入讨论

nebulasio.herokuapp.com

(选择 #Developers 频道)


在Twitter上跟踪最新动态

@nebulasio

▽点击“阅读原文”查看星云开发文档

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存