작업 중

작업 중: MainNet에 앞서 이 사이트를 구축하고 있습니다. 세부 내용은 변경될 수 있습니다.

이 사이트는 아직 구축 중입니다

ZooBC는 공개적으로 개발되고 있습니다. 여기서 보시는 내용은 최신이며 정직하지만, 완성된 것은 아닙니다. 최종 입장이 아니라 현재의 상태로 읽어 주세요.

MainNet까지 문구, 구조, 이미지, 수치 등 많은 것이 바뀔 것입니다. 일부 페이지는 임시로 채워 둔 상태입니다.

더 넓은 ZooBC 생태계는 단계적으로 도입됩니다. 지갑, 익스플로러, 커뮤니티 채널은 MainNet이 다가오면서 하나씩 열리며, 이 사이트도 함께 성장합니다.

내용이 잘못되었거나, 깨져 보이거나, 오해의 소지가 있는 부분이 있으면 알려 주세요. 지금의 피드백이 나중의 매끄러운 출시보다 저희에게 더 큰 가치가 있습니다.

ZOOBC / 매뉴얼

ZooBC 지갑 사용자 매뉴얼

지갑 매뉴얼

V0.36 매뉴얼을 바탕으로 지갑 V0.51에 맞춰 다시 작성했습니다. 용어 변경: 체인에서 game/games가 app/apps로 바뀌었으므로, 엔드포인트는 /api/v1/apps이고 키는 app_type입니다.

버전 V0.36 · 2026년 7월

이 매뉴얼은 ZooBC 지갑의 모든 화면, 탭, 필드, 트랜잭션 유형을 설명합니다. 지갑은 브라우저 안에서만 실행되는 단일 HTML 파일입니다. 키는 기기를 떠나지 않고, 모든 트랜잭션은 로컬에서 생성되고 서명되며, 완성된 서명 바이트만 네트워크로 전송됩니다.


목차

  1. 핵심 개념
  2. 시작하기
  3. 기본 인터페이스
  4. 홈: 대시보드, 할 일, 진행 중, 활동
  5. 지갑: 보내기, 받기, 입금, 출금, 예약, 다중 서명, 정책
  6. 자산: 토큰, 파일, 거래소, 마켓플레이스
  7. 소셜: 연락처, 온라인, 채팅, 통화
  8. 비즈니스: 청구서, 양식, 공증
  9. 앱: 아케이드
  10. 고급: 키와 시드, 종이 지갑, 제출
  11. 시스템: 설정, 노드, 네트워크, 게이트웨이, 릴레이, 거버넌스
  12. 트랜잭션 참조
  13. 문제 해결
  14. 용어집

1. 핵심 개념

1.1 코인과 단위

네이티브 코인은 ZBC입니다. 온체인에서는 모든 금액이 아토믹 단위로 저장됩니다: 1 ZBC = 100,000,000 아토믹(10⁸). 지갑은 항상 사람이 읽기 쉬운 금액을 보여 주고, 입력과 전송 시점에 변환합니다. 발행된 토큰은 자체 소수 자릿수(0–8)를 가지며, 마찬가지로 기본 단위로 저장됩니다.

1.2 계정과 주소 형식

지갑 하나로 여러 키 방식의 계정을 보유할 수 있습니다. 모든 계정은 온체인에 유형이 지정된 계정으로 저장됩니다: 4바이트 유형 접두사 + 키 자료. 지원 형식:

형식유형키 방식주소 모양
ZooBC0ed25519ZBC_XXXX_… (base32 + 체크섬)
Ethereum / BNB4secp256k1 + keccak0x… (같은 바이트, 다른 라벨)
Bitcoin 레거시 (P2PKH)5secp256k11…
Bitcoin P2SH6(수신 전용)3…
Bitcoin SegWit (P2WPKH)7secp256k1bc1q…
Bitcoin P2WSH8(수신 전용)bc1q… (긴 형식)
Bitcoin Taproot9BIP-340 schnorrbc1p…
데이터셋 보증금10(객체 임대료 계정)ZBS_…
Solana11ed25519base58 공개 키
Polkadot12sr25519 (Schnorrkel)SS58
Cardano13ed25519addr1…
Ripple14secp256k1r…
Tron15secp256k1 + keccakT…
Tezos16ed25519tz1…

어떤 형식이든 ZooBC 체인에서 보내고 받을 수 있습니다. Bitcoin 형식 계정은 자신의 Bitcoin 키로 ZooBC 트랜잭션에 서명합니다. 주소는 원래 체인과 정확히 같은 방식으로 도출되므로, 그 체인에서 브리지로 들어온 입금은 미러링된 계정에 자동으로 반영됩니다(입금 참조).

도출 경로(BIP-39 구문 기준): ZooBC m/44'/883'/account' (SLIP-0010 ed25519), ETH/BNB는 BIP-44 coin 60, BTC는 레거시/SegWit/Taproot에 각각 BIP-44/84/86, Solana m/44'/501'/account', Cardano coin 1815, Tezos coin 1729, Polkadot은 substrate mini-secret 도출을 사용합니다.

1.3 트랜잭션, 수수료, 에스크로

체인 위의 모든 동작은 유형 번호, ZBC 수수료, 선택적 메시지, 선택적 에스크로 래퍼(승인자 + 기한 + 커미션 + 지시 사항)를 가진 서명된 트랜잭션입니다. 기본 네트워크 수수료는 0.05 ZBC입니다(기본 0.025 + 데이터를 담는 트랜잭션을 위한 여유분). 지갑이 이 값을 미리 채우고, 메시지가 크면 자동으로 올립니다. 전체 유형 목록은 12장에 있습니다.

1.4 게이트웨이, 노드, 릴레이

  • 노드는 체인을 검증합니다.
  • 게이트웨이는 지갑이 통신하는 웹 서버입니다. 지갑과 익스플로러를 제공하며, 하나 이상의 노드 앞단에서 동작합니다.
  • 릴레이는 게이트웨이가 운영하는 통화/접속 상태 서버로, 통화 신호와 온라인 상태를 전달합니다.
  • 아카이브 노드는 여기에 더해 전체 기록과 익스플로러 API를 제공합니다.

설정된 게이트웨이가 다운되면 지갑은 자동으로 장애 조치합니다: 현재 노드 → 내장 대체 노드 → 직접 추가한 노드(설정 → 노드) → 온체인 레지스트리에서 알게 된 게이트웨이 순입니다.

1.5 스토리지 임대료와 존속 객체

온체인에 기록된 데이터(데이터셋, 저장된 파일, 토큰)는 스토리지 임대료를 냅니다. 각 객체에는 그것을 생성한 트랜잭션에서 도출된, 자금을 넣을 수 있는 ZBS_ 보증금 주소가 있으며, 보증금이 바닥나면 객체가 정리될 수 있습니다. 어떤 객체든 수명을 연장할 수 있습니다(파일 → 객체 참조).

1.6 보안 모델

  • 복구 구문과 키는 절대 페이지를 벗어나지 않으며, 서명은 로컬에서 이루어집니다.
  • 기기 내 저장은 6자리 PIN으로 잠긴 암호화된 금고입니다(5회 잘못 입력하면 금고가 삭제되며, 복구 구문으로 복원할 수 있습니다).
  • 선택적으로 패스키로 잠금 해제(Face ID / Touch ID / Windows Hello).
  • 보기 전용 계정은 모든 것을 볼 수 있지만 서명할 수 없으며, 키가 필요한 페이지는 숨겨집니다.
  • 에어갭 모드는 오프라인에서 서명하고, 브로드캐스트 대신 JSON/QR로 내보냅니다.

2. 시작하기

2.1 열기 전에 파일이 진본인지 확인하세요

이 지갑은 브라우저에서 열고 복구 구문을 입력하는 단일 파일입니다. 가짜

사본은 겉모습도 똑같고 정상적으로 동작하다가, 어느 순간 여러분의 복구 구문을 다른

곳으로 보냅니다. 화면의 어떤 것도 경고해 줄 수 없습니다. 그때는 경고를 표시하는 주체가 바로 가짜 페이지이기 때문입니다.

그러니 열기 전에 파일을 확인하세요. 10초 정도면 됩니다.

쉬운 방법. 파일을 다운로드한 게이트웨이에서 /verify 페이지를 열고, 파일을 상자에 끌어다 놓으세요.

확인은 여러분의 브라우저 안에서 실행되며, 파일은 어디에도 업로드되지 않습니다.

터미널만 있으면 되는 방법. 해시는 파일의 지문입니다. 바이트 하나만 바꿔도

해시가 완전히 달라지며, 누구도 거꾸로 계산해 같은 지문을 가진

다른 파일을 만들 수 없습니다.


sha256sum "ZooBC Wallet.html"

출력된 값을 그 파일에 대해 공개된 해시와 한 글자씩 비교하세요.

그다음, 그 지문을 누가 알려 주었는지 따져 보세요. 이것이 중요한 부분이며, /verify 페이지는

이 점을 분명히 밝힙니다:

