用EOSIO开发区块链DApp(三、Webapp)

EOS区块链浏览器:scaneos.io | EOS必备工具 |什么是区块链浏览器 | 怎么使用区块链浏览器 『区块链浏览器』区块链浏览器是普通用户浏览区块链信息的主要窗口。EOS主网已经上线并产生出了区块,我们一财经可以查询地址信息、查看交易详情、查看账户动态等。只是比较麻烦,比如:查询交易历史:查询合约:对于程序员来说看上去比较亲切,但是普通用户会有极大的难度。毕竟需要一定Linux基本操作经验。在比特币、以太坊时代,我们会通过其对应的区块链浏览器来进行查询:比特币BTC区块链浏览器:Bitcoin ... 阅读详情

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。

以下是webapp的快速预览:

源代码说明

首先,请参阅下面的概述图:

前端

前端由HTML,CSS和Javascript组成。我使用Semantic-UI作为CSS框架以获得漂亮的外观。JQuery在Javascript中被大量使用以便于开发。

此webapp只有一个页面(主页HTML)。主页分为四个部分。 以下是部分的屏幕截图:

以下是主页index.html的代码片段:

...
  <body>
    <div class="ui container">
      <div class="ui grid">
    ...
        <div id="hints_portion" class="sixteen wide column">
        ...
        </div>
        <div id="input_portion" class="sixteen wide column">
        ...
        </div>
        <div id="voting_portion" class="sixteen wide column">
        ...
        </div>
        <div id="voted_portion" class="sixteen wide column">
        ...
        </div>
    ...
      </div>
    </div>
...

index.html的完整源代码在这里

app.js涵盖了前端逻辑。以下是亮点:

