LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > EOS智能合约内置数据类型

EOS智能合约内置数据类型

2020-06-30 松果 来源:区块链网络

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带合约名的资产

—-

编译者/作者:松果

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...