EOS(eos)节点操作指南:使用 cleos system undelegatebw 解除 NET 网络带宽质押(Unstake) 区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载cleos system undelegatebw是 EOSeos区块链中用于解除 NET 与 CPU 带宽质押的核心命令。本篇指南聚焦于如何从自己的账户中解除赎回NET 网络带宽质押完整覆盖命令语法、全部参数与选项、实操步骤与交易输出解读并结合仓库中cleos客户端源码与eosio.system系统合约测试代码从底层调用链说明该命令如何将用户指令转换为链上eosio::undelegatebw动作。读完本文你将能够安全、正确地通过命令行管理自己账户的 NET 带宽资源。背景NET 带宽与质押机制在 EOSeos的链上资源模型中账户使用网络带宽NETnetwork bandwidth需要先质押stake系统通证如 SYS、EOS。质押所得的资源不仅用于支付交易字节占用还决定了账户可发出的交易体量。当业务高峰期过去、或你希望收回质押的通证用于其他用途时就需要解除质押unstake / undelegate。需要特别强调的事实来自 how-to-unstake-NET.md 原文只有最初执行委托delegate的账户才有权解除该笔委托。也就是说如果账户bob把 NET 带宽委托给了alice那么只有bob能够发起undelegatebw收回这部分资源alice无法自行解除bob的委托。这一约束由系统合约的权限校验保证也是理解整个命令语义的关键前提。开始之前前置条件执行解除质押操作前请确认以下三点均已满足对应原文档 Before you begin 部分安装当前受支持的cleos版本cleos是 EOSeos仓库提供的命令行客户端源码位于 programs/cleos构建后即可使用。部署并启用参考系统合约解除质押实际由链上eosio账户执行的undelegatebw动作完成因此必须确保eosio.contracts仓库中的参考系统合约已部署到链上用于管理系统资源。本仓库的单元测试目录中保留了该系统合约的 ABI 产物见 unittests/contracts/eosio.system/eosio.system.abi。理解以下基础概念什么是账户account什么是网络带宽network bandwidth什么是 CPU 带宽CPU bandwidth核心步骤解除 0.01 SYS 的 NET 带宽质押原文档给出的目标场景是从账户alice的质押中解除 0.01 SYS 的网络带宽NETCPU 带宽部分为 0命令如下cleos system undelegatebw alice alice 0 SYS 0.01 SYS命令执行后终端输出与下面类似注意输出中展示了动作名、动作参数摘要以及交易仅在本地执行的警告executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us # eosio eosio::undelegatebw {from:alice,receiver:alice,unstake_net_quantity:0.01 EOS,unstake_cpu_qu... warning: transaction executed locally, but may not be confirmed by the network yet ]对输出逐字段解读executed transaction: txid交易哈希可用于在链上浏览器或cleos get transaction中追踪该笔交易184 bytes 452 us交易原始字节大小与本地执行耗时eosio eosio::undelegatebw {...}该笔交易由eosio系统账户接收左侧为收件方执行了undelegatebw动作右侧 JSON 即动作参数from、receiver、unstake_net_quantity、unstake_cpu_quantitywarning: transaction executed locally, but may not be confirmed by the network yet标准提醒表明交易已广播但还需等待区块生产者打包确认后才最终生效并非错误信息。命令全解参数与选项cleos system undelegatebw的完整定义见命令参考文档 system-undelegatebw.md其源码注册位于 programs/cleos/main.cpp。位置参数全部必填参数类型说明fromTEXT解除带宽的账户发起解除质押的账户必须是原始委托方receiverTEXT被收回带宽的账户当初带宽被委托给的账户unstake_net_quantityTEXT要解除的网络NET带宽通证数量如0.01 SYSunstake_cpu_quantityTEXT要解除的 CPU 带宽通证数量如0 SYS需要注意两个数量参数必须携带符号token symbol并以字符串形式传入cleos内部会通过to_asset()将其解析为资产类型见下文源码剖析。若要只解除 NET 带宽CPU 数量填0 SYS即可反之若要只解除 CPU 带宽可参考 how-to-unstake-CPU.md 中的命令cleos system undelegatebw alice alice 0.01 SYS 0 SYS常用选项选项说明-h, --help打印帮助信息并退出-p, --permission TEXT指定授权账户与权限级别格式accountpermission默认accountactive-x, --expiration TEXT交易过期时间秒默认 30 秒-d, --dont-broadcast不向网络广播交易仅打印到标准输出用于离线预检-s, --skip-sign跳过使用钱包解锁密钥签名配合-d可用于仅构造交易-f, --force-unique强制交易唯一会消耗额外带宽并移除重复交易保护-r, --ref-block TEXT指定 TAPOSTransaction as Proof-of-Stake参考区块号或区块 ID--max-cpu-usage-ms UINT交易执行 CPU 预算上限毫秒默认 0 表示不限制--max-net-usage UINT交易净用量预算上限字节默认 0 表示不限制--delay-sec UINT延迟交易秒数默认 0 秒配合多签场景使用-j, --json以 JSON 格式打印结果与system undelegatebw收回他人委托的区别仓库中另有 how-to-undelegate-NET.md其目标是为账户或应用解除Undelegate资源典型命令为cleos system undelegatebw bob alice 0 SYS 0.01 SYS即frombob原始委托方、receiveralice当初的接收方把bob委托给alice的 NET 带宽收回。两条命令底层动作完全相同都是undelegatebw区别仅在于语义场景本文的 unstake 聚焦于自己账户的资源赎回from与receiver通常相同如alice alice而 undelegate 聚焦于收回委托给他人的资源from与receiver通常不同。源码剖析cleos 如何构造这笔交易从源码结构看cleos system undelegatebw由undelegate_bandwidth_subcommand结构体注册实现programs/cleos/main.cpp其关键流程为注册子命令通过actionRoot-add_subcommand(undelegatebw, localized(Undelegate bandwidth))注册undelegatebw子命令声明四个必填位置参数from、receiver、unstake_net_quantity、unstake_cpu_quantity并分别调用-required()强制必填附加标准交易选项调用add_standard_transaction_options_plus_signing(undelegate_bandwidth, fromactive)默认以fromactive权限签署交易这也是上表中-p/--permission选项默认值的来源构造动作负载在回调函数中构建fc::mutable_variant_object将两个数量参数经to_asset()转换为资产类型后组装为from、receiver、unstake_net_quantity、unstake_cpu_quantity发送动作通过create_action(accountPermissions, config::system_account_name, undelegatebw_n, act_payload)生成动作接收方为系统账户eosio最终由send_actions签名并广播。也就是说一条cleos system undelegatebw命令最终在链上等价于由from账户以fromactive权限向eosio系统合约发送一次undelegatebw动作动作参数与命令的四个位置参数一一对应。系统合约侧与测试验证undelegatebw动作的实际资源回收逻辑由部署在eosio账户的系统合约执行。本仓库虽不包含系统合约的 C 源码但可通过以下证据确认其接口约定系统合约 ABI 中声明了undelegatebw动作见 unittests/contracts/eosio.system/eosio.system.abi单元测试框架 unittests/eosio_system_tester.hpp 提供了对应的unstake测试辅助函数直接以push_action(name(from), undelegatebw_n, ...)构造动作并携带与命令行一致的四个字段from、receiver、unstake_net_quantity、unstake_cpu_quantity这从测试侧印证了动作的数据结构同文件 eosio_system_tester.hpp 中还展示了将delegatebw与undelegatebw组装进同一笔多动作交易的用法先质押再解押的完整闭环。实操注意事项数量精度与符号数量必须使用系统通证符号如SYS、EOS且不能超过账户当前为该receiver质押的对应资源总量否则系统合约将拒绝执行。权限要求交易默认由fromactive授权。若from账户的active权限被多签或自定义权限接管需通过-p显式指定具备授权的权限级别。确认最终生效执行后若输出带warning: ... may not be confirmed可稍后使用cleos get account alice或cleos system listbw alice查询alice的质押余额变化来确认已生效相关命令参考见 system-listbw.md。反向操作如需重新质押 NET 带宽使用 how-to-delegate-NET-resource.md 与cleos system delegatebw参数定义见 system-delegatebw.md。小结解除 NET 带宽质押只需一条命令cleos system undelegatebw from receiver 0 SYS 0.01 SYS。其本质是向eosio系统合约发送undelegatebw动作且仅允许原始委托方执行。通过 programs/cleos/main.cpp 的源码与 unittests/eosio_system_tester.hpp 的测试辅助函数可以清晰还原这条命令从 CLI 参数到链上动作的完整调用链从而在排查资源问题时做到心中有数。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐Wand-EnhancerWeMod 破解工具指南Wand EnhancerWeMod 破解工具指南 Wand Enhancer 是一款开源的 WeMod 破解工具通过在本地改写 WeMod/Wand 客户区块链Loki 仓库中的 S3 Go SDK 变更日志详解从 aws-sdk-go-v2 发布记录到 Loki S3 客户端的源码原理Loki 仓库中的 S3 Go SDK 变更日志详解从 aws sdk go v2 发布记录到 Loki S3 客户端的源码原理 本文以 Loki 仓库 ve区块链文档转 Markdown 工具 markitdown3 步把 PDF、Word 变成干净的 Markdown 笔记文档转 Markdown 工具 markitdown3 步把 PDF、Word 变成干净的 Markdown 笔记 手头一堆 PDF 和 Word复制粘贴进区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考