摘要:
插件功能:
1.获得action,获得传输块,获得账号的key;
2.过滤/添加/记录/响应/追踪/应用 action;
详情:
account_control_history_object.hpp
历史插件:
定义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)