표시 내용의미
온체인해시가 릴리스 권한자에 의해 블록에 서명되어 기록되었습니다. 릴리스 권한자는 체인의 제네시스에 고정된 단 하나의 키로, 파일 해시를 등록할 수 있는 유일한 주체입니다. 모든 노드가 그 기록을 보유합니다. 웹사이트는 이를 바꾸거나, 위조하거나, 삭제할 수 없습니다.
이 게이트웨이가 보증함해시가 지금 보고 있는 웹사이트에서 나왔습니다. 손상된 다운로드나 허술한 위조품은 이것으로 걸러낼 수 있습니다. 하지만 그 웹사이트 자체가 공격자라면 도움이 되지 않습니다. 그 경우 파일과 지문이 모두 가짜이고 서로 완벽하게 일치하기 때문입니다.
온체인에서 철회됨권한자가 이 파일을 게시했다가 철회했습니다. 대개 파일이 침해되었거나 결함이 있는 것으로 드러났기 때문입니다. 이는 인식되지 않는 파일보다 나은 것이 아니라 더 나쁩니다. 체인이 바로 이 파일에 대해 구체적으로 할 말이 있다는 뜻이기 때문입니다. 파일을 삭제하고 최신 파일을 받으세요. 웹사이트가 여전히 이 파일을 제공한다면 의심을 거둘 이유가 아니라 더 의심해야 할 이유입니다.

돈이 걸린 일이라면 반드시 온체인 일치를 요구하세요. 게이트웨이가 자신의

다운로드를 스스로 보증하는 것은 증거가 아닙니다.

어떤 웹사이트도 신뢰하지 않고 확인하는 방법. 위의 모든 방법도 결국 누군가가 제공하는 페이지에서

실행됩니다. 그렇지 않은 확인을 원한다면 노드에 직접 물어보세요. 여러분이 직접 운영하는 노드를 포함해

어떤 노드든 됩니다. 명령 두 개면 충분합니다:


sha256sum "ZooBC Wallet.html"
curl -s https://zoobc.network/api/v1/release/list

파일의 해시가 그 목록에 있으면 릴리스 권한자가 게시한 파일입니다. 목록에

없다면, 어떤 웹사이트가 아무리 안심시켜도 그 파일에 복구 구문을 입력하는 것은 안전하지 않습니다.

애초에 어떤 키가 게시할 수 있는지도 물어볼 수 있습니다:


curl -s https://zoobc.network/api/v1/release/authority

zoobc.network는 MainNet이 아니라 공개 ZooBC TestNet 게이트웨이입니다. 그 게이트웨이를 신뢰하지 않고 검증하려면 호스트를 여러분의 노드로 바꾸세요.

체인에 기록되어 있으므로 모든 노드가 같은 답을 합니다. 서로 다른 사람이 운영하는

두 노드에 물어 비교해 보세요. 그것이 이 설계의 핵심이며, 드는 비용은 명령

하나가 더 늘어나는 것뿐입니다.

/verify가 릴리스 권한자 변경이 대기 중이라고 경고하면, 멈추고 그 이유를 확인하기 전까지는

그 사이트에서 다운로드한 어떤 것도 신뢰하지 마세요. 권한자는 그 페이지의 모든 주장 뒤에 있는

단 하나의 키이며, 그 키를 옮기자고 제안하는 것은 방금 그 키를 훔친 사람이 정확히 할 법한 일입니다.

계획된 교체일 가능성도 충분하지만, 문제의 웹사이트를 거치지 않는 채널을 통해

확인하세요. 침해된 사이트는 자신의 인계에 대해 기꺼이 여러분을 안심시킬 것이기 때문입니다.

ZooBC가 다른 지갑과 다른 언어로 확장될수록 이 점은 더 중요해집니다. 어느 파일이 진본인지 누군가의 말을 믿어야 할 필요는 절대 없어야 합니다. 체인은 바로 그럴 필요가 없도록 존재합니다.

2.2 첫 실행, 위험 고지

처음 실행할 때 소프트웨어 인터페이스 고지 및 사용자 위험 확인이 표시됩니다. 이를 수락해야 하며(또는 종료), 전체 서비스 약관은 언제든 푸터에서 볼 수 있습니다.

2.3 시작 화면

온보딩 카드에서 제공하는 항목:

  • 복구 구문 또는 비밀 키: 12/15/18/21/24단어 BIP-39 구문이나 64자리 hex 개인 키를 붙여 넣습니다. 눈 모양 버튼으로 표시하거나 가릴 수 있습니다.
  • 지갑 형식: ZooBC(기본값), Ethereum, BNB, Bitcoin, Solana, Polkadot, Cardano, Ripple, Tron, Tezos. Bitcoin의 경우 추가 선택기로 SegWit(bc1q…), Legacy(1…), Taproot(bc1p…) 중 하나를 고릅니다. 같은 구문이라도 형식마다 다른 주소가 만들어집니다.
  • 계정 #: 도출 인덱스를 고르는 스테퍼입니다(구문 하나로 여러 계정 사용).
  • 지갑 잠금 해제: 입력한 자격 증명으로 지갑을 엽니다.
  • 새 지갑 만들기: 새 구문을 생성합니다(아래 참조).
  • 백업 파일에서 복원: 암호화된 금고 백업(.json)을 불러옵니다. 저장할 때 사용한 PIN을 묻습니다.
  • 노드 설정 링크: 로그인하기 전에 게이트웨이 URL을 설정합니다.

2.4 새 지갑 만들기

  1. 구문 길이(12–24단어)를 고릅니다. 단어는 번호가 붙은 알약 모양으로 표시되며, 구문 복사, 번호 목록 복사, 새 구문 버튼이 있습니다.
  2. 구문이 유일한 백업이라는 경고가 표시됩니다. "복구 구문을 적어 두었습니다"에 체크하세요.
  3. 확인: 무작위로 정해진 몇몇 위치에 맞는 단어를 고릅니다.
  4. PIN 설정: 6자리 PIN을 정하고 확인합니다. PIN은 이 기기의 금고를 암호화하므로 새로 고침 후에도 지갑이 유지됩니다.

2.5 다시 방문할 때: 잠금 해제

PIN을 입력하세요(설정했다면 패스키 버튼을 사용해도 됩니다). 아래 링크: 백업 파일에서 복원, 이 기기에서 지갑 초기화(로컬 데이터를 삭제하며, 복구 구문으로 복원합니다).

2.6 보기 전용

주소 지켜보기는 키 없이도 어떤 주소의 잔액과 활동을 보여 줍니다. 잔액 영역에 보기 전용 배지가 표시되고 모든 서명 페이지가 숨겨집니다.


3. 기본 인터페이스

3.1 상단 바

  • 로고 + 버전 배지(예: V0.36).
  • 알림 벨: 클라이언트에서 생성하는 알림(수신 채팅, 서명 요청, 체인 경고). 빨간 숫자 배지가 표시되며, 각 항목은 해당 페이지로 바로 연결됩니다(예: 청구서 알림은 결제 페이지를 엽니다).
  • 테마: 다크/라이트 전환.
  • 잠금: 지갑을 즉시 잠급니다(다시 열려면 PIN 필요).
  • 설정: 설정 페이지를 엽니다.
  • 통화 릴레이 표시기: 해당될 때 남은 릴레이 데이터를 보여 줍니다.
  • 네트워크 상태 표시: 점 + 라벨. block N(연결됨, 확정된 높이인 최신 블록 − 3을 표시), synchronizing…(30초 미만의 일시적 실패), chain unreachable(지속적인 실패). 클릭하면 블록 익스플로러가 열립니다 (explorer.<gateway-domain>).

3.2 잔액 영역 (왼쪽 열)

  • 잔액과 범위 전환: 이 지갑 / 모든 지갑 합계.
  • 코인 아이콘을 탭하면 새로 고침되며, 펼침 화살표를 누르면 토큰 잔액을 나열한 토큰 패널이 열립니다.
  • 사용 가능 금액: 잔액에서 잠긴 금액(스테이크, 에스크로, 보류 중인 제안)을 뺀 값.
  • 주소 칩: 계정 아바타(탭하면 계정 전환), 편집 가능한 지갑 이름, 주소, 복사 버튼.
  • 배지: 보기 전용, 멀티시그.
  • 보내기와 받기 빠른 버튼.

3.3 왼쪽 메뉴

접을 수 있는 그룹(열림/닫힘 상태가 기억되며, 설정 → 메뉴에서 섹션 전체를 숨길 수 있습니다):

그룹항목
홈대시보드 · 할 일 · 진행 중 · 활동
지갑보내기 · 받기 · 입금 · 출금 · 예약 · 다중 서명 · 정책
자산토큰 · 파일 · 거래소 · 마켓플레이스
소셜연락처 · 온라인 · 채팅 · 통화
비즈니스청구서 · 양식 · 공증
앱로비 · 싱글 플레이어 · 1대1 · 3인 이상
고급키와 시드 · 종이 지갑 · 제출
시스템설정 · 노드 · 네트워크 · 게이트웨이 · 릴레이 · 거버넌스

