一起来读源码22-eos history_plugin

摘要:

插件功能:

1.获得action,获得传输块,获得账号的key;

2.过滤/添加/记录/响应/追踪/应用 action;

 

详情:

account_control_history_object.hpp

history_plugin.hpp

public_key_history_object.hpp

history_plugin.cpp

 

历史插件:

定义4张表:

account_control_history_multi_index:账号历史多索引表;

有序单键索引 分索引1 分索引2 分索引3
id       
正在控制的账号  正在控制的账号 id类型  
账号控制权限 账号控制权限 权限 正在控制的账号

 

public_key_history_multi_index:历史公钥表;

有序单键索引 分索引1 分索引2 分索引3
公钥键索引  公钥 id  
账号权限 name 权限 id

 

action_history_index:action历史表;

有序单键索引 分索引1 分索引2 分索引3
id      
action序列号      
正在传输的块id 传输的块id 块序列号  

 

account_history_index:账号历史表;

有序单键索引 分索引1 分索引2 分索引3
id      
账号action请求 账号名 账号历史  

 

定义了1个静态对象,用作单例:

appbase::abstract_plugin

 

定义类:

read_only:只读类(用来实现一些只读操作)

    //获得actions(只读)

    get_actions_result   get_actions( const read_only::get_actions_params& params ) const

    //获得传输块

    get_transaction_result    get_transaction( get_transaction_param& p ) const

    //获得账号的key

    get_key_accounts_results    get_key_accounts(const get_key_accounts_params& params) const

    //获得已经控制的账号

    get_controlled_accounts_results    get_controlled_accounts(

        const get_controlled_accounts_params& params) const

history_plgin:历史插件类

    //设置程序选项

    void    set_program_options(options_description& cli, options_description& cfg)

    //插件初始化

    plugin_initialize(const variables_map& options)

history_plugin_impl:历史插件实现

    //过滤(分为出口过滤和入口过滤)

    bool    filter(const action_trace& act)

    //添加账号

    set<account_name>    account_set( const action_trace& act )

    //记录账号action

    void    record_account_action( account_name n, const action_trace& act )

    //响应系统action

    void    on_system_action( const action_trace& at )

    //action追踪

    void    on_action_trace( const action_trace& at )

    //应用传输

    on_applied_transaction( const transaction_trace_ptr& trace )


提供了一些全局函数(namespace eosio):

//多索引表删除

remove(chainbase::database& db, const account_name& account_name,

    const permission_name& permission) 

//多索引表添加

add(chainbase::database& db, const vector<key_weight>& keys,const account_name& name,

    const permission_name& permission)

//按权重添加

add(chainbase::database& db, const vector<key_weight>& keys, const account_name& name,

    const permission_name& permisssion)

//按权限等级添加

add(chainbase::database& db, const vector<permission_level_weight>& controlling_accounts,

    const account_name& account_name, const permission_name& permission)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章