【智能合约】客户端和web端对智能合约的事件Event进行调用的代码示例

简介: 客户端和web端对智能合约的事件Event进行调用的代码示例web truffle按官网的例子 http://truffleframework.com/boxes/pet-shoptruffle作为一个运行测试框架,用的也是web3对智能合约进行调用。
+关注继续查看

客户端和web端对智能合约的事件Event进行调用的代码示例

web truffle

按官网的例子

http://truffleframework.com/boxes/pet-shop

truffle作为一个运行测试框架,用的也是web3对智能合约进行调用。

文件所在的位置src/js/app.js


  initWeb3: function() {

      // web3入口
      if (typeof web3 !== 'undefined') {
          App.web3Provider = web3.currentProvider;
      } else {
          // 测试网络
          App.web3Provider = new Web3.providers.HttpProvider('http://localhost:8588'); //这里是我指定的端口88
      }
      web3 = new Web3(App.web3Provider);

    return App.initContract();
  },

初始化智能合约的时候,用了truffle自己编译的json文件进行调用

  initContract: function() {
      //加载Adoption.json
      $.getJSON('Adoption.json', function(data) {
          // 智能合约实例化
          var AdoptionArtifact = data;
          App.contracts.Adoption = TruffleContract(AdoptionArtifact); //赋值到App.contracts下的节点数据

          // 设置合约提供者
          App.contracts.Adoption.setProvider(App.web3Provider);

          // 检索操作
          return App.markAdopted();
      });

    return App.bindEvents();//执行事件绑定
  },

事件绑定是这么实现的

  bindEvents: function() {
    $(document).on('click', '.btn-adopt', App.handleAdopt);
  },

其中btn-adopt对应的是src/index.html中的按钮

 <button class="btn btn-default btn-adopt" type="button" data-id="0">Adopt</button>

运行环境后,进行元素检查,发现按钮绑定了事件

这里写图片描述

被绑定的方法在js文件的下面做定义。

  handleAdopt: function() {
    event.preventDefault();//该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)

    var petId = parseInt($(event.target).data('id'));

      var adoptionInstance;

      web3.eth.getAccounts(function(error, accounts) { //本质还是web3调用
          if (error) {
              console.log(error);
          }

          var account = accounts[0];

          App.contracts.Adoption.deployed().then(function(instance) {
              adoptionInstance = instance;

              // Execute adopt as a transaction by sending account
              return adoptionInstance.adopt(petId, {from: account});
          }).then(function(result) {
              return App.markAdopted(); //成功了就把按钮禁用
          }).catch(function(err) {
              console.log(err.message);
          });
      });
  }

  markAdopted: function(adopters, account) {
      //实例
      var adoptionInstance;


      App.contracts.Adoption.deployed().then(function(instance) {
          adoptionInstance = instance;

          return adoptionInstance.getAdopters.call();
      }).then(function(adopters) {
          for (i = 0; i < adopters.length; i++) {
              if (adopters[i] !== '0x0000000000000000000000000000000000000000') {
                  $('.panel-pet').eq(i).find('button').text('Success').attr('disabled', true);
              }
          }
      }).catch(function(err) {
          console.log(err.message);
      });
  },

总结:web端的智能合约使用技术栈为 Node + truffle + web3 ,能完成完整的编写,测试,部署。

客户端 java web3j

项目开源地址为 https://github.com/web3j/web3j

由于web3j的作用和web3一样,都是对智能合约进行部署调用。

客户端 java qtum-android

量子链官方钱包客户端并没有使用web3j,而是自己写的库。

项目地址为 https://github.com/qtumproject/qtum-android

文件为位置 app/src/main/java/org/qtum/wallet/utils/ContractBuilder.java

目录
相关文章
|
6月前
|
存储 JavaScript 前端开发
web前端面试高频考点——Vue3.x升级的重要功能(emits属性、生命周期、多事件、Fragment、移出.async、异步组件写法、移出 filter、Teleport、Suspense...)
web前端面试高频考点——Vue3.x升级的重要功能(emits属性、生命周期、多事件、Fragment、移出.async、异步组件写法、移出 filter、Teleport、Suspense...)
115 0
|
6月前
|
缓存 JavaScript 前端开发
web前端面试高频考点——JavaScript-Web-API 篇(一)DOM、BOM、事件
web前端面试高频考点——JavaScript-Web-API 篇(一)DOM、BOM、事件
|
JavaScript 前端开发
Web前端学习:jQuery基础--2【jQuery事件、设置与获取HTML 】
Web前端学习:jQuery基础--2【jQuery事件、设置与获取HTML 】
Web前端学习:jQuery基础--2【jQuery事件、设置与获取HTML 】
|
前端开发 JavaScript
谈一谈Web中的事件
谈一谈Web中的事件
74 0
谈一谈Web中的事件
|
JavaScript 前端开发
web前端学习(四十)——JavaScript DOM事件(对事件做出反应)
web前端学习(四十)——JavaScript DOM事件(对事件做出反应)
web前端学习(四十)——JavaScript DOM事件(对事件做出反应)
|
存储 JavaScript 前端开发
web前端学习(三十五)——JavaScript事件、字符串及运算符的相关设置
web前端学习(三十五)——JavaScript事件、字符串及运算符的相关设置
web前端学习(三十五)——JavaScript事件、字符串及运算符的相关设置
|
XML 移动开发 前端开发
【SpringBoot WEB 系列】SSE 服务器发送事件详解
SSE 全称Server Sent Event,直译一下就是服务器发送事件,一般的项目开发中,用到的机会不多,可能很多小伙伴不太清楚这个东西,到底是干啥的,有啥用
1386 0
【SpringBoot WEB 系列】SSE 服务器发送事件详解
|
移动开发 前端开发 程序员
好程序员web前端分享HTML5 video事件应用示例
  好程序员web前端分享HTML5 video事件应用示例,使用 onloadedmetadata 事件获取视频的时间长度,使用 ontimeupdate 事件获取视频当前播放的进度,示例代码如下:   1、获取视频时间长度   当视频载入video后,使用 onloadedmetadata 事件获取视频的时间长度。
1158 0
相关产品
云迁移中心
推荐文章
更多