EOS 智能合约平台 cleos system delegatebw 命令详解:CPU/NET 带宽质押(Staking)完整实战指南
区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载导读cleos system delegatebw是 EOS 智能合约平台eo/eos 仓库中通过命令行将代币质押stake为 CPU 带宽与 NET 带宽的核心命令。在 EOSIO 资源模型中账户执行交易需消耗 CPU 与 NET 资源而这两种资源正是通过该命令把代币委托给目标账户获得的。本文以 docs/02_cleos/03_command-reference/system/system-delegatebw.md 为主体骨架结合仓库内 programs/cleos/main.cpp 的 CLI 实现、eosio.system.abi 的智能合约 ABI 定义以及 eosio_system_tester.hpp 的单元测试从位置参数、选项、实战示例到底层 action 构造原理为你提供一份可复制、可运行的完整参考。一、命令概述什么是带宽委托Delegate Bandwidth在 EOSIO 资源模型中账户执行转账、部署合约、投票等链上操作时需要消耗两类带宽资源NET 带宽Network Bandwidth与交易数据大小字节数挂钩的网络吞吐资源用于限制账户在一段时间内可提交的交易数据总量CPU 带宽CPU Bandwidth与交易执行时间毫秒挂钩的计算资源用于限制账户在一段时间内可消耗的 CPU 执行时间。账户可通过cleos system delegatebw将代币质押给某个账户可以是自己也可以是其他账户质押的代币不直接花费而是锁定在系统合约中为receiver账户换取相应的带宽配额。这是 EOSIO 资源模型的基础操作其链上动作action名称为delegatebw由系统合约eosio 账户执行。命令语法如下cleos system delegatebw [OPTIONS] from receiver stake_net_quantity stake_cpu_quantity其中四个位置参数均为必填可选参数通过[OPTIONS]传入。二、位置参数Positional Arguments详解参数类型说明fromTEXT发起带宽委托的账户即质押代币、提供资源的账户receiverTEXT接收带宽的账户获得 CPU/NET 配额的目标账户stake_net_quantityTEXT用于 NET 带宽质押的 EOS 代币数量如1.0000 EOSstake_cpu_quantityTEXT用于 CPU 带宽质押的 EOS 代币数量如1.0000 EOS要点说明四个位置参数在 programs/cleos/main.cpp 中通过 CLI11 均标记为-required()缺一不可from与receiver既可以是不同账户A 为 B 质押也可以是同一账户自己为自己质押详见下文实战示例stake_net_quantity与stake_cpu_quantity为 asset 类型带精度与符号字符串中必须包含代币符号如EOS或SYS且精度须与链上代币一致。例如在单元测试 eosio_system_tester.hpp 中即使用core_from_string(10.0000)形式传入带 4 位小数的资产量。三、选项Options详解3.1 通用交易选项以下选项与 cleos 其他system子命令保持一致由add_standard_transaction_options_plus_signing统一注入见 programs/cleos/main.cpp选项参数类型说明-h, --help-打印帮助信息并退出-x, --expirationTEXT设置交易过期时间秒默认 30 秒-f, --force-unique-强制交易唯一。会额外消耗带宽同时避免因重复提交相同交易带来的保护机制-s, --skip-sign-指定是否使用已解锁钱包中的密钥对交易签名-d, --dont-broadcast-不向网络广播交易仅将交易打印到 stdout常用于离线构造与检查-r, --ref-blockTEXT设置用于 TAPOSTransaction as Proof-of-Stake的参考区块号或区块 ID-p, --permissionTEXT授权使用的账户与权限级别格式为accountpermission默认accountactive--max-cpu-usage-msUINT设置交易执行的 CPU 使用预算上限毫秒默认 0 表示无限制--max-net-usageUINT设置交易网络使用预算上限字节默认 0 表示无限制--delay-secUINT设置延迟交易生效时间秒默认 0 秒-j, --json-以 JSON 格式打印执行结果3.2 委托专属选项--buyram / --buy-ram-bytes / --transfer与大多数cleos system子命令不同delegatebw还额外支持三个专属选项源码见 programs/cleos/main.cpp选项参数类型说明--buyramTEXT同时为receiver购买 RAM 的代币数量--buy-ram-bytesUINT同时为receiver购买指定字节数的 RAM--transfer-将投票权与解质押权一并转移给receivertrue 时质押给接收方的代币不再归from所有from无权将其解绑重要限制源码 programs/cleos/main.cpp 中显式断言--buyram与--buy-ram-bytes不能同时设置ERROR: --buyram and --buy-ram-bytes cannot be set at the same time若设置了--buyramcleos 会在delegatebwaction 之后追加一个buyramaction若设置了--buy-ram-bytes则追加一个buyrambytesaction从而将质押带宽 购买 RAM合并为一条多 action 交易见 programs/cleos/main.cpp。--transfer对应链上 action 结构体中的transfer布尔字段在测试辅助函数stake_with_transfer中被显式置为true见 eosio_system_tester.hpp。四、实战示例如何质押 CPU / NET 带宽以下示例改编自仓库内实战指南 how-to-stake-resource.md代币符号以该指南使用的SYS为例。4.1 仅为接收方质押 NET 带宽由bob账户出资为alice账户质押0.01 SYS的 NET 带宽cleos system delegatebw alice bob 0.01 SYS 0 SYS各参数含义alice 获得 NET 带宽的账户bob 支付0.01 SYS用于质押 NET 带宽的账户0.01 SYS 质押到 NET 带宽的 SYS 数量0 SYS 质押到 CPU 带宽的 SYS 数量此处为 0。执行成功后终端会输出类似如下的执行摘要executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us # eosio eosio::delegatebw {from:bob,receiver:alice,stake_net_quantity:0.01 SYS,stake_cpu_quanti... # eosio.token eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.01 SYS,memo:stake bandwidth} # alice eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.01 SYS,memo:stake bandwidth} # eosio.stake eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.01 SYS,memo:stake bandwidth}从输出可以看到交易内部的真实调用链eosio::delegatebw动作触发后代币从bob转账至中间托管账户eosio.stakememo 为stake bandwidth。4.2 仅为接收方质押 CPU 带宽cleos system delegatebw alice bob 0 SYS 0.01 SYS含义bob为alice质押0.01 SYS到 CPU 带宽NET 质押量为 0。4.3 同时质押 NET 与 CPU 带宽cleos system delegatebw alice bob 0.01 SYS 0.02 SYS含义bob为alice同时质押0.01 SYS到 NET、0.02 SYS到 CPU 带宽。这是最常用的组合式质押方式也是部署合约、参与投票前的标准资源准备步骤。4.4 账户自质押Stake to Self账户可以将带宽质押给自己。将上述示例中的bob全部替换为alice即可前提是alice账户持有足够的 SYS 代币。例如cleos system delegatebw alice alice 0.01 SYS 0.02 SYS即alice为自己质押 NET 与 CPU 带宽。在单元测试中stake(acnt, net, cpu)的默认实现正是调用stake(acnt, acnt, net, cpu)完成自质押见 eosio_system_tester.hpp。4.5 指定权限、延迟与 JSON 输出cleos system delegatebw alice bob 0.01 SYS 0.02 SYS \ -p bobactive \ --delay-sec 60 \ -j-p bobactive显式指定以bobactive权限签名默认即fromactive见 programs/cleos/main.cpp 的默认参数fromactive--delay-sec 60交易延迟 60 秒后生效-j以 JSON 格式输出执行结果便于脚本解析。五、源码级原理从命令到链上 Action5.1 cleos 端的命令解析与 Action 构造cleos system delegatebw的完整实现位于 programs/cleos/main.cpp 的delegate_bandwidth_subcommand结构体通过 CLI11 注册子命令delegatebw描述文案为 Delegate bandwidth并依次注册from、receiver、stake_net_quantity、stake_cpu_quantity四个必填位置参数注册--buyram、--buy-ram-bytes、--transfer专属选项并通过add_standard_transaction_options_plus_signing注入全套标准交易选项与签名密钥选项在回调中构造 action 负载payloadfc::variant act_payload fc::mutable_variant_object() (from, from_str) (receiver, receiver_str) (stake_net_quantity, to_asset(stake_net_amount)) (stake_cpu_quantity, to_asset(stake_cpu_amount)) (transfer, transfer);使用create_action(accountPermissions, config::system_account_name, delegatebw_n, act_payload)将动作发往系统账户eosio若同时指定了--buyram或--buy-ram-bytes则在动作序列末尾追加buyram/buyrambytesaction最后通过send_actions一次性广播。也就是说一次cleos system delegatebw调用最终在链上表现为一个发往eosio系统合约的delegatebw动作 可选的一个buyram/buyrambytes动作。5.2 链上 ABI 定义delegatebw 结构在系统合约 ABI 文件 unittests/contracts/eosio.system/eosio.system.abi 中delegatebw结构体定义如下{ name: delegatebw, base: , fields: [ { name: from, type: name }, { name: receiver, type: name }, { name: stake_net_quantity, type: asset }, { name: stake_cpu_quantity, type: asset }, { name: transfer, type: bool } ] }可见链上delegatebw动作共 5 个字段from、receiver为账户名name两个质押数量为资产assettransfer为布尔值——与 cleos 端构造的 payload 一一对应。该结构体还在 ABI 的actions表中注册见 eosio.system.abi供序列化与反序列化使用。5.3 测试验证stake 与 stake_with_transfer仓库单元测试 eosio_system_tester.hpp 提供了两个直接封装delegatebw的辅助函数可作为理解参数语义的参考action_result stake( const account_name from, const account_name to, const asset net, const asset cpu ) { return push_action( name(from), delegatebw_n, mvo() (from, from) (receiver, to) (stake_net_quantity, net) (stake_cpu_quantity, cpu) (transfer, 0 ) ); } action_result stake_with_transfer( const account_name from, const account_name to, const asset net, const asset cpu ) { return push_action( name(from), delegatebw_n, mvo() (from, from) (receiver, to) (stake_net_quantity, net) (stake_cpu_quantity, cpu) (transfer, true ) ); }其中stake_with_transfer将transfer置为true对应命令行中的--transfer选项质押给接收方的代币连同投票权与解质押权一并转移给接收方。此外测试框架在创建带资源账户create_account_with_resources时也会构造包含buyrambytesdelegatebw的多 action 交易为新建账户预置 NET/CPU 资源见 eosio_system_tester.hpp这正是质押带宽 购买 RAM组合用法的真实落地场景。六、关联操作查询与解绑带宽带宽委托并非单向操作实际使用中常与以下命令配合场景命令参考文档查询账户的带宽委托与质押明细cleos system listbwsystem-listbw.md解除 NET/CPU 带宽质押cleos system undelegatebwsystem-undelegatebw.md为他人解除 NET 带宽质押cleos system undelegatebw from receiver unstake_net_quantity unstake_cpu_quantityhow-to-undelegate-NET.md为自己解除 CPU 带宽质押同上from与receiver相同how-to-unstake-CPU.mdundelegatebw与delegatebw的参数结构对称from、receiver、两个资产数量见 system-undelegatebw.md其 cleos 实现同样位于 programs/cleos/main.cpp构造发往eosio的undelegatebw动作。注意解绑后代币不会立即回到账户余额而是进入系统合约规定的解锁流程若质押时使用了--transfer则只有接收方才有权发起解绑。七、注意事项与最佳实践质押数量必须为正且格式合法stake_net_quantity与stake_cpu_quantity需符合 asset 格式数量 空格 符号如1.0000 EOS且精度与代币精度一致否则 cleos 解析to_asset会报错NET/CPU 可分别质押可将某个方向设为0 EOS实现只质押 CPU 或只质押 NET--transfer需谨慎一旦转移from将失去对质押代币的解绑权与相关投票权--buyram与--buy-ram-bytes互斥二者同时设置会直接报错终止离线检查使用-d不广播先查看构造出的交易内容确认 action 负载无误后再去掉-d正式广播配合-j可获得 JSON 格式结果便于自动化集成权限控制默认以fromactive签名也可通过-p显式指定其他权限级别。八、总结cleos system delegatebw是 EOSIO 资源模型中最核心的 CLI 入口之一。通过本文你可以掌握四个必填位置参数from、receiver、stake_net_quantity、stake_cpu_quantity与全部标准交易选项的准确语义三个专属选项--buyram、--buy-ram-bytes、--transfer的行为差异与互斥约束从命令行到链上eosio::delegatebwaction 的完整调用链programs/cleos/main.cpp以及 ABI 结构eosio.system.abi结合 how-to-stake-resource.md 的完整实战示例与 eosio_system_tester.hpp 的测试封装理解transfer标志及组合购买 RAM 的真实用法。无论是为新账户准备资源、为 DApp 运营调配 CPU/NET 配额还是深度理解 EOSIO 资源质押机制本文给出的命令、参数与源码依据均可直接用于实际开发与排障。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO 资源质押指南使用 cleos system delegatebw 质押 NET 与 CPU 带宽EOSIO 资源质押指南使用 cleos system delegatebw 质押 NET 与 CPU 带宽 本指南以 EOSIO 开源智能合约平台本仓库区块链EOS 网络带宽NET解除质押完全指南cleos system undelegatebw 实战解析EOS 网络带宽NET解除质押完全指南cleos system undelegatebw 实战解析 在 EOS 主网与基于 eosio 的链上账户通过质区块链使用 cleos system delegatebw 为 EOS 账户委托 CPU 带宽资源含源码级解析使用 cleos system delegatebw 为 EOS 账户委托 CPU 带宽资源含源码级解析 本指南以仓库文档 how to delegate区块链上一篇R3nzSkin国服特供版3分钟掌握英雄联盟免费换肤核心技术下一篇如何5分钟搞定Windows和Office永久激活终极免费解决方案指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PiKVM 与 Prometheus 集成:通过 /api/export/prometheus/metrics 监控 ATX、GPIO 与硬件健康状态

