Skip to content

[Feat] Trezor 지갑 추가, 서명 가능하도록 기능 추가 #708

Description

@ella-noncelab

🚀 Feature - Trezor 지갑 추가, 서명 가능하도록 기능 추가

📝 Description

구현 방식 설계 및 테스트 중...
이 과정에서 SubTask와 중간 결과물, 예상 시간, Due Date가 결정될 예정입니다.

Bitbox 구현이 완료되면 많은 코드들을 재활용할 수 있을 것으로 판단됩니다.

안드로이드만 사용 가능 - HID

HID가 담당하는 것

connect
write 64-byte packet
read 64-byte packet
disconnect

Bitbox 코드 재사용 vs 재사용 불가 범위

재사용 가능:
HidTransport
USB 권한 처리
device scan/open/close
endpoint read/write
64-byte read/write loop

새로 구현 필요:
Trezor packet framing
Trezor .proto Dart generation
Trezor message type mapping
Trezor client state machine
Trezor Bitcoin signing flow

남은 작업의 핵심

  • Trezor의 .proto 파일을 Dart 코드로 생성
  • TrezorClient 구현 (Initialize, Features, GetPublicKey, SignTx 등)
  • Trezor의 서명 플로우(TxRequest ↔ TxAck) 구현

iOS - 블루투스로 통신

1. 재사용 가능성이 높은 부분:

Flutter App
  ↓
BLE Transport
  ↓
read / write
  ↓
device connection lifecycle

BitBox iOS BLE 연동에서 만든 아래 코드는 재사용 가능성이 큽니다.
재사용 가능:

  • BLE 스캔
  • 기기 필터링 구조
  • 연결 / 재연결 처리
  • MTU / characteristic read-write 처리
  • notify 구독
  • timeout / retry 처리
  • Flutter ↔ iOS native bridge
  • 연결 상태 UI
  • 권한 요청 UI
  • background/foreground lifecycle 처리

2. 일부 수정해서 재사용 가능한 부분

BitBox와 Trezor는 둘 다 BLE를 써도, GATT service / characteristic UUID가 다를 가능성이 높습니다.
수정 필요:

  • BLE service UUID
  • characteristic UUID
  • packet size
  • write type
  • notify response parsing
  • pairing/bonding 방식
  • 기기 검색 조건
  • 모델명 / firmware version 판별

BleTransport 인터페이스는 재사용하되, 실제 구현은 분리하기

abstract class HardwareBleTransport {
  Future<void> connect();
  Future<void> write(Uint8List data);
  Stream<Uint8List> get messages;
  Future<void> disconnect();
}
class BitBoxBleTransport implements HardwareBleTransport {}

class TrezorBleTransport implements HardwareBleTransport {}

3. 새로 개발해야 하는 부분

BLE Transport 재사용 가능
Trezor THP 신규 개발 필요
Trezor protobuf 신규 개발 필요
Trezor signing flow 신규 개발 필요

Image

✅ To Do List

UI/UX는 아래 작업 과정 중 논의하면서 확정하겠습니다

  • 안드로이드: HID / 지갑 연결 통신 규칙 확인 (Bitbox와 비교)
  • iOS: 블루투스 / 지갑 연결 통신 규칙 확인 (Bitbox와 비교)
  • 안드로이드 서명
  • iOS 서명

📚Etc

특이사항

Metadata

Metadata

Assignees

Labels

💫 feat기능 구현 이슈

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions