四、DApp化

作者: sxplus | 来源:发表于2018-05-16 23:35 被阅读0次

    我们在第一节里创建的应用还不能成为DApp,现在我们需要将App和合约连接起来,才实现将App转型成DApp。

    前面说过合约中定义的方法对应业务中的需求,所以,你一定知道在业务代码中什么位置调用合约中的什么方法。

    在这里需要注意的是查询接口和交易接口调用的不同,查询接口调用可以不需要权限的认证,也不会消耗gas,而交易接口一定需要权限的认证并且会消耗一定量的gas。因为矿工挖矿需要报酬啊😄

    查询接口调用

    查询接口调用可以直接用neb库,也可以用官方提供的nebpay库来调用,nebpay是以交易的方式调用,需要验证钱包也会消耗NAS。

    neb库引入

    根据你的应用构建方式的不同,你可以选择直接在页面引入js库或者npm install模块。

    页面直接引用

    需要在github下载源码,然后打包生成nebulas.js。
    neb.js源码
    或者也可以直接从这里下载jsnebulas.js

    <script type="text/javascript" src="nebulas.js"></script>

    node模块化安装

    npm install nebulas -D

    页面调用nebulas库

    初始化neb

    var HttpRequest = nebulas.HttpRequest;
    this.neb = new nebulas.Neb();
    this.neb.setRequest(new HttpRequest($this.net_address));
    

    调用api

          var $this = this;
          var value = "0";
          var nonce = this.nonce;
          this.nonce = this.nonce+1;
          var gas_price = "1000000"
          var gas_limit = "2000000"
          var callFunction = "checkAccount";
          var callArgs = ''; //in the form of ["args"]
          var contract = {
            "function": callFunction,
            "args": callArgs
          }
    
    this.neb.api.call($this.wallet_key,$this.contract_address,value,nonce,gas_price,gas_limit,contract).then(function (resp) {
    console.log('resp:',resp);
          }).catch(function (err) {
            console.log("error:" + err.message)
          })
    

    交易接口调用

    交易接口的调用可以用官方提供的nebpay库,也可以直接用nebulas库,如果用nebulas库需要像web-wallet里面合约调用页面一样,需要用户上传钱包文件来获取钱包信息,而这是官方不推荐的。

    使用nebpay库,DApp的用户需要安装浏览器插件-桌面端(WebExtensionWallet)或钱包APP-移动端(星云官方APP钱包)来完成Dapp页面发起的交易请求。开发阶段测试交易都需要安装。

    更多关于nebpay的信息请参考官方文档如何在Dapp中使用NebPay SDK

    nebpay库引入

    根据你的应用构建方式的不同,你可以选择直接在页面引入js库或者npm install模块。

    页面直接引用

    需要在github下载NebPay源码,然后打包生成nebpay.js。
    nebPay源码
    或者也可以直接从这里下载jsnebPay.js
    <script type="text/javascript" src="nebPay.js"></script>

    node模块化安装

    npm install nebpay -D

    页面调用nebpay库

    初始化nebpay

    this.nebpay = new NebPay();
    

    调用api

          var $this = this;
          var value = this.principal;
          var callFunction = "save";
          var callArgs = ''; //in the form of ["args"]
          var serialNumber;
          serialNumber = this.nebPay.call($this.contract_address, value, callFunction, callArgs, {    //使用nebpay的call接口去调用合约,
            listener: function (resp) {
    console.log('resp:',resp);
            }        //设置listener, 处理交易返回信息
          });
    

    参照例子写好合约调用的代码,就可以先在本地测试了。一般来说,在三、创建合约小节里测试过合约调用成功的,代码里调用也不会有问题。

    在这里附上官方的例子供参考超级图书馆

    至此我们的应用就是一个DApp啦,只需要最后一步五、部署和提交就可以角逐大奖了!

    相关文章

      网友评论

        本文标题:四、DApp化

        本文链接:https://www.haomeiwen.com/subject/qvlvdftx.html