
@charmbraceletを使用してスタイリッシュなEthereumブラウザを作成
美しく、ターミナルベースのEthereumウォレット兼スマートコントラクトブラウザ。主権、セキュリティ、そしてスタイルのために構築されました。
━━━━━━━━━━━━━━━━━━━━
domestic system
━━━━━━━━━━━━━━━━━━━━

The Domestic Systemは、Ethereum(EVM)アカウントとスマートコントラクトをブラウジングするためのターミナルユーザーインターフェース(TUI)です。ターミナルベースのブロックチェーンインタラクションを実用的であるだけでなく、好ましいものにする3つの核心的な原則を統合しています。
クライアントサイドのみ。中央集権サーバーなし。あなたとブロックチェーンだけ。
The Domestic Systemは、あなたが選択したEthereum RPCエンドポイントに直接接続します。仲介者はありません。分析もトラッキングもありません。ブロックチェーンとの対話は直接的で仲介がありません。これこそがWeb3の本来あるべき姿です。
秘密鍵管理なし。ハードウェアウォレット対応。
あなたの秘密鍵はこのアプリケーションに触れることはありません。すべてのトランザクションは、ハードウェアウォレットデバイスでの署名用に設計されたEIP-4527に従ってQRコードとして生成されます。アカウントを表示し、トランザクションを準備し、ハードウェアウォレット上で安全に署名します。
Charm.shで構築。ターミナルインターフェースを美しく。
美しいCharm.landエコシステム(Bubble Tea、Lip Gloss、Huh)を使用して、The Domestic SystemはCLIが簡素である必要はないことを証明します。豊かな色彩、滑らかなインタラクション、思慮深いUIデザインが、ブロックチェーンインタラクションにレトロフューチャーな美学をもたらします。
これら3つの原則—主権、セキュリティ、美学—はターミナルで完璧に融合します。ターミナルアプリケーションは:
The Domestic Systemは、ニッチなユースケースのユニークな交差点を占め、制御、セキュリティ、そして技巧を重視する人々にサービスを提供します。
git clone https://github.com/yourusername/domestic-system.git
cd domestic-system
go build
go run .
The Domestic Systemは設定を ~/.charm-wallet-config.json に保存します。
"設定"ページでEthereum RPCエンドポイントを追加するか、ETH_RPC_URL環境変数を設定します:
export ETH_RPC_URL="https://eth.llamarpc.com"
go run .
表示するERC-20トークンをカスタマイズするには、main.go内のトークンウォッチリストを編集します(UI設定は近日公開予定)。
x キー):署名鍵の管理、ウェブカメラでEIP-4527 QRコードをスキャン、トランザクションに署名a キーを押して新しいウォレットを追加アクティブなアカウント(★で表示)がトランザクションに使用するウォレットを決定します。アカウントを切り替えるには:
または、ウォレットページに移動し、任意のウォレットにEnterキーを押して詳細を表示し、アクティブ化します。
The Domestic Systemには、TUI内でもターミナルから独立しても使用できる、完全なEIP-4527トランザクション署名ワークフローが含まれています。
TUI(任意のページ) → 未署名トランザクションをパッケージ → EIP-4527 QRコードを表示
↓
署名者ページがQRをウェブカメラでスキャン
↓
URをデコード → 保存された鍵で署名
↓
生の署名済みトランザクションヘックスを表示
鍵は ~/.charm-wallet-private-keys.json(モード 600、リポジトリ外)に保存されます。初回実行時に NotForProduction デモ鍵が自動的にブートストラップされ、そのアドレスが ~/.charm-wallet-config.json に登録されます。
{
"private_keys": [
{
"address": "0x29c73B201bEE86C4d1Fe4f598C4355Bb210251e3",
"name": "NotForProduction",
"private_key": "0xc0054..."
}
]
}
アカウントページで x キーを押して署名者を開きます。その後:
署名済みトランザクション(生の16進数、トランザクションハッシュ、r/s/v)はスキャン直後に表示されます。
signer/eth_signer.py)Python署名者はTUIなしで独立して動作します。依存関係を一度インストール:
pip install -r requirements.txt
すべての出力はJSONです。--scan モードはOpenCVウィンドウを開き、ライブカメラフィードを表示し、署名済みトランザクションを検出次第標準出力に出力します。
cmd/txtest)Goモジュールを直接使用して、パッケージ → デコード → 署名の完全なラウンドトリップを実行します:
# オフライン(ハードコードされたテストパラメータ — RPC不要)
go run ./cmd/txtest
# ライブのnonce/gasPrice/chainIdをRPCエンドポイントから取得
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 #for http
ssh -N -L 8546:localhost:8546 user@node_machine_ip_address #for ws websocket
アプリケーションマシンで実行中のアプリケーションは、http://localhost:8545 経由でEthereumノードのRPCにアクセスできるようになります。
uniswap_v4_listener.go 内)ターミナルから以下のように実行できます: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/ # Ethereum 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
貢献は大歓迎です!このプロジェクトは以下を重視します:
主要な作業を開始する前に、イシューを開いてください。
MITライセンス — 詳細はLICENSEファイルを参照
以下のライブラリを使用して構築:
自己主権の精神とレトロコンピューティングの美学に触発されて。
The Domestic System: あなたのターミナル、あなたの鍵、あなたのブロックチェーン。
| キー | アクション |
|---|
↑/↓ | 署名鍵を選択 |
s | ウェブカメラ起動 — 検出した最初のEIP-4527 QRを自動署名 |
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 QRコードを検出して署名 |
python signer/eth_signer.py --add-key --private-key 0x... --name "Wallet" | 鍵をストアに追加 |
python signer/eth_signer.py --list-keys | 保存されたアドレスを一覧表示 |