PiKVM 与 Prometheus 集成:通过 /api/export/prometheus/metrics 监控 ATX、GPIO 与硬件健康状态

文档教程 【免费下载链接】pikvm Open and inexpensive DIY IP-KVM based on Raspberry Pi 项目地址: https://gitcode.com/gh_mirrors/pi/pikvm 点击查看 免费下载 PiKVM(基于 Raspberry Pi 的开源 DIY IP-KVM)内置了对 Prometheus 监控系统…

2026/9/24 16:47:59 阅读更多 →
Flask 测试开发与单元测试

Flask 测试开发与单元测试

Flask 是一个轻量级 Web 框架,适合快速开发 Web 应用。开发完成后,为了保障应用稳定,测试成为不可或缺的步骤。 本教程聚焦于使用 unittest 与 pytest 两种常用测试框架,讲解如何在 Flask 中实现自动化测试,包括视图函数测试、表单验证测试以及数据库状态的断言。通过 ap…

2026/9/24 16:47:59 阅读更多 →
医疗信息化实践:院后随访模块自研还是复用源码?

医疗信息化实践:院后随访模块自研还是复用源码?

随着智慧医院建设持续推进,院后随访已经成为医院质控管理、患者健康管理中不可缺少的一环。出院康复跟踪、慢病长期管理、术后回访、体检后的健康跟进,都需要一套流程化的随访能力支撑。很多做医疗信息化、系统集成的同行在对接这类需求时,常…

