上一篇文章介绍了eosio.token合约,这个系统合约有几个比较重要的数据类型,这些类型是定义在eosio.cdt中的。 这里先简单介绍一下name、symbol、asset类型,它们都位于eosio.cdt的eosiolib库下的core分组中。 name.hpp name用来表示EOS智能合约编程中的名称,如EOS的账户名。 name类有一个uint64_t类型的成员:value,它是name的核心 uint64_t value = 0; name的内部逻辑,比如操作符重载也是value进行的; uint64_t是基本类型(unsigned long long),更便于系统处理,且可作为Multi-Index表的主键; 使用string构造name时,传入的字符串,也会通过char_to_value函数转换成value。 name的命名规则 name类的一个构造函数定义了name的命名规则 可以得出如下命名规则 最多13个字符允许的字符有:abcdefghijklmnopqrstuvwxyz.12345第13个字符不能是"j"之后的字符这里是name类型的命名规则,注意和账户名(account_name)的命名规则区分,EOS账户名的命名规则在系统合约eosio.system中确定 最多12个字符允许的字符有:abcdefghijklmnopqrstuvwxyz.12345普通账户名固定为12个字符短账户名可小于12个字符,通过竞拍获得短账户名账户可以创建带有"."符号的账户名,短账户名作为后缀,可以小于12个字符_n操作符 name.hpp还重载了 _n 操作符,可以使用 "myname"_n 这种形式获取name对象, _n 操作符可以使用字符串构造一个name对象。 symbol.hpp symbol的意思是“符号”,常见的数字货币简称如BTC、ETH、EOS等都是“symbol”。 symbol.hpp定义了3个符号相关的类:symbol_code、symbol、extended_symbol。 symbol_code symbol_code类用于定义一个符号,和上面介绍的name类似,symbol_code的核心也是一个uint64_t类型的value成员变量。 可以使用uint64_t类型的value,或一个string构造symbol_code,使用string构造symbol_code时,会进行一些检查 可以得到symbol的命名规则 最多7个字符允许的字符有:ABCDEFGHIJKLMNOPQRSTUVWXYZ可以通过is_valid()函数检查symbol名称是否可用。 symbol symbol类在symbol_code的基础上增加了精度(precision),表示(代币)可以精确到的小数点后的位数。 通常使用一个字符串和一个精度来构造symbol: symbol("EOS", 4); 或使用symbol_code和精度构造symbol: symbol(symbol_code("KEY"), 4); asset.hpp asset的意思是“资产”,EOS转账时转出的就是asset,asset可以理解为一定数量的symbol。 构造asset的方法如下 asset(5000000, symbol("EOS", 4)); 注意,这里的5000000是带上精度的,即这笔asset是500.0000个EOS。 在eosio.token合约源码中有这样的用法 auto to = to_acnts.find( value.symbol.code().raw() ); 这里的value是一个asset类型的对象,asset类型持有两个成员变量 int64_t amount = 0;symbol symbol;这个表达式的每部分的类型如下 表达式类型valueassetvalue.symbolsymbolvalue.symbol.code()symbol_codevalue.symbol.code().raw()uint64_t最终返回的uint64_t的值被用作查询accounts表的主键。 —- 编译者/作者:松果 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
eosio.token合约关键数据类型
2020-06-20 松果 来源:区块链网络
- 上一篇:币锦峰:比特币合约新手投资者需耐心学习 管理情绪
- 下一篇:大饼暴跌不把握了吗?
LOADING...
相关阅读:
- Coinbase在美国推出Cryptocurrency Visa卡2020-10-29
- 成都将打造30个典型区块链应用场景,包括疫苗溯源、数字货币等2020-10-29
- NFT赛道究竟去往何方跟随CHIF财富方向2020-10-29
- 文森话币:全面解读近期比特币为何暴涨暴跌合约操作策略布局2020-10-29
- 趋势解币:10/29比特币反U型反转是否成立打压多头格局?2020-10-29