首页/新闻资讯/正文详情

EOSIO 账户密钥更新实战:使用 cleos 修改账户权限密钥

发布时间:2026/9/23 11:30:25 来源:云帆数科 栏目:资讯中心
EOSIO 账户密钥更新实战:使用 cleos 修改账户权限密钥
区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载本指南以 eos 仓库官方 How-To 文档 how-to-update-account-keys.md 为核心骨架完整讲解如何用cleos命令行工具为一个 EOSIO 区块链账户更换密钥从生成新密钥对、导入钱包到通过cleos set account permission更新active权限并验证结果。读完本文你将掌握账户权限模型下更换密钥的标准四步流程并能结合源码理解其底层updateauth动作的校验逻辑与安全约束。文档定位与适用场景该 How-To 指南解决的是 EOSIO 账户密钥轮换key rotation这一高频运维需求当账户私钥泄露、团队成员变动或需要提升安全等级时管理员需要在不重建账户的前提下将账户权限如active绑定的公钥替换为新密钥。文档以alice账户为例演示更新其active权限密钥的完整过程。文中引用的三个命令参考文档均已转换为仓库根目录相对路径分别是cleos create key 命令参考 —— 生成新密钥对cleos wallet import 命令参考 —— 将新私钥导入钱包以便签名cleos set account permission 命令参考 —— 提交链上权限更新。开始前的准备在动手更新密钥前需要满足以下条件安装受支持的cleos版本。cleos随 EOSIO 软件一同分发安装 EOSIO 即会同时安装cleos与keosd两个命令行工具参见 安装 EOSIO。拥有一个 EOSIO 账户并能访问该账户的私钥。这一步是更新权限的授权基础后续的权限变更交易需要由账户所有者权限签名。此外从实操角度还需确认本地钱包wallet已创建、处于打开open且解锁unlocked状态因为cleos wallet import与交易签名都依赖钱包中保存的密钥详见 钱包与 keosd 使用说明能连接到目标区块链节点cleos默认连接本地http://127.0.0.1:8888。理解权限层级为什么用-p aliceowner授权在 EOSIO 的权限模型中每个账户默认包含两个内置权限owner和active且active是owner的子权限。权限层级决定了授权的传递关系要修改某一权限本身必须用该权限的父权限来签名。因此更新active权限密钥时需要用aliceowner授权即-p aliceowner若要更新owner权限密钥则需要账户自身私钥owner无父权限。这一层级约束在链上实现中有强制校验详见下文「链上校验逻辑」一节其根源在于 libraries/chain/eosio_contract.cpp 中apply_eosio_updateauth的断言逻辑。整体流程概览更新账户密钥共四步全部通过cleos完成步骤命令作用1cleos create key --to-console生成新密钥对2cleos wallet import --private-key 私钥将新私钥导入本地钱包3cleos set account permission alice active 公钥 -p aliceowner在链上更新active权限4cleos get account alice验证账户权限是否更新成功下面逐一展开。步骤一生成新的密钥对cleos create key --to-console参数说明--to-console指示cleos create key命令把生成的私钥/公钥直接打印到终端。示例输出Private key: 5KDNWQvY2seBPVUz7MiiaEDGTwACfuXu78bwZu7w2UDM9A3u3Fs Public key: EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC关于cleos create key的补充说明依据 create/key.md该命令创建新密钥对既可以把结果打印到屏幕也可以写入文件--file与--to-console二者必须且只能选择其一。完整选项包括-h,--help帮助、--r1使用 R1 曲线生成密钥适用于 iPhone 设备默认使用比特币生态的 K1 曲线、-f,--file 文件名将密钥写入指定文件。生产环境建议将密钥写入文件而非打印到终端避免终端历史记录泄露私钥cleos create key --file my_keys.txt示例输出saving keys to my_keys.txt随后可查看文件内容cat my_keys.txt示例输出Private key: 5KWcfnGao5K6WV65Zgjd1xvpugRUeKwb6oxzmwaS1tPE2Ef4qzo Public key: EOS7oDiBtzSHtShprGFmXm9JLnwxhcPeDyhww3tXDvVATDYtciLGG步骤二将新私钥导入钱包cleos wallet import --private-key 5KDNWQvY2seBPVUz7MiiaEDGTwACfuXu78bwZu7w2UDM9A3u3Fs参数说明--private-key 5KDNWQvY2seBPVUz7MiiaEDGTwACfuXu78bwZu7w2UDM9A3u3Fs指定要导入的、WIF 格式的私钥。示例输出imported private key for: EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC关于cleos wallet import的补充说明依据 wallet/import.md该命令将私钥导入钱包如果keosd尚未运行命令会自动拉起keosd进程。完整选项-n, --name 钱包名指定导入到哪个钱包默认钱包名为default、--private-key WIF 私钥。前置条件目标钱包必须处于打开且解锁状态若钱包已锁定需先用cleos wallet unlock解锁。也可以交互式导入直接执行cleos wallet import不带--private-key命令会提示你输入私钥。若需导入到指定钱包可使用命名参数形式cleos wallet import --name my_wallet --private-key 5KDNWQvY2seBPVUz7MiiaEDGTwACfuXu78bwZu7w2UDM9A3u3Fs示例输出imported private key for: EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC导入成功后后续cleos set account permission提交交易时即可用钱包中的新私钥完成签名这一步也可先用cleos wallet keys核对钱包中的公钥集合。步骤三在链上更新active权限密钥cleos set account permission alice active EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC -p aliceowner参数说明alice 要更新密钥的账户名active 要更新密钥的权限名EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC 新的公钥-p aliceowner 用于授权这笔交易的权限级别因为active的父权限是owner。示例输出executed transaction: ab5752ecb017f166d56e7f4203ea02631e58f06f2e0b67103b71874f608793e3 160 bytes 231 us # eosio eosio::updateauth {account:alice,permission:active,parent:owner,auth:{threshold:1,keys:[{key:E...底层原理这笔命令究竟做了什么从源码结构看cleos set account permission最终构造并广播的是系统合约的eosio::updateauth动作。在 programs/cleos/main.cpp 中可以看到对应的动作构造函数chain::action create_updateauth(const name account, const name permission, const name parent, const authority auth) { return action { get_account_permissions(tx_permission, {account,config::active_name}), updateauth{account, permission, parent, auth}}; }即updateauth{account, permission, parent, auth}四个字段账户名、权限名、父权限名、新的权限结构threshold 阈值、keys 公钥列表等。示例输出中的eosio eosio::updateauth即表示该动作由eosio系统合约执行交易体里携带了{account:alice,permission:active,parent:owner,auth:{...}}的完整载荷。同时cleos端还负责把传入的「公钥字符串 / JSON 字符串 / JSON 文件名」统一解析为合法的authority结构见 main.cpp 的parse_json_authority_or_key若传入的是合法公钥字符串则包装为单公钥权威threshold1若传入 JSON则校验 keys/accounts/waits 的排序与阈值是否可满足。链上校验逻辑更新权限有哪些硬性约束eosio::updateauth在链上由 libraries/chain/eosio_contract.cpp 的apply_eosio_updateauth处理其中包含多项安全约束权限名不能为空且不能以eosio.开头该前缀被系统保留权限不能设置自己为父权限active的父权限必须是ownerowner权限不能有父权限除owner外的其他权限必须有非空父权限若新的权威结构中包含延迟等待waits其wait_sec不能超过链上配置的max_transaction_delay权限存在则更新其 authority不存在则创建新权限所以同一命令既可更新既有权限也可创建自定义权限权限更新会产生 RAM 用量差异链上通过context.add_ram_usage(...)对账户 RAM 进行计费增大时占用更多 RAM缩小时退还。这些校验确保用户无法通过cleos set account permission破坏权限层级结构也解释了为何文档示例中必须用aliceowner而非aliceactive来授权。set account permission的其他实用选项依据 set-account-permission.md该命令还支持以下能力authority 参数三种形态公钥字符串如上例、JSON 字符串、或包含 authority 定义的 JSON 文件名传null则删除该权限对应deleteauth动作parent 位置参数创建新权限时指定父权限名默认值为active--add-code/--remove-code为权限增加/移除eosio.code权限用于智能合约账户通过active权限发起内联动作事务级选项-x,--expiration过期时间默认 30 秒、--delay-sec延迟秒数默认 0、-d,--dont-broadcast仅打印不上链、-j,--jsonJSON 输出、--max-cpu-usage-ms与--max-net-usage资源预算上限、-r,--ref-blockTAPOS 引用块等。步骤四验证账户密钥已更新cleos get account alice参数说明alice为要查询的账户名。示例输出permissions: owner 1: 1 EOS6c5UjmyRsZSdikLbpAoMdg4V7FQwvdhep3KMxUifzmpDnoLVPe active 1: 1 EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC memory: quota: xxx used: 2.66 KiB net bandwidth: used: xxx available: xxx limit: xxx cpu bandwidth: used: xxx available: xxx limit: xxx在输出中核对permissions部分active权限的公钥应已变为步骤一中生成的新公钥示例中的EOS5zG7PsdtzQ9achTdRtXwHieL7yyigBFiJDRAQonqBsfKyL3XhC而owner权限的密钥保持不变说明更新成功。注意更新active密钥后旧私钥立即失效任何仍使用旧密钥签名的交易都会被拒绝因此请确保新私钥已安全备份。进阶eosio.code权限与自定义权限同一命令还可用于更复杂的权限场景依据 set-account-permission.md 中的示例为合约账户添加eosio.code权限使合约账户能以active权限调用内联动作cleos set account permission alice active --add-code -p aliceactive创建自定义权限例如为 alice 增加名为customp的权限父权限为activecleos set account permission alice customp EOS58wmANoBtT7RdPgMRCGDb37tcCQswfwVpj6NzC55D247tTMU9D active -p aliceactive示例输出executed transaction: 69c5297571ce3503edb9a1fd8a2f2a5cc1805ad19197a8751ca09093487c3cf8 160 bytes 134 us # eosio eosio::updateauth {account:alice,permission:customp,parent:active,auth:{threshold:1,keys:[{key:EOS...这说明同一个updateauth动作同时承载了「更新既有权限」与「创建新权限」两种职责与上文apply_eosio_updateauth中「权限存在则修改、不存在则创建」的分支逻辑完全吻合。总结通过本指南的四步流程——cleos create key生成新密钥对、cleos wallet import导入私钥、cleos set account permission以父权限授权提交updateauth动作、cleos get account验证结果——你可以安全地为 EOSIO 账户完成密钥轮换。掌握这一流程的底层原理权限层级、eosio::updateauth链上校验、RAM 计费后你还可以举一反三地使用cleos set account permission管理自定义权限、部署eosio.code权限满足更复杂的账户权限管理需求。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐N46Whisper5个步骤让日语视频字幕制作效率提升300%N46Whisper5个步骤让日语视频字幕制作效率提升300% 还在为日语视频的字幕制作而头疼吗N46Whisper是一款基于AI语音识别技术的日语字幕自动AI 应用语音notebooklm-py 的 Web batchexecute RPC 参考混淆方法 ID、线格式 Payload 与 UI 选择器对照notebooklm py 的 Web batchexecute RPC 参考混淆方法 ID、线格式 Payload 与 UI 选择器对照 本文基于 docs区块链EOSIO 使用 cleos system buyram 为账户购买 RAM 实战指南EOSIO 使用 cleos system buyram 为账户购买 RAM 实战指南 本篇指南讲解如何通过 EOSIO 自带的命令行工具 cleos 使用区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