2026/9/24 16:47:59 阅读更多 →

最新新闻

基于 Java Spring Boot 的灾害应急救援平台设计与实现

基于 Java Spring Boot 的灾害应急救援平台设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 引言 随着自然灾害和突发公共事件的频发,传统应急救援模式在信息传递、资源调度和协同指挥等方面暴露出响应慢、信息孤岛、资源调配不透明等问题。本文基…

2026/9/24 17:23:28 阅读更多 →
计算机毕业设计之基于springboot➕vue的旅游信息推荐系统

计算机毕业设计之基于springboot➕vue的旅游信息推荐系统

本系统为用户而设计制作旅游信息推荐系统,旨在实现旅游信息推荐智能化、现代化管理。本旅游信息推荐管理自动化系统的开发和研制的最终目的是将旅游信息推荐的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的便利和条…

2026/9/24 17:23:27 阅读更多 →
权限提升(提权)从入门到精通:为什么“低权限Shell“也能翻盘

权限提升(提权)从入门到精通:为什么“低权限Shell“也能翻盘

黑客打进一台服务器,只拿到普通用户权限——然后呢?游戏才刚刚开始。 提权(Privilege Escalation):从低权限"升"到高权限——普通用户→管理员→系统/域管。 它是渗透测试的"临门一脚"、红队必备、…

