使用麦子钱包浏览器插件配置测试网环境

之前写过一篇使用Scatter配置EOS测试网络的文章,总体感觉Scatter的配置还是比较繁琐的。

最近麦子钱包发布了浏览器插件版本,测试了一下觉得很有必要推荐给大家,尤其是DApp开发者和硬核DApp玩家使用。

目测有几大好处:

1 支持三大公链 EOS ETH 和 TRON,以及各种EOS姐妹链(BOS EOSForce Telos Worbli ENU MeetOne等)
2 支持多钱包,可以配置多个测试钱包
3 不同网络单独账户系统,不会互相干扰
4 设置简单

首先可以去麦子钱包官网安装浏览器插件:
http://maiziqianbao.net

装好并完成密码设定后进入【设置】-【网络】,打开 Kylin
Screen Shot 2019-04-09 at 18.34.26

回到首页,进入 Kylin 后即可导入测试网钱包了
Screen Shot 2019-04-09 at 18.34.40

使用之前提到过的工具 https://dev4eos.com/ 可以方便的进行测试网账户的创建

科普:4 种非原生 EOS history 数据查询方案

转发自慢雾的Keywolf的币乎文章:https://m.bihu.com/article/1393638973?i=YaZ&c=1&s=1wjz9X

1、Dfuse (EOS Canada)

支持跨域:是
功能特色:
这是我用过的最早的非原生 history API,查询灵活度很高,响应速度快
搭配 EOS Canada 自家的浏览器 eosq.app 可以很方便的查看每笔交易里 inline action、deferred tx 的上下文
可以查看 tx 里 RAM 的变化、合约 table 里数据的变化

2、Hyperion (EOS Rio)

支持跨域:是
功能特色:
筛选字段丰富,查询自由度较高

3、ElasticSearch (EOS Tribe)

支持跨域:未知
功能特色:
We are pleased to announce that we have built, tested and deployed a new History endpoint which allows user to search for actions in EOS Blockchain by date range and free text term.
官方文档里的示例不能用,接口报 403,Bloks 里也没找到有使用

4、Mongo (Cryptolions)

支持跨域:是
功能特色:
和原生 history API 差别不太大,接口响应速度比较一般
当然除了 Bloks 使用到的这 4 种,还有很多优秀的 API 服务,例如 EOSPark APIEOS InfraBLOCKDOG API 等,后续再发文分享。
By Keywolf@SlowMist
SlowMist Company(slowmist.com)
SlowMist Zone(slowmist.io)

dfuse 上手指南

背景介绍

EOS 因为 TPS 高,对交易数据的存储和查询反而成为一个让人头疼的事情,成本问题 EOS 自带的 history 插件也很少有节点会开放。一般解决方案有两种:自己搭建大数据库导入链上交易数据,使用第三方的 API 进行查询。

dfuse 能看得出是 EOS Canada 团队开发 eosq 区块浏览器时的 side project。试用了一下,比较让我惊讶的是其查询的自由度非常高,比如可以查询某个账户在过去某个区块高度的余额。

使用步骤

申请 API Key

https://www.dfuse.io/zh/

点击右上角【获得免费API密钥】

注册完成后你会收到类似下面这样的key:
eyJhbGciOiJLTVNFUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NTQ5NjcxNDksImp0aSI6Ijc5YmE0ZjdkLTU5NTMtNDA4NC1iNDQwLTFlMWE5MGVmMmRjMyIsImlhdCI6MTU1MjM3NTE0OSwiaXNzIjoiZGZ1c2UuaW8iLCJzdWIiOiJDaVFBNmNieWUrc2o3SFVyTXZ4eW1…

根据文档进行测试

本文主要介绍 REST API 的使用方法,WebSocket的接口大家自行测试

打开 https://docs.dfuse.io 可以查看到接口的文档

我们来测试一下 【REST API】-【GET /v0/state/tables/accounts】这个接口

把下面这些参数填到 POSTMAN 工具中,URL那边如下填写

https://mainnet.eos.dfuse.io/v0/state/tables/accounts?accounts=eosio.token|eosadddddddd&scope=eosadddddddd&table=accounts&block_num=19000000&json=true

Headers – Authorization 的值是 【Bearer 之前收到的KEY】

account

这个查询的意思是返回:eosadddddddd这个账号在区块高度 19000000 时,EOS 和 ADD token的余额。
accounts 的值是 EOS 和 ADD token 的合约地址。