UG NX2306安装优化与性能调优指南
UG NX2306安装优化与性能调优指南

1. 为什么选择NX2306?作为Siemens PLM Software旗下的旗舰产品,UG NX系列始终走在CAD/CAM/CAE领域的前沿。NX2306版本在去年发布时带来了多项关键改进:全新的草图约束管理界面使设计效率提升40%,多轴加工模块新增了智能碰撞避让功… · 2026/9/23 11:30:25

C# WinForms超市系统部署与实战避坑指南
C# WinForms超市系统部署与实战避坑指南

简介:本资源是一套基于C#与WinForms框架开发的超市管理系统完整源码包,面向.NET初学者及中小型零售业务系统学习者,聚焦收银、库存预警、商品/销售/用户/日志管理等核心业务场景,助力理解企业级桌面应用的分层架构与数据库交互逻辑… · 2026/9/23 11:30:25

火箭的速度速查手册:3行代码搞定移动端物理模拟报错
火箭的速度速查手册:3行代码搞定移动端物理模拟报错

火箭的速度速查手册:3行代码搞定移动端物理模拟报错 盯着屏幕上一长串红色的 java.lang.Exception 或者 NullPointerException… · 2026/9/23 11:30:18

Java Web教学项目Hotelmanger.zip部署与排错指南
Java Web教学项目Hotelmanger.zip部署与排错指南

