区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载本指南以仓库文档 how-to-delegate-CPU-resource.md 为核心讲解如何在 EOS本仓库为 EOSIO 开源智能合约平台中通过cleos system delegatebw命令从一个账户向另一个账户委托 CPU 带宽资源。读完本文你将掌握delegatebw命令的完整参数、真实输出解读、委托与撤销委托的实战命令以及该命令在 cleos 客户端与 eosio.system 系统合约中的底层实现链路。1. 为什么需要委托 CPU 带宽在 EOSIO 区块链中账户执行智能合约如转账、投票、调用合约接口需要消耗两类带宽资源CPU 带宽CPU bandwidth合约代码执行所需的计算资源与账户抵押stake的代币数量成正比NET 带宽NET bandwidth交易数据在网络中传输所需的吞吐资源。账户通过抵押staking代币来获得这两类资源的配额。而委托delegate则允许一个账户from把自己的代币抵押给另一个账户receiver使接收方无需自己持有大量代币也能获得可用的带宽配额。这在以下场景非常实用开发者为应用账号如 DApp 合约账号抵押 CPU保证用户操作不因带宽不足而失败新账户在初始阶段没有代币由他人代为抵押获得执行交易的能力。本仓库的相关指南还包含 NET 带宽委托how-to-delegate-net-resource.md、同时抵押 NET 与 CPUhow-to-stake-resource.md以及撤销委托how-to-undelegate-CPU.md、how-to-undelegate-NET.md可互相配合阅读。2. 开始之前Before you begin原文档列出了执行本操作前必须满足的准备工作熟悉命令及其参数阅读cleos system delegatebw命令参考理解每个位置参数与选项的含义安装 cleoscleos随 EOSIO 软件一同分发安装 EOSIO 后即自带cleos可执行文件部署参考系统合约确保用于管理系统资源的参考系统合约eosio.system、eosio.token等源自eosio.contracts仓库已部署到链上。本仓库的单元测试中携带了 eosio.system 合约的 ABI 副本见 unittests/contracts/eosio.system/eosio.system.abi可据此核对delegatebw动作的结构定义理解基础概念账户account及其在链上的作用、CPU 带宽与 NET 带宽在 EOSIO 区块链中的含义。注意delegatebw是cleos system子命令组中的命令实际发送的是对系统账户eosio上delegatebw动作action的调用因此只有在系统合约已部署并生效的环境中才能成功执行。3. 核心命令与参数3.1 命令语法委托 CPU 带宽的核心命令格式如下cleos system delegatebw from receiver stake_net_quantity stake_cpu_quantity各位置参数的含义参数含义from发起委托、从中扣除代币的源账户receiver接收被委托带宽的目标账户stake_net_quantity为 NET 带宽抵押的代币数量TEXT格式为资产字符串stake_cpu_quantity为 CPU 带宽抵押的代币数量TEXT格式为资产字符串其中stake_net_quantity与stake_cpu_quantity可按需传0 SYS表示该项不抵押两者都传 0 则不会产生有效委托。3.2 命令参考中的完整选项来自system-delegatebw.md命令参考-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.3 源码中的实现cleos 侧在 cleos 源码 programs/cleos/main.cpp 中delegate_bandwidth_subcommand结构体完整定义了该子命令的解析逻辑四个位置参数from、receiver、stake_net_quantity、stake_cpu_quantity均被标记为-required()缺一不可额外支持--buyram以代币购买 RAM、--buy-ram-bytes按字节购买 RAM与--transfer把投票权及取回抵押代币的权利一并转移给接收方三个选项其中--buyram与--buy-ram-bytes不能同时使用回调中构造动作负载act_payload含from、receiver、stake_net_quantity、stake_cpu_quantity、transfer五个字段并通过create_action(accountPermissions, config::system_account_name, delegatebw_n, act_payload)向系统账户eosio发起delegatebw动作权限默认使用fromactive代码中add_standard_transaction_options_plus_signing(delegate_bandwidth, fromactive)。对应地eosio.system合约 ABIunittests/contracts/eosio.system/eosio.system.abi中delegatebw结构体的字段为字段ABI 类型说明fromname委托源账户receivername接收账户stake_net_quantityasset用于 NET 带宽的抵押资产stake_cpu_quantityasset用于 CPU 带宽的抵押资产transferbool是否转移投票权与取回权4. 实战从 bob 向 alice 委托 CPU 带宽原文档给出的核心示例是从账户bob向账户alice委托0.01 SYS的 CPU 带宽。cleos system delegatebw bob alice 0 SYS 0.01 SYS字段说明bob委托源账户代币从该账户扣除alice接收被委托 CPU 带宽的账户0 SYSNET 带宽抵押 00.01 SYSCPU 带宽抵押 0.01 个 SYS 代币。成功执行后的典型输出executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us # eosio eosio::delegatebw {from:bob,receiver:alice,stake_net_quantity:0.0000 SYS,stake_cpu_quantity:0.0100 SYS... # eosio.token eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.0010 SYS,memo:stake bandwidth} # bob eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.0010 SYS,memo:stake bandwidth} # eosio.stake eosio.token::transfer {from:bob,to:eosio.stake,quantity:0.0010 SYS,memo:stake bandwidth}逐行解读eosio eosio::delegatebw系统合约记录委托行为负载与 ABI 中delegatebw结构体一一对应from、receiver、stake_net_quantity、stake_cpu_quantity这是整个委托的核心动作eosio.token eosio.token::transfer紧随其后的代币转账动作将抵押代币从bob转入托管账户eosio.stakememo 为stake bandwidth表明这是一笔带宽抵押转账输出同时展示了bob账户余额扣减与该转账在eosio.stake账户入账的完整链路确认代币已被锁入托管账户而非直接转移给alice。由此可以看出委托带宽的实质是抵押转账 系统合约记账两步动作代币进入eosio.stake托管账户而带宽配额通过eosio.system合约记录在receiver名下。5. 委托的组合用法与自委托5.1 只委托 NET / 只委托 CPU / 两者同时原文档及配套指南 how-to-stake-resource.md 给出了三种典型组合以bob为付费方、alice为受益方# 只抵押 NET 带宽alice 获得 0.01 SYS 的 NET 配额 cleos system delegatebw bob alice 0.01 SYS 0 SYS # 只抵押 CPU 带宽alice 获得 0.01 SYS 的 CPU 配额 cleos system delegatebw bob alice 0 SYS 0.01 SYS # 同时抵押 NET 与 CPUalice 获得 0.01 SYS NET 0.02 SYS CPU 配额 cleos system delegatebw bob alice 0.01 SYS 0.02 SYS需要注意参数顺序第三个位置参数永远是 NET 数量第四个位置参数永远是 CPU 数量即使只想委托 CPU也必须在第三个位置显式写0 SYS。5.2 账户可以委托给自己原文档特别说明账户可以为自己抵押资源。以上示例中的bob可以替换为alice前提是alice持有足够的 SYS 代币即账户为自己抵押带宽这在启动新账号或自建节点时很常见。5.3--transfer选项的影响从源码programs/cleos/main.cpp与 ABI 可知delegatebw动作还包含transfer布尔字段默认值为false。当通过--transfer置为true时接收方同时获得投票权与取回undelegate该笔抵押的权利否则取回权保留在from账户手中这正是撤销委托时只有原委托账户可以撤销的原因之一。6. 撤销委托反向操作当不再需要委托的带宽时可使用cleos system undelegatebw撤销cleos system undelegatebw bob alice 0 SYS 0.01 SYS参数含义与delegatebw对应from为撤销方receiver为被撤销方unstake_net_quantity/unstake_cpu_quantity为要撤销的 NET / CPU 数量。原文档how-to-undelegate-CPU.md特别提醒只有最初发起委托的账户才有权撤销该笔委托。撤销的典型输出executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us # eosio eosio::undelegatebw {from:alice,receiver:bob,unstake_net_quantity:0.0000 EOS,unstake_cpu_qu... warning: transaction executed locally, but may not be confirmed by the network yet对应的 cleos 侧实现位于 programs/cleos/main.cpp 的undelegate_bandwidth_subcommand位置参数为from、receiver、unstake_net_quantity、unstake_cpu_quantity均为必填并同样默认以fromactive权限签名后向系统账户发送undelegatebw动作。注意撤销后的代币通常需要经过延迟期才能取回本仓库文档未对具体延迟时长作出承诺请以部署的系统合约配置为准。7. 参数细节与注意事项资产字符串格式stake_net_quantity与stake_cpu_quantity必须使用 EOSIO 资产格式数量 空格 符号如0.01 SYS即使为 0 也要写全例如0 SYS不能省略符号四个位置参数全部必填从 cleos 源码可以看到这四个参数均被标记为 required缺失任一参数命令将直接报错签名权限默认使用fromactive权限签名可通过-p指定其他权限级别预演与离线检查结合-d不广播与-jJSON 输出可以先在本地查看将发送的动作内容确认无误后再正式广播RAM 与带宽的区别delegatebw处理的是 CPU/NET 抵押如需为接收账户购买 RAM可搭配同一子命令中的--buyram/--buy-ram-bytes选项详见源码 programs/cleos/main.cpp但两者不能同时使用。8. 仓库中的测试佐证委托带宽逻辑在本仓库有充分的可执行验证单元测试辅助类unittests/eosio_system_tester.hpp 中封装了delegate_bandwidth辅助方法通过push_action(name(from), delegatebw_n, ...)构造并执行delegatebw动作参数即from、receiver、stake_net_quantity、stake_cpu_quantity与命令行行为一致启动序列测试unittests/bootseq_tests.cpp 在链启动boot流程中直接调用delegatebw动作进行初始资源分配其后同文件第 155 行通过undelegatebw验证撤销路径ABI 契约unittests/contracts/eosio.system/eosio.system.abi 中delegatebw结构体与动作表定义第 1521 行提供了链上动作与本文命令参数一一对应的契约依据集成测试仓库测试脚本如 tests/Node.py在构建多节点测试环境时也会使用delegatebw完成资源分配验证其在真实节点间的可用性。9. 相关文档导航命令参考system-delegatebw、system-undelegatebw委托与撤销系列如何委托 NET 带宽、如何抵押 NET 与 CPU、如何撤销 CPU 委托、如何撤销 NET 委托安装环境安装 EOSIO源码位置cleos 主程序、eosio.system 合约 ABI、系统合约测试辅助类赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐Authelia crypto pair mldsa 命令详解ML-DSA 后量子密钥对生成的 CLI 参考与源码剖析Authelia crypto pair mldsa 命令详解ML DSA 后量子密钥对生成的 CLI 参考与源码剖析 authelia crypto pai区块链EOSIO 使用 cleos system buyram 为账户购买 RAM 实战指南EOSIO 使用 cleos system buyram 为账户购买 RAM 实战指南 本篇指南讲解如何通过 EOSIO 自带的命令行工具 cleos 使用区块链Wand-EnhancerWeMod 破解工具指南Wand EnhancerWeMod 破解工具指南 Wand Enhancer 是一款开源的 WeMod 破解工具通过在本地改写 WeMod/Wand 客户区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
盟誓源码解析:3招搞定Stack Trace报错,彻底搞懂底层逻辑 盟誓源码解析:3招搞定Stack Trace报错,彻底搞懂底层逻辑 盯着屏幕上那一长串红色的 Stack Trace 报错,是不是头都大了?每一行类名、方法名、行号像天书一样堆在一起,完全不知道从哪下手。别慌,这种“盟誓”般的崩溃感,其实是… · 2026/9/23 17:27:28
突变元年源码解析: 3个最佳实践搞定API大改 突变元年源码解析: 3个最佳实践搞定API大改 版本升级后 API 全变了?别慌。 这不是你的错,是框架演进的必然。 掌握源码底层逻辑,才是应对突变的最佳实践。 入口定位:找到变更的源头 很多开发者面对 Breaking Change… · 2026/9/23 17:27:27
OpenStack安装部署手册:kolla-ansible与手动部署避坑指南 简介:这份《Openstack安装部署手册》面向云计算运维工程师、OpenStack初学者及需要搭建私有云平台的IT从业者,以Havana版本为基准,系统讲解从零部署开源IaaS平台的关键流程。手册围绕环境准备、组件整体结构、核心组件安装与认证服务配置展开… · 2026/9/23 17:27:21
修正久期计算错坑深,性能优化全靠这3行代码 修正久期计算错坑深,性能优化全靠这3行代码 翻遍官方文档还是云里雾里?别怪你笨,是那些理论推导太枯燥,抓不住落地重点。做金融数据后端, 修正久期 算错一个基点,报表对不上,排查三天三夜,还耽误了 性能优化 上线窗口。… · 2026/9/23 18:10:48
智能论文写作工具:解决继续教育学员的学术困境 1. 项目概述:论文写作困境的破局工具写论文最痛苦的时刻莫过于盯着空白文档发呆——特别是继续教育学员在繁忙工作之余还要面对学术写作任务。我见过太多职场人卡在开题阶段:既找不到合适的选题方向,又缺乏系统的文献梳理方法,甚至… · 2026/9/23 18:10:48
YOLOv11+ROS2导航实战:多模态交互系统落地与延迟优化 简介:这份PDF文档面向机器人视觉导航方向的学习者与开发者,围绕多模态交互系统展开,重点讲解YOLOv11与ROS2的协同方案,帮助读者理解目标检测与机器人导航的集成思路。文档共45页,支持目录章节跳转与阅读器左侧大纲快速… · 2026/9/23 18:10:42
FfDL企业级AI训练平台架构深度解析:CRD+Operator与GPU拓扑调度 1. 项目概述:这不是一个“跑通Demo”的故事,而是一次真实企业级AI基础设施的解剖实验FfDL——全称Fabric for Deep Learning,是IBM在2017年开源的企业级深度学习训练平台,它诞生于AI工程化落地最焦灼的阶段:模型越做越… · 2026/9/23 18:10:41
Python数据清洗全流程:从缺失值到异常值处理 1. 数据清洗概述与准备工作数据清洗是数据分析过程中最基础也是最重要的环节之一。在实际项目中,原始数据往往存在各种问题:缺失值、异常值、格式不一致、重复记录等。这些问题如果不处理,会直接影响后续分析的准确性和可靠性。1.1 为什么需要… · 2026/9/23 18:10:35
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29