2023.02 - 2023.08 SOLO

STELSI Wallet

기획안을 분석하고 Unity -> Flutter로 스택 전환을 주도. 이더리움 HD 지갑 + 스마트 컨트랙트 연동 앱을 1인 개발하여 양대 스토어에 출시.

역할 스택 전환 판단, 설계, 구현, 출시 (1인)
1인 (출시 전담)
스택
FlutterDartRiverpodweb3dartBIP39/BIP44SQLiteGoRouterFreezed
링크

배경

기획안 분석 결과 Realtime Rendering 기술이 불필요함을 파악하고, 최적화된 앱 개발을 위해 Unity 대신 .NET MAUI와 Flutter로 각각 MVP를 구현하여 성능 및 개발 효율을 비교 검증한 후 Flutter를 최종 채택했습니다. MAUI 기반 MVP 역시 MVVM 패턴과 5계층 프로젝트 분리를 적용하여 실무 수준의 완성도로 구현 및 검증을 진행했습니다. 이를 바탕으로 시니어 개발진 대상 시연 및 기술 리뷰를 진행하여 스택 전환에 대한 타당성을 입증하고, 리스크에 대비한 폴백 플랜(Fallback Plan)을 함께 제시하여 기술 도입을 성공적으로 주도했습니다.

트랜잭션 시연

Web3 레이어

Web3 클래스가 BIP39(니모닉) -> BIP32/BIP44(HD 키 파생) -> web3dart(온체인 통신)을 래핑합니다.

  • HD 지갑 - 하나의 시드에서 m/44'/60'/0'/0/N 경로로 10개 주소를 파생. 개인키/공개키/주소를 인덱스로 관리
  • 스마트 컨트랙트 3종 - ERC-20 토큰(STELSI), ERC-1155 NFT(Base), Builder(조합/분해). ABI JSON 로드 -> DeployedContract 초기화
  • Read/Write 분리 - eth_read.dart(잔액, 가스비, 영수증 조회), eth_write.dart(ETH 전송), contract_read.dart(토큰 잔액, NFT 소유, Approve 확인), contract_write.dart(토큰 전송, NFT 조합/분해)
  • 네트워크 전환 - Ethereum Mainnet / Goerli Testnet 런타임 스위칭

보안

  • 시드 구문을 FlutterSecureStorage(Android EncryptedSharedPreferences)에 암호화 저장
  • 서버 인증용 시드 해시는 SHA-256 -> MD5 이중 해싱
  • 앱 진입 시 6자리 Passcode 잠금. Access/Refresh Token을 Secure Storage에 분리 저장

아키텍처

  • 상태 관리 - Riverpod Notifier + AsyncNotifier. Wallet, User, Network, NFT, Transaction 각각 독립 Provider
  • 라우팅 - GoRouter로 30+ 페이지를 선언적으로 관리
  • 모델 - Freezed + json_serializable로 불변 DTO 생성
  • 로컬 DB - SQLite(sqflite)로 지갑, 트랜잭션, NFT 조합 데이터를 영속 저장

성과

App Store, Google Play 양대 스토어에 출시. 모든 작업 과정을 Confluence에 문서화. 이후 회사 방향이 메타버스 월드 쪽으로 무게가 실리면서 추가 개발이 중단되었습니다.

STELSI Wallet - Google Play 스토어 등록 화면. 500+ 다운로드