Table of Contents:

json接口

rpcapi.h
    定义了所有的json api接口
    wasm_gettable 获取合约的存储数据的接口
    
    
rpcapiconf.h
    所有rpcapi定义的地方    
    




test_abi.cpp
    测试abi功能




rpcsubmittx.cpp
    submitsetcodetx()  部署合约
        读取wasm, validate()验证wasm,  二进制的格式
        读取abi的json文件--> 生成json对象-->转化为abi_def对象,-->并用wasm::pack<wasm::abi_def>进行序列化 
        
        生成CUniversalTx,并提交交易
            其中的 action_data = wasm::pack(std::make_tuple(contract, payer, (uint8_t)vm, code, abi, memo));
        
    建块的时候合约和abi是如何存储的    
        
        
    submittx()  执行合约
        得到合约的abi, 部署合约时序列化后的abi
        根据abi 将action data序列化:

Multi-Index API

1、Multi-Index API 是EOS提供的访问数据库的C++接口,使智能合约能够读取和修改EOS数据库中的数据;

2、Multi-Index源文件位置在:eos/contracts/eosiolib/multi_index.hpp;

3、Multi-Index来源于boost库的boost::multi_index,但又有一些重要不同,eos中使用eosio::multi_index;

4、eosio::multi_index在概念上和传统数据库的“表(table)”类似,数据“行(rows)”是独立的对象,数据“列(columns)”是对象的成员属性;

5、eosio::multi_index提供和传统数据库的“键(key)”类似的成员属性,用于快速查找对象;

6、eosio::multi_index允许使用自定义函数作为索引,但它的返回值是受限制的,只能是支持的键类型;

7、eosio::multi_index支持主键(primary key),但必须是唯一的无符号64位整型(uint64_t);

8、eosio::multi_index按主键排序时,使用升序;

9、Multi-Index表允许多索引排序,最多可以使用16个二级索引;

10、Multi-Index迭代器可以双向迭代,即const_iterator或const_reverse_iterator;

11、二级索引作为Multi-Index表构造函数的一部分创建,不支持直接构建。