좁은 화면에서는 메뉴가 상단 내비게이션 바 / 햄버거 메뉴로 접힙니다.

법률 및 안내 페이지: 이용 약관, 개인정보 처리방침, 도움말 및 매뉴얼, 프로젝트 참여.


4. 홈

4.1 대시보드 (개요)

잠금 해제 후 처음 보이는 페이지입니다:

  • 내 코인: 모든 지갑에 걸친 코인별 합산 잔액.
  • 내 지갑: 계정마다 카드 하나(이름, 주소, 소수점 이하를 흐리게 표시한 실시간 잔액, 체인 배지, 멀티시그/보기 전용 배지). 상태 상자에 확인이 필요한 항목이 표시됩니다.
  • 내 토큰: 보유한 토큰과, 토큰 페이지로 가는 살펴보기 바로 가기.
  • 내 노드: 내 지갑이 소유한 등록 노드(10분마다 자동 새로 고침).

4.2 할 일

"승인, 정산, 답장 등 여러분을 기다리는 모든 것." 다음 항목을 모은 하나의 목록입니다:

  • 내가 승인자인 에스크로(목록에서 바로 승인 / 거부),
  • 내 서명을 기다리는 멀티시그 트랜잭션,
  • 나에게 온 결제/에스크로 요청,
  • 결제를 기다리는 청구서,
  • 앱 차례와 만료 예정 항목.

메뉴 항목의 숫자 배지에 개수가 표시됩니다. 새로 고침을 누르면 모든 항목을 다시 불러옵니다. 페이지가 열려 있는 동안 60초마다 자동으로 새로 고쳐집니다.

4.3 진행 중 (진행 중인 트랜잭션)

지금 진행 중인 트랜잭션을 네 개의 탭으로 보여 줍니다:

  • 전체: 탭별 개수가 표시되는 통합 목록.
  • 에스크로 승인 / 거부: 지정된 승인자로서 에스크로 트랜잭션 ID를 입력(또는 선택)하고 승인 및 지급(자금이 수신자에게 감) 또는 거부 및 반환(자금이 보낸 사람에게 돌아감)을 누릅니다. ApprovalEscrow(유형 4)를 브로드캐스트합니다.
  • 리퀴드 페이먼트 중지: 직접 시작한 리퀴드 페이먼트를 멈춥니다. 아직 베스팅되지 않은 나머지는 여러분에게 돌아옵니다(LiquidPaymentStop, 유형 262).
  • 베스팅 중지: 직접 만든 진행 중인 일정이 대상입니다. 철회하면 아직 실행되지 않은 나머지가 돌아옵니다(이미 전달된 분할분은 수신자에게 남습니다)(CancelSchedule, 유형 30).

4.4 활동

트랜잭션 기록입니다.

  • 계정 필터: 지갑 하나 또는 전체.
  • 코인 필터: 모든 코인 또는 특정 코인.
  • 소스 선택기: 최신 TX(연결된 노드의 최근 구간) 또는 전체 TX(아카이브 노드의 전체 기록).
  • 카테고리 칩: 전체 · 지갑 · 트레이딩 · 앱 · 도구 · 코인베이스 · 수수료, 카테고리별 합계 표시.
  • 지갑이 브로드캐스트하는 모든 트랜잭션은 로컬 저널에도 바디 바이트와 함께 보관되므로, 즉시 표시되고, 노드가 기록을 정리해도 남으며, 유형별 세부 정보가 모두 표시됩니다. 행을 펼치면 금액, 상대방(알려진 경우 연락처 이름 표시), 수수료, 에스크로 세부 정보, 메시지(여러분에게 온 것이면 복호화됨), 해시 복사 버튼이 나타납니다.

5. 지갑

5.1 보내기

기본 송금 페이지입니다. 위에서 아래로 필드는 다음과 같습니다:

  • 수신자: 지원되는 모든 주소 형식(ZBC_…, 0x…, 1…, bc1…, Solana, SS58, addr1…, r…, T…, tz1…) 또는 연락처(선택 버튼). 필드 아래에 유효성 표시와 확인된 연락처 이름이 나타납니다.
  • 금액 + 최대(사용 가능 잔액에서 수수료를 뺀 금액을 채움).
  • 네트워크 수수료 (ZBC): 네트워크에서 미리 채워지며, 메시지 크기에 따라 커지고, 직접 올릴 수 있습니다.
  • 메시지(선택 사항): 온체인에 저장됩니다. ZBC → ZBC 송금에서는 메시지 암호화를 체크할 수 있습니다(종단 간 암호화, 수신자만 읽을 수 있음). 수수료 안내는 바이트 크기에 따라 갱신됩니다.
  • 개인 메모(선택 사항): 이 기기에만 저장되며, 절대 온체인에 기록되지 않습니다.
  • 수명(상황별): ZBS_ 객체 주소로 보낼 때 나타나며, 임대료 충전임을 표시합니다.
  • 리퀴드 페이먼트 체크박스: 금액이 선택한 기간(분) 동안 수신자에게 점진적으로 베스팅됩니다. 수신자는 베스팅되는 만큼 비례해 청구할 수 있고, 여러분은 진행 중에서 조기에 중지할 수 있습니다(베스팅되지 않은 부분은 반환됨). 일반 송금 대신 LiquidPayment(유형 6)를 보냅니다.
  • 에스크로 체크박스: 승인자가 승인할 때까지 자금을 보류합니다:
  • 승인자 주소(또는 연락처),
  • 보류 기한: 미리 설정된 칩(1일 … 6개월) 또는 정확한 날짜/시간 선택기. 블록 높이 기준 타임아웃으로 표시되며, 블록 시간은 추정치이므로 실제 시간은 달라질 수 있다는 안내가 함께 나옵니다,
  • 승인자 커미션 (ZBC),
  • 지시 사항(자유 텍스트, 예: "배송 시 지급").
  • 링크: 오히려 돈을 받을 예정인가요? → 결제 요청(수신자 측 에스크로, 예약 페이지에 있음).
  • 이 토큰으로 네트워크 수수료 내기(상황별): 수수료 지원 토큰의 경우 수수료 토큰을 소각하고 같은 양의 ZBC 담보를 해제합니다(에스크로에서는 사용 불가).
  • 트랜잭션만 생성: 서명은 하되 브로드캐스트하지 않습니다. 나중에 또는 다른 기기에서 제출할 수 있도록 서명된 JSON + QR을 만듭니다(제출 참조).
  • 미리 보기: 금액, 커미션, 수수료, 합계.
  • 검토 후 보내기: 확인 창이 뜬 뒤 브로드캐스트합니다. 양식 초기화는 모든 항목을 지웁니다. 보내고 나면 트랜잭션 ID가 표시되며(다른 페이지로 이동해도 유지됨), 복사 및 익스플로러 링크가 함께 제공됩니다.

브로드캐스트하는 트랜잭션: SendZBC(유형 1), 잔액 영역에서 토큰을 선택한 경우 TransferToken(11), 리퀴드 체크박스를 선택한 경우 LiquidPayment(6). 에스크로는 이들 중 어느 것의 엔벨로프에도 실을 수 있습니다.

5.2 받기

주소를 큰 QR 코드와 텍스트로 보여 주며, 주소 복사 버튼이 있습니다.

5.3 입금

ZooBC로 들여오는 브리지: BTC, ETH, USDC, USDT를 래퍼 코인(예: BTC → ZBTC)으로 체인에 가져오며, 확인 후 1:1로 발행됩니다. 탭은 두 개입니다:

  • 시작: 코인을 고릅니다(지원되지 않는 코인은 곧 지원 예정으로 표시). 지갑에 표시되는 내용:
  • 원래 체인의 수탁 입금 주소(QR + 복사),
  • 필요한 확인 횟수,
  • 입금이 반영되는 계정: 입금은 여러분이 보내는 주소를 미러링하는 ZooBC 계정(같은 키)에 반영됩니다. 수탁 주소는 공용이므로, 보내는 주소가 유일한 소유 증명입니다. 키를 이 지갑에서 직접 관리하는 지갑에서 보내세요.
  • 확인이 끝나면 ZooBC 노드의 2/3 초다수가 증명하고, 그다음 래퍼 코인이 발행됩니다(수 분에서 약 1시간).
  • 추적: 하위 탭 세 개. 진행 중(20초마다 자동 새로 고침, 상태: 감지됨 → 확인 중 → 증명 중 → 발행됨, 체인별 예상 시간 표시), 다른 계정 지켜보기(원래 체인 주소나 ZBC_ 주소), 기록(완료 및 취소된 항목).

5.4 출금

ZooBC 밖으로 내보내는 브리지입니다(래핑 코인을 원래 체인으로 되돌립니다). 이 화면은 목업이며 아웃바운드 브리지는 아직 작동하지 않습니다. 계획된 코인 목록과 흐름을 보여 줍니다.

5.5 예약 이체