如何学习交易记录查询参数怎么写

交易记录的查询是一个更加常用的查询,我们可以通过 eosq 这个浏览器来学习其写法,熟练掌握基础写法后就可以进行更多高级查询了,如果有不支持的语法,你也可以加 dfuse 的 telegram 进行反馈。

介绍下通过 eosq 学习查询的步骤

打开:
https://eosq.app/account/eoscanadacom

鼠标移动,可以在界面上找到如下图中的 搜索 小图标
search

点击后在搜索框就是当前的查询语句
questy

复制查询语句到 dfuse transactions API 即可直接使用
(action:delegatebw OR action:undelegatebw) receiver:eosio data.receiver:eoscanadacom

下面的查询做的是:eoscanadacom 这个账号从 19000000 开始往后 19038649 个块里面倒序前10条 抵押和赎回 的交易记录

https://mainnet.eos.dfuse.io/v0/search/transactions?start_block=19000000&block_count=19038649&limit=10&sort=desc&q=(action:delegatebw OR action:undelegatebw) receiver:eosio data.receiver:eoscanadacom

transaction

更多资料

https://www.dfuse.io/zh/blog

有一个用 dfuse 开发的很有意思的项目:
https://eosinbox.io

介绍两个有用的安全合约 FireWall.X 和 ProPatingEOS

FireWall.X

https://github.com/firewall-x/contract

Firewall.x 主要有慢雾安全团队开发,通过这个工具可以对合约的调用地址进行黑白名单控制。信息不对称其实是很大的安全风险,一个安全漏洞传到开发者这里可能已经过了很久,而通过启用慢雾的恶意地址库,能够第一时间挡掉可能的攻击者账号,从而尽可能的提高安全性。

配合 Firewall.x 控制台 开发者可以自由控制 DApp 的用户黑白名单,禁止恶意用户访问,限制合约账号使用 DApp,查看调用频率以及查看异常调用日志,同时在 sdk 内为开发者提供了常用的账号检测接口,开发者也可根据需要调用。

ProPatingEOS

https://github.com/ProChain/ProRatingEOS/blob/master/README.md

ProRating是ProChain(般若)开源的链上账号评级合约,在链上存储全网账号属性,能够标注出合约账号、羊毛党黑名单、PRA KYC人脸比对结果、PRA CandyBox人机滑块验证结果,并具备数据实时更新特性。

DAPP开发者只需包含该头文件,即可在合约内部通过代码查询数据,适用于DAPP开发者防范合约攻击、防范羊毛党攻击、免人机滑块验证等应用场景。

这个合约主要对羊毛党的 EOS 账号实现有效打击,而 PRA 作为 EOS 生态最大的糖果盒,将自己在这一块的数据积累共享给社区非常值得点赞。

EOS Studio 介绍

EOS Studio 是由黑曜石实验室(Obsidian Labs)开发,他们是来自美国硅谷的技术团队,2018年初成立后在YCombinator孵化,目前专注于去中心化应用(DApps)生态的工具开发。团队曾获得2018年EOS黑客马拉松旧金山站第三,并获全球总决赛前三。

EOS Studio 的产品思路与之前介绍过的 Beosin EOS IDE 不同,它以客户端为主,能够帮助大家快速进行 Docker 版本的 EOS 以及相关工具的安装,通过本地的测试节点进行编译。
同时包括C++代码编辑器,EOS合约开发工具包(EOSIO.CDT),智能合约部署和调试工具,EOS帐户查看器,EOSIO版本管理器等。
也可以随时在本地网络、测试网和EOSIO主网环境之间切换。
比较适合想要一站式完整安装EOS到本地并进行合约开发的开发者,如果想要快速方便的话,则可以选择之前说到的Web IDE。

通过EOS Studio可以方便的安装并管理EOS开发所需的相关工具,包括本地EOS主程序,合约开发工具包(EOSIO.CDT),及系统合约源代码。EOS Studio还提供了针对EOS语法定制化的C++编辑器,编译部署工具,合约调试工具,并可以在本地节点,Kylin和Jungle测试网,及EOS主网之间随时切换,满足了开发者在EOS开发中的各种需求。

目前支持 Mac、Windows 和 Linux 版本:
https://www.eosstudio.io/

Beosin EOS-IDE

