Coconut Wallet

셀프 커스터디
아직도 어렵다면

지금, 코코넛 월렛으로 쉽게 시작하세요

코코넛 볼트 보기

기본 기능부터 고급 기능까지,
가장 직관적인 사용성을 담았습니다

01
다양한 하드월렛을 코코넛 월렛에 연결해 보세요
02
복잡한 트랜잭션도 간단하게 만들 수 있어요
03
가짜 잔액 기능으로 비트코인을 숨겨보세요
04
앱 전환 시 화면을 가려 프라이버시를 지켜요
05
거래에 메모를 남기고 UTXO에 태그를 달아보세요
06
RBF/CPFP 같은 고급 기능도 손쉽게 사용하세요
07
내 풀노드를 코코넛 월렛과 연동하세요
08
보다 직관적으로 UTXO를 관리하세요

코코넛 월렛 사용자들의 이야기

쉬운 용어: 어색한 번역체가 아닌, 자연스러운 표현과 설명으로 어려운 용어 잘 몰라도 괜찮음 신박+귀욤: ... 가짜 잔액 설정 등 신박하고 귀여운 요소들이 눈에 띔

X(트위터)에서 보기 →

블루월렛 사용하지 마세요 '서명 시점에 공격자 주소로 대체될 수 있는 공격 발견' 근데 코코넛 월렛 정말 잘 만든 것 같네요

X(트위터)에서 보기 →

코코넛 월렛은 그냥 토스에서 계좌이체만큼 쉽고 간편합니다. ... UTXO 나누기, 합치기 비트코인을 위로 올렸다 아래로 내렸다 이랬다가 저랬다가 내 마음대로 하기가 매우 편합니다.

X(트위터)에서 보기 →

이 아이콘 만드신 개발자(디자이너)분은 스스로 뿌듯해 하실듯. 제가 봐도 엄청 귀엽네요... 보기 전용 지갑이라 지갑이 눈을 땡그랗게 뜨고, 추가니까 '+' 있고,

X(트위터)에서 보기 →

이용할수록 코코넛 월렛 진짜 잘 만든 것 같아요. 그냥 별생각 없이 앱들 이용하는데 어느 순간 생각해 보니 다른 것보다 더 사용하고 있더라고요?

X(트위터)에서 보기 →

코코넛 월렛이 나온 이후 셀프커스터디가 어렵다고 말하는 건 진짜 지능의 문제가 아닐까 싶습니다. UI가 진짜 '친절' 합니다. 나이드신 분들도 쉽게 하실 수 있을 정도입니다. 이걸 쓰고도 못하겠다고 하는 건 어려운 게 아니라 할 의지가 없는 겁니다.

X(트위터)에서 보기 →

다운로드 받아서 사용해본 결과 • UI 깔끔함 • 하드월렛 별로 사용법 적혀 있음 • 한국어임⭐️ • 비트코인 ONLY🔥 • 용어집 포함: 간단한 용어 설명 • 고객센터 접근 쉬움: POW 커뮤니티 및 디스코드 연동 • 니모닉 문구 단어집 포함

X(트위터)에서 보기 →
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } } import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } } import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } } import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } } import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } } import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:coconut_wallet/repository/shared_prefs_repository.dart'; import 'package:coconut_wallet/utils/logger.dart'; import 'package:provider/provider.dart'; import 'app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final RootIsolateToken token = RootIsolateToken.instance!; BackgroundIsolateBinaryMessenger.ensureInitialized(token); if (Platform.isAndroid) { try { const MethodChannel ch = MethodChannel('android'); final int v = await ch.invokeMethod('getSdkVersion'); if (v != 26) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } } on PlatformException catch (e) { Logger.log('Failed to get platform version'); } } } class CoconutApp extends StatelessWidget { const CoconutApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => WalletProvider()), ChangeNotifierProvider(create: (_) => NodeProvider()), ], child: MaterialApp( title: 'Coconut Wallet', theme: CoconutTheme.light(), darkTheme: CoconutTheme.dark(), home: const HomePage(), ), ); } }
Coconut App
DON'T TRUST, VERIFY

오픈소스,
그 자체로
신뢰에 기반한

비트코인 지갑이라면 무조건 오픈소스여야 한다고 믿습니다. 저희를 맹목적으로 믿어달라고 강요하지 않겠습니다. 대신 직접 확인하고 검증해 주세요.

Not your keys,
Not your bitcoin

지금 바로 셀프 커스터디 하세요!

App Store와 Google Play를 통해서만 공식 배포됩니다