博客
关于我
eosio.token.cpp之减少资产
阅读量:175 次
发布时间:2019-02-28

本文共 733 字,大约阅读时间需要 2 分钟。

智能合约函数 token::subbalance 的实现过程如下:

该函数用于处理资产的减少操作,主要功能是从特定账户中扣减指定数量的代币。以下是函数的核心逻辑:

  • 初始化账户数据

    使用 from_acnts 初始化账户数据。这是一个在程序和数据库之间起桥梁作用的工具,用于操作数据库中的账户信息。

  • 查找账户信息

    from_acnts 中查找对应的账户信息。from 是一个迭代器,用于查找名称与 value.symbol.name() 匹配的账户。如果查找到,将返回该账户的实例。

  • 检查账户余额

    调用 eosio_assert 函数检查账户余额是否足够。若账户余额低于要扣减的代币数量,系统将抛出 "overdrawn balance" 错误。

  • 权限验证

    调用 has_auth(owner) 函数确认账户是否具有操作权限。若无权限,系统将继续检查是否为发行者(issuer)授权操作。

  • 特殊情况处理

    • 如果账户未被冻结且未启用白名单限制(!st.enforce_whitelist),则允许操作。
    • 若发行者授权且系统支持资产回收功能(st.canrecall),则允许发行者回收资产。
  • 权限不足处理

    若上述所有权限检查均不通过,系统将抛出 "insufficient authority" 错误,表示操作权限不足。

  • 执行扣减操作

    调用 from_acnts.modify(from, owner, [&](auto &a){ a.balance.amount -= value.amount; }) 方法执行扣减操作。该方法用于修改账户数据,确保操作后的数据准确反映扣减后的状态。

  • 通过以上步骤,智能合约实现了对账户资产的精确减少操作,确保交易的合法性和可行性。

    转载地址:http://iuwj.baihongyu.com/

    你可能感兴趣的文章
    SQL Server 复制 订阅与发布
    查看>>
    OSPF技术连载20:OSPF 十大LSA类型,太详细了!
    查看>>
    OSPF技术连载21:OSPF虚链路,现代网络逻辑连接的利器!
    查看>>
    OSPF技术连载22:OSPF 路径选择 O > O IA > N1 > E1 > N2 > E2
    查看>>
    OSPF技术连载2:OSPF工作原理、建立邻接关系、路由计算
    查看>>
    OSPF技术连载5:OSPF 基本配置,含思科、华为、Junifer三厂商配置
    查看>>
    OSPF技术连载6:OSPF 多区域,近7000字,非常详细!
    查看>>
    OSPF技术连载7:什么是OSPF带宽?OSPF带宽参考值多少?
    查看>>
    OSPF技术连载8:OSPF认证:明文认证、MD5认证和SHA-HMAC验证
    查看>>
    OSPF故障排除技巧
    查看>>
    spring配置文件中<context:property-placeholder />的使用
    查看>>
    OSPF有哪些优势?解决了RIP的什么问题?
    查看>>
    OSPF的七种类型LSA
    查看>>
    OSPF的安全性考虑:全面解析与最佳实践
    查看>>
    ospf综合实验2 2012/9/8
    查看>>
    OSPRay 开源项目教程
    查看>>
    OSS 访问图片资源报“No ‘Access-Control-Allow-Origin‘”的错误
    查看>>
    oss报UnknownHost,k8s设置hostAliases参数
    查看>>
    OS模块
    查看>>
    OS第2章 —— 进程
    查看>>