一个美观的、基于终端的以太坊钱包和智能合约浏览器,专为自主权、安全性和风格而构建。
━━━━━━━━━━━━━━━━━━━━
domestic system
━━━━━━━━━━━━━━━━━━━━

国内系统是一个终端用户界面(TUI),设计用于浏览以太坊(EVM)账户和智能合约。它融合了三个核心原则,使基于终端的区块链交互不仅实用,而且更受欢迎。
仅客户端。无中心化服务器。只有你和区块链。
国内系统直接连接到您选择的以太坊RPC端点。无中介、无分析、无追踪。您与区块链的交互是直接且无中介的。这才是Web3应有的工作方式。
不管理私钥。硬件钱包就绪。
您的私钥从未接触此应用程序。所有交易都按照EIP-4527生成二维码,专为硬件钱包设备签名而设计。查看您的账户,准备交易,并在硬件钱包上安全签名。
基于Charm.sh构建。终端界面,精美呈现。
使用华丽的Charm.land生态系统(Bubble Tea、Lip Gloss、Huh),国内系统证明了CLI不必朴素。丰富的色彩、流畅的交互和用心的UI设计为区块链交互带来了复古未来主义美学。
这三个原则——自主权、安全性和美学——在终端中完美融合。终端应用程序具有以下优势:
国内系统占据了小众用例的独特交叉点,服务于重视控制、安全和工艺的用户。
git clone https://github.com/yourusername/domestic-system.git
cd domestic-system
go build
go run .
国内系统将其配置存储在 ~/.charm-wallet-config.json 中。
在设置页中添加以太坊RPC端点,或通过设置 ETH_RPC_URL 环境变量:
export ETH_RPC_URL="https://eth.llamarpc.com"
go run .
通过编辑 main.go 中的代币观察列表来自定义要显示的ERC-20代币(UI配置即将推出)。
x):管理签名密钥,通过摄像头扫描EIP-4527二维码,并签名交易a 添加新钱包活动账户(标记为★)决定用于交易的哪个钱包。切换账户:
或者,导航到钱包页面,在任何钱包上按 Enter 查看其详情并激活它。
国内系统包含完整的EIP-4527交易签名工作流,既可在TUI内部使用,也可独立在终端中使用。
TUI(任何页面) → 打包未签名交易 → 显示EIP-4527二维码
↓
签名器页面通过摄像头扫描二维码
↓
解码UR → 使用存储的密钥签名
↓
显示原始签名交易十六进制
密钥存储在 ~/.charm-wallet-private-keys.json(权限模式600,位于仓库外部)。首次运行时,会自动引导一个NotForProduction演示密钥,其地址会注册到~/.charm-wallet-config.json中。
{
"private_keys": [
{
"address": "0x29c73B201bEE86C4d1Fe4f598C4355Bb210251e3",
"name": "NotForProduction",
"private_key": "0xc0054..."
}
]
}
从账户页按x打开签名器。在签名器页面:
签名交易(原始十六进制、交易哈希、r/s/v)会在扫描后立即显示。
signer/eth_signer.py)Python签名器独立于TUI运行。首先安装依赖:
pip install -r requirements.txt
所有输出均为JSON格式。--scan模式会打开一个OpenCV窗口显示实时摄像头画面,并在检测到签名交易时将其输出到stdout。
cmd/txtest)使用Go模块直接执行完整的打包→解码→签名往返测试:
# 离线模式(硬编码测试参数——无需RPC)
go run ./cmd/txtest
# 从RPC端点获取实时nonce/gasPrice/chainId
go run ./cmd/txtest --rpc https://eth.llamarpc.com
# 自定义接收地址和金额
go run ./cmd/txtest --to 0xYourAddr --value 0.5 --chainid 11155111
输出清晰显示两个步骤:
STEP 1 — 打包未签名交易(EIP-4527)
─────────────────────────────────────────────
交易字段:{ "from": "0x29c7...", "to": "0xd8dA...", ... }
UR: ur:eth-sign-request/onadtpdagd...
STEP 2 — 使用存储密钥解码+签名
───────────────────────────────────────
解码交易:{ "from": "0x29c7...", "value": "0.001000 ETH", ... }
签名交易:{ "txHash": "0x5989...", "raw_transaction": "0xf86b...", ... }
✓ 往返完成
ss -ntlp | grep 8545
ssh -N -L 8545:localhost:8545 user@node_machine_ip_address #用于http
ssh -N -L 8546:localhost:8546 user@node_machine_ip_address #用于ws websocket
现在,应用程序机器上运行的应用程序可以通过 http://localhost:8545 访问以太坊节点的RPC。
go run helpers/uniswap_v4_listener.go -ws -poolmanager
[-from ]go run ./cmd/v4listener
-ws ws://localhost:8546
-poolmanager 0x000000000004444c5dc75cB358380D2e3dE08A90
go run ./cmd/v4listener
-ws ws://localhost:8546 \ #或ws://mainnet.infura.io/ws/v3/YOUR_KEY
-poolmanager 0x000000000004444c5dc75cB358380D2e3dE08A90
-from 21688000
domestic-system/
├── main.go # 入口点——连接Bubble Tea程序
├── model.go # 应用状态结构 + Init()
├── update.go # 所有Update()消息处理器
├── view.go # 顶层View()分发
├── cmd/
│ ├── txtest/ # 端到端打包→签名测试CLI
│ └── v4listener/ # 独立的Uniswap V4事件监听器
├── config/ # JSON配置加载/保存、类型定义
├── helpers/ # ENS解析、地址格式化、Uniswap V2/V4
├── rpc/ # 以太坊RPC客户端、EIP-4527交易打包
├── signer/
│ ├── signer.go # Go包:密钥管理、EIP-4527解码、ECDSA签名
│ └── eth_signer.py # 独立Python CLI(相同功能)
├── styles/ # Lip Gloss颜色和共享样式
├── views/ # 各页面渲染器
│ ├── wallets/
│ ├── details/
│ ├── settings/
│ ├── dapps/
│ ├── uniswap/
│ ├── terra/
│ └── signer/ # 签名器页面渲染器
└── webcam/ # 摄像头捕获和半块视频渲染
# RPC包测试(需要RPC端点)
ETH_RPC_URL="https://eth.llamarpc.com" go test ./rpc -v
# 所有测试
go test ./... -v
欢迎贡献!本项目重视:
在开始重大工作前,请先创建一个issue。
MIT许可证 - 详见LICENSE文件
构建工具:
灵感来源于自我主权理念和复古计算美学。
国内系统:您的终端,您的密钥,您的区块链。
| 按键 | 操作 |
|---|
↑/↓ | 选择签名密钥 |
s | 打开摄像头——自动签名检测到的第一个EIP-4527二维码 |
a | 从磁盘重新加载密钥 |
c | 清除当前结果 |
Esc | 返回账户页 |
| 命令 | 描述 |
|---|
python signer/eth_signer.py --generate-keys | 生成新的ECDSA密钥对 |
python signer/eth_signer.py --derive-address 0x... | 从私钥推导地址 |
python signer/eth_signer.py --private-key 0x... --to 0x... --value 1000000000000000000 | 签名交易 |
python signer/eth_signer.py --scan | 摄像头扫描:检测并签名EIP-4527二维码 |
python signer/eth_signer.py --add-key --private-key 0x... --name "Wallet" | 向存储中添加密钥 |
python signer/eth_signer.py --list-keys | 列出存储的地址 |