之前一直用 EOSMedi 开发的 https://dev4eos.com IDE工具做合约的编译和部署,不过最近无法使用了,好在成都链安做了一个更强大的:

https://beosin.com/EOS-IDE/index.html#/

支持EOS智能合约在线编辑、编译、一键部署和调试等多种功能,供所有开发者免费使用:

1、首款具备在线编辑、编译、运行调试、部署于一体的EOS开发工具

2、无需搭建开发环境,无需安装,在线操作

3、一切交互均以图形化方式

4、支持多个编译器版本

5、支持多种EOS节点部署运行

6、运行速度快、提示信息明确,极大提升了用户体验

7、开发人员可以高效完成EOS智能合约开发等工作

8、协助开发者在开发过程中提高漏洞风险意识,避免安全隐患

操作步骤:

1.1 加载本地磁盘文件及新增文件
在文件浏览区域上有如图1-2红框处两个图标,点击左侧图标创建新增文件名称,点击右侧图标选择打开本地文件。


如图 1-2 Beosin EOS-IDE文件浏览区

选择文件后可以右击对文件进行重命名或者删除操作。

1.2 编辑

IDE中上方是EOS智能合约编辑器区域。支持代码展开及合并,支持代码联想功能。

1.3 编译

在右边的功能区域选择Compile页签,会动态的显示当前编辑区域合约的编译信息,如显示错误和警告。编译成功后可点击Details查看ABI接口返回的详细信息。

编译器版本分为1.2.x、1.3.x、1.4.x、1.5.x四个版本。

注:若主合约与文件名不相同,请填写正确的合约名称。

1.4 部署

编译成功后进入run页签,选择账户及要部署的网络点击Deploy进行部署,网络包含:Local network、Test network、Main network,部署在测试网或主网时,浏览器需要安装钱包插件。部署结果将在中部下方Run log list中展示。

可以根据不同账户部署不同合约,无需二次部署即可直接运行。

1.5 运行

部署合约成功后,页面返回函数信息及设置账户权限、Tables查询功能,录入函数参数信息即可运行该函数。运行结果将在Run log list中展示。每运行一次都会在Run log list生成一条记录。点击“Inquire”按钮可以查询后台Tables数据信息。

参数录入规则:

1、多个参数以“,”分割。

2、asset类型参数录入int64_t和symbol_type以空格分开

3、数组参数录入见下图:

EOS 姐妹链的简介

准确来说 EOS 侧链目前还未出现,目前的侧链更多是基于 eosio 代码的姐妹链/分叉链,本文主要介绍下他们各自的特点:

EOS原力
https://www.eosforce.io/
初始分配:按 EOS 主网启动时映射 1:1 分配
原力特点是他把EOS资源模型改成了与ETH类似的GAS模型,另外一个特点是一票一投和投票分红。

ENU 牛油果
https://enumivo.org/
初始分配:80%在以太坊上空投,后映射到ENU主网
ENU的特点是其主打 UBI(普遍基本收入),尝试在链上做财富平均分配。

Telos
https://telosfoundation.io/
初始分配:按 EOS 主网启动时映射 1:1 分配,但每个地址最多被分配4万TLOS代币
目标是降低开发人员开发EOSIO DApp的成本,包括:缓速RAM扩容,稳定RAM价格,逆向加权投票,提高生产节点可靠性的恒定奖励等。

Worbli
https://worbli.io/
初始分配:40%即10亿代币,用于对EOS持有人进行空投,即按照2018年9月EOS主网快照 1:1 空投。
Worbli的目标是在合规的监管下构建金融服务类的dApp,提供合规的KYC和AML的环境。

BOS
https://boscore.io/
初始分配:10%空投(5千万按2019年1月EOS主网账户快照空投,5千万根据DApp和节点在链上的交易情况进行空投)
BOS的账户采取了低保模式,确保每个账号最低限度的使用,后续将落地资产跨链,以及提供对开发者激励的DAPP开发基金。

关于 RPC 节点的选择

什么是 RPC 节点

RPC 就是上图中 EOSIO Access Network 这一层,提供普通用户、DAPP对EOS上数据和合约进行访问的 JSON-RPC 接口。

DAPP 中如何设置 RPC 节点

一般 dapp 使用 eosjs 初始化 eos 的 network 对象时,对 RPC 节点进行指定:

      var endpoint = 'https://mainnet.eoscannon.io';
      var eos = Eos({
          keyProvider: '',
          httpEndpoint: endpoint,
          chainId: chainId,
        });

