Rand Protocol
모바일

Rand Wallet for Android

네이티브 라이브러리로 로드되는 공유 Rust 지갑 코어 위에 구축한 네이티브 Java 앱입니다. 지출 키는 Android의 Keystore가 보관하는 키로 암호화되고, 백업은 꺼져 있으며, 릴리스 빌드는 HTTPS로만 통신합니다.

Google Play 등록이 대기 중입니다. 심사를 통과할 때까지는 아래 다운로드에서 0.8.0 버전을 설치하시거나 소스에서 빌드하십시오.

Rand Wallet 아이콘
빌드 환경
Java
배포 경로
Google Play, 우선 오픈 테스트로 제공
요구 사항
Android 8(API 26) 이상, arm64 또는 x86_64
전송
휴대폰에서 증명하거나, RandProtocol 프로버를 통해 증명합니다
다운로드

버전 0.8.0

파일은 GitHub의 v0.8.0 릴리스에 첨부되어 있습니다. 여기의 버튼은 해당 파일로 연결되는 링크이며, 이 사이트에서는 아무것도 제공하지 않습니다.

  1. 휴대폰에서 파일을 열고 Android가 요청할 때 설치를 허용하거나, 컴퓨터에서 해당 파일에 adb install을 실행하십시오.
  2. 이 패키지는 이 프로젝트의 자체 키로 서명되어 있습니다. 확인하려면 apksigner verify --print-certs가 SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52를 출력해야 합니다.
  3. Google Play는 자체 키로 서명하므로, 등록이 공개되면 Android가 그 버전을 설치하기 전에 이 사본을 삭제하도록 요청합니다. 먼저 Settings에서 키 파일을 내보내십시오.
Android 패키지(.apk)
arm64 및 x86_64 · 11.9 MB
다운로드
rand-wallet-0.8.0-android.apk
SHA-256 400d5c4873cc70c7893a4a0bed36eecf261bd1c9bb9578c6544d8ffbf7e976d7
다운로드한 파일 확인
SHA256SUMS
# SHA256SUMS를 파일과 같은 폴더에 내려받은 상태에서
shasum -a 256 -c SHA256SUMS --ignore-missing     # macOS
sha256sum -c SHA256SUMS --ignore-missing         # Linux

# 또는 파일 하나의 해시 합계를 출력하여 위의 값과 비교하십시오
shasum -a 256 rand-wallet-0.8.0-android.apk

합계가 일치하면 해당 파일이 게시된 파일과 같다는 뜻입니다. 그 파일이 소스에서 빌드되었다는 뜻은 아닙니다. 아직은 빌드가 비트 단위로 재현되지 않으므로, 이를 확인해야 한다면 직접 빌드하십시오.

전송

휴대폰에서 증명하거나, RandProtocol 프로버를 통해 증명합니다

메모리가 약 8 GB인 휴대폰에서는 앱이 기기에서 직접 전송 증명을 생성합니다. 실행 중에는 알림과 함께 포그라운드 서비스로 동작하므로, 다른 앱으로 전환해도 중단되지 않습니다.

번들 증명(bundle proof)은 최대 약 6.2 GB까지 메모리를 사용합니다. 메모리가 이보다 적은 휴대폰에서는 증명 도중 Android가 앱을 중단시키므로, 검토 단계에서 해당 기기의 실제 수치와 함께 경고를 표시합니다. 이 경우 휴대폰은 기본적으로 RandProtocol 프로버를 사용하거나, https로 연결된 사용자 본인의 rand-prover(Settings → Prover)를 사용하며, 프로버가 증명을 생성하는 동안 휴대폰은 전송 트랜잭션을 구성합니다.