简介:本资源是一个基于Java开发的酒店管理系统实战项目,面向Java初学者与课程设计学习者,解决酒店日常运营中房间管理、入住退房、预订调度、收银结算及权限管控等核心业务场景。压缩包为zip格式,大小1.23MB,虽未提供具… · 2026/9/23 12:14:26

3个API变更踩坑案例:尽量的读音源码解析实战
3个API变更踩坑案例:尽量的读音源码解析实战

3个API变更踩坑案例:尽量的读音源码解析实战 版本升级后 API 全变了,这种绝望感每个写过代码的人都懂。你以为只是改个参数名,结果整个调用链直接崩盘,调试半天才发现是底层逻辑重构了。这时候光看文档不够,得直接看 源码解析… · 2026/9/23 12:14:26

搞定电容换算实战项目:3步解决单位转换痛点
搞定电容换算实战项目:3步解决单位转换痛点

搞定电容换算实战项目:3步解决单位转换痛点 看了一堆教程还是不会写项目?别慌,这确实是很多开发者的通病。理论背得滚瓜烂熟,一到实战项目就卡壳,尤其是遇到像电容换算这种看似简单实则细节极多的场景。… · 2026/9/23 12:14:20

矩生成函数(MGF)详解:从定义、泰勒展开到独立和与中心极限定理的工程实践
矩生成函数(MGF)详解:从定义、泰勒展开到独立和与中心极限定理的工程实践

“矩生成函数”这个名字,我当年第一次在概率论课本里撞见时,心里是有点发怵的——又是矩又是生成函数,听着像要把整个随机变量彻底拆开揉碎,非要先在心里建设半小时才敢往下翻。等后来真正在统计推导、机器学习的指数族分布、甚至… · 2026/9/23 12:14:19

2026最新东方时尚驾校模拟考试技术栈横向对比
2026最新东方时尚驾校模拟考试技术栈横向对比

2026最新东方时尚驾校模拟考试技术栈横向对比 官方文档往往冗长枯燥,几百页的规范没人愿意从头读到尾,大家只想在 2026最新… · 2026/9/23 12:14:13

FPGA vivado环境使用:第一步点灯代码
FPGA vivado环境使用:第一步点灯代码

打开软件,创建工程起一个工程名,路径英文进入工程界面编写v代码创建一个文件 . 编写代码 module LED_TWINKLE( input key, output led ); assign led~key; endmoduleRTL ANALYSIS管脚定义编译生成bit流 Generate Bitstream10.点击Program Device 下载到板… · 2026/9/23 12:14:13

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码