eos 区块链 java 开发_EOS 交易验证的主要思路 - EOS 区块链开发实战

简介:接入EOS支付,发起交易很简单,接收交易也很简单,但交易验证,却是最常被低估以及忽略的部分。记得之前交易所遭到EOS假币攻击吗?就是交易验证的锅。然而就是这样一个和资金安全息息相关的部分,几乎找不到一篇专门讲的文章,遂作此文。

接入EOS支付,发起交易很简单,接收交易也很简单,但交易验证,却是最常被低估以及忽略的部分。记得之前交易所遭到EOS假币攻击吗?就是交易验证的锅。然而就是这样一个和资金安全息息相关的部分,几乎找不到一篇专门讲的文章,官方文档也无处可寻,遂作此文。

EOS交易验证,不是看某一个参数就可以的,需要验证这四个部分:

1.交易excuted;

2.不可逆,即交易所在区块号低于当前最新不可逆块号;

3.合约账户和货币符号,假币攻击就是因为交易所没验证合约账户;

4.From和to,即转入转出的账户需要再次确认。

Transaction同时满足这四个条件,才能判断为交易成功,并执行下一步程序。而且,如果是通过公共API或API服务商提供的数据进行交易验证,需要使用不同服务提供商的API至少进行二次确认,以防止API信息出错导致问题。

验证的技术实现:

1.交易excuted:验证transaction status参数为"executed";

2.不可逆:获得transaction所在区块的区块号以及主网最新不可逆块的区块号(不可逆区块高度),判断block_num

主网最新不可逆块的区块号可以通过RPC get_info等接口获得,也有一些获取transaction信息的接口返回时直接包含不可逆区块高度,比如EOSPark HTTPS API的get_account_related_trx_info.

官方RPC接口 get_info Node.js代码示例:

129d63ea0770?from=groupmessage

EOS RPC 接口获取主网基本信息

返回数据示例:

129d63ea0770?from=groupmessage

EOS RPC 接口获取主网基本信息返回数据示例

EOSPark HTTPS API的get_account_related_trx_info详情可以看之前这篇:https://www.jianshu.com/p/bb7dbe5d20e7

3.合约账户和货币符号:合约账户即action(act)中的account,货币符号可以从quantity中提取,也有些接口直接返回货币符号;

4.From和to:位于action(act)下data下。

Transaction结构示例,可以清楚看到status、block_num、action(act)中的account、action(act)下data下的quantity、from、to的位置:

129d63ea0770?from=groupmessage

EOS transaction结构示例

我们有一个区块链知识星球,做区块链前沿资料的归纳整理以方便大家检索查询使用,也是国内顶尖区块链技术社区,欢迎感兴趣的朋友加入。如果你对上面内容有疑问,也可以加入知识星球提问我:

129d63ea0770?from=groupmessage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值