타이머에 따라 이동하는 가치입니다. 탭은 다섯 개입니다:

  • 베스팅: 사전 잠금 일정입니다. 생성 시 총액 전체가 잠기고 회차별로 나뉘어 수령인에게 지급됩니다. 입력 항목: 수령인, 코인/토큰, 회차당 금액, 간격, 회차 수(1–520), 선택적 클리프, 철회 가능/불가, 선택적 종료 시각. funding_mode 0으로 ScheduledTransfer(29)를 브로드캐스트합니다.
  • 정기 이체: 실행 시 인출 방식입니다. 아무것도 잠기지 않으며, 각 회차가 실행될 때 잔액에서 인출됩니다(잔액이 없으면 안전하게 실패 처리됩니다). 입력 항목은 같고 funding_mode 1입니다.
  • 지정 높이: 일회성 트리거입니다. 지금 금액을 잠가 두었다가 체인이 지정한 블록 높이에 도달하면 수혜자에게 지급합니다. 높이 입력란에는 날짜/시간 달력 도우미가 있습니다(예상 높이로 변환하며, 실제 시점은 블록 시간에 따라 달라질 수 있습니다). CreateTrigger(15)를 브로드캐스트하며, 취소 시 환불 트랜잭션: CancelTrigger (16).
  • 요청: 수취인 측 에스크로입니다. 결제를 요청하면서 지불인, 금액(ZBC 또는 토큰), 승인자, 기한, 커미션, 지시 사항을 지정합니다. 지불인은 할 일에서 요청을 받아 자금을 넣습니다. 브로드캐스트 트랜잭션: EscrowRequest (260).
  • 목록: 내가 만들었거나 받는 모든 일정을 그룹별로 보여 줍니다. 각 행에는 종류(베스팅/정기/일회성), 진행률(전체 중 지급된 회차), 다음 실행, 역할 배지, 작업 버튼이 표시됩니다. 작업: 철회(철회 가능한 경우), 남은 회차를 새 수령인에게 재지정(ReassignSchedule, 31, 현재 수령인만 가능).

5.6 멀티시그

지출할 때마다 여러 서명이 필요한 계정입니다. 탭은 두 개입니다:

  • 멀티시그 계정 만들기: 참여자 주소(한 줄에 하나, 형식 무관, 연락처에서 추가 가능), 최소 서명 수, 논스를 입력합니다. 주소 계산을 누르면 결정론적으로 산출된 ZBC_ 주소가 표시됩니다. 그다음:
  • 온체인 등록: 참여자 집합을 기록합니다(MultisigRegistration, 유형 5).
  • 내 지갑에 추가: 계정으로 선택할 수 있게 되어(멀티시그 배지 표시) 입금을 받고 지출을 제안할 수 있습니다.
  • 멀티시그 트랜잭션 서명: 나에게 온 대기 항목이 맨 위에 표시됩니다. 이전 서명자에게 받은 트랜잭션(hex / base64 / JSON)을 붙여 넣고 내 키로 서명한 다음, 결과를 다음 서명자에게 전달합니다. 서명만으로는 브로드캐스트되지 않습니다. 서명이 충분히 모이면 브로드캐스트(제출 페이지)가 페이로드를 미리 채운 상태로 제출 화면을 엽니다.

5.7 정책: “내가 거래하는 대상”

계정별 온체인 카테고리 거부(옵트아웃) 설정으로, 모든 노드가 이를 강제합니다. 카테고리를 끄면 양방향으로 적용됩니다. 해당 카테고리는 보낼 수도 받을 수도 없으며, 시도하는 사람은 거부됩니다(자금은 이동하지 않고 네트워크 수수료만 냅니다). 토글은 아홉 개입니다:

비트카테고리적용 범위
0결제ZBC 송금, 리퀴드 / 예약 / 트리거 이체
1앱생성, 참가, 수 두기, 기권, 시간 초과, 정산
2토큰컬러드 코인 발행, 전송, 민팅, 소각, 존속 자금 충전
3거래소스왑 제안 및 호가창 마켓
4데이터 및 스토리지데이터셋, 선불 스토리지, 파일(DFS), 스토리지 증명
5에스크로 및 멀티시그에스크로 승인 / 요청, 다중 서명
6노드 및 인프라노드 등록, 게이트웨이 / 아카이브 / 릴레이 레지스트리
7브리지크로스체인 증명 / 민팅
8거버넌스수수료 투표, 서명된 릴리스 거버넌스

요약 칩에는 “모든 항목과 거래 중” 또는 “거부 중: …”이 표시됩니다. 결제 또는 노드 및 인프라를 끄려면 한 번 더 확인해야 합니다(일상적인 사용이 막힐 수 있기 때문입니다). 정책 저장을 누르면 SetTransactPolicy(유형 50, 마스크 u16 LE, 수수료 약 0.05 ZBC)가 브로드캐스트되며, 블록이 확정되면 적용됩니다.


6. 자산

6.1 토큰

체인에 있는 모든 코인의 레지스트리입니다(제네시스 코인 + 사용자가 발행한 “컬러드 코인”). 모드는 두 가지입니다:

  • 둘러보기: 등록된 모든 토큰을 아이콘, 심볼, 이름, 공급량, 담보, 내 잔액과 함께 검색할 수 있는 목록입니다. 토큰에 로컬 별칭을 붙일 수도 있습니다. 담보 토큰은 ZBC 가치가 일정하게 유지됩니다.
  • 발행 및 관리(멀티시그 허브 → 토큰에서도 이동 가능):
  • 토큰 발행: 심볼(허용 문자 집합 및 예약 심볼 차단 목록으로 검증), 이름, 총 공급량, 소수 자릿수(0–8), 담보(잠긴 ZBC)(담보 없는 토큰은 0), 플래그 상환 가능(소각 → 담보 중 내 몫 회수) 및 추가 발행 가능(발행자가 더 발행할 수 있음), 선택적 SVG 로고 + 설명(트랜잭션 메시지에 포함, 6,144바이트 이하). 브로드캐스트 트랜잭션: IssueToken (10).
  • 토큰 보내기: 토큰, 금액, 수령인(TransferToken, 11, 에스크로 및 토큰으로 수수료 지불 지원).
  • 민팅 또는 소각: 민팅(발행자 전용, 추가 발행 가능 토큰 대상. 공급량을 늘리는 동시에 담보를 더 잠가 단위 가치를 일정하게 유지, 유형 12), 소각 / 상환(내 토큰을 소멸시키며, 상환 가능 토큰은 담보 중 내 몫을 돌려받음, 유형 13), 존속 자금(토큰이 정리되지 않도록 존속 임대료를 충전, 유형 14).

6.2 파일

