区块链应用:NAS星云链 入门之从零开发第一个DAPP

Posted by on May 6, 2018
1.注册钱包
  • 我们开发以个应用需要注册钱包
  • 我们使用的是星云链,因此这里使用星云链官方提供的钱包,这里的钱包也可以使用 gate.io
  • 首先在GitHub上面,把官方web钱包clone下来:https://github.com/nebulasio/web-wallet
  • 然后直接本地打开 index.html
  • 然后一直下一步就行了,这里需要记住密码要保存好,还有本地生成文件
  • 其实这里如果你有服务端可以把找个钱包放在服务器就行啦
  • 这里可以切换环境

  • 需要注意他有正式环境和test环境的区分,我们是先发布到test环境测试没问题了,在上传到正式
  • 这里的合约就是我们写好的合约代码发布测试的地方
2.部署和写自己的合约
  • 简单来说合约就是区块链后台给你提供的封装的增删该查的sdk,使用它来进行操作,当你提交合约成功之后,会分配给你一个后台的存储区域的地址,然后你后面存储的数据都在这个地址上

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

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

  • 完成Web页面与智能合约的交互。
  • 具体的代码实例看官方的demo即可 https://github.com/15010159959/super-dictionary/blob/c5ee92e5b82f9cec5d43f86f275adcb981063449/smartContract/super_dictionary.js
'use strict'

var LetterItem = function(text){
    if(text){
        var obj = JSON.parse(text);
        this.title = obj.title;
        this.content = obj.content;
        this.author = obj.author;
    }
};

LetterItem.prototype = {
    toString : function(){
        return JSON.stringify(this)
    }
};

var TheLetter = function () {
    LocalContractStorage.defineMapProperty(this, "data", {
        parse: function (text) {
            return new LetterItem(text);
        },
        stringify: function (o) {
            return o.toString();
        }
    });
};

TheLetter.prototype ={
    init:function(){

    },

    save:function(title,content){
        if(!title || !content){
            throw new Error("empty title or content")
        }

        if(title.length > 20 || content.length > 500){
            throw new Error("title or content  exceed limit length")
        }

        var from = Blockchain.transaction.from;
        var letterItem = this.data.get(title);
        if(letterItem){
            throw new Error("letter has been occupied");
        }

        letterItem = new LetterItem();
        letterItem.author = from;
        letterItem.title = title;
        letterItem.content = content;

	    console.log("post",JSON.stringify(letterItem));
        this.data.put(title,letterItem);
    },

    get:function(title){
        if(!title){
            throw new Error("empty title")
        }
        return this.data.get(title);
    }
}

module.exports = TheLetter;

简单来说就是提供了,保存的方法,这里写的方法我们发布之后,就可以远程调用了(参考自:wing的地方酒馆)这里就可以理解为后台代码

3.部署智能合约
  • 领取测试网的测试币。在https://testnet.nebulas.io/claim/ 每天可以领取1NAS的测试币,部署合约是还要花NAS币的,这里需要注意

  • 这里打开我们自己的钱包,找到合约-部署就可以了,部署成功会返回一个has值,这个你需要保存好
  • 然后在点击执行,测试我们的后端代码,这里的函数就是后台提供的方法名字,参数就是个数组就行了
4.开发前端页面
  • 这个前端界面可以参考官方的就可以 http://39.105.36.104:8080/index.html
  • 这里有一点需要注意吧代码的var dappContactAddress = "n1f5647WBNjro6WsbomH55qTN9BFZWyCgEt";//这里是你合约的地址,就是你存储的地址注意正式环境和test环境是不一样的需要替换
5.这样就完成了,现在使用下来有个弊端,就是用户使用钱包里面必须有钱,才行不管多少,这个目前体验太惨,还必须安装钱包插件 安装chrome插件的钱包,点击这里安装https://github.com/ChengOrangeJu/WebExtensionWallet