
区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载导读cleos system rex unstaketorex是 eos 生态中用于操作 REXResource Exchange资源交易所的核心命令之一它的作用是把账户中已经抵押stake到 CPU 与 Net 资源的代币直接解押并用于购买 REX 代币从而让闲置的抵押资产在保持资源用途的前提下参与到 REX 的收益分配中。阅读本文后你将掌握该命令的位置参数与全部可选参数的含义、与buyrex/lendrex的差异以及如何结合仓库源码与 ABI 精确构造一条可执行的交易。命令概述在 docs/02_cleos/03_command-reference/system/system-rex.md 中unstaketorex被定义为 Buy REX using staked tokens使用已抵押代币购买 REX与deposit、withdraw、buyrex、lendrex、sellrex、rentcpu等共同构成 REX 相关的完整命令集。它与buyrex的核心区别在于buyrex使用账户REX 基金REX fund中的可用余额购买 REXlendrex将liquid流动代币余额存入 REX 基金并购买 REXunstaketorex将已经抵押到 CPU/Net 的代币解押并直接购买 REX无需先解除抵押、再等待资金回流到流动余额。因此该命令适合希望把已抵押资源代币快速转化为 REX 持仓、参与 REX 市场收益的用户。位置参数Positionalscleos system rex unstaketorex共需要 4 个必填位置参数按顺序依次为参数类型说明from_TEXT_购买 REX 代币的账户Account buying REX tokens必填receiver_TEXT_代币被抵押到的账户Account that tokens have been staked to必填from_cpu_TEXT_从 CPU 资源中解押、用于购买 REX 的数量Amount to be unstaked from CPU resources and used in REX purchase必填from_net_TEXT_从 Net 资源中解押、用于购买 REX 的数量Amount to be unstaked from Net resources and used in REX purchase必填源码中的参数定义在 programs/cleos/main.cpp 中unstaketorex_subcommand结构体通过 CLI11 定义并注册了该子命令struct unstaketorex_subcommand { string owner_str; string receiver_str; string from_net_str; string from_cpu_str; const name act_name{ unstaketorex_n }; unstaketorex_subcommand(CLI::App* actionRoot) { auto unstaketorex actionRoot-add_subcommand(unstaketorex, localized(Buy REX using staked tokens)); unstaketorex-add_option(owner, owner_str, localized(Account buying REX tokens))-required(); unstaketorex-add_option(receiver, receiver_str, localized(Account that tokens have been staked to))-required(); unstaketorex-add_option(from_net, from_net_str, localized(Amount to be unstaked from Net resources and used in REX purchase))-required(); unstaketorex-add_option(from_cpu, from_cpu_str, localized(Amount to be unstaked from CPU resources and used in REX purchase))-required(); add_standard_transaction_options_plus_signing(unstaketorex, owneractive); ... } };从源码可以确认两点关键事实四个位置参数全部为-required()缺一不可否则 cleos 会直接报错并提示用法底层调用的是 eosio.system 合约的unstaketorexactionact_name{ unstaketorex_n }且默认授权为owneractive即默认以“购买账户”的active权限签署交易。合约 ABI 中的 action 结构在 unittests/contracts/eosio.system/eosio.system.abi 中unstaketorexaction 的结构定义如下{ name: unstaketorex, base: , fields: [ { name: owner, type: name }, { name: receiver, type: name }, { name: from_net, type: asset }, { name: from_cpu, type: asset } ] }这说明 cleos 的 4 个位置参数实际会被打包为ownername 类型、receivername 类型、from_netasset 类型、from_cpuasset 类型四个字段提交给链上合约。注意CLI 帮助文本中的第一个参数显示为from但 ABI 中的对应字段名是owner两者指向同一个参数购买 REX 的账户使用时应以命令行位置顺序为准。from_net与from_cpu为asset类型因此传入时必须带精确的精度与符号例如1.0000 EOS否则无法通过资产序列化校验。此外该 ABI 同时确认该 action 已注册在 eosio.system 合约的 actions 表中见 eosio.system.abi并同样出现在 plugins/trace_api_plugin/examples/abis/eosio.abi 的示例 ABI 中表明这是标准链上接口可被 trace API 等工具识别。选项参数Optionscleos system rex unstaketorex支持以下标准交易选项这些选项由add_standard_transaction_options_plus_signing统一注入与cleos system rex下其他子命令一致选项参数类型说明-h, --help-打印帮助信息并退出-x, --expiration_TEXT_设置交易过期时间秒默认为 30 秒-f, --force-unique-强制交易唯一。会消耗额外带宽但可避免意外重复提交同一交易-s, --skip-sign-指定不使用已解锁钱包密钥对交易签名-d, --dont-broadcast-不向网络广播交易仅将结果打印到 stdout-r, --ref-block_TEXT_设置用于 TAPOSTransaction as Proof-of-Stake的参考区块号或区块 ID-p, --permission_TEXT_授权所用的账户与权限级别格式为accountpermission默认accountactive--max-cpu-usage-ms_UINT_设置交易执行消耗 CPU 的毫秒数上限默认 0即不限制--max-net-usage_UINT_设置交易 Net 使用量上限字节默认 0即不限制--delay-sec_UINT_设置delay_sec延迟交易秒数默认 0 秒-j, --json-以 JSON 格式打印结果选项的实战要点-p权限控制源码中默认授权为owneractive若购买账户的实际签名密钥挂在其他权限如accountowner或自定义权限必须显式传入-p accountpermission否则会因授权不足被链上拒绝-x过期时间默认 30 秒网络拥堵或需要手动广播配合-d时可适当调大-d预演交易建议先-d打印待广播的 JSON人工核对owner/receiver/from_net/from_cpu字段后再去掉-d正式提交--delay-sec延迟交易若设置大于 0交易将进入延迟队列到达指定秒数后才被执行。使用示例原文档给出的标准示例为cleos system rex unstaketorex accountname1 accountname2 1 EOS 0该命令的含义是账户accountname1将从抵押给accountname2的 CPU 资源中解押1.0000 EOS用于购买 REX同时从 Net 资源中解押 0即本次只动用 CPU 抵押。对应的底层 action 载荷为{ owner: accountname1, receiver: accountname2, from_net: 0.0000 EOS, from_cpu: 1.0000 EOS }更多可复制的实战组合同时解押 CPU 与 Net 购买 REXcleos system rex unstaketorex accountname1 accountname2 2.5000 EOS 1.5000 EOS预演交易但不广播适合核对载荷与签名结果cleos system rex unstaketorex accountname1 accountname2 1 EOS 0 -d -j使用非默认权限并指定过期时间cleos system rex unstaketorex accountname1 accountname2 1 EOS 0 -p accountname1owner -x 60命令执行流程与注意事项确认抵押存在from_cpu/from_net的数量不应超过receiver账户上实际的 CPU/Net 抵押量否则 eosio.system 合约将拒绝该 action零值处理允许某一项为 0如示例中的0表示该维度不参与解押但两处均为 0 将无实际操作意义通常会被视为无效调用REX 基金接收解押得到的代币将直接进入 REX 市场用于购买 REXREX 持仓记入fromowner账户名下而非receiver收益机制买入的 REX 可参与 REX 市场的租金收入分配后续如需变现可配合sellrex卖出、通过mvfromsavings移出储蓄桶或用closerex清理不再使用的 REX 用户表条目相关子命令清单见 system-rex.md验证结果提交后可配合cleos get table eosio eosio rexfund或 REX 相关表查询确认持仓变化。与其他 REX 命令的对照命令资金来源适用场景deposit流动代币 → REX 基金先充值基金备用buyrexREX 基金余额使用已入账的基金代币购买 REXlendrex流动代币直接购买无抵押、直接投入unstaketorex已抵押的 CPU/Net 代币将闲置抵押转为 REX 持仓小结cleos system rex unstaketorex通过一个 action 同时完成“解押 CPU/Net”与“购买 REX”两步操作是盘活已抵押代币的高效手段。本文结合 programs/cleos/main.cpp 中的 CLI 注册代码与 unittests/contracts/eosio.system/eosio.system.abi 中的 ABI 定义完整还原了该命令的参数体系与底层载荷结构你可以直接参照上文的示例执行命令或结合-d -j先做交易预演确保无误后再正式广播。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO cleos system rex mvtosavings 命令详解将 REX 转入储蓄桶Savings BucketEOSIO cleos system rex mvtosavings 命令详解将 REX 转入储蓄桶Savings Bucket cleos system区块链EOS 智能合约平台 cleos system rex buyrex 命令完全指南使用 REX 基金购买 REX 代币EOS 智能合约平台 cleos system rex buyrex 命令完全指南使用 REX 基金购买 REX 代币 cleos system rex bu区块链EOSIO cleos 命令详解system rex mvfromsavings 将 REX 从储蓄桶移回EOSIO cleos 命令详解 system rex mvfromsavings 将 REX 从储蓄桶移回 cleos system rex mvfroms区块链上一篇andrej-karpathy-skills让代码更简洁的10个技巧下一篇JS Beautifier 安装和配置指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考