탈중앙화 파일 스토리지(DFS)와 데이터 수명 주기 관리 도구 전체입니다. 탭은 여섯 개입니다:

  • 내 파일: 내가 저장한 파일의 이름, 크기, 루트 해시, 복제본 상태, 임대료 상태를 보여 줍니다. 다운로드하거나 공유 링크를 복사할 수 있습니다.
  • 파일 업로드: 노드가 파일을 콘텐츠 주소 기반 조각으로 나누어 복제본 세트에 배포하고, 이어서 지갑이 StoreFile(유형 40)로 파일을 온체인에 앵커링합니다. 여기에는 파일 루트(32 B), 크기, 조각 크기, 임대료 보증금(최소 0.01 ZBC), 조각 목록이 포함됩니다. 파일 목록이 비어 있으면 이 탭이 기본으로 열립니다.
  • 루트로 다운로드: 64자리 16진수 루트(또는 ZTX_ ID)로 스토리지 네트워크에서 어떤 파일이든 가져옵니다.
  • 데이터셋: 원시 온체인 항목입니다. 모든 채팅 메시지, 투표, 청구서, 양식, 프로필 필드는 계정에 기록된 데이터셋 항목입니다:
  • 내 항목: 한 번의 탭으로 삭제할 수 있는 목록입니다.
  • 항목 추가: 계정(비워 두면 내 계정), 속성, 값(최대 4,096바이트, 실시간 바이트 카운터 제공). SetupAccountDataset(유형 3)을 브로드캐스트합니다.
  • 항목 수동 삭제: 수령인 + 속성(채팅에 표시되는 #… 접미사 포함) + 값이 정확히 일치해야 합니다. 브로드캐스트 트랜잭션: RemoveAccountDataset (259).
  • 스토리지 충전: 내 계정의 데이터셋 임대료를 선불로 냅니다(FundStorage, 유형 9). 데이터셋별 지정 기능은 다음 체인에서 제공됩니다.
  • 객체: 존속 임대료 기반 객체 관리:
  • 임대료 잔액과 예상 만료 시점이 표시되는 내 객체 목록
  • 소유권 이전: 2단계로 진행됩니다. 내가 제안하고(TransferDataset, 42), 수령인이 수락합니다(AcceptDataset, 44),
  • 접근 정책: 계정 허용/거부 목록(SetDatasetPolicy, 43),
  • 삭제 (DeleteDataset, 45),
  • 생성 트랜잭션 해시로 객체 충전: 트랜잭션 ID로 객체의 ZBS_ 보증금 계정을 조회한 뒤 일반(에스크로 가능) 이체로 충전합니다.

6.3 거래소

온체인 호가창 거래소(CLOB)입니다. 헤더 배지는 연결 중… / 라이브 / 오프라인 상태를 있는 그대로 표시하며, 엔드포인트가 다운되었을 때 아무것도 가짜로 꾸며 보여 주지 않습니다.

  • 모드: 심플(주문 양식 중심, 호가창/체결 내역 없음)과 프로(뎁스 차트, 호가창, 최근 체결, 주문, 트레이딩 터미널 레이아웃).
  • 페어 선택기: 등록된 모든 코인이 나열된 From / Into 행과 방향 전환 버튼이 있으며, 이미 개설된 마켓은 알약 모양 버튼으로 표시됩니다(내 미체결 주문 수 포함).
  • 통계 바: 최종 가격, 24시간 변동률/고가/저가/거래량, 스파크라인.
  • 시장 심도 및 호가창: 체인에서 실시간으로 가져옵니다. 호가창이 비어 있으면 그 이유를 설명합니다: “아직 주문이 없습니다. 첫 주문을 넣어 보세요” / 노드 오프라인 / 읽기 API 없음.
  • 주문 양식: 매수/매도, 주문 유형 시장가 / 지정가 / 스톱, 수량(실시간 잔액 기준 +최대), 지정가, 총액, 예상 수수료(0.1%). 호가창이 비어 있으면 시장가 주문은 설명과 함께 차단됩니다(체결할 가격이 없음). 주문을 넣으면 PlaceOrder(유형 22)가 브로드캐스트되며, 해당 페어의 마켓이 아직 없으면 마켓 생성(CreateMarket, 21, ZBC 임대료 보증금 필요)이 제안됩니다.
  • 내 주문: 기기별로 저장됩니다. 대기 중에는 블록 대기 중으로, 이후에는 미체결/체결/취소로 표시됩니다. 취소는 CancelOrder(23, 미체결 잔량 환불)를 브로드캐스트하고, 체결 항목 지우기는 목록을 정리합니다.

6.4 마켓플레이스

P2P 스왑 제안 게시판(OTC)입니다: “주는 것과 원하는 것을 올리면 누구나 수락할 수 있습니다.” 완전히 원자적으로 처리되어, 노드는 한 블록 안에서 양쪽을 모두 교환하거나 전혀 교환하지 않습니다. 라이브 상태에서만 작동하며, 연결되지 않으면 오프라인 상태를 그대로 표시합니다.

  • 제안 둘러보기: 주는 자산 / 원하는 자산으로 필터링합니다. 각 제안 카드에는 메이커(아바타 + 연락처 이름), 주는 수량 → 원하는 수량, 환산 가격, 만료, 상태(진행 중 / 체결 / 취소 / 만료)가 표시됩니다. 수락하면 AcceptSwapOffer(19)가 브로드캐스트되며, 테이커는 원하는 쪽 금액을 지불하고 보류되어 있던 주는 쪽 자산을 받습니다.
  • 제안 만들기: 주는 자산 + 수량(제안이 열려 있는 동안 잔액에서 잠김), 원하는 자산 + 수량, 선택적 만료(0 = 취소 시까지 유효), 선택적 지정 상대방(해당 주소만 수락 가능). 확인 카드를 보여 준 뒤 브로드캐스트하는 트랜잭션: CreateSwapOffer (18).
  • 내 제안: 진행 중인 내 제안과 취소 버튼(CancelSwapOffer, 20, 보류 금액 환불), 그리고 판매 / 수락 / 취소 / 만료된 제안의 기기 로컬 기록을 보여 줍니다.

7. 소셜

7.1 연락처

내 주소록입니다. 연락처 추가: 이름, 선택적 사진과 메모, 그리고 여러 체인의 주소를 개수 제한 없이 등록합니다(각 주소에 체인 배지 표시). 지갑 전체(보내기, 활동, 채팅, 마켓플레이스 등)에서 원시 주소 대신 연락처 이름이 표시되며, 원시 주소는 언제든 한 번 탭해 복사할 수 있습니다. 연락처는 암호화된 볼트에 저장되며 백업에도 함께 포함됩니다.

7.2 온라인

연락처의 실시간 접속 상태입니다. 각 행에는 상태(온라인 / 자리 비움 / 오프라인)와 채팅 또는 통화 바로가기가 표시됩니다. 접속 상태는 푸시 방식입니다. 지갑은 릴레이를 통해 약 60초마다 신호를 보내고 목록은 주기적으로 갱신되므로, 두 지갑은 화면을 이동하지 않아도 서로를 볼 수 있습니다. 나의 표시 방식은 통화 → 표시 설정에서 관리합니다.

7.3 채팅

온체인 메시징입니다. 두 계층으로 구성됩니다:

  • 대화 보기: WhatsApp 스타일입니다. 읽지 않음 배지, 아바타(연락처 사진 또는 이니셜), 검색, 로컬 이름 변경을 지원하는 대화 목록이 있고, 스레드 화면에는 말풍선, 타임스탬프, 그리고 종단 간 암호화 메시지(ZBC ↔ ZBC)의 자물쇠 아이콘이 표시됩니다. 내 다른 지갑에서 온 메시지는 “나”로 인식됩니다.
  • 원시 전송 양식: 받는 사람(주소 또는 연락처), 주제(선택 사항, 예: 수 두기용 앱 ID, 기본값 chat), 메시지. 각 메시지는 수령인 계정에 기록되는 SetupAccountDataset 트랜잭션(유형 3)이며 일반 네트워크 수수료가 듭니다.

메시지는 파일 → 데이터셋에서 삭제할 수 있습니다(삭제하려면 항목과 정확히 일치해야 합니다).

7.4 통화

P2P 음성, 영상, 화면 공유입니다. 직접 통화는 무료이며, 방화벽이 직접 연결을 막으면 릴레이 게이트웨이가 충전한 크레딧을 사용해 트래픽을 중계합니다. 탭은 다섯 개입니다:

  • 온라인 연락처: 지금 연결 가능한 사람(온라인만 / 전체 필터). 탭하면 음성/영상 통화를 시작합니다.
  • 릴레이: 릴레이 크레딧이 남은 데이터 용량(MB)과 이를 환산한 예상치로 표시됩니다(음성 ≈ 0.36 MB/분, 영상 ≈ 15 MB/분. 크레딧은 분 단위가 아니라 순수 데이터 용량입니다). 상태가 표시된 릴레이 게이트웨이 목록과 게이트웨이 추가가 있습니다. 충전은 릴레이 운영자에게 보내는 ZBC 결제이며 온체인에서 확인됩니다(대기 중인 충전은 반영될 때까지 계속 조회합니다).
  • 최근 통화: 방향, 통화 시간, 경로(직접 / 릴레이), 사용 데이터, 게이트웨이가 기록된 로그.
  • 계정 활성화: 통화를 사용할 계정을 선택합니다(릴레이에 서명된 등록).
  • 표시 설정: 나를 누구에게 표시할지 모두 / 모든 연락처 / 선택한 연락처 / 아무도 없음 중에서 고릅니다(선택한 연락처는 연락처별로 지정). “아무도 없음”이어도 통화를 걸 수는 있습니다.

통화 중에는 음소거, 카메라 켜기/끄기, 화면 공유, 실시간 데이터 미터를 사용할 수 있습니다. 릴레이 통화 중에는 상단 바의 릴레이 표시기에 남은 데이터가 표시됩니다.


8. 비즈니스

8.1 청구서

ZBC 또는 등록된 모든 코인/토큰(ZUSD, ZBTC 등)으로 결제할 수 있는 청구서를 링크로 보냅니다. 결제는 해당 통화로 하는 일반 이체이며, 상태는 체인 데이터를 기준으로 자동 대조됩니다.

  • 청구서 만들기: 금액 + 통화, 설명, 선택적 결제 기한을 입력합니다. 청구서는 내 계정에 데이터셋으로 기록되며 공유 링크가 생성됩니다(참고: 8.4).
  • 탭은 내가 발행과 받은 청구서 두 개이며, 각각 결제 대기와 결제 완료로 그룹화됩니다. 결제 완료 행은 결제 트랜잭션으로 연결됩니다. 받은 청구서는 알림과 할 일에도 표시되며 결제 페이지로 바로 연결됩니다.
  • 결제 페이지: 링크로 열리며 발행자, 금액, 통화, 메모를 보여 줍니다. 한 번 탭하면 정확한 이체가 만들어집니다.

8.2 양식

양식을 게시하고 링크를 공유해, 나만 읽을 수 있는 서명 및 암호화된 제출물을 누가 무엇에 서명했는지에 대한 증명과 함께 수집합니다. 필드를 정의하고 게시한 뒤(내 계정의 데이터셋으로 기록) 링크를 공유하세요. 제출물은 내 키로 암호화되며 서명자의 주소, 타임스탬프와 함께 나열됩니다.

8.3 공증(존재 증명)

어떤 파일이든 온체인에 타임스탬프를 남길 수 있으며, 문서는 기기 밖으로 절대 나가지 않습니다.

  • 공증하기: 파일을 끌어다 놓으면 로컬에서 해시(SHA3-256)가 계산됩니다. 이미지는 선택적으로 작은 썸네일을 첨부할 수 있으며(나만 볼 수 있도록 암호화하는 옵션 포함), PDF에는 “미리 보기 없음” 안내가 그대로 표시됩니다. 해시(+ 선택적 썸네일)는 내 계정에 데이터셋으로 기록되며, 자체 스토리지 임대료로 유지됩니다.
  • 내 앵커: 블록 높이/시간과 함께 표시되는 내 앵커 목록입니다. 대기 중인 앵커(제출했지만 아직 온체인에 기록되지 않음)는 확인될 때까지 로컬에서 추적됩니다.
  • 검증: 파일을 끌어다 놓으면 해시를 다시 계산해 앵커를 찾습니다. 기본적으로 내 계정에서 찾으며, 다른 사람의 앵커를 검증하려면 ZBC_ 주소나 링크를 붙여 넣으세요.

청구서, 양식, 투표, 결제 페이지로 가는 링크는 지갑이 제공되는 방식에 맞게 달라집니다. 실제 https:// 오리진에서는 전체 URL이 되고, 로컬 파일에서는 #프래그먼트 링크가 되어 수령인이 자신의 지갑에서 …wallet.html 뒤에 프래그먼트를 붙여 넣습니다(file:// 경로가 링크에 고정으로 들어가는 일은 없습니다).


9. 앱

아케이드: 스테이크 기반의 온체인 턴제 앱입니다. 로비는 상태를 정직하게 반영해, 체인에 연결할 수 없으면 복구될 때까지 오버레이가 플레이를 막습니다.

9.1 화면

  • 로비: 네트워크 상금 풀(ZBC + 토큰), 진행 중인 내 대전과 도전(참가 버튼), 통계, 앱 라이브러리.
  • 싱글 플레이어: 하우스를 상대로 하는 1인용 앱(주사위, 동전 던지기, 룰렛, 슬롯, 로또, 크래시 등).
  • 1 대 1: 턴제 앱입니다. 틱택토, 체스, 사목(커넥트 포), 체커, 리버시, 오목, 배틀십, 점과 상자 등. 특정 상대에게 도전하거나(주소/연락처, 초대장이 상대방의 지갑으로 전송됨) 누구나 참가할 수 있는 공개 도전을 올릴 수 있습니다.
  • 3인 이상: 파티 앱(루도, 피그, 레이스, 모노폴리 스타일).

9.2 대전 시작하기

새 대전 양식: 앱, 스테이크(금액 + 코인, ZBC 또는 풀 목록의 모든 토큰, 0 = 친선전), 좌석 수, 상대(1 대 1), 그리고 지원되는 경우 빠른 모드(상태 채널). 생성하면 CreateApp(24)이 브로드캐스트되어 내 스테이크가 잠기고, 참가자는 다음 트랜잭션으로 자신의 스테이크를 잠급니다: JoinApp (25).

9.3 플레이하기

보드 화면에는 상태 바(차례, 카운트다운), 보드, 플레이어 레일, 수 기록이 표시됩니다. 수의 합법성은 클라이언트 측에서 검사하며, 노드의 앱 VM이 모든 수를 다시 검증합니다.

  • 온체인 모드: 모든 수가 AppMove(26) 트랜잭션이며, 카운트다운은 측정된 블록 시간보다 짧아지지 않습니다. 지갑 동기화가 어긋나더라도 체인에서 앱 전체를 재구성할 수 있습니다.
  • 빠른 모드(채널): 수는 서명된 바우처로 즉시 교환됩니다(확인될 때까지 약 10초마다 재전송). 게임이 끝나면 어느 한 플레이어가 SettleApp(39)을 제출하고, 체인은 서명된 바우처를 자체 규칙에 따라 재실행해 판정하고 지급합니다.
  • 기권(27)하면 패배 처리되고 스테이크는 상대에게 갑니다. 시간 초과 청구(28)는 상대가 수당 제한 시간을 넘겨 이탈했을 때 승리를 청구합니다.
  • 나가도 안전합니다. 끝나지 않은 라운드는 로컬에 보존되므로 같은 앱을 다시 열면 재연결되며, 결과는 온체인에 확정됩니다.

10. 고급

10.1 키 및 시드

볼트의 모든 신원을 관리합니다:

  • 시드: 이름을 붙인 시드 구문입니다. 각 시드에서 구문을 다시 입력하지 않고도 지원되는 모든 체인과 계정 인덱스의 계정을 파생할 수 있습니다. 보기(PIN 필요), 이름 변경, 삭제를 지원합니다.
  • 키 가져오기: 형식에 상관없이 64자리 16진수 개인 키 하나를 가져옵니다.
  • 주소 관찰: 조회 전용 항목을 추가합니다.
  • 가져온 키 및 관찰 주소 목록: 행마다 주소, 실시간 잔액, 삭제 버튼이 있습니다.

10.2 종이 지갑

인쇄 가능한 콜드 스토리지입니다. 설정 항목: 원본은 내 지갑(보유한 계정) 또는 새 빈 지갑(즉석에서 새 구문을 생성하며 저장하지 않음) 중 선택, 레이아웃 옵션, 인쇄. 인쇄물에는 주소 QR + 구문/키와 함께 강력한 취급 주의 경고가 들어갑니다.

10.3 제출

다른 곳에서 서명된 트랜잭션(에어갭 기기, 멀티시그 공동 서명자, 보내기의 “생성만”)을 브로드캐스트합니다. 서명된 JSON을 붙여 넣거나 카메라로 QR 스캔을 하세요. 키는 필요 없습니다. 결과로 생성된 트랜잭션 ID 또는 노드의 오류 메시지를 그대로 보여 줍니다.


11. 시스템

11.1 설정

하위 탭으로 구성됩니다:

  • 보안: 6자리 PIN을 변경합니다(변경 후 내려받은 백업은 새 PIN이 필요합니다).
  • 패스키: 플랫폼 패스키 잠금 해제(Face ID / Touch ID / Windows Hello)를 설정하거나 제거합니다.
  • 자동 잠금: 일정 시간 사용하지 않으면 잠급니다.
  • 메뉴: 사이드바 섹션 전체를 표시하거나 숨깁니다(기기별 설정). 항상 표시되는 것은 홈(HOME)뿐이며, 설정은 상단 바에서 언제든 열 수 있습니다.
  • 백업 및 복원: 암호화된 볼트를 내려받거나(열려면 PIN 필요, 파일과 PIN을 가진 사람은 누구나 자금을 쓸 수 있음) 백업 파일에서 복원합니다.
  • 노드(로그인 전에도 이용 가능): 상태 점이 표시된 현재 게이트웨이, 게이트웨이 목록 보기 및 온라인 여부 확인(온체인 레지스트리 기준), 추가 대체 노드를 위한 노드 URL 수동 입력, 고급 노드 설정.
  • 테마: 다크 / 라이트.
  • 에어갭 모드: 켜져 있으면 지갑은 절대 브로드캐스트하지 않습니다. 모든 트랜잭션은 서명된 뒤 내보내지고(JSON + QR), 네트워크에 연결된 기기가 이를 제출합니다. 상단 바에 표시기가 나타납니다.
  • 초기화: 이 기기의 데이터(볼트, 캐시)를 지웁니다. 중요한 것은 모두 복구 구문으로 되살릴 수 있습니다.

11.2 노드

검증자 노드 운영에 필요한 모든 기능(ZooBC 계정 전용):

  • 내 노드: 내 지갑이 소유한 모든 노드(전체 계정 또는 한 계정). 로컬 이름을 붙이고 키를 복사할 수 있습니다.
  • 노드 등록: 노드의 64자리 16진수 비밀 키와 잠금 잔액(최소 1 ZBC, 기본값 1000)을 입력합니다. 지갑은 최근 블록을 가져와 소유 증명(POOWN)을 만들고(노드 키가 owner ‖ block hash ‖ height에 서명), NodeRegistration(유형 2)을 브로드캐스트합니다. 노드를 제거하면 스테이크가 해제됩니다.
  • 노드 제거: 등록을 해제하고 잠금 잔액을 돌려받습니다(RemoveNode, 514).
  • 노드 스테이크 업데이트: 새 잠금 잔액(유지하거나 늘리는 것만 가능), 새 POOWN(UpdateNode, 258).
  • 노드 소유권 청구: 노드의 비밀 키로 제어권을 증명해 소유권을 이 지갑으로 다시 지정합니다(ClaimNode, 770).

11.3 네트워크

내 온체인 인프라 기록과 세 레지스트리의 실시간 개요:

  • 게이트웨이 등록: 게이트웨이 양식으로 이동합니다(10 ZBC 스테이크가 잠기며 등록 해제 시 환불됩니다. 이후 게이트웨이는 하트비트를 보내야 하며, 그렇지 않으면 스테이크가 환불된 상태로 자동 정리됩니다).
  • 릴레이 등록 / 업데이트: 탐색을 위해 릴레이를 공개합니다. 릴레이 키(ZBR_/64자리 16진수), 서비스할 게이트웨이, 도메인, URL을 입력합니다(RegisterRelay, 48; Unregister, 49). 인증은 여전히 오프체인 릴레이 바인딩 인증서(아래 참조)가 담당하며, 이 기록은 릴레이를 찾을 수 있게 할 뿐입니다.
  • 아카이브 노드 등록 / 업데이트: 등록된 내 노드 중 하나를 전체 기록 + 익스플로러 API를 제공하는 노드로 표시합니다. 노드 키(ZNK_/64자리 16진수), 도메인, URL을 입력합니다(RegisterArchival, 46; Unregister, 47). 익스플로러에서 해당 노드에 아카이브 배지가 붙습니다.

같은 키로 다시 등록하면 도메인/URL이 업데이트됩니다. 재공지와 등록 해제는 소유자가 한 경우에만 효력이 있습니다.

11.4 게이트웨이

  • 게이트웨이 목록: 이 지갑이 통신하는 게이트웨이와, 등록된 모든 게이트웨이의 상태 점검 결과(게이트웨이 목록 보기 및 온라인 여부 확인)를 보여 줍니다. 연결에 사용할 게이트웨이를 고르세요. 고급 노드 설정…은 원시 URL 설정을 엽니다.
  • 게이트웨이 등록: 게이트웨이 키 생성(또는 64자리 16진수 붙여 넣기, ZBG_ 주소 미리 보기가 실시간 갱신), 도메인, URL → RegisterGateway(36), 10 ZBC 스테이크가 잠깁니다. 하트비트(37)는 실행 중인 게이트웨이가 자동으로 보냅니다.
  • 게이트웨이 등록 해제: 키로 해제하며 스테이크를 환불합니다(UnregisterGateway, 38).

11.5 릴레이

릴레이 등록(운영자용 절차, 트랜잭션 없음, 수수료 없음): 서명할 ZBG_ 키를 가진 게이트웨이를 고르고, 인증서 유효 기간(일)을 정한 뒤 릴레이 키 및 인증서 생성을 누릅니다. 지갑은 릴레이의 ZBR_ 키와 게이트웨이 키로 서명된 인증서를 만들어 줍니다. 결과를 릴레이 서버의 /etc/zoobc/relay.env에 붙여 넣고 재시작하면 로그에 [fed] ON가 표시되고 피어 게이트웨이와 연결됩니다. 키를 교체하려면 언제든 다시 실행하세요.

11.6 거버넌스

  • 투표: 투표는 질문, 선택지, 설명, 투표 기간, 참여 자격 규칙(최소 ZBC 잔액, 최소 계정 사용 기간, 최소 트랜잭션 수)으로 이루어진 온체인 기록(데이터셋)입니다. 새 투표는 편집기를 열고, 투표 링크 열기…는 공유된 #gov=poll/... 링크를 붙여 넣습니다. 각 표는 투표자 계정에서 보내는 서명된 트랜잭션이며, 집계는 체인에서 직접 읽습니다. 투표 카드에는 상태(예정 / 진행 중 / 종료), 득표 수, 링크 복사, 열기가 표시됩니다.
  • 수수료 투표: 네트워크 수수료 배율을 올리거나 내리는 데 투표합니다(1.0× = 기본). 모든 노드 투표의 중앙값에 따라 조정되며, 기간당 0.5×–2.0× 범위로 제한됩니다. 두 단계로 진행됩니다:
  1. 커밋: 투표가 해시 형태로 브로드캐스트되며(FeeVoteCommit, 유형 7), 지갑은 실제 투표 내용을 이 기기에 기억해 둡니다.
  2. 공개: 공개 기간에 투표 내용과 원시 서명을 브로드캐스트합니다(FeeVoteReveal, 263).

12. 트랜잭션 참조

모든 정수는 리틀 엔디언이며, 금액은 아토믹 단위입니다(ZBC는 ×10⁸, 토큰은 ×10^decimals). 모든 트랜잭션은 같은 엔벨로프를 공유합니다: type(u32) · version(1) · timestamp(u64) · sender(typed acct) · recipient(typed acct; 02000000 = none) · fee(u64) · body_len(u32) · body · escrow-or-marker · message_len(u32) · message. 에스크로 블록(에스크로 가능한 모든 유형)은 approver(typed) · commission(u64) · timeout(u64) · instruction(lp4) · multi_party(1)이며, 에스크로가 없으면 4바이트 마커(=2)가 기록됩니다. ZBC 계정은 SHA3-256("ZBC-TX" ‖ genesis_hash(32) ‖ unsigned_bytes)에 대해 ed25519로 서명하고, 다른 형식은 같은 다이제스트에 대해 각자의 고유한 서명 방식으로 서명합니다. 다이제스트에 제네시스 해시를 묶어 넣기 때문에 서명을 다른 ZooBC 네트워크에서 재사용(리플레이)할 수 없으며, 이는 v0.4.0부터 필수입니다.

결제 및 에스크로

유형이름바디참고
1SendZBCamount(8)수령인은 엔벨로프에 기록됩니다. 에스크로 + 온체인 메시지(ZBC→ZBC 간 선택적 암호화)를 지원합니다.
6LiquidPaymentamount(8) · complete_minutes(8) · [token_id(8)] · [fee_in_token(1)]기간 동안 수령인에게 선형으로 베스팅되며, 수령인은 베스팅되는 만큼 청구합니다. 토큰 스트림은 token_id를 맨 뒤에 덧붙입니다.
262LiquidPaymentStoptx_id(8)송신자가 스트림을 중단하면 베스팅되지 않은 잔액이 반환됩니다.
4ApprovalEscrowapproval(u32: 0=승인, 1=거부) · escrowed_transaction_hash(32)지정된 승인자가 서명합니다. 승인하면 수령인에게 지급되고, 거부하면 송신자에게 반환됩니다. 시간이 초과되면 체인이 자동으로 처리합니다.
260EscrowRequesttoken_id(8) · amount(8) · approver(typed) · timeout(8) · commission(8) · instruction(lp4)엔벨로프 수령인 = 지불인. 수취인 측 에스크로로, 지불인이 할 일에서 자금을 넣습니다.
15CreateTriggerfire_height(8) · amount(8)엔벨로프 수령인 = 수혜자. 지금 잠그고 지정한 블록 높이에서 지급합니다.
16CancelTriggertrigger_id(8)잠긴 금액을 소유자에게 환불합니다.

스케줄러

유형이름바디참고
29ScheduledTransfertoken_id(8) · per_fire(8) · interval_s(8) · fires(u32) · cliff_s(8) · funding_mode(1) · cancel_policy(1) · end_time(8) · reserved(1)funding_mode 0 = 베스팅(총액 사전 잠금), 1 = 정기(실행 시 인출). cancel_policy 0 = 철회 가능. 회차는 1–520회.
30CancelScheduleschedule_id(8)송신자 철회(철회 가능한 경우) 또는 수령인 거절. 실행되지 않은 잔액은 반환됩니다.
31ReassignScheduleschedule_id(8) · new_recipient(typed)현재 수령인만 가능.

메시지 및 데이터

유형이름바디참고
3SetupAccountDatasetprop_len(u32) · prop · val_len(u32) · val채팅 메시지, 청구서, 양식, 투표, 공증 앵커, 프로필 필드. 항목당 최대 4,096바이트이며 스토리지 임대료가 부과됩니다.
259RemoveAccountDataset동일한 레이아웃계정 + 속성 + 값이 정확히 일치해야 합니다.
9FundStorageamount(8)계정의 데이터셋 임대료를 선불로 냅니다.
40StoreFilefile_root(32) · total_size(8) · piece_size(u32) · deposit(8) · piece_count(u32) · piece_ids(32×n)DFS 업로드를 앵커링합니다. 보증금은 0.01 ZBC 이상이어야 하며, 루트는 조각과 일치해야 합니다.
42TransferDatasetobject_id(32) · new_owner(typed 36)2단계 소유권 이전(제안).
43SetDatasetPolicyobject_id(32) · mode(1) · n_add(1)+adds · n_remove(1)+removes접근 제어 목록(변경당 최대 255개).
44AcceptDatasetobject_id(32)수령인이 이전 제안을 수락합니다.
45DeleteDatasetobject_id(32)소유자가 객체를 삭제합니다.

object_id = 생성 트랜잭션의 해시(ZTX_/64자리 16진수). 수명 연장 충전은 객체의 ZBS_ 보증금 주소(계정 유형 10)로 보내는 일반 SendZBC이며, 에스크로를 걸 수 있습니다.

토큰(컬러드 코인)

유형이름바디참고
10IssueTokendecimals(1) · flags(1) · supply(8) · backing(8) · sym(lp2) · name(lp2)플래그: 상환 가능, 추가 발행 가능. SVG 아이콘 + 설명은 메시지에 포함됩니다(≤ 6,144 B).
11TransferTokentoken_id(8) · amount(8) · fee_in_token(1)에스크로 가능. 에스크로 사용 시 수수료는 ZBC여야 합니다(fee_in_token은 0으로 강제).
12MintTokentoken_id(8) · add_supply(8) · add_backing(8)발행자 전용. 단위 가치를 일정하게 유지합니다.
13BurnTokentoken_id(8) · amount(8)상환 가능 토큰은 담보 중 내 몫을 돌려줍니다.
14FinanceTokentoken_id(8) · amount(8)토큰의 존속 임대료를 충전합니다.

거래

유형이름바디참고
18CreateSwapOffergive_token(8) · give_amt(8) · want_token(8) · want_amt(8) · expiry(8; 0=GTC) · [counterparty(36)]주는 쪽 자산을 잠급니다. 상대방을 지정하면 지정 제안이 됩니다.
19AcceptSwapOfferoffer_id(8)원자적 스왑: 원하는 쪽 자산은 테이커→메이커로, 보류된 주는 쪽 자산은 →테이커로 이동합니다.
20CancelSwapOfferoffer_id(8)메이커 전용. 보류 금액을 환불합니다.
21CreateMarketbase_token(8) · quote_token(8) · deposit(8)호가창 마켓. 보증금은 ZBC 임대료입니다.
22PlaceOrdermarket_id(8) · side(1) · price(8, ×1e8) · amount(8, base) · flags(1: bit0 market, bit1 post-only) · expiry(8)side 0 = 기준 자산 매수, 1 = 매도.
23CancelOrderorder_id(8)소유자 전용. 미체결 잔량을 환불합니다.

앱

유형이름바디참고
24CreateAppapp_type(1) · stake_token(8) · stake_amount(8) · seats(1) · params(lp2) · [opponent(36)] · [channel(1)]스테이크는 기본 단위로 표시합니다. 좌석: 1 솔로, 2 대결, 3 이상 파티. 상대를 엔벨로프 수령인으로 지정하므로 초대가 상대의 스트림에 표시됩니다. channel=1 = 빠른 모드(2인 전용).
25JoinAppapp_id(8)참가자의 스테이크를 잠급니다.
26AppMoveapp_id(8) · move(lp2)한 수 = 한 트랜잭션. 노드의 앱 VM이 다시 검증합니다.
27ResignAppapp_id(8)스테이크는 상대에게 갑니다.
28ClaimTimeoutapp_id(8)상대가 수당 제한 시간을 넘겨 이탈하면 승리합니다.
39SettleAppapp_id(8) · final_seq(u32) · move_count(u32) · [seat(1)·move(lp2)·sig(64)]*빠른 모드 정산: 체인이 서명된 바우처를 재실행해 판정합니다.

노드 및 인프라

유형이름바디참고
2NodeRegistrationnode_pub(32) · owner(36) · locked(8) · POOWN(136)최소 1 ZBC 잠금. POOWN = owner‖blockhash‖height(72) + 이에 대한 노드 ed25519 서명(64), 최신 블록 기준.
514RemoveNodenode_pub(32)잠긴 잔액을 해제합니다.
258UpdateNodenode_pub(32) · locked(8) · POOWN(136)스테이크는 유지하거나 늘리는 것만 가능합니다.
770ClaimNodenode_pub(32) · POOWN(136)소유권을 서명자에게 다시 지정합니다.
36RegisterGatewaygw_key(32) · domain(lp4) · url(lp4)프로토콜에 고정된 10 ZBC 스테이크를 잠급니다.
37GatewayHeartbeatgw_key(32)생존 신호. 기록이 정리되지 않도록 유지합니다.
38UnregisterGatewaygw_key(32)10 ZBC 스테이크를 환불합니다.
46 / 47Register / UnregisterArchivalnode_pub(32) [· domain(lp4) · url(lp4)]스테이크 없이 수수료만 냅니다. 소유자가 서명합니다.
48 / 49Register / UnregisterRelayrelay_key(32) [· gw_key(32) · domain(lp4) · url(lp4)]탐색용 기록. 인증은 여전히 오프체인 인증서가 담당합니다.

거버넌스 및 정책

유형이름바디참고
7FeeVoteCommitvote_hash(32)FeeVoteInfo(blockhash‖height‖feeVote)의 SHA3-256. 투표 내용은 공개 단계를 위해 로컬에 보관됩니다. 1.0× ↔ feeVote 10000.
263FeeVoteRevealFeeVoteInfo(44) · sig_len(u32=64) · voter_sig(64)info에 대한 원시 ed25519 서명. 중앙값이 적용되며 기간당 0.5×–2.0×로 제한됩니다.
5MultisigRegistrationver(u32) · min_sigs(u32) · nonce(u64) · n(u32) · 정렬된 참여자 · 0 · 0주소 = 정규화된 참여자 집합에 대한 SHA3-256의 ZBC 인코딩.
50SetTransactPolicymask(u16)비트 i 설정 = 계정이 카테고리 i를 거부함(비트 0–8, §5.7 참조). 본인 서명만 가능하며, 모든 노드가 양방향으로 강제합니다.

13. 문제 해결

  • 상단 바에 “동기화 중…” 표시: 일시적인 네트워크 끊김입니다. 지갑은 30초 동안 계속 실패해야 체인 연결 불가로 판단하며, 그동안 대체 노드와 알려진 게이트웨이를 자동으로 시도합니다.
  • “새 체인 감지됨”: 노드의 최신 블록이 이 지갑이 본 가장 높은 블록보다 훨씬 낮다는 뜻으로, 네트워크가 제네시스부터 다시 시작된 것입니다. 지갑은 이전 체인의 캐시(활동, 토큰, 앱, 알림)를 한 번에 정리하는 기능을 제공하며, 키, 시드, 연락처는 유지됩니다.
  • PIN을 잊어버린 경우: 5회 잘못 입력하면 볼트가 삭제됩니다. 복구 구문(또는 백업 파일 + 해당 PIN)으로 복원하세요.
  • 수수료만 부과되고 트랜잭션이 거부된 경우: 상대방(또는 본인)의 거래 정책이 해당 카테고리를 거부하고 있습니다(§5.7).
  • 거래소/마켓플레이스/앱이 오프라인으로 표시되는 경우: 노드에 해당 엔드포인트가 없거나 연결할 수 없는 상태입니다. 탭은 계속 확인하다가 연결되면 자동으로 라이브로 바뀝니다.
  • 앱이 멈췄거나 앱 사용 중 브라우저가 닫힌 경우: 로비에서 같은 앱을 다시 열어 재연결하세요. 온체인 앱은 체인에서 재구성되고, 빠른 모드 앱은 바우처를 자동으로 재전송합니다.
  • 보낸 메시지/트랜잭션이 다른 기기의 활동에 보이지 않는 경우: 활동의 최신 TX 소스는 연결된 노드의 최근 구간만 보여 줍니다. 전체 기록을 보려면 소스를 전체 TX(아카이브)로 바꾸세요.
  • 공유 링크가 #으로 시작하는 경우: 로컬 파일에서 실행 중입니다. 수령인은 자신의 지갑 사본이나 게이트웨이에서 호스팅되는 지갑에서 …wallet.html 뒤에 프래그먼트를 붙여 넣으면 됩니다.

14. 용어집

  • 아토믹 단위: 온체인 최소 단위, 10⁻⁸ ZBC.
  • 담보 토큰: ZBC가 담보로 잠겨 있는 토큰. 소각하면 지분에 비례하는 담보를 상환받습니다.
  • 데이터셋: 계정에 기록된 속성→값 레코드. 체인의 범용 데이터 저장소입니다.
  • 에스크로: 지정된 승인자가 승인하거나 거부할 때까지, 또는 기한이 지나 자동 처리될 때까지 보류되는 자금.
  • 빠른 모드 / 채널: 오프체인에서 서명된 수 바우처를 마지막 트랜잭션 하나로 정산하는 방식.
  • 게이트웨이: 지갑이 연결에 사용하는 웹 서버(ZBG_ 키).
  • 리퀴드 결제: 시간에 따라 연속적으로 베스팅되는 이체.
  • POOWN: 노드 소유 증명. 노드 키가 소유자 + 최신 블록 해시 + 높이에 서명합니다.
  • 릴레이: 게이트웨이가 운영하는 통화/접속 상태 서버(ZBR_ 키).
  • 사용 가능 잔액: 잔액에서 잠긴 모든 금액(스테이크, 에스크로, 제안, 일정)을 뺀 금액.
  • 볼트: 시드, 키, 연락처를 보관하는 PIN 암호화 로컬 저장소.
  • 조회 전용: 키 없이 추가한 주소. 볼 수는 있지만 서명할 수는 없습니다.
  • ZBS_ 주소: 객체의 임대료 보증금 계정. 일반 주소처럼 자금을 넣을 수 있습니다.
  • ZTX_: 트랜잭션 해시의 표시 형식.