...
// Main Application Object
function App() {
  ...
}
...
// Ajax calls
App.prototype.getInfo = function() {
  return $.ajax({
    type: 'GET',
    dataType: 'json',
    url: '/api/getinfo'
  });
}
App.prototype.unlockWallet = function() {
  return $.ajax({
    type: 'POST',
    dataType: 'json',
    url: '/api/unlock_wallet'
  });
}
...
// Event handlers
App.prototype.onBtnInputNameClicked = function(evt) {
  ...
}
...
// Program startup
App.prototype.start = function() {
  self.getInfo().then(function() {
    return self.unlockWallet();
  }).done(function() {
    ...
  }
}
...

app.js的完整源代码在这里

如你所见,我使用jQuery ajax()和then()来执行对后端的多次异步调用。以下部分将提到后端代码。

后端

后端用Python和Flask框架编程。Flask不仅使我们能够非常轻松地创建功能强大的Web应用程序,而且可以快速开发RESTful API服务。以下是server.py代码的代码亮点:

import subprocess
from flask import Flask
from flask import render_template
...
def cleos(args):
    if isinstance(args, list):
        command = ['cleos', '--wallet-url=http://localhost:8899']
        command.extend(args)
        command = ' '.join(command)
    else:
        command = 'cleos ' + args

    results = subprocess.run(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True, check=False)
    return results
...
app = Flask(__name__)
...
@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')
...
# RESTful API functions
@app.route('/api/getinfo', methods=['GET'])
def get_info():
    result = cleos(['get', 'info'])
    rstmsg = result.stderr.decode('ascii')
    if not rstmsg.startswith('Fail'):
        return result.stdout
    else:
        return 'nodeos connection failed', 500
...

server.py的完整源代码在这里

如上所述,在cleos()函数内部,它生成新进程以启动cleos命令,就像在命令行中一样。你可能想知道为什么不使用EOSJS。事实上,在EOSJS中创建EOSIO帐户存在问题。实际上,我尝试使用NodeJS代码在EOSJS中创建一个帐户,但都失败了。所以我放弃了并切换到Python Flask。虽然子进程很慢并且具有可扩展性问题。但我认为它适合于演示目的。

这种方法使我可以轻松调用EOSIO智能合约。下面的server.py中的代码片段说明了如何调用智能合约在上一部分最后小结开发的投票操作:

...
@app.route('/api/vote_candidate', methods=['POST'])
def vote_candidate():
    account = request.form.get('account')
    candidate = request.form.get('candidate')
    param = '\'["' + account + '", ' + candidate + ']\''
    # Invoke the Smart Contract "vote" action
    result = cleos(['push', 'action', 'election', 'vote', param, '-p', account])
    print(result.stderr)
    if result.returncode == 0:
        return jsonify({'result': result.stderr.decode('ascii')})
    else:
        return result.stderr, 500
...

因此前端代码app.js调用:

...
App.prototype.voteCandidate = function(account, candidate) {
  return $.ajax({
    type: 'POST',
    data: {
      account: account,
      candidate: candidate
    },
    dataType: 'json',
    url: '/api/vote_candidate'
  });
}
...
  this.voteCandidate(this._account, val).done(function(resp) {
    console.info('Vote AJAX call result');
    console.log(resp);
...

自己动手试试吧

我已经设置了一个演示服务器,让你体验EOSIO区块链。浏览http://demo.simonho.net:5000自己尝试一下。但我无法保证服务器随时可用且持久。它只是我家用电脑的虚拟机。

结论

这就是我的EOSIO区块链实验系列的全部内容。先前部分的超链接:第1部分和第2部分。

希望你喜欢!

项目完整源代码托管在这里github repo

======================================================================

分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:

EOS教程

本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。

汇智网原创翻译,转载请标明出处。这里是原文

以太坊Web3j插件功能探究(一 1.     以太坊概述 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生。以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的 阅读详情

相关推荐

【区块链 | DAPP】Dapp应该怎么开发?分享一篇Dapp开发的逻辑(分享) 更新中~

写在前面 本篇文章将带领你从零学会一个Dapp开发,笔者从最初的不了解区块链概念到如今精通Dapp、智能合约开发,中间踩过无数的坑,经历过无数困难! 一、什么是Dapp? 去中心化应用(decentralized application),或简称DApp,通常与区块链平台例如以太坊相联系,是一个在分布式点对点网络上运行的应用程序,而不是在一台中央计算机上。这样做的主要好处是,网络的用户不依赖于中央计算机来发送和接收信息。 为了充分理解去中心化应用程序与中心化应用程序之间的区别,我们可以看一下中心.

1万+

(一)eos开发实战dapp+游戏--环境搭建

     开言:此教材只是个人学习过程记录自己理解和各种坑如有问题可提出修正,个人注重是开发动手,小白,写也是为了重复加深印象,目标此教学习实现开发一个EOS小游戏,坚持.......     为什么:技术本身就是为产品服务,有需求(游戏)才学习,进步才快,动手打个helloWorkd比你看一百遍强。选择EOS原因就是被坑了(说笑),真是原因,看了EOS的白皮书和我们需求吻合,一个字快!但是总觉E...

u010665359的专栏 3904

EOS09:EOSJS SDK

1.eosjs介绍 eosjs是与EOSIO区块链网络交互的方法库 通过eosjs可以程序化与区块链网络交互,代替cleos命令行交互 2.eosjs基本依赖 eosjs-api nodeos的远程API调用 这个lib库是对区块链网络坐查询,不需要签名认证 eosjs-ecc 私钥、公钥、签名、AES算法、加密解密等的实现 验证公私钥配对、加密解密 eosjs-keyg...

欧阳桫的技术博客 1604

以太坊风波再起,部分Dapp已开始向EOS迁移

本文由微信公众号DappVision原创首发,转载请联系授权ETH? EOS? 你怎么选? 之前我们讨论过,此次以太坊“燃料危机”的成因及其带来的影响,(没看过?送你一道任意门《以太坊空前“Gas危机”大爆发,而真正遭殃的是这些Dapps》),除了再一次爆出以太坊网络本身存在的问题,同时也牵连了一批Dapp及其开发团队:推迟上线,挽回用户,他们甚至已经开始布局,将Dapp向其他公链迁移。 01迁移...

Jack_123654的博客 1341

Dapp浏览器

Dapp浏览器是一款安全、易用、优质的Dapp导航产品,我们为您提供深度优化的Dapp交易和管理体验。目前已经支持优质的Dapps,可以直接在手机端运行,不需要下载或在PC端安装插件。

scannet数据集下载文件

scannet数据集下载文件 由于大家会申请scannet数据集,审批比较慢,我将下载的文件里面的内容贴出来,大家可以复制放进py文件中,运行就可以下载 ps:别再私信要数据集了,这个自己下载,如果光三维数据的话,还是很快的,当然如果路由器翻了墙的话,下载会更快。 #!/usr/bin/env python # Downloads ScanNet public data release # Run with ./download-scannet.py (or python download-scannet.

weixin_40766438的博客 9233

EOS开发新工具Web IDE,一键进入开发调试

Web IDE是什么? 各位小伙伴对IDE肯定不陌生,主要是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。 web IDE则是将IDE里面除用户交互之外的功能全部移到了后台,开发人员在浏览器上可以像在本机一样调试、编译、运行程序,并且不会受系统环境和机器性能的限制。 (图为一款web IDE的系统架构) 目前的web IDE主要有AWS Cloud9、C...

weixin_43458313的博客 1592

T100服务端接口实战:从注册到日志排查的全链路开发指南

本文提供了一份T100服务端接口开发的全链路实战指南。从程序注册与框架签出开始,详细讲解了接口的数据结构设计、核心业务逻辑编写,到最终的部署上线与调用验证。文章重点分享了如何利用日志文件高效定位和排查接口问题,帮助开发者快速掌握T100接口开发的关键步骤与实用技巧。

weixin_28831399的博客 300

在EOSIO平台上开发区块链dapp(三、webapp)

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。 以下是webapp的快速预览: 源代码说明 首先,请参阅下面的概述图: 前端 前端由HTML,CSS和Javascript组成。我使用Semantic-UI作为CSS框架以获得漂亮的外观。JQuery在Javascript中...

weixin_33928137的博客 112

【可穿戴算法开发】-PPG信号检测方法

文章目录一、PPG(光电容积脉搏波法)信号的检测原理二.PPG技术目前存在的问题(挑战)三. **心电信号产生的原理** 随着经济的发展,在人们生活水平提高的同时,高脂肪摄入和低运动量成为了人们普遍的生活模式,近年来高血压、高血脂已经发展为危险性最高的病症。心电、血压、血氧等生理参数是预防和分析心血管疾病的重要生理参数。 常用的心电测量仪器有:多导ECG心电图仪、PPG心率检测器、心率带等; 常...

wxq_1993的博客 2万+

深入解析Simulink中的条件执行子系统:If Action与Switch Case的实战应用

本文深入解析了Simulink中两种核心的条件执行子系统:If Action Subsystem与Switch Case Action Subsystem。通过实战案例详细阐述了其工作原理、正确搭建方法以及与逻辑控制器(If模块/Switch Case模块)的协同机制,帮助工程师实现清晰、可维护的多分支逻辑控制,并规避常见建模错误。

l3m4n的博客 429

eos 区块链 java_eos.io开发区块链dapp(三、webapp)

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。以下是webapp的快速预览: 源代码说明首先,请参阅下面的概述图: 前端前端由HTML,CSS和Javascript组成。我使用Semantic-UI作为CSS框架以获得漂亮的外观。JQuery在Javascript中被大量使用...

weixin_31971181的博客 318

C# 开发实战:深度解析 13.56MHz 射频卡读写应用

本文详细介绍了如何在 C# 环境下开发 13.56MHz 射频卡的读写应用。通过 ACR122U 作为硬件设备,结合 C# 提供的 COM 组件或 SDK,我们能够实现对射频卡的读取与写入功能。在实际开发中,开发者还需要根据具体应用场景选择合适的卡片类型与设备,并注意性能优化和异常处理。随着技术的发展,RFID 技术的应用场景会越来越广泛,开发者可以根据不同需求,灵活扩展读写功能,实现更加智能化和自动化的系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1602

eos.io开发区块链dapp(三、webapp)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34096182的博客 221

项目经理必看:如何建立高效的相关方沟通机制?

你是否遇到过这样的场景?客户突然说“这不是我要的”,开发团队抱怨“需求总变”,高层追问“进度滞后为什么不早说”?这些问题的根源往往是——相关方沟通机制失效。本文聚焦“如何建立高效沟通机制”,覆盖从识别相关方到持续优化的全流程,适用于IT、产品、工程等各类项目。本文将按“理解问题→拆解核心概念→掌握工具方法→实战落地→未来趋势”的逻辑展开,重点讲解“相关方分析矩阵”“沟通计划表”等实用工具,并用“组织生日派对”的案例贯穿全文,让抽象概念变得可感知。相关方识别:用“权力/利益矩阵”找对人(像派对邀请关键客人)

项目管理的博客 1295

AUTOSAR汽车电子嵌入式编程精讲300篇-基于加密算法的车载CAN总线安全通信

随着科学技术的不断更新和社会文明的不断进步,汽车已经走入寻常百姓家, 成为当代社会必不可少的交通工具。伴随着互联网技术的飞速发展,汽车也不再 是一个简单的交通工具,已经逐渐发展成为一个集出行、通信、娱乐等功能于一 身的综合智能体,进而推动了车联网产业的蓬勃发展。车联网是在传统汽车的框架上安装了传感器、执行器、控制器等分布式和集 中式控制器,使汽车具备环境感知、协同控制、优化执行等功能,并通过网络技 术实现与车外环境的信息共享,给驾驶带来方便的同时也终将成为可以替代人操 作的新一代汽车[1-3]。

getusushu的博客 2591

EOS开发区块链dapp(三、WebApp)

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。 以下是webapp的快速预览: 源代码说明 首先,请参阅下面的概述图: 前端 前端由HTML,CSS和Javascript组成。我使用Semantic-UI作为CSS框架以获得漂亮的外观。JQuery在Javascript中...

weixin_33860737的博客 119

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4013

区块链平台EOSIO开发智能合约和dapp(三)

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。 以下是webapp的快速预览: 源代码说明 首先,请参阅下面的概述图: 前端 前端由HTML,CSS和Javascript组成。我使用Semantic-UI作为CS...

weixin_34232363的博客 128

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

用EOS.IO区块链开发之WebApp

这是一步步的用EOSIO开发区块链DApp的第三部分,上一部分中,我为EOSIO平台开发了一个模拟选举的智能合约。这部分我将开发一个webapp,允许访问者投票给候选人。 以下是webapp的快速预览: image 源代码说明 首先,请参阅下面的概述图: image 前端 前端由HTML,CSS和Javascript组成。我使用Se...

rejames的博客 284

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

(十一)eos开发实战dapp+游戏--智能合约之require_auto ,eosio_assert 开发利器

开言:此教材只是个人学习过程记录自己理解和各种坑如有问题可提出修正,个人注重是开发动手,小白,写也是为了重复加深印象,目标此教学习实现开发一个EOS小游戏,坚持.......  环境: Mac+EOS-1.3.0  任务:require_auto   eosio_assert作用  1.require_auto   获取授权,如果没有授权,Action调用会中止,事务会回滚 很明显-p ...

u010665359的专栏 645

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

web3.py简介

与web3.py库交互的共同入口是web3对象。web3对象提供API,用于python开发的应用与以太坊区块链进行交互,通常是通过连接JSON-RPC服务器进行。 Providers提供者 Providers使web3连接到区块链上。Web3.py库带有以下内置的providers,它们能够适用于大多数用例。 web3.HTTPProvider:用于连接基于http和https的JSON-RP...

weixin_33812433的博客 1741

Dapp浏览器 -- 搬砖神器

Dapp浏览器,是猎豹移动旗下的一款安全、易用、优质的Dapp导航产品,志在为用户提供深度优化的Dapp交易和管理体验。目前已经支持云斗龙等优质的Dapp,可以直接在手机端运行,不需要下载或在PC端安装插件。新版本增加交易所搬砖神器,合约安全检测功能 。 https://www.cmcmbc.com/zh-cn/blockchainlab/?from=channel_e 上面贴的是国内的地址 ...

Blockchain666的博客 4064

什么是公链,私链,联盟链?

昨天和大家详细的解说了一下Dapp,对Dapp不太了解的小伙伴可以先去了解一下之前写过的文章:(https://www.dappso.cn/2579.html)然后再来看本章节。本章节主要和大家探讨一下公有链、私有链、联盟链。我发现很多人和我一样都傻傻分不清这三种不同链的关系,看科普呢给出的解释又特别的生硬不是那么容易懂。因此为了让大家可以轻松了解,我专门去恶补了一下有关知识,来用有趣的故事带大家...

weixin_33672109的博客 1025

EOS系列 - 使用eosjs(js)发起裸包交易

Evn nodejs First run npm install manual install npm install eosjs@beta --save npm install node-fetch --save Code vim eos_trx.js const { Api, JsonRpc, RpcError } = require('eosjs'); // const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig');

搬砖魁首的博客 723

ETH&EOS开发资源及工具集合(完整汇总版)

ETH&amp;amp;EOS开发资源及工具集合(完整汇总版) BinSTD 今天 19:30:07 0 0 ETH开发资源篇 一、开发语言 ·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主

wuhuimin521的博客 2万+
上一篇: 用EOSIO开发区块链DApp(二、智能合约)
下一篇: python和web3py与以太坊投资智能合约交互
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值