Translations: API/26/ko

From ArdorDocs
Jump to: navigation, search

에스크로 운영

신규 트랜잭션을 생성하는 모든 API 요청은 연결된 트랜잭션을 생성하는 referencedTransactionFullHash 매개 변수를 선택적으로 받습니다. 여기에서 말하는 연결된 트랜잭션이란 참조된 트랜잭션이 컨펌 되지 않으면, 신규 트랜잭션도 컨펌 될 수 없는 트랜잭션을 의미합니다. 이 기능을 통해 트랜잭션 에스크로를 간단히 구현 할 수 있게 됩니다. :

  • Alice는 트랜잭션 A를 생성하고 서명하지만, broadcast 파라미터를 false로 설정하여 브로드캐스트 하지는 않습니다. 그리고 Alice는 Bob에게 unsignedTransactionBytes, 트랜잭션의 fullHash, and signatureHash를 보냅니다. 이 모든 것들은 API 요청에 의해 반환되는 JSON에 포함되어 있습니다.(경고: 서명된 transactionBytessignature를 그대로 보내면 안됩니다. Bob이 임의대로 트랜잭션 A를 브로드캐스트 할 수 있기 때문입니다.).
  • Bob은 트랜잭션 B를 준비하여 서명하고 브로드 캐스트 합니다. 이때, referencedTransactionFullHash 파라미터는 Alice가 제공한 A 트랜잭션의 fullHash가 되도록 설정합니다. 이후 Bob이 (Alice로 부터 받은) unsignedTransactionBytessignatureHash를 사용하여 Full 해시를 계산하면, Alice로부터 예상했던 트랜잭션의 해시인지 검증 할 수 있습니다. 뿐만 아니라 Bob이 트랜잭션 파싱을 진행하면 서명되지 않은 바이트를 해독하고, 모든 트랜잭션 항목을 검사 할 수도 있습니다.
  • 트랜잭션 B는 미확인 트랜잭션 풀에 포함되었지만, A가 서명 되지 않는 한 B는 컨펌 되지 않습니다.(블록체인에 포함되지 않습니다.) 만약 A 트랜잭션이 영원히 제출되지 않는다면, B 트랜잭션은 결국 만료 될 것입니다. - 따라서 Bob은 트랜잭션 만료 기한을 32767 분처럼 최대로 설정해 놓는 것이 좋습니다.
  • B 트랜잭션이 미확인 트랜잭션 풀에 들어가면, Bob은 이 트랜잭션을 되돌 릴 수 없습니다. 따라서 Alice는 처음에 살펴 보았던 signedTransactionBytes를 브로드 캐스트 함으로써 트랜잭션 A를 안전하게 제출 할 수 있습니다. 트랜잭션 A가 먼저 블록체인에 포함된 이후에 다음 블록에 Bob의 트랜잭션 B가 포함 될 것입니다.

위에서 설명한 체계는 간단한 에스크로에서는 충분하지만, 블록체인은 A가 포함되면 B 또한 포함되도록 강제하지 않습니다. 때론 포크나 블록체인 재구성으로 인해 발생 할 수도 있지만, 트랜잭션 A가 블록체인에 있는 한 B는 포함되거나 컨펌되지 않은 상태로 만료 될 일은 없습니다. 하지만, Bob이 의도적으로 이러한 일련의 이벤트를 발생시켜 트랜잭션 B가 컨펌 되는 것을 막을 수는 없습니다.