EOSIO为智能合约实现了许多内置类型(Built-in Types),内置类型无需在ABI的types字段中进行描述,EOSIO的内置类型定义在eos/libraries/chain/abi_serializer.cpp的configure_built_in_types函数中 这些内置数据类型可以分为8大类:整数、浮点数、时间、名称、字符、哈希算法、密钥和签名、资产。 整数 built_in_types.emplace("bool", pack_unpack<uint8_t>()); built_in_types.emplace("int8", pack_unpack<int8_t>()); built_in_types.emplace("uint8", pack_unpack<uint8_t>()); built_in_types.emplace("int16", pack_unpack<int16_t>()); built_in_types.emplace("uint16", pack_unpack<uint16_t>()); built_in_types.emplace("int32", pack_unpack<int32_t>()); built_in_types.emplace("uint32", pack_unpack<uint32_t>()); built_in_types.emplace("int64", pack_unpack<int64_t>()); built_in_types.emplace("uint64", pack_unpack<uint64_t>()); built_in_types.emplace("int128", pack_unpack<int128_t>()); built_in_types.emplace("uint128", pack_unpack<uint128_t>()); built_in_types.emplace("varint32", pack_unpack<fc::signed_int>()); built_in_types.emplace("varuint32", pack_unpack<fc::unsigned_int>()); EOSIO配置了13种整数内置类型,实际是12种(bool和uint8都是uint8_t类型),如下表 内置类型实际类型说明int8_tchar字符型int16_tshort短整型int32_tint整型int64_tlong long长整型int128_t__int128128位整型signed_intstruct可变长度32位整型uint8_tunsigned char无符号字符型uint16_tunsigned short无符号短整型uint32_tunsigned int无符号整型uint64_tunsigned long long无符号长整型uint128_tunsigned __int128128位无符号整型unsigned_intstruct可变长度32位无符号整型signed_int和unsigned_int是可变长度类型(varint | varuint),使用尽可能少的字节序列化32位整型和无符号整型。 浮点数 built_in_types.emplace("float32", pack_unpack<float>()); built_in_types.emplace("float64", pack_unpack<double>()); built_in_types.emplace("float128", pack_unpack<float128_t>()); EOSIO配置了3种浮点数内置类型,如下表 内置类型实际类型说明floatfloat单精度浮点数(32位)doubledouble双精度浮点数(64位)float128_tstruct128位浮点数时间 built_in_types.emplace("time_point", pack_unpack<fc::time_point>()); built_in_types.emplace("time_point_sec", pack_unpack<fc::time_point_sec>()); built_in_types.emplace("block_timestamp_type", pack_unpack<block_timestamp_type>()); EOSIO配置了3种时间内置类型,如下表 内置类型实际类型说明time_pointclass时间点(微秒)time_point_secclass时间点(秒)block_timestamp_typeclass区块时间戳名称 built_in_types.emplace("name", pack_unpack<name>()); EOSIO配置了1种名称内置类型,如下表 内置类型实际类型说明namestruct名称字符 built_in_types.emplace("bytes", pack_unpack<bytes>()); built_in_types.emplace("string", pack_unpack<string>()); EOSIO配置了2种字符内置类型,如下表 内置类型实际类型说明bytesvector字符数组stringstd::string字符串哈希算法 built_in_types.emplace("checksum160", pack_unpack<checksum160_type>()); built_in_types.emplace("checksu**56", pack_unpack<checksu**56_type>()); built_in_types.emplace("checksum512", pack_unpack<checksum512_type>()); EOSIO配置了3种哈希算法内置类型,如下表 内置类型实际类型说明checksum160_typeclass ripemd160RIPEMD160算法checksu**56_typeclass sha256SHA256算法checksum512_typeclass sha512SHA512算法密钥和签名 built_in_types.emplace("public_key", pack_unpack_deadline<public_key_type>()); built_in_types.emplace("signature", pack_unpack_deadline<signature_type>()); EOSIO配置了2种密钥和签名内置类型,如下表 内置类型实际类型说明public_key_typeclass public_key公钥signature_typeclass signature签名资产 built_in_types.emplace("symbol", pack_unpack<symbol>()); built_in_types.emplace("symbol_code", pack_unpack<symbol_code>()); built_in_types.emplace("asset", pack_unpack<asset>()); built_in_types.emplace("extended_asset", pack_unpack<extended_asset>()); EOSIO配置了4种资产内置类型,如下表 内置类型实际类型说明symbolclass代币符号symbol_codestruct代币符号数值assetstruct资产extended_assetstruct带合约名的资产—- 编译者/作者:松果 玩币圈申明:玩币圈作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币圈平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
EOS智能合约内置数据类型
2020-06-30 松果 来源:区块链网络
相关阅读:
- 以太坊智能合约开发工具 Truffle 发布 5.1.37 版本2020-08-02
- 以太坊的价格跃升至400美元,继续创下两年来的新高。2020-08-02
- #快银大奖#赢10000KEY | 总计奖励超15000KEY | CKB吧#迷踪解密#活动第37期2020-08-02
- 比特币强势拉涨迎来新阶段多头趋势仍未完结耐心等待下一波触发信号2020-08-02
- 月白:八月伊始比特币拉升再破年内新高周末震荡蓄力有望二次拉升2020-08-02