
@charmbracelet을 사용하여 세련된 이더리움 브라우저 만들기
아름다운 터미널 기반 이더리움 지갑 및 스마트 컨트랙트 브라우저로, 주권, 보안, 스타일을 위해 제작되었습니다.
━━━━━━━━━━━━━━━━━━━━
domestic system
━━━━━━━━━━━━━━━━━━━━

The Domestic System은 이더리움(EVM) 계정 및 스마트 컨트랙트를 탐색하기 위해 설계된 터미널 사용자 인터페이스(TUI)입니다. 터미널 기반 블록체인 상호작용을 실용적일 뿐만 아니라 바람직하게 만드는 세 가지 핵심 원칙을 통합합니다.
클라이언트 전용. 중앙 서버 없음. 당신과 블록체인 뿐입니다.
The Domestic System은 선택한 이더리움 RPC 엔드포인트에 직접 연결됩니다. 중개자 없음, 분석 없음, 추적 없음. 블록체인과의 상호작용은 직접적이고 중개되지 않습니다. 이것이 Web3가 의도한 방식입니다.
개인 키 관리 불필요. 하드웨어 지갑 지원.
당신의 개인 키는 이 애플리케이션에 절대 닿지 않습니다. 모든 트랜잭션은 EIP-4527에 따라 QR 코드로 생성되며, 하드웨어 지갑 장치로 서명하도록 설계되었습니다. 계정을 확인하고, 트랜잭션을 준비한 후 하드웨어 지갑에서 안전하게 서명하세요.
Charm.sh로 구축. 터미널 인터페이스, 아름답게 완성.
멋진 Charm.land 생태계(Bubble Tea, Lip Gloss, Huh)를 사용하여 The Domestic System은 CLI가 단조로울 필요가 없음을 증명합니다. 풍부한 색상, 부드러운 상호작용, 세심한 UI 디자인이 블록체인 상호작용에 레트로-미래적 미학을 더합니다.
이 세 가지 원칙(주권, 보안, 미학)은 터미널에서 완벽하게 수렴됩니다. 터미널 애플리케이션은:
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에 저장합니다.
"s" 설정 페이지에서 이더리움 RPC 엔드포인트를 추가하거나 ETH_RPC_URL 환경 변수를 설정하세요:
export ETH_RPC_URL="https://eth.llamarpc.com"
go run .
main.go에서 토큰 관심 목록을 편집하여 표시할 ERC-20 토큰을 맞춤 설정하세요 (UI 설정은 추후 제공 예정).
x): 서명 키 관리, 웹캠으로 EIP-4527 QR 코드 스캔, 트랜잭션 서명a를 눌러 새 지갑 추가활성 계정(★로 표시)은 트랜잭션에 사용할 지갑을 결정합니다. 계정 전환 방법:
또는 지갑 페이지로 이동하여 아무 지갑에서 Enter를 누르면 세부 정보를 보고 활성화할 수 있습니다.
The Domestic System은 TUI 내부에서뿐만 아니라 터미널에서 독립적으로 사용할 수 있는 완전한 EIP-4527 트랜잭션 서명 워크플로우를 포함합니다.
TUI (모든 페이지) → 미서명 트랜잭션 패키징 → EIP-4527 QR 코드 표시
↓
서명자 페이지가 웹캠으로 QR 스캔
↓
UR 디코딩 → 저장된 키로 서명
↓
원시 서명된 트랜잭션 hex 표시
키는 ~/.charm-wallet-private-keys.json에 저장됩니다 (모드 600, 저장소 외부). 첫 실행 시 NotForProduction 데모 키가 자동으로 부트스트랩되고 해당 주소가 ~/.charm-wallet-config.json에 등록됩니다.
{
"private_keys": [
{
"address": "0x29c73B201bEE86C4d1Fe4f598C4355Bb210251e3",
"name": "NotForProduction",
"private_key": "0xc0054..."
}
]
}
계정 페이지에서 x를 눌러 서명자를 엽니다. 그런 다음:
서명된 트랜잭션(원시 hex, tx 해시, 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 — Pack unsigned transaction (EIP-4527)
─────────────────────────────────────────────
Transaction fields: { "from": "0x29c7...", "to": "0xd8dA...", ... }
UR: ur:eth-sign-request/onadtpdagd...
STEP 2 — Decode + sign with stored key
───────────────────────────────────────
Decoded transaction: { "from": "0x29c7...", "value": "0.001000 ETH", ... }
Signed transaction: { "txHash": "0x5989...", "raw_transaction": "0xf86b...", ... }
✓ Round-trip complete
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 웹소켓용
이제 애플리케이션 머신에서 실행 중인 애플리케이션이 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 # Entry point — wires Bubble Tea program
├── model.go # App state struct + Init()
├── update.go # All Update() message handlers
├── view.go # Top-level View() dispatch
├── cmd/
│ ├── txtest/ # End-to-end pack → sign test CLI
│ └── v4listener/ # Standalone Uniswap V4 event listener
├── config/ # JSON config load/save, type definitions
├── helpers/ # ENS resolution, address formatting, Uniswap V2/V4
├── rpc/ # Ethereum RPC client, EIP-4527 transaction packaging
├── signer/
│ ├── signer.go # Go package: key management, EIP-4527 decode, ECDSA sign
│ └── eth_signer.py # Standalone Python CLI (same functionality)
├── styles/ # Lip Gloss colors and shared styles
├── views/ # Per-page renderers
│ ├── wallets/
│ ├── details/
│ ├── settings/
│ ├── dapps/
│ ├── uniswap/
│ ├── terra/
│ └── signer/ # Signer page renderer
└── webcam/ # Camera capture and half-block video rendering
# RPC 패키지 테스트 (RPC 엔드포인트 필요)
ETH_RPC_URL="https://eth.llamarpc.com" go test ./rpc -v
# 모든 테스트
go test ./... -v
기여를 환영합니다! 이 프로젝트는 다음을 중시합니다:
주요 작업을 시작하기 전에 이슈를 열어주세요.
MIT License - 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 | 저장된 주소 목록 표시 |