在EOS合约开发中,难免会遇到需要在合约的action中取获取账户余额的问题。合约中又不可以对外进行请求,那么怎么拿别的合约中的数据呢?

就拿eosio.token合约来讲,你会发现在 eosio.token.hpp 中会预留有一个 inline asset get_balance(account_name owner, symbol_name sym) const 的函数,很明显该函数名就可以看出是用来获取余额的。接下来如何在自己的合约中调用这个函数呢?

首先在你的合约中引入头文件,貌似可以不引入也可以,引入也无大碍呀

#include <eosio.token/eosio.token.hpp>

用法说明:

auto eos_token = eosio::token("合约名");
auto token_balance = eos_token.get_balance("用户名", symbol_type(S("币种精度", "币种名")).name());

我们先演示下获取账户 supertoken11 的EOS余额

在需要获取余额的action加入以下三行代码

auto eos_token = eosio::token(N(eosio.token));
auto token_balance = eos_token.get_balance(N(supertoken11), symbol_type(S(4, EOS)).name());
eosio_assert(false, std::to_string(token_balance.amount).data());

可以看到中断如下,输出的是 supertoken11 的EOS余额 为 2460000 ,说明是有 246个EOS

在区块浏览器上核实,如下

接下来获取 第三方合约的代币余额,这里以 supertoken11 合约中的 TKB 代币为例,加入代码如下:

auto eos_token = eosio::token(N(supertoken11));
auto token_balance = eos_token.get_balance(N(supertoken11), symbol_type(S(4, TKB)).name());
eosio_assert(false, std::to_string(token_balance.amount).data());

得到的中断数据和区块链上查出来的数据,核对一样。

合约中获取代币余额的使用就解释到这里啦,如有不懂可以先去看一遍 eosio.token 的源码哦。

在合约中获取代币余额のEOS智能合约系列相关推荐

  1. 【精解】EOS智能合约演练

    EOS,智能合约,abi,wasm,cleos,eosiocpp,开发调试,钱包,账户,签名权限 热身 本文旨在针对EOS智能合约进行一个完整的实操演练,过程中深入熟悉掌握整个EOS智能合约的流程,过 ...

  2. 固化EOS智能合约,监管升级权限,净化EOS DAPP生态

    最近EOS版的Fomo 3D狼人杀游戏骗局引发了大家对EOS智能合约的安全性的大讨论. 和以太坊智能合约的不可升级不同,EOS智能合约可升级,因而保存在智能合约中的数据称不上去中心化,因为智能合约的管 ...

  3. EOS智能合约案例解析(下)

    这次向大家介绍 eosio.token 智能合约的最后一个文件 -- abi文件.ABI 全称 Application Binary Interface,中文名"应用程序二进制接口" ...

  4. EOS智能合约开发(四)EOS智能合约部署及调试(附编程示例)

    EOS的智能合约里面有一个action(动作)和transaction(交易)的概念. 对于我们开发以太坊开发者来说,基本上只有transaction的概念.如果我只要执行一种操作,而且是只读操作,就 ...

  5. EOS智能合约开发(十一)EOS的RAM市场与Bancor算法

    北京时间 7 月 5 日 0 时,BM 在 Medium 上发表一篇名为<EOSIO RAM Market & Bancor Algorithm>谈论 RAM 市场和 Bancor ...

  6. EOS智能合约:system系统合约源码分析

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. eosio.system 概览 笔者使用的IDE是VScode,首先来看eosio.system的源码结构.如下图所示. ...

  7. 【许晓笛】 EOS智能合约案例解析(1)

    详解 EOS 智能合约的 hpp 文件 为了帮助大家熟悉 EOS 智能合约,EOS 官方提供了一个代币(资产)智能合约 Demo -- eosio.token.eosio.token 智能合约目前还不 ...

  8. 【许晓笛】 EOS 智能合约案例解析(2)

    详解 EOS 智能合约的 cpp 文件 之前的文章介绍了 eosio.token 智能合约的 hpp 文件,这次向大家介绍 eosio.token.cpp 文件,cpp 文件即 C++ 代码文件,智能 ...

  9. 【许晓笛】 EOS智能合约案例解析(1) 1

    详解 EOS 智能合约的 hpp 文件 为了帮助大家熟悉 EOS 智能合约,EOS 官方提供了一个代币(资产)智能合约 Demo -- eosio.token.eosio.token 智能合约目前还不 ...

最新文章

  1. 字符串专题:map POJ 1002
  2. 无法删除文件,文件或目录损坏且无法读取的解决
  3. Class.getResourceAsStream和ClassLoader.getResourceAsStream方法
  4. 洛谷 - P3810 【模板】三维偏序(陌上花开)(CDQ分治套树状数组)
  5. 修改某个appointment已经存在的opportunity relation
  6. 前端学习(2954):vue文件的三大组成部分
  7. VS Code编译C/C++
  8. Servlet文件下载模板
  9. 分层架构、六边形架构、CQRS架构模式解读
  10. “UNIX的名字是我起的”——对话UNIX开发者Brian W. Kernighan
  11. jQuery 事件的命名空间
  12. 软件基本功:重构工作的考虑及执行
  13. 东鹏饮料,有点“上头”
  14. 如何解决“无法连接到文件共享,因为它不安全。 此共享需要旧的 SMB1 协议”问题
  15. SU Podium 渲染插件学用笔记
  16. mysql求中位值函数_SQLServer下取中位数(中位值)的方法
  17. 关于鸿蒙系统传统文化的作文,【热门】传统文化作文汇编6篇
  18. **关于maven的,maven配置后报 java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launche
  19. 传送带效果实现 | Unity
  20. Sharding-JDBC简单使用

热门文章

  1. H264和MPEG4编码哪一种画质更好,文件大小有区别吗?
  2. 笨办法学习python3 ex3
  3. go-filecoin编译安装与命令解释
  4. [思考] 难的问题到底难在哪儿
  5. 阿里云国际站服务器的安全性能如何?
  6. 网络游戏 聊天 下载 视频 股票等端口
  7. Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏
  8. 理解离散傅立叶变换(一)——傅立叶变换的由来
  9. 11月中下旬张家界自由行
  10. 购买水果最便宜的方案算法题-C++实现