区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载本指南以 EOSIO 开源智能合约平台本仓库gh_mirrors/eo/eos中的cleos客户端为核心系统讲解如何通过cleos system delegatebw子命令为账户质押 NET 与 CPU 带宽资源。读者学完后将掌握三条核心实操路径单独质押 NET、单独质押 CPU、同时质押 NET 与 CPU并能理解质押背后的系统合约动作调用链、代币流转去向eosio.stake账户以及反向操作undelegatebw的使用前提。前置条件在开始质押资源之前请确保满足以下要求安装cleos安装当前仓库支持的 EOSIO 软件版本。cleos随 EOSIO 软件一同分发安装 EOSIO 即会同时安装cleos安装指引见 00_install/index.md。部署系统合约确保参考系统合约eosio.system等已部署并用于管理系统资源。delegatebw动作正是由eosio.system合约提供的系统动作。理解以下核心概念账户Account区块链上的资源归属与权限控制单元。NET 带宽账户可用的网络传输带宽资源决定发送交易/动作的速率。CPU 带宽账户可用的计算执行带宽资源决定执行智能合约动作所消耗的 CPU 时间。delegatebw子命令cleos system命令组中用于委托带宽的子命令。命令参考delegatebw的完整命令行用法与相关选项请参考 system-delegatebw.md 命令参考文档。其位置参数如下from— 转出带宽的账户即支付质押代币的账户。receiver— 接收委托带宽的账户。stake_net_quantity— 为网络NET带宽质押的代币数量。stake_cpu_quantity— 为 CPU 带宽质押的代币数量。操作步骤以下步骤分别演示三种质押场景命令格式统一为cleos system delegatebw from receiver stake_net_quantity stake_cpu_quantity1. 质押 NET 带宽执行以下命令由bob账户为alice账户质押0.01 SYS的 NET 带宽cleos system delegatebw alice bob 0.01 SYS 0 SYS参数说明alice 被质押 NET 带宽的账户。bob 支付0.01 SYS质押费用的账户。0.01 SYS 分配给 NET 带宽质押的SYS代币数量。0 SYS 分配给 CPU 带宽质押的SYS代币数量此处为零表示不质押 CPU。示例输出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}2. 质押 CPU 带宽执行以下命令由bob账户为alice账户质押0.01 SYS的 CPU 带宽cleos system delegatebw alice bob 0 SYS 0.01 SYS参数说明alice 被质押 CPU 带宽的账户。bob 支付0.01 SYS质押费用的账户。0 SYS 分配给 NET 带宽质押的SYS代币数量此处为零表示不质押 NET。0.01 SYS 分配给 CPU 带宽质押的SYS代币数量。示例输出executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us # eosio eosio::delegatebw {from:bob,receiver:alice,stake_net_quantity:0.0000 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}3. 同时质押 NET 和 CPU 带宽执行以下命令由bob账户为alice账户同时质押0.01 SYS的 NET 与0.02 SYS的 CPU 带宽cleos system delegatebw alice bob 0.01 SYS 0.02 SYS参数说明alice 被同时质押 NET 和 CPU 带宽的账户。bob 支付0.01 SYSNET与0.02 SYSCPU质押费用的账户。0.01 SYS 分配给 NET 带宽质押的SYS代币数量。0.02 SYS 分配给 CPU 带宽质押的SYS代币数量。示例输出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}提示账户可以为自己质押资源账户也可以将资源质押给自己即把上述示例中的bob替换为alice前提是alice账户持有足够的SYS代币。此时alice账户即为自己质押资源。深度解析delegatebw 的底层动作链cleos 端的参数组装与签名在cleos客户端源码 programs/cleos/main.cpp 中delegate_bandwidth_subcommand定义了delegatebw子命令的四个必填位置参数from、receiver、stake_net_quantity、stake_cpu_quantity并将它们序列化为系统合约动作载荷fc::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);随后cleos将其封装为指向系统账户eosio的delegatebw动作create_action(accountPermissions, config::system_account_name, delegatebw_n, act_payload)并使用fromactive权限即质押方账户的 active 权限签名发送。这正是输出日志第一行eosio eosio::delegatebw的由来——eosio系统合约接收并执行了该动作。代币流转资金去向 eosio.stake从示例输出可以清晰看到delegatebw执行过程中引发的eosio.token合约的链式转账bob账户将代币转给eosio.stake系统质押账户memo 为stake bandwidtheosio.stake账户确认接收该笔质押转账。也就是说质押并不会把代币转给receiver示例中的alice而是托管在系统质押账户eosio.stake中。alice获得的是 NET/CPU 带宽的使用权以及默认情况下的投票权而非代币所有权。反向操作与约束undelegatebw与质押配套的反向操作是cleos system undelegatebw其源码位于 programs/cleos/main.cpp命令格式为cleos system undelegatebw from receiver unstake_net_quantity unstake_cpu_quantity例如将之前由alice委托给bob的0.01 SYSCPU 带宽赎回cleos system undelegatebw bob alice 0 SYS 0.01 SYS注意只有最初发起委托的账户即from才能执行对应的解除质押操作。解除质押会触发系统合约的undelegatebw动作代币经赎回流程后返回原质押账户。小结本文完整演示了通过cleos system delegatebw为账户质押 CPU 和/或 NET 带宽的三种场景单质押 NET、单质押 CPU、同时质押两者并给出了可复制的命令与真实执行输出。同时结合仓库源码解析了命令背后的动作组装、eosio系统合约接收、eosio.token转账至eosio.stake的资金流向以及undelegatebw反向赎回的使用前提——只有原始委托账户可以解除质押。无论是为应用账户配置资源还是为自己质押资源掌握delegatebw都是 EOSIO 资源管理的基础环节。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO 中如何使用 cleos 解押 CPU 带宽资源Unstake CPU BandwidthEOSIO 中如何使用 cleos 解押 CPU 带宽资源Unstake CPU Bandwidth 本文是 EOSIO 资源管理系列实操指南之一围绕 c区块链EOSIO cleos 命令详解用 cleos system newaccount 一步完成账户创建、RAM 购买与带宽质押EOSIO cleos 命令详解用 cleos system newaccount 一步完成账户创建、RAM 购买与带宽质押 导读 cleos system区块链EOSIO 委托网络带宽NET资源cleos system delegatebw 操作指南与底层原理EOSIO 委托网络带宽NET资源cleos system delegatebw 操作指南与底层原理 导读 本文基于本仓库eo/eos中《How to区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
