Xumm 컨셉
리플이 제공하는 XRPL Labs
는 사용자가 2019 년 7 월 지갑 계정에 암호 화폐 및 화폐 통화 [예 : 유로 및 미국 달러]로 저장할 수있는 Xumm
을 출시했다. XRPL Labs의 수석 개발자 Wietse Wind에 따르면이 배포의 주요 목표는 기존 금융 기관의 개입없이 은행 애플리케이션과 유사한 애플리케이션을 구축하는 것이다.
간단하게 말하면, 리플의 XRP 원장
계정을 생성하고 기존 계정을 가져올 수 있도록 도와주는 지갑이다.
Xumm 용어
- xumm: xumm은 iOS 또는 Android 기기 전용 xumm 앱 을 의미한다.
- xumm platform: xumm 플랫폼을 언급할 때 개발자가 xumm 앱을 통해 최종 사용자에게 서명 요청을 전달하기 위한 API를 의미한다다.
- xumm API: xumm API는 xumm 플랫폼 과 관련된 xumm API를 의미합니다 .
- application: 애플리케이션을 언급할 때 xumm앱 이 아니라 개발자 소유의 애플리케이션을 의미합니다.
XRP 거래는 일반적으로 사용자가 시작한다. 지갑을 열고 대상이나 금액 등을 입력한 다음 거래를 제출한다. 소매/전자 상거래(및 기타 많은) 시나리오에서 이 프로세스를 “reversing”하면 결제 흐름이 실수를 덜 범하고 훨씬 더 사용자 친화적이 된다.
여기서 Xumm 플랫폼이 등장한다. XRPL 트랜잭션 템플릿은 Xumm API
에 게시될 수 있다. 서명 오청(=payload
)은 저장되므로 xumm 앱 사용자는 서명 요청을 열고(QR, 딥링크 또는 푸시알람을 스캔하여) 자신의 장치에서 해결할 수 있다(거부/서명).
사용자가 서명 요청에 서명하면 애플리케이션을 신뢰할 수 있다. 이 경우 애플리케이션에 대한 애플리케이션별 사용자 토큰이 생성되고 향후 payload
는 푸시알람과 함께 최종 사용자에게 직접 전달된다.
xumm 플랫폼은 XRP 원장에서 서명된 트랜잭션을 확인하는 데 필요한 모든 정보와 함께 다양한 상태 업데이트 옵션을 제공하므로 xumm 앱의 트랜잭션 콜백 정보 또는 트랜잭션 제출에 의존할 필요가 없다.
앱 등록
개발자가 Xumm Api를 호출하기 위해서는 Api key를 얻어 등록해야만 한다. xumm 개발자 대시보드에 방문하여 등록하여 로그인한다.
xumm API 에 대한 모든 호출 에는 최소한 다음 세 개의 HTTP 헤더가 포함되어야 한다.
Header(key) | value |
---|---|
Content-Type | application/json |
X-API-Key | xumm 개발자 대시보드에서 가져옴 |
X-API-Secret | xumm 개발자 대시보드에서 가져옴 |
자, 앱등록이 완료되면 모든 준비는 완료되었다. xumm api를 직접 호출하여 사용할 수 있다.
서명요청(Payload)
일반적으로 페이로드 워크플로는 애플리케이션에서 시작된다(사용자가 무언가를 서명하기를 원한다)
. 사용자가 애플리케이션에 지불하는 행위, 에스크로 설정, 다중 서명 설정, 신뢰 라인 생성 등과 같은 다른 유형의 XRPL 트랜잭션일 수도 있다.
페이로드(payload) vs. 서명요청(sign request) vs. 트랙잭션 템플릿(transaction template)
최종 사용자가 트랜잭션(서명 요청)에 서명하도록 하려면 트랙잭션 템플릿(XRPL 트랜잭션 사양에 따라 형식이 지정된 JSON 형식)을 작성하고 트랜잭션 템플릿을 xumm 플랫폼(api)에 게시하여 페이로드를 생성해야한다. 그리고 xumm 앱 사용자가 거부 또는 서명하게 된다.
개발자의 애플리케이션은 XRPL 트랜잭션 템플릿을 만든다. 일반적인 XRPL JSON 트랜잭션
과 xumm 트랜잭션 템플릿
의 차이점은 최종 사용자 기기의 xumm 앱이 자동으로 채우기 때문에 일부 필드를 생략하거나 공백으로 둘 수 있다는 점이다.
그리고, 개발자의 애플리케이션 백엔드는 트랜잭션 템플릿을 Xumm API로 보낸다. 그럼 개발자의 애플리케이션은 유니크한 페이로드 아이디(payload ID)
를 전달받는다.
Testnet/Devnet/Mainnet에 대한 참고 사항
Testnet/Devnet
과 상호 작용하려면 Testnet/Devnet
에 연결된 xumm
앱으로 요청에 서명하기만 하면 된다. XUMM 플랫폼
은 단순히 최종 사용자와 외부 응용 프로그램 간의 "상호작용 채널"
이기 때문에 사용된 네트워크는 API와 관련이 없다. 서명이 선행될 때 사용자가 연결되는 네트워크이다.
데스크탑 클라이언트
애플리케이션에서 QR 코드를 생성하거나 사전 생성된 QR 코드 중 하나를 사용할 수 있다. xumm 앱 최종 사용자는 QR 코드를 스캔하고 거래 템플릿을 검토하고 거래에 서명할 수 있다. 또한 최종 사용자를 페이로드 URL로 리디렉션할 수 있다.
디바이스 클라이언트
디바이스에서 이 프로세스가 발생 하면 사용자를 페이로드 URL로 리디렉션할 때 xumm 앱이 자동으로 열린다.
페이로드를 생성할 떄 애플리케이션이 게시한 페이로드 옵션에 따라서 xumm 앱은 서명된 트랜잭션을 XRPL에 직접 제출하거나 서명된 트랜잭션 HEX를 애플리케이션에 다시 게시한다.(그래서 애플리케이션은 서명된 트랜잭션을 제출하거나 유지할 수 있다.)
최종 사용자가 페이로드를 거부 및 서명하여 해겷하면 애플리케이션 백엔드는 HTTP POST 웹훅을 수신한다. 또한, 페이로드별 웹 소켓을 구독하여 실시간 상태 업데이트를 받거나 xumm API를 호출하여 페이로드 상태를 얻을 수 있다.
xumm 서명요청 flow(initially, non-push)
xumm 서명요청 flow(with User Token, push)
참조
- https://xumm.readme.io/docs/payload-workflow