dapp 也可以加一个功能,允许用户选择速度最快的 RPC 节点

选择哪个 RPC 节点

EOS 生态的超级节点、钱包和DAPP项目方都会搭建一些可访问的 RPC 节点入口,在下面的地址中可以查到

https://validate.eosnation.io/mainnet/reports/endpoints.html

如果对RPC节点的稳定性要求特别高,也可以找专业的服务提供方,比如 EOSInfra

LiquidEOS 提出的 vRAM 方案

最近准备上线的 LiquidEOS 是个挺有意思的项目,本文简单介绍下: https://liquideos.com/

EOS有内存的概念,类比传统电脑的内存,那么LiquidEOS就有点类比传统的电脑的虚拟内存的意思。

在实现上LiquidEOS有点类似网络分层的概念,其优势是降低了EOS内存使用的成本。
当然这个网络的难度是如何与目前的 EOS 系统和生态比较好的整合。

以下引用荆凯大神文章中关于 vRAM 实现方法的介绍(原文: https://bihu.com/article/1256105661/page/2

vRAM是什么?

vRAM,按照设计者的描述,是致力于提供一种解决方案,可以兼容RAM,用去中心化的方式,实现数据的经济高效的存储和检索,而且可以承载起无限数量的数据。

实际上,可以将vRAM结合之前blockone所发布的EOS Storage白皮书中的设想来看,可以看到许多的相似之处。

通过引入了代币(DAPP token), 对于项目团队,使用vRAM的服务来存储数据,需要用到代币,根据存储量多少,而需要抵押对应数量的代币;而提供vRAM的服务商(DSP), 则从代币的通胀之中获得收益。

那么,vRAM系统是怎么做到的?

简单粗暴的概括:

dapp将数据存储在IPFS文件服务中,而不是存储在RAM上,需要时候从vRAM系统中将数据读取回到RAM上。

在vRAM设计之中,有涉及到代币的角色存在,下文会简单提到。

其中有几个角色:

  1. DSP提供者
    DAPP Service Provider, 简称为DSP,存储数据所用到的服务,就是DSP来提供的。他们的报酬来自于代币的增发奖励。任何人都可以成为DSP,只需要构建起DSP 节点提供服务即可。

  2. DAPP合约开发者
    合约开发者需要在合约中引入vRAM的库,以进行vRAM的访问数据读取,抵押代币,选择DSP等操作。使用了vRAM模块的合约,将不需要依赖于RAM,而是可以将大量的数据存在vRAM的系统中,在有需要的时候才从vRAM读取回到RAM中,这一些操作,都是通过vRAM的库来实现的。开发者的使用难度不算大,直接引入库文件即可。

注意,RAM始终都还是需要的,只是将大量的数据存储迁移到vRAM系统之中去管理而已,RAM则起到了数据缓存的作用,对RAM的依赖减少,尤其对一些重型的应用而言,可能会是一个不错的备选方案。

  1. 用户
    对于普通用户而言,完全不需要去管一个合约使用的是vRAM还是RAM的方式。

目前LiquidEOS正在准备上线,等上线后可以试下具体的使用方法。

dGoods 社区讨论版本发布

dGoods 是由 MythicalGame 发起,并得到不少社区产品支持(包括Scatter、麦子、TP等)的 EOS 上的游戏道具标准。

最近 dGoods 发布了社区讨论版本
https://github.com/MythicalGames/dGoods

简单看完协议总结几个特点:

1 对 eosio.token 兼容,在方法上做了拓展

2 定义了 符号:类别:名字 系统,并集中保存在链上数据库表中,检索很方便

3 定义了 3D资产、2D资产、门票等游戏中常用的元数据模板

4 同时支持 同质化资产(一般用于药水瓶、普通宝石这类)以及 非同质化资产(具有唯一性的道具)

从需求上看 EOS 生态也的确需要一套类似 ERC-721 的标准,并能够针对 721 的一些问题在设计理念上做得更好,dGoods 就是一个这样的尝试。
一旦这套标准被社区使用,钱包就能够针对该标准统一出一套游戏资产界面,随后去中心的游戏资产交易所也必然诞生。

游戏的开发者可以了解一下这套标准,目前该标准正在社区讨论阶段,EOS 社区用户都可以提交反馈。