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

客户端和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

时间: 2024-08-31 11:16:24

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

『区块链智能合约』从零构建Ethereum智能合约到实战开发

『区块链智能合约』从零构建Ethereum智能合约到实战开发 为什么说现在学习区块链才是最好的时机? 区块链技术不只是能开发数字货币,不只是能进行ICO.当我分享一些区块链文章的时候,偶尔总会有人艾特我说,春哥,现在国家都不让炒币了,还弄个毛的区块链啊.我一般会很平静的告诉他,数字货币只是区块链落地产品类型之一,严格来讲,交易所关闭,国家不让ICO是好事,大家会发现,现在国家禁止ICO后,币圈瞬间清净多了,我觉得是好事,因为现在暴露了很多打着ICO牌子裸泳的人,只有揭开皇帝的新装,区块链技术才能

C#进行Visio二次开发之Web端启动绘图客户端并登录

有这样的需求,一个系统,包含Web端的后台和Winform的绘图客户端程序,用户需要在Web端能够启动绘图客户端,并且不需要重新登录(因为已经登录了Web端了). 那么在IE的Web端,如何启动Winform做的绘图客户端程序呢?当然对于其他桌面应用程序也是一样的. 总体思路是: 1. 在asp.net页面中增加一个按钮或者菜单,连接是调用一个JavaScript函数实现启动程序 2. 客户端的用户的环境变量有该应用程序的目录路径信息 3. Winform的绘图客户端程序能够处理传递过来的命令行

请问如何使用JSON将web端访问的Mysql数据返回给android客户端

问题描述 请各位大神稍微讲解下方法,最好有点代码参考下哈 解决方案 你需要搜一下Gson,和apache httpclient下载导入对应的jar包web端: 首先,想办法把mysql取出的数据放到一个list中: 然后,参考这个帖子http://huyizizhen.iteye.com/blog/1453621 将list转成json 最后,返回给客户端out.println(json.toString());客户端: 需要一个httpclient String jsonstr = httpc

猿题库正式推出Web端和手机客户端的司法考试题库

摘要: 在线教育机构猿题库于昨日正式推出了Web端和手机客户端的司法考试题库,其题库涵盖了2002年至2012年的全部司考真题.如果法条法规出现变化,猿题库将在24小时内完成题库内所有关联 在线教育机构猿题库于昨日正式推出了Web端和手机客户端的司法考试题库,其题库涵盖了2002年至2012年的全部司考真题.如果法条法规出现变化,猿题库将在24小时内完成题库内所有关联题目的解析修正. 猿题库是在线教学社区粉笔网团队的另一款作品.粉笔网创始人.CEO李勇表示,在做粉笔网的过程中他们发现,在老师提供

智能家居缺乏技术 高端定位就是一块遮羞布

有研究机构把2012年及以后划分为物联网时代,受产业环境.价格.消费观念等因素的影响,中国的物联网智能家居经历了漫长的发展阶段.据研究机构预测,2018年中国的智能家居市场规模将达到1800亿元.至2020年,智能家居将进入高速发展时代和市场成熟期. 目前,智能家居行业已经在经历种种变革和行业演变.随着万物互联时代的来临,智能家居已经不再是高大上的东西和"有钱人"的专属,智能家居开始走进寻常百姓家,成为人人都能消费的产品.不过,由于目前智能家居市场还处于行业探索和启动时期,大量的资本和

客户端获取服务端纯数据,我所知的有2种方案,1是javascript读取web service,2是专门用一个iframe来请求服务端页面从而获取数据 。请大家说下哪种速度最快,或者有没有更好的方案

问题描述 客户端获取服务端纯数据,我所知的有2种方案,1是javascript读取webservice,2是专门用一个iframe来请求服务端页面从而获取数据.请大家说下哪种速度最快,或者有没有更好的方案 解决方案 解决方案二:up解决方案三:客户端获取服务端纯数据ajax请求页面返回json格式也算纯数据的解决方案四:httprequest

Sway:一个Web端内容整理和演示工具

摘要: 微软Office家庭新增一员Sway,新的内容整理和演示工具 Sway是一个Web端内容整理和演示工具,代号Remix,支持Internet Explorer.Chrome.Firefox和Safari浏览器,iOS版不久将推出:Android.Windows P 微软Office家庭新增一员-Sway,新的内容整理和演示工具 Sway是一个Web端内容整理和演示工具,代号"Remix",支持Internet Explorer.Chrome.Firefox和Safari浏览器,

接口-java web端实现TCP服务器端开发

问题描述 java web端实现TCP服务器端开发 需求是这样的:有一个通讯模块是采用的TCP/UDP通讯协议,现在公司要求做一个接口,来实现基于TCP协议的服务器端开发,要求接口部署到WEB应用服务器WebLogic中之后就开始对本地某个端口进行监听,获取客户端的请求 解决方案 web可以直接用http协议(其实还是基于tcp),不需要用tcp了. 如果小喵的回答帮助了您,或者您希望得到小喵进一步的回答,请先采纳这个回答.问题太多,小喵愿意为采纳我的问题的哥哥们奉献更多时间.方法是光标移动到右

web前端-如何在服务器与web端传递消息?

问题描述 如何在服务器与web端传递消息? 各路大神,你们好.我用java socket写了一个监听端口,接收到数据就会返回一个字符串.我现在想在web网页端做一个按钮,一按就向服务端请求并将返回字符串打印在屏幕上,这个应该如何实现?我试过用javascript的websocket,可是行不通.请问大家该怎么办? 请问有没有web端可以直接接收到字符串打印在网页的某个文本框里? 用现有的程序可以吗?我也可提供我的后端源码. 这是服务器端接收来自web端并返回web端的方法: static voi