메시징
Z-Text 메시지는 블록체인 트랜잭션입니다. 모든 메시지는 암호화되고, 영구적이며, 검열에 저항합니다.
메시지 보내기
메시지를 보내려면 핸드셰이크가 완료된 연락처와의 대화를 열고 메시지를 입력합니다. 앱이 공유 키로 암호화한 후 BitcoinZ 블록체인에서 차폐 트랜잭션으로 브로드캐스트합니다.
- 메시지 탭에서 대화를 엽니다
- 입력 필드에 메시지를 입력합니다
- 보내기 버튼을 탭합니다 -- 메시지가 로컬에서 암호화됩니다
- 차폐 트랜잭션이 생성되어 네트워크에 브로드캐스트됩니다
- mempool G-stream 푸시를 통해 거의 즉시(보통 1-5초) 메시지가 전달됩니다
메시지 전달
메시지는 mempool G-stream 푸시를 통해 거의 즉시 전달됩니다. 트랜잭션이 브로드캐스트되면 G-stream이 읽지 않은 메모를 1-5초 이내에 수신자의 기기로 푸시합니다. 이후 블록 확인이 이루어져 블록체인에 영구적으로 기록됩니다.
| 상태 | 의미 |
|---|---|
| 전송 중 | 트랜잭션을 생성하고 서명하는 중입니다 |
| 대기 중 | 트랜잭션이 mempool에 브로드캐스트되었습니다 |
| 전달됨 | mempool G-stream 푸시가 수신자에게 전달되었습니다 |
| 확인됨 | 트랜잭션이 블록에 채굴되어 영구적으로 기록되었습니다 |
핸드셰이크 프로토콜
누군가에게 메시지를 보내기 전에 암호화 핸드셰이크를 완료해야 합니다. 이를 통해 양쪽 모두 메시지 암호화에 사용하는 공유 비밀 키가 설정됩니다.
- 시작 -- 차폐 트랜잭션에 공개 키를 포함하여 핸드셰이크 요청을 보냅니다
- 응답 -- 수신자가 다른 차폐 트랜잭션에 자신의 공개 키를 포함하여 수락합니다
- 키 도출 -- 양쪽 클라이언트가 Diffie-Hellman 키 교환을 사용하여 공유 비밀을 계산합니다
- 준비 완료 -- 공유 비밀이 로컬에 저장되어 이후 모든 메시지를 암호화/복호화하는 데 사용됩니다
신뢰 없는 검증
핸드셰이크는 신뢰가 필요 없습니다 -- 키 교환을 중재하는 서버가 없습니다. 양쪽의 공개 키가 차폐 트랜잭션을 통해 전달되므로 키 교환 자체도 관찰자에게 보이지 않습니다.
암호화 설명
Z-Text는 이중 암호화 모델을 사용합니다:
- 레이어 1 -- zk-SNARK 차폐: 트랜잭션 메모(메시지 포함)는 블록체인의 기본 차폐 트랜잭션 메커니즘에 의해 암호화됩니다. 발신자와 수신자 z-address만이 복호화할 수 있습니다.
- 레이어 2 -- 공유 키 암호화: 메모 필드에 넣기 전에 핸드셰이크 중 설정된 공유 키로 메시지를 추가 암호화합니다. 이는 누군가가 z-address 조회 키를 탈취하더라도 핸드셰이크에서 파생된 키 없이는 메시지를 읽을 수 없음을 의미합니다.
스티커
Z-Text는 대화에서 스티커 이미지 전송을 지원합니다. 스티커는 텍스트 메시지와 마찬가지로 인코딩되어 트랜잭션 메모에 포함됩니다. 앱에는 기본 스티커 팩이 포함되어 있으며, 프리미엄 사용자는 추가 팩에 접근할 수 있습니다.
메시지 제한
메시지가 트랜잭션 메모에 저장되므로 블록체인의 메모 필드 크기에 따라 메시지당 글자 수 제한이 있습니다. 긴 메시지의 경우 앱이 자동으로 콘텐츠를 여러 트랜잭션으로 분할하고 수신자 측에서 재조립합니다.
프리미엄: 더 빠른 메시지
프리미엄 구독자는 우선 트랜잭션 릴레이의 혜택을 받으며, 최적화된 노드 인프라를 통해 메시지 전달 시간을 단축할 수 있습니다.