2026/9/24 17:23:27 阅读更多 →
Linux运维踩坑实录:压缩文件夹报错“zip error: Nothing to do!”

Linux运维踩坑实录:压缩文件夹报错“zip error: Nothing to do!”

Linux运维踩坑实录:压缩文件夹报错“zip error: Nothing to do!”的深度剖析与最佳实践 引言:文件打包,运维与开发的必经之路 在当今的软件开发和系统运维领域,Linux 操作系统凭借其卓越的稳定性和强大的命令行工具生态&#xff…

2026/9/24 17:23:27 阅读更多 →
攻克 Open Event Theme 9大技术难题:从安装到定制的全方位解决方案

攻克 Open Event Theme 9大技术难题:从安装到定制的全方位解决方案

攻克 Open Event Theme 9大技术难题:从安装到定制的全方位解决方案 【免费下载链接】open-event-theme Open Event Standard Theme http://next.eventyay.com 项目地址: https://gitcode.com/gh_mirrors/op/open-event-theme 你是否在使用 Open Event Theme …

2026/9/24 17:23:27 阅读更多 →
bpftrace 贡献指南:从编写工具、RFC 提案到代码合入的完整实践

bpftrace 贡献指南:从编写工具、RFC 提案到代码合入的完整实践

可观测性性能剖析eBPF 【免费下载链接】bpftrace High-level tracing language for Linux 项目地址: https://gitcode.com/gh_mirrors/bp/bpftrace 点击查看 免费下载 bpftrace 是一个面向 Linux 的高层跟踪语言,致力于让开发者用极简的单行命令快速编写…

2026/9/24 17:22:27 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →