关键词:EOS 环境搭建、私链节点、钱包、密钥管理、账号创建、nodeos、keosd、cleos
摘要
本文旨在帮助开发者一小时内在本地成功运行一条私链(Private Chain),完成钱包(Wallet)创建、密钥(Key Pairs)导入、以及账号(Account)注册等关键步骤。假设你已提前完成 EOS V1.0.5 源码编译,否则请先参考社区编译教程。通过以下流程,你将深刻理解 EOS 节点、钱包、私钥、账号 之间的关系,避免常见坑位。
EOSIO 模块全景图
EOSIO 三大常态工具:
- nodeos —— 区块链主节点,以插件方式扩展功能。
- keosd —— 轻量级钱包服务,默认跟随 cleos 启动,管理私钥。
- cleos —— 命令行与链交互的瑞士军刀,位于
eos/build/programs/cleos/cleos。
外加合约编译器 eosiocpp,共四条核心指令即可完成大部分开发。
钱包、密钥、账号的类比理解
EOS 的设计更灵活,也意味着初次学习容易混乱。用“房东与房子”的比喻帮助记忆:
| 概念 | 类比 | EOS 术语 |
|---|---|---|
| 一位土豪房东 | 一个钱包(Wallet) | keosd 管理 |
| 开门钥匙 | 一对公私钥(Key Pair) | owner key、active key |
| 一套房子 | 一个账号(Account) | 链上记录,含资源额度 |
| 房产证 | owner 权限 | 最高控制权 |
| 门禁卡 | active 权限 | 操作资金或合约 |
一个钱包可存储多把钥匙,一把钥匙可打开多套房子;一套房子可被两把不同钥匙分别控制。把这种组合关系想象清楚,后续命令一目了然。
私链启动实战
步骤 1:启动钱包服务 keosd
keosd --http-server-address=127.0.0.1:8900注意:从 V1.0.5 起,必须先启动 keosd 再启动 nodeos,否则无法创建钱包。
首次执行会自动在 ~/eosio-wallet 下生成 config.ini。
👀 遇到无法创建钱包?👉 掌握 keosd 端口与防火墙设置技巧,一次解决启动难题
步骤 2:启动私链 nodeos
cd ~/eos/build/programs/nodeos
./nodeos -e -p eosio \
--plugin eosio::wallet_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::history_api_plugin \
--replay-blockchain参数速览
-e:允许生产空区块,便于本地调试-p eosio:设置生产者名称为 eosio--replay-blockchain:清空状态库,从头重放(开发环境常用)
若控制台提示 database dirty flag set,执行下面清洗命令:
rm -rf ~/.local/share/eosio/nodeos/data重新运行 nodeos 即可。
钱包、密钥、账号一条龙
创建与解锁钱包
cleos wallet create -n devwallet
# 记录屏幕返回的密码用于解锁
cleos wallet list # 看到 devwallet * 说明已解锁如果之前异常退出导致钱包消失,可手动 open 并 unlock:
cleos wallet open -n devwallet
cleos wallet unlock -n devwallet导入创世账号私钥
将 eosio 系统的默认私钥加入钱包:
cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 -n devwallet查询系统账号信息验证成功:
cleos get account eosio加载 BIOS 系统合约
cleos set contract eosio build/contracts/eosio.bios -p eosio屏幕出现 executed transaction 即表示合约发布成功,开发者从此可以为本链自由分配 RAM/NET/CPU。
生成并导入新密钥对
cleos create key
# 返回:Private key: 5K... Public key: EOS...
cleos wallet import <私钥> -n devwallet可在 cleos wallet keys 中再次确认公钥已入库。
创建新账号
命令格式:
cleos create account eosio <新账号名> <owner公钥> <active公钥><新账号名> 需符合:
- 1–12 个字符
- 仅含
.12345abcdefghijklmnopqrstuvwxyz
示例:
cleos create account eosio alice EOS6EHAzvr... EOS6EHAzvr...屏幕出现 executed transaction 即完成注册。若重名提示 account_name_exists_exception,换一个名字即可。
常见问题速查(FAQ)
Q1:启动 nodeos 后,钱包列表为空?
A:99% 是因为未添加 --plugin eosio::wallet_plugin;重启 nodeos 并补充该插件。
Q2:提示 keosd 已运行但无法连接?
A:执行
ps -ef | grep keosd
kill -9 <pid>
keosd --http-server-address=127.0.0.1:8900确保端口一致且无旧进程占用。
Q3:钱包文件不小心删除怎么办?
A:如果未备份,私钥无法恢复。重建钱包后需重新导入私钥——这也是务必安全保存私钥的原因。
Q4:Owner key 与 Active key 可以相同吗?
A:技术上可以,但开发及正式环境均建议分离,以保证高权限与日常可分开管理。
Q5:如何查看本链上已有的所有账号?
A:通过插件 history_api_plugin 后,使用
cleos get accounts <公钥>即可列出该公钥关联的全部账号。
Q6:私链区块间隔能否缩短?
A:可在 config.ini 中把 producer-name 轮训间隔由默认 0.5 秒改为更小值,实现“秒级”出块,方便测试。
实战小贴士
- 端口映射:若用 Docker/虚拟机,务必把默认 8888、8900 端口映射到宿主机。
- 日志清理:开发频繁重启时,挂载 tmpfs 可以提升 I/O 并减少“脏启动”异常。
- 自动化脚本:把创建钱包、导入密钥、编译部署 bios 合约写成 shell,一键完成。
至此,一条可随意“重启”的本地私链已运转稳定,区块浏览器、资源发行、DApp 部署所需的“地基”都已打好。
💡 工欲善其事,必先利其器。想在测试环境进一步折腾 DeFi、NFT 或 DAO?👉 点此开启 EOS 生态下一级加密世界大门