증명을 생성할 수 없는 기기는 기본적으로 RandProtocol 프로버를 사용합니다. 이는 검증자(validator)가 운영하는 몇 대의 머신(현재 4대, https://prover.randprotocol.org 하위)이며 수수료는 없습니다. 0.6.9부터 각 프로버는 고유한 키를 가지며 지갑이 이를 고정(pinning)하고, 지갑은 첫 전송 전에 이 사실을 알립니다. 전송을 증명하는 머신은 지갑의 조회 키(viewing key)와 일회용 솔트(salt)를 받습니다. 해당 운영자는 지갑의 전체 내역, 즉 수신하고 송신한 모든 결제를 읽을 수 있지만 지출은 할 수 없습니다. 지출 키는 기기를 떠나지 않으며, 작은 승인 증명은 기기에서 직접 생성합니다. 더 높은 프라이버시를 원하시면 Settings → Prover에서 본인의 프로버를 선택하십시오. 이 프로버가 항상 우선 사용됩니다. 지갑은 모든 증명을 제출하기 전에 검증합니다.

prover 페어링 단계별 안내: docs/prover.md.

내 키

키가 보관되는 위치

지출 키는 지갑의 유일한 비밀입니다. 계정도 없고 사본을 보관하는 서버도 없습니다. 키를 잃으면 아무도 복구할 수 없으므로, 지갑이 키를 보여 줄 때 저장해 두십시오.

지출 키
EncryptedSharedPreferences에 보관됩니다. Android Keystore가 보유한 마스터 키로 AES-256-GCM 암호화합니다. 조회 키는 저장되지 않으며 필요할 때 파생됩니다.
잠금 해제
생체 인식 프롬프트를 사용하며, 대체 수단으로 기기 자격 증명을 사용할 수 있고, Settings에 지정한 시간이 지나면 자동으로 잠깁니다.
백업
비활성화되어 있으므로, 볼트가 Google의 백업 서비스를 통해 휴대폰 밖으로 나가는 일은 없습니다.
노트
노트와 각 결제의 트랜잭션 키를 담은 앱 전용 캐시이며, 재스캔으로 다시 구축됩니다. 릴리스 빌드는 평문 HTTP를 거부합니다.
기타

앱에서 Swap

0.7.1부터 휴대폰 앱에도 확장 프로그램과 데스크톱 앱에 있는 Swap 화면이 제공됩니다. 지갑을 벗어나지 않고 durian.market 풀을 통해 RAND와 토큰을 거래할 수 있습니다. 프로그램 호출의 증명과 지출 승인은 휴대폰이 직접 생성하며, 이를 위해 약 1.5 GB의 메모리가 필요합니다. 대규모 증명은 RandProtocol 프로버가 생성합니다. 수령 금액은 정확히 확정되며, 풀의 상태가 먼저 변동되면 아무것도 전송되지 않고 새로운 견적을 받게 됩니다.

소스에서 빌드

또는 직접 빌드하기

  1. clients 저장소에서 디버그 APK를 빌드하여 adb로 설치하십시오. 휴대폰 또는 arm64나 x86_64 에뮬레이터(API 36)에 설치할 수 있습니다.
  2. 에뮬레이터에서 본인 컴퓨터의 노드는 http://10.0.2.2:8545입니다. 디버그 빌드는 이 주소와 localhost에 대해서만 평문 통신을 허용합니다.

툴체인: Rust 1.98.1, 저장소에 고정되어 있으며 rustup이 설치합니다. 빌드 가이드는 클린 머신에서 시작하여 모든 클라이언트를 다룹니다. 소스 디렉터리: android/, core/.

Rand Wallet for Android
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git && cd clients
git checkout v0.8.0 && git submodule update --init   # 릴리스 버전; core/vendor/fullnode @ v0.8.0 (c0878c3)
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/ (JDK 17, SDK 36, NDK 27)
cd android && ./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk
모든 클라이언트

모든 플랫폼에서 지원하는 기능

지갑 만들기
기기에서 생성한 지출 키는 저장할 수 있도록 한 번만 표시되며, 이 키에서 rand1… 주소가 파생됩니다. 기존 키를 가져올 수도 있고 rand CLI의 wallet.key.json을 가져올 수도 있습니다. 모든 클라이언트가 동일한 파일을 내보냅니다.
받기와 보내기
잔액은 사용자의 키로만 열 수 있는 note의 집합입니다. 지갑은 커밋먼트 트리를 스캔하여 이를 찾습니다. RAND 또는 등록된 모든 RPL 토큰의 전송은 증명으로 승인되는 4-in-4-out 번들 하나로 이루어집니다. 송신자, 수신자, 금액, 이동한 자산이 무엇인지 아무도 알 수 없습니다.
Faucet
공개 faucet이 열려 있는 testnet에서는 한 번의 탭으로 100 RAND가 사용자만 열 수 있는 note로 발행됩니다.
공개할 내용만 직접 선택
viewing key를 복사하여 RandScan의 My history를 열면 보내거나 받은 모든 note를 볼 수 있으며, 개별 결제의 트랜잭션 키를 복사하면 해당 결제만 정확히 공개할 수 있습니다. 탐색기는 브라우저에서 복호화하며 키를 어디로도 전송하지 않습니다.

조회 키와 트랜잭션 키는 randscan.org에서 열립니다.

testnet 안내

전송하기 전에

체인
공개 엔드포인트는 2026년 10월 12일 10:31 UTC부터 운영 중인 chain 21을 제공합니다(fullnode v0.8.0 기준으로 생성). 지갑 코어는 fullnode v0.8.0 (c0878c3)을 벤더링하며 다른 체인은 거부합니다. chain 21은 constraint set 9를 실행하므로 0.7.x 지갑은 이 체인에서 전송할 수 없고, 이 릴리스는 chain 20에서 전송할 수 없습니다. 키와 주소는 그대로 이어집니다. chain 20을 스캔한 지갑은 다른 체인 배너를 한 번 표시하며, chain 21의 제네시스부터 다시 스캔합니다. 브리지 입금과 출금에는 zUSD로 0.1% 수수료가 부과되며, 지갑은 출금 전에 이 금액을 표시합니다.
RPC 엔드포인트
설정 → 네트워크. 기본값은 https://rpc.randprotocol.org이며, 접근할 수 있는 모든 rand-node RPC를 사용할 수 있고 저장된 URL은 유지되기 전에 검증됩니다
증명 생성
번들 증명은 메모리 사용량이 최대 약 6.2 GB에 이르며 노트북 CPU에서 약 1분이 걸립니다
상태
실험적인 testnet 소프트웨어입니다. 감사를 받지 않았습니다. testnet의 RAND는 실질 가치가 없습니다
라이선스
GPL-3.0-only이며, 모든 클라이언트가 링크하는 full node 크레이트와 동일합니다
다른 클라이언트

하나의 지갑, 모든 플랫폼

어디서나 동일한 키 파일, 주소 형식, 규칙을 사용합니다. 여기서 만든 지갑은 다른 어떤 클라이언트와 rand CLI에서도 가져올 수 있습니다.