构建 EOS 区块链浏览器 API

文/温国兵

这是「区块链技术指北」的第 34 篇文章。

0x00 背景


在上一篇 文章 中笔者讲解了如何将 EOS 链上数据实时异构到 MySQL 数据库。数据既然有了,就要有用武之地。传统互联网获取数据的方式,最底层是数据层,然后有各种各种的 API,API 访问数据,再供前端展示。

本文讲解如何使用开源的 EOSTracke-API 构建区块链浏览器 API。

0x01 部署


EOSTracke-API 使用 PHP 编写,为了能让它正确地运行,我们需要安装 PHP 相关依赖,命令如下:

$ apt-get -y install php7.1 php7.1-common $ apt-get -y install php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mysql php7.1-mbstring $ apt-get -y install php7.1-apcu $ apt-get -y install php7.1-intl $ apt-get -y install php7.1-redis

需要注意的是,PHP 需要 7.1 版本,所以按照如上的命令执行即可。

接着安装 PHP composer,命令如下:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" $ php composer-setup.php $ php -r "unlink('composer-setup.php');"

然后安装 EOSTracker-API。

$ git clone https://github.com/EOSEssentials/EOSTracker-API.git $ cd EOSTracker-API $ ./composer.phar install

安装过程中会输入如下的几个参数:

  • secret,建议随机生成
  • env(DB_URL) 输入 'mysql://YOURUSER:YOURPASS@127.0.0.1/YOURDB',其中 YOURUSER 表示连接 EOS 区块链数据库的用户名,YOURPASS 表示连接 EOS 区块链数据库的用户密码,YOURDB 表示 EOS 区块链数据库名字
  • env(REDIS_URL),目前暂未实现,推测作者想解决直接访问 MySQL 速度过慢问题

如果命令行交互输入错误,我们可以编辑 app/config/parameters.yml 文件手动修改。

完成之后,运行如下命令启动 Server:

$ nohup php bin/console server:run 0.0.0.0:8000 > api.log 2>&1 &

0x02 测试


浏览器访问 http://xxx.xxx.xxx.xxx:8000 即可访问 API,在 http://xxx.xxx.xxx.xxx:8000/_profiler/ac3944?panel=router 即可看到所有的 router,读者可以访问如下的连接测试 API 是否能够正常读取 MySQL 数据。

http://xxx.xxx.xxx.xxx:8000/accounts/eosio.token

当然,可以给 API 配置 HTTPS 域名,参考如下的文章:

  • How To Install Nginx on Ubuntu 16.04
  • Configuring a Web Server
  • How To Secure Nginx with Let's Encrypt on Ubuntu 16.04

0x03 小结


目前有较多的区块链浏览器,具体可以访问由 SuperONE 团队整理的 awesome-eos。EOSTracker 是较早开源的区块链浏览器,后端使用 PHP,前端使用 AngularJS,读者感兴趣可以阅读源码。

原文发布于微信公众号 - 区块链技术指北(BlockchainAge)

原文发表时间:2018-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏尚国

如何通过审计安全事件日志检测密码喷洒(Password Spraying)攻击

许多渗透测试人员和攻击者通常都会使用一种被称为“密码喷洒(Password Spraying)”的技术来进行测试和攻击。对密码进行喷洒式的攻击,这个叫法很形象,...

24130
来自专栏FreeBuf

PowerShell-RAT:一款基于Python的后门程序

今天给大家介绍的是一款名叫Powershell-RAT的Python后门,它可以利用Gmail邮件附件来从目标用户的设备中提取数据。这款RAT可以帮助红队测试人...

21350
来自专栏*坤的Blog

linux没有wifi

78760
来自专栏jouypub

使用curl获取站点的各类响应时间

使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间等。

16920
来自专栏网络

强大的开源网络侦查工具:IVRE

IVRE简介 IVRE(又名DRUNK)是一款开源的网络侦查框架工具,IVRE使用Nmap、Zmap进行主动网络探测、使用Bro、P0f等进行网络流量被动分析,...

42570
来自专栏深入浅出区块链技术

Geth 控制台使用及 Web3.js 使用实战

18450
来自专栏BeJavaGod

微信支付(三) - 异步通知并且查询支付结果

要知道,app调用支付后,微信会发送一个异步通知给后台,同时后台需要调用查询微信后台这笔订单的支付结果以及金额,这是一个并行操作,需要注意的是微信后台收到的金额...

40240
来自专栏小特工作室

WinForm中使用DDE技术(含源码)

  提起DDE技术,相信很多人不知道是啥东东,尤其是90后的程序员们。不过,有时候这个东西还是有用处的,用一句话可以总结:实现Winform程序间的通信。比如:...

209100
来自专栏carven

ubuntu下的apache端口反向代理

  在国庆期间,自己这用node.js做了一个即时聊天系统,挂在2000端口上。 可是每次都在网址后面加一个:2000显得有点奇怪,也很麻烦,于是就想到了反向代...

13500
来自专栏java一日一条

数据库的读写分离

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务...

12030

扫码关注云+社区

领取腾讯云代金券