에스크로를 스마트 컨트랙트로 사용(Use an Escrow as a Smart Contract)
스마트 컨트랙트는 둘 이상의 당사자 간의 계약 조건과 이행을 암호화하고 조건이 충족되면 자동으로 계약 조건을 이행하는 블록체인 기반 프로그램입니다. 스마트 컨트랙트는 투명하고 추적 가능하며 변조 방지 및 되돌릴 수 없는 방식으로 가치 있는 모든 것을 교환하는 데 도움이 될 수 있습니다.
스마트 컨트랙트를 블록체인에 인코딩하면 금융 기관이나 법률 기관과 같은 기존의 제3자 없이도 계약을 안전하게 수행할 수 있다는 이점이 있습니다. 대신 블록체인을 실행하는 분산형 컴퓨터 네트워크가 계약을 감독합니다.
특정 시간이 지나거나 암호화 조건이 충족된 후 XRP를 릴리스하는 스마트 컨트랙트로 XRP Ledger 에스크로를 사용할 수 있습니다. 이 경우, 암호화 조건이 충족된 후 XRP를 릴리스하는 스마트 컨트랙트로 에스크로를 사용하겠습니다.
이 시나리오를 통해 이 사용 사례를 설명해 보겠습니다: 파티 플래너가 스마트 컨트랙트를 사용해 파티 호스트와 파티 공급업체 간의 결제를 관리한다고 가정해 보겠습니다. 구체적으로, 파티 플래너는 스마트 컨트랙트를 사용하여 파티 호스트가 세트를 완성한 후 파티 밴드에 2000 XRP를 지불하도록 하고자 합니다.
이 사용 사례에서 파티 호스트는 에스크로의 발신자, 파티 밴드는 에스크로 수신자, 파티 플래너는 오라클의 역할을 합니다. 스마트 컨트랙트에서 오라클은 실제 이벤트를 확인하여 스마트 컨트랙트를 이행하거나 무효화할 수 있는 중립적인 제3자 에이전트입니다. 이 사용 사례에서는 예시를 위해 인간 오라클을 사용했지만, 실제로는 소프트웨어 애플리케이션이 오라클 역할을 할 가능성이 더 높습니다.
이 스마트 컨트랙트를 제공하기 위해 XRP ledger 에스크로를 사용하는 것은 제3자 오라클인 파티 플래너가 전통적인 에스크로 계약에서처럼 자금을 "보유"하지 않으며, 자금을 직접 가져갈 수도 없기 때문에 매우 좋은 방식입니다.
다음은 에스크로를 스마트 컨트랙트로 사용하기 위해 참여자가 완료해야 하는 높은 수준의 작업에 대한 로드맵입니다.
요구 조건 충족(Meet the prerequisites)
파티 호스트(발신자)는 다음을 갖춰야 합니다:
에스크로와 발생하는 수수료를 지불할 수 있는 충분한 XRP를 보유한 XRP Ledger 계정.
서명된 트랜잭션을 제출할 수 있는 rippled 서버(모든 서버)에 대한 네트워크 연결이 포함된 보안 서명 환경에 액세스할 수 있는 권한.
파티 밴드(수신자)가 있어야 합니다:
에스크로에서 지급한 XRP를 받을 수 있는 XRP ledger 계정.
XRP ledger 트랜잭션 해시의 세부 정보를 조회하고 에스크로를 완료하기 위해 이행값을 제출하는 데 사용할 수 있는 rippled 서버에 대한 액세스 권한.
파티 플래너(오라클)가 보유해야 합니다:
조건과 이행을 생성할 수 있는 능력.
적절한 시기가 될 때까지 (이행을) 비밀로 유지.
적절한 시기가 되면 공개적으로 또는 최소한 파티 밴드에 이행을 알릴 수 있는 방법.
파티 밴드가 계약 종료(파티에서 재생)를 이행했는지 여부를 인식할 수 있는 기능.
스마트 컨트랙트 조건 정의(Define the terms of the smart contract)
에스크로를 스마트 컨트랙트로 만들려면 먼저 참여자가 계약 조건을 정의해야 합니다. 이 시나리오에서 참가자는 다음 세부 사항에 동의해야 합니다.
에스크로가 특정 시간까지 이행을 허용하지 않아야 하나요? 이 옵션은 선택 사항이지만, 참여자는 에스크로가 필요하지 않다는 데 동의합니다. 조건부 보류 에스크로의 경우, 이 옵션을 활성화해도 에스크로가 완료될 수 있는지 여부는 전적으로 파티 플래너(오라클)가 만료 전에 이행을 게시하는지 여부에 달려 있기 때문에 추가적인 보안이 제공되지 않습니다.
에스크로가 만료되어야 하나요? 물론입니다. 참가자들은 에스크로가 파티 다음 날 정오 12시 이후에 만료되어야 한다는 데 동의합니다. 이렇게 하면 파티 플래너가 파티 밴드(수령인)가 에스크로를 완료할 수 있는 충분한 시간이 주어지며, 파티 플래너는 계약이 종료되었음을 확인하고 암호화된 이행을 게시합니다. 계약이 만료되면 잠긴 XRP는 파티 호스트(발신자)의 계정으로 반환됩니다. 참가자가 에스크로 만료를 허용하지 않고 파티 플래너가 조건을 해제하지 않으면 XRP는 에스크로에 영원히 잠긴 상태로 유지됩니다.
에스크로가 잠겨서 잠재적으로 지불해야 하는 XRP의 양은 얼마인가요? 참가자들은 에스크로가 파티 밴드의 수수료인 2000 XRP를 잠그고 잠재적으로 지불해야 한다는 데 동의합니다.
에스크로는 파티 밴드에 지불할 수 있도록 어느 XRP ledger 계정에서 XRP를 잠가야 하나요? 참가자들은 에스크로가 파티 호스트의 XRP ledger 계정에서 XRP를 잠그고 잠재적으로 지불해야 한다는 데 동의합니다.
에스크로가 잠재적으로 XRP를 지급할 수 있는 XRP ledger 계정은 어디인가요? 참가자들은 에스크로가 잠재적으로 파티 밴드의 XRP ledger 계정으로 XRP를 지급해야 한다는 데 동의합니다.
오라클: 조건 및 이행 생성하기(Oracle: Generate a condition and a fulfillment)
참여자는 스마트 컨트랙트를 제공하기 위해 조건부 에스크로를 생성하고자 하므로 조건값과 이행값이 필요합니다. 이 시나리오에서 이러한 값을 생성하는 참여자는 중립적인 파티 플래너(오라클)입니다.
파티 플래너는 조건값과 이행값을 생성합니다. 파티 플래너는 에스크로를 생성하는 파티 호스트에게 조건값을 제공합니다. 파티 플래너는 파티 밴드에도 조건을 제공하여 올바른 조건인지 알 수 있도록 합니다.
파티 플래너는 이행 값을 비밀로 유지해야 합니다. 누구나 조건과 이행 값을 사용하여 에스크로를 완료할 수 있습니다. 대개 받는 사람이 에스크로를 완료하는 경우가 많은데, 이는 돈을 받고자 하는 동기가 있는 사람이 에스크로를 완료하기 때문입니다.
발신자: 에스크로에 필요한 시간 값 계산하기(Sender: Calculate time values needed for the escrow)
참가자들은 파티 다음 날 정오 12시 이후에 에스크로를 취소할 수 있기를 원하므로 파티 호스트(발신자)는 에스크로 정의에 포함할 CancelAfter 값을 계산해야 합니다.
발신자: 에스크로 생성(Sender: Create the escrow)
파티 호스트(발신자)가 스마트 컨트랙트를 제공하는 에스크로를 생성합니다. 파티 호스트가 에스크로를 생성해야 하는 이유는 자신의 XRP ledger 계정에서 XRP의 락업과 잠재적 지급을 승인할 수 있는 유일한 참여자이기 때문입니다.
발신자와 수신자: 유효성 검사를 기다렸다가 에스크로 생성 확인(Sender and Receiver: Wait for validation and confirm escrow creation)
파티 호스트(발신자)는 에스크로 생성 트랜잭션이 포함된 ledger의 유효성 검증을 기다린 다음 에스크로가 생성되었음을 확인합니다.
그런 다음 파티 호스트는 에스크로 트랜잭션의 해시값을 파티 밴드(수신자)에게 제공합니다. 파티 밴드는 해시값을 사용해 XRP Ledger에서 에스크로 트랜잭션을 조회하여 동의한 스마트 컨트랙트 조건에 따라 생성되었는지 확인할 수 있습니다. 이 단계의 일부로, 파티 밴드는 조건이 파티 플래너(오라클)가 제공한 조건과 일치하는지 확인해야 합니다. 조건이 틀린 경우, 파티 플래너가 제공한 이행을 통해 파티 밴드는 에스크로를 완료하고 대금을 받을 수 없습니다.
수취인: 에스크로 완료(Receiver: Finish the escrow)
파티 밴드(수신자)가 나타나서 세트를 재생합니다.
파티 플래너(오라클)가 파티에 참석하여 모든 것이 원활하게 진행되는지 확인합니다. 파티 플래너는 파티 밴드가 계약을 이행했는지 직접 확인하고 이행 사실을 공개적으로 또는 최소한 파티 밴드에게 게시합니다.
파티 밴드는 정오 12시 이전에 에스크로를 완료해야 합니다. 그렇지 않으면 에스크로가 만료되고 파티 밴드는 대금을 지급받지 못합니다.
파티 플래너가 예약을 게시하지 않거나(파티 밴드가 노쇼인 경우), 파티 플래너가 예약을 게시했지만 에스크로를 완료한 사람이 없는 경우 다음 날 정오 12시 이후에는 누구나 에스크로를 취소할 수 있습니다. 에스크로를 취소하면 보류된 XRP가 파티 호스트의 계정으로 반환됩니다.
수신자와 발신자: 확인을 기다린 후 최종 결과 확인(Receiver and Sender: Wait for validation and confirm final result)
파티 밴드(수신자)는 에스크로 완료 트랜잭션이 포함된 ledger의 유효성 검증을 기다린 후 에스크로가 완료되었음을 확인합니다.
이때 파티 밴드는 트랜잭션의 해시값을 파티 호스트(발신자)에게 제공합니다. 파티 호스트는 해시값을 사용해 XRP Ledger에서 에스크로 트랜잭션을 조회하여 트랜잭션이 올바르게 완료되었는지 확인할 수 있습니다.
파티 밴드는 XRP Ledger 계정 잔액을 확인하여 잔액이 2000 XRP 증가했는지 확인할 수 있습니다. 에스크로 생성으로 인해 이미 계정에서 잠긴 XRP가 인출되었기 때문에 이 단계에서 파티 호스트의 잔액은 변경되지 않습니다(에스크로가 취소되지 않는 한).
Last updated