源代码解读 [EOS 源码分析] 13 - create_account_subcommand 如何创建 EOS 账户?

Admin · 2019年12月21日 · 24 次阅读
本帖已被设为精华帖!

EOS 源码分析系列文章,由技术作者松果撰写。为帮助更多开发者了解,特获授权转载至此。感谢松果兄支持。

img

接上篇(cleos创建EOS账户的方法和流程),create_account_subcommand构造函数在区分了创建EOS账户时是否初始化资源后,会继续执行以下操作。

add_standard_transaction_options

create_account_subcommand构造函数内部调用了如下代码:

add_standard_transaction_options(createAccount, "[email protected]");

add_standard_transaction_options是一个通用函数,被许多subcommand函数调用,用于添加交易相关的选项,定义如下:

img

add_standard_transaction_options添加了如下交易相关的选项:

  • expiration:过期时间,单位为秒,默认30秒;

  • force-unique:交易为强制唯一的,消耗额外的带宽来防止多次发起相同的交易;

  • skip-sign:交易无需使用私钥签名;

  • json:以JSON格式在终端打印结果;

  • dont-broadcast:不把交易广播到网络,只以stdout形式打印到终端;

  • return-packed:获取打包后的交易数据,和dont-broadcast选项一起使用;

  • ref-block:用于TAPOS(Transaction as Proof-of-Stake)的引用区块号或区块id;

  • permission:用于授权的权限([email protected]);

  • max-cpu-usage-ms:交易使用的CPU资源上限,单位为毫秒,0表示无限制;

  • max-net-usage:交易使用的NET资源上限,单位为字节,0表示无限制;

  • delay-sec:延期执行交易的延期时间,单位为秒,0表示不延期。

set_callback

set_callbackCLI::App的成员函数,用于设置callback_成员变量,callback_是一个回调函数,在终端命令被调用后执行:

img

create_account_subcommand中使用set_callback的代码如下:

img

** **

set_callback内部主要处理了以下业务逻辑:

  • 处理权限相关的逻辑;

  • 调用create_newaccount构造要发送的Action:

auto create = create_newaccount(creator, account_name, owner, active);
  • 调用send_actions发送Action到EOS区块链:
send_actions( { create } );

create_newaccount函数的代码如下,构造了一个action对象:

img

根据创建账户是否是simple模式,以及抵押或购买的资源,send_actions有以下几种调用模式:

//购买了RAM且抵押了CPU或NET
send_actions( { create, buyram, delegate } );
//仅购买了RAM
send_actions( { create, buyram } );
//未初始化资源
send_actions( { create } );

这里有一些资源处理相关的函数,放到下一篇文章中介绍。

更多内容

币圈信息站开发目录

EOS开发系列目录

共收到 0 条回复
Admin 将本帖设为了精华贴 12月21日 16:21
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册