eos原始账户创建流程01
2018-06-28 16:34:41 0 举报
eos创建账户流程
作者其他创作
大纲/内容
main.cpp: createAccount-set_callback
app().get_plugin().add_api
启动各种插件:main.cppapp().startup();
action的数据结构{ account_name account; action_name name; vector authorization; bytes data; ...............}
main.cpp:call(push_txn_func
permission.visit(visitor)= authority.threshold
checker.satisfied( std::forward(auth)
HTTP
authorization_manager.cppauthorization_manager::get_required_keys
main.cpp:ensure_keosd_running(&app)
checker.satisfied
main.cpp:call(get_required_keys
handle_http_request
permission_level的结构{ account_name actor; permission_name permission;}
return 一个action:{ account: system_account_name N(eosio) name: N(Newaccount) authorization { actor: N(user) permission: N(active) }}
find
main.cpp:push_actions把action打包进一个transaction
初始化app
nodeos
main.cpp:determine_required_keys
main.cpp:push_transaction
callback
set_http_handler
main.cpp:send_actions
命令:cleos set account permission user active '{\"threshold\
main.cpp:create_newaccount
http_pluginstart_up
经过各种宏,实际上是:visitor(permission中的元素)比如:如果元素是key_weight,则调用:operator()(const key_weight& permission):查找提供的拥有公钥,找到的话,标记usekey。因此,不管最开始的权限如何,都要递归到具体的公钥。
cleos
main.cpp:app.add_subcommand(\"create\" ...
返回一个permission_object{ .......... shared_authority auth; ..........}shared_authority{ shared_vector keys; shared_vector accounts; shared_vector waits;}
main.cpp:sign_transaction
http_plugin::add_handler
main.cpp:create_account_subcommand
create_server_for_endpoint
checker.permission_to_authority( permission.permission )
chain_plugin.cppread_only::get_required_keys
chain_api_pluginstart_up
APP是一个树形数据结构,存放各种子命令对应的app,然后依次查找即可
add_handler(\"v1/chain/get_required_keys\
permission_level_weight的数据结构:{ permission_level weight}比如:user的active权限(permission_level),权重为1(weight)
实际是调用一个回调函数:authorization_manager::get_permission
add_subcommandset_callback
收藏
收藏
0 条评论
下一页