恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
EOS 开发入门:使用 cleos create key 生成区块链账户密钥对(公钥与私钥)完整指南
首页
资讯中心
/
EOS 开发入门:使用 cleos create key 生成区块链账户密钥对(公钥与私钥)完整指南
EOS 开发入门:使用 cleos create key 生成区块链账户密钥对(公钥与私钥)完整指南
发布时间:2026/9/24 4:52:44
区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载导读本文基于当前 EOS 开源仓库eos中的官方操作指南docs/02_cleos/02_how-to-guides/how-to-create-key-pairs.md系统讲解如何在 EOSIO 区块链上通过cleos create key命令生成用于交易签名的密钥对公钥 私钥。读完本文你将掌握密钥对生成的全部命令形式控制台输出与文件保存、底层生成原理K1/R1 曲线与 EOS 前缀格式并理解密钥对在钱包导入、账户创建Owner/Active 权限中的实际用途。目标Goal创建一个由公钥Public Key和私钥Private Key组成的密钥对用于在 EOSIO 区块链上签署交易。私钥用于签名授权公钥则对全网公开用于验证签名、绑定账户权限。开始之前Before you begin在按步骤生成新密钥对之前请确认以下前置条件已满足安装当前受支持的cleos版本。理解非对称密码学公钥/私钥对在区块链场景下的基本概念。关于第一条需要特别说明的是cleos工具随 EOSIO 软件一起分发安装 EOSIO 时即会同时安装cleos工具无需单独安装。安装完成后可通过cleos version client命令确认版本信息。操作步骤Steps方式一生成密钥对并输出到控制台要生成一个密钥对并直接把结果打印到控制台执行cleos create key --to-console示例输出cleos create key --to-console Private key: 5KPzrqNMJdr6AX6abKg*******************************cH Public key: EOS4wSiQ2jbYGrqiiKCm8oWR88NYoqnmK4nNL1RCtSQeSFkGtqsNc输出解读Private key:一行是私钥以5开头是账户的“命脉”必须绝对保密任何持有私钥的人都能以该密钥对应的权限签名交易、动用资产。Public key:一行是公钥以EOS前缀开头是对外公开的地址标识用于绑定到账户权限如 Owner / Active。注意上面的输出中私钥被*部分遮挡是文档展示时的脱敏处理。实际执行命令时cleos会打印完整私钥。请务必妥善保管切勿泄露。方式二生成密钥对并保存到文件要生成密钥对并保存到文件中执行cleos create key --file FILE_TO_SAVEKEY其中FILE_TO_SAVEKEY为保存密钥的文件名。示例输出cleos create key --file pw.txt saving keys to pw.txt查看文件中保存的密钥对cat pw.txt Private key: 5K7************************************************ Public key: EOS71k3WdpLDeqeyqVRAAxwpz6TqXwDo9Brik5dQhdvvpeTKdNT59同样地文件中的私钥也会被*部分遮挡展示实际文件内容为完整密钥。若文件已存在cleos会直接覆盖写入因此请谨慎选择文件名避免覆盖已有密钥文件。深入源码cleos create key 的底层实现cleos create key子命令的实现位于 programs/cleos/main.cpp。核心逻辑如下为便于理解已做简化摘录bool r1 false; string key_file; bool print_console false; auto create_key create-add_subcommand(key, ...)-callback([r1, key_file, print_console](){ if (key_file.empty() !print_console) { std::cerr ERROR: Either indicate a file using \--file\ or pass \--to-console\ std::endl; return; } auto pk r1 ? private_key_type::generate_r1() : private_key_type::generate(); auto privs pk.to_string(); auto pubs pk.get_public_key().to_string(); if (print_console) { std::cout Private key: privs std::endl; std::cout Public key: pubs std::endl; } else { std::cerr saving keys to key_file std::endl; std::ofstream out(key_file.c_str()); out Private key: privs std::endl; out Public key: pubs std::endl; } }); create_key-add_flag( --r1, r1, Generate a key using the R1 curve (iPhone), instead of the K1 curve (Bitcoin) ); create_key-add_option(-f,--file, key_file, Name of file to write private/public key output to.); create_key-add_flag( --to-console, print_console, Print private/public keys to console.);从源码可以确认以下关键事实三选一约束必须显式传入--file或--to-console二者之一否则cleos会打印ERROR: Either indicate a file using --file or pass --to-console并中止。这是命令的强制校验逻辑。密钥生成入口默认调用private_key_type::generate()即生成 K1 曲线密钥若传入--r1标志则调用private_key_type::generate_r1()生成 R1 曲线密钥主要用于 iPhone 等 Apple 平台生态。private_key_type在 libraries/chain/include/eosio/chain/types.hpp 中定义为fc::crypto::private_key由底层加密库libraries/fc提供椭圆曲线实现。输出格式私钥通过pk.to_string()序列化为 WIFWallet Import Format格式字符串公钥通过pk.get_public_key().to_string()序列化为带EOS前缀的 Base58 字符串。双通道输出--to-console模式把密钥打印到标准输出std::cout--file模式则通过std::ofstream写入指定文件同时把saving keys to ...提示打到标准错误std::cerr。可选参数一览参数简写含义默认行为--to-console无将公钥/私钥打印到控制台未指定且未传--file时报错-f, --file-f将公钥/私钥写入指定文件未指定且未传--to-console时报错--r1无使用 R1 曲线iPhone 场景生成密钥默认使用 K1 曲线Bitcoin 场景关于曲线与密钥格式的补充说明K1 曲线即 secp256k1与比特币采用的椭圆曲线相同是 EOSIO 默认且最广泛使用的曲线。生成的公钥带EOS前缀如EOS71k3WdpLDeqeyqVRAAxwpz6TqXwDo9Brik5dQhdvvpeTKdNT59。R1 曲线即 secp256r1NIST P-256常用于 iOS/iPhone 硬件安全模块Secure Enclave生成的密钥。使用--r1生成后公钥前缀会相应变化。两种曲线生成的私钥均为 WIF 格式通常以5开头但请注意K1 与 R1 的密钥不能混用使用前需确认账户绑定的公钥对应的曲线类型。密钥对的典型应用场景场景一导入钱包keosdcleos create key生成的私钥需要导入本地钱包keosd后才能用于签名交易。导入命令为cleos wallet import --private-key PRIVATE_KEY详细流程可参考仓库文档 how-to-import-a-key.md。场景二创建账户Owner / Active 权限EOSIO 账户创建时需要绑定至少两个密钥对Owner 密钥账户最高权限与Active 密钥日常交易权限。创建账户前通常需要准备两组密钥例如cleos create key --to-console # 生成 Owner 密钥对 cleos create key --to-console # 生成 Active 密钥对随后使用cleos create account创建账户将两个公钥分别填入owner与active权限字段。完整示例可参考 how-to-create-an-account.md其中展示了newaccount动作的 JSON 结构{ creator: eosio, name: bob, owner: { threshold: 1, keys: [{key: EOS87TQktA5RVse2EguhztfQVEh6X..., weight: 1}] }, active: { ... } }场景三权限管理linkauth 与多签密钥对还常用于权限链接与多签配置相关操作可参考 how-to-link-permission.md 与 how-to-config-a-multisig-account.md。安全最佳实践私钥绝不外泄私钥等同于账户的完全控制权。不要将私钥提交到版本库、聊天工具或任何非加密渠道。优先使用文件保存 权限收紧生产环境建议使用--file保存密钥并限制文件访问权限如600。区分环境开发测试环境与主网环境的密钥严格隔离避免误用。善用--r1场景仅当目标平台如 iPhone 生态确实需要 R1 曲线密钥时才使用--r1否则保持默认 K1。定期轮换 Active 密钥账户创建后可通过cleos set account系列命令更新 Active 公钥降低私钥泄露造成的损失范围。常见问题排查报错ERROR: Either indicate a file using --file or pass --to-console说明未指定任一输出方式。请补上--to-console或-f 文件名后重试。私钥无法导入钱包确认生成的曲线类型K1/R1与账户公钥一致且私钥字符串完整无缺。输出文件内容为空检查当前用户对目标目录是否有写权限saving keys to ...提示出现在标准错误而非标准输出不影响文件生成。关联文档与进一步阅读安装 EOSIO含 cleos创建账户使用密钥对绑定 Owner/Active 权限导入私钥到钱包创建密钥对的官方指南原文cleos 命令参考create 子命令cleos 全部源码main.cpp通过以上内容你已经完整掌握cleos create key的使用方法、底层实现与实战场景可以开始为你的 EOSIO 应用生成安全的账户密钥对。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO cleos create 命令完全指南密钥对生成与链上账户创建EOSIO cleos create 命令完全指南密钥对生成与链上账户创建 导读 cleos create 是 EOSIO 命令行客户端提供的复合命令用于在区块链eos 密钥管理实战使用 cleos wallet keys 与 private_keys 列出钱包公私钥对eos 密钥管理实战使用 cleos wallet keys 与 private_keys 列出钱包公私钥对 本指南以 docs/02_cleos/02_ho区块链EOSIO 账户密钥更新实战使用 cleos 修改账户权限密钥EOSIO 账户密钥更新实战使用 cleos 修改账户权限密钥 本指南以 eos 仓库官方 How To 文档 how to update account k区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考