제안(Offers)

XRP Ledger의 탈중앙화 거래소에서는 거래 주문을 "제안"이라고 합니다. 제안은 XRP를 토큰으로 또는 다른 토큰으로 거래하거나, 발행자가 다른 같은 화폐 코드를 가진 토큰을 거래할 수 있습니다. (발행자가 다른 같은 코드를 가진 토큰도 가끔 rippling을 통해 교환될 수 있습니다.)

  • 제안을 생성하려면, OfferCreate 트랜잭션을 보내세요.

  • 즉시 완전히 채워지지 않는 제안은 ledger 데이터의 제안 객체가 됩니다. 나중의 제안과 결제는 ledger에서 제안 객체를 소비할 수 있습니다.

  • 교차 화폐 결제는 유동성을 제공하기 위해 제안을 소비합니다. 하지만, 그들은 결코 ledger에 제안 객체를 생성하지 않습니다.

제안의 생명주기(Lifecycle of an Offer)

OfferCreate 트랜잭션은 두 토큰 간, 또는 토큰과 XRP 간에 거래를 수행하라는 지시입니다. 이러한 거래의 각 트랜잭션에는 매입 금액(TakerPays)과 판매 금액(TakerGets)이 포함됩니다. 트랜잭션이 처리되면 가능한 한 많은 매칭이나 크로스 제안을 자동으로 소비합니다. 만약 이것이 새 제안을 완전히 채우지 못하면 나머지는 ledger의 제안 객체가 됩니다.

제안 객체는 다른 제안이나 다른 화폐 간 결제가 완전히 소비할 때까지 ledger에 대기합니다. 제안을 제시한 계정을 제안의 소유자라고 합니다. OfferCancel 트랜잭션을 사용하여 언제든지 자신의 제안을 취소할 수 있으며, 또는 OfferCreate 트랜잭션의 옵션으로 이를 수행할 수 있습니다.

ledger에 제안이 있는 동안, 소유자 reserve에 따라 일부 XRP가 분리됩니다. 제안이 어떤 이유로든 제거되면, 해당 XRP는 다시 사용할 수 있게 됩니다.

변형(Variations)

  • 매입 vs. 매도: 기본적으로 제안은 "매입" 제안이며, "매입"(TakerPays) 금액 전체를 획득하였을 때 완전히 채워진 것으로 간주됩니다. (당신은 지정된 금액을 받으면서 예상보다 덜 소비할 수 있습니다.) 반대로, "매도" 제안은 "매도" (TakerGets) 금액 전체를 소비했을 때만 완전히 채워진 것으로 간주됩니다. (당신은 지정된 금액을 소비하면서 예상보다 더 많이 받을 수 있습니다.) 이것은 제안이 처음에 요청된 환율보다 더 나은 상황에서만 관련이 있습니다: 제안이 ledger에 배치된 후에는 항상 정확히 요청된 환율에서만 실행됩니다.

  • 즉시 또는 취소 제안은 ledger에 배치되지 않으므로, 트랜잭션이 처리되는 시점의 기존 매칭 제안과 일치되는 금액까지만 거래됩니다.

  • Fill 또는 Kill 제안은 ledger에 배치되지 않으며, 처음에 완전한 금액이 채워지지 않으면 취소됩니다. 이것은 "즉시 또는 취소"와 유사하지만 부분적으로 채워질 수 없습니다.

  • 수동 제안은 동일한 환율을 가진 매칭 제안을 소비하지 않고 대신 ledger에 직접 배치됩니다. 이를 통해 두 자산 간에 정확한 닻을 생성할 수 있습니다. 수동 제안은 여전히 다른 방향으로 더 나은 환율을 가진 다른 제안을 소비합니다.

자금 요구사항(Funding Requirements)

제안을 제시하려고 할 때, 거래가 판매할 자산의 일부를 가지고 있지 않은 경우 트랜잭션은 "자금 미보유"로 거부됩니다. 더 구체적으로는:

토큰을 판매하려면 다음 중 하나를 해야 합니다:

  • 해당 토큰의 양수량을 보유하거나,

  • 토큰의 발행자가 되어야 합니다.

하지만 제안에 명시된 전체 금액을 보유할 필요는 없습니다. 제안을 제시하면 자금이 잠기지 않으므로 동일한 토큰(또는 XRP)을 판매하기 위해 여러 제안을 제시하거나, 제안을 제시하고 나중에 충분한 토큰 또는 XRP를 얻어 완전히 지원할 수 있기를 희망할 수 있습니다.

XRP를 판매하려면, 모든 reserve requirements을 충족하는 충분한 XRP를 보유해야 합니다. 이에는 ledger에 배치되어야 하는 제안 객체에 대한 reserve와 구매하려는 토큰을 보유하기 위한 신뢰선의 reserve에 포함됩니다. reserve를 빼놓은 후에도 XRP가 남아 있다면 제안을 제출할 수 있습니다.

다른 제안이 내 제안과 일치하면 두 제안 모두 당시 소유자의 자금이 허용하는 한도 내에서 실행됩니다. 일치하는 제안이 있는데 내 제안이 완전히 채워지기 전에 자금이 소진되면 나머지 제안은 취소됩니다. 토큰의 발행자가 아닌 한, 제안으로 인해 토큰 잔액이 마이너스가 될 수는 없습니다. (발행자인 경우 제안을 사용하여 제안에 지정된 총 금액까지 새 토큰을 발행할 수 있으며, 발행한 토큰은 발행자의 관점에서 마이너스 잔액으로 표시됩니다.)

당신이 ledger에 있는 자신의 제안과 교차하는 제안을 제출하면, 관련된 금액에 관계없이 이전의 교차 제안은 자동으로 취소됩니다.

다음과 같은 경우 제안이 일시적 또는 영구적으로 펀딩되지 않을 수 있습니다:

  • 판매 자산을 더 이상 보유하고 있지 않은 경우.

    • 소유자가 해당 자산을 더 많이 획득하면 제안은 다시 자금 지원을 받게 됩니다.

  • 판매 자산이 동결된 신뢰선의 토큰인 경우.

    • 신뢰선이 더 이상 동결되지 않으면 제안은 다시 자금 지원을 받게 됩니다.

  • 제안이 새로운 신뢰선을 만들 필요가 있지만, 소유자가 증가된 reserve에 대해 충분한 XRP를 보유하고 있지 않은 경우. (제안과 신뢰에 대해 참조하십시오.)

    • 소유자가 더 많은 XRP를 획득하거나 reserve requirements가 감소하면 제안은 다시 자금 지원이 됩니다.

  • 제안이 만료된 경우. (제안 만료에 대해 참조하십시오.)

자금이 지원되지 않은 제안은 거래가 제거될 때까지 대장에 남아 있습니다. 제안을 ledger에서 삭제할 수 있는 방법은 다음과 같습니다:

  • 일치하는 제안 또는 교차 화폐 결제는 제안을 완전히 소비합니다.

  • 소유자는 명시적으로 제안을 취소합니다.

  • 소유자는 새 제안을 전송하여 제안을 암시적으로 취소합니다.

  • 거래 처리 중에 제안이 자금 지원을 받지 않거나 만료된 것으로 확인되었습니다. 일반적으로 이는 다른 제안이 이를 사용하려고 했지만 사용할 수 없음을 의미합니다.

    • 여기에는 제안에서 지불할 수 있는 잔여 금액이 0으로 반올림되는 경우도 포함됩니다.

자금 지원되지 않은 제안 추적(Tracking Unfunded Offers)

모든 제안의 자금 상태를 추적하는 것은 계산상 부담이 될 수 있습니다. 특히 거래 중인 주소에는 많은 수의 개설이 있을 수 있습니다. 단일 잔액은 많은 서비스의 자금 조달 상태에 영향을 미칠 수 있습니다. 이 때문에 XRP Ledger는 자금이 지원되지 않거나 만료된 제안을 사전에 찾아 제거하지 않습니다.

클라이언트 애플리케이션은 제안의 자금 조달 상태를 로컬로 추적할 수 있습니다. 이렇게 하려면 먼저 book_offers 메소드를 사용하여 주문 북을 검색하고 offers의 taker_gits_funded 필드를 확인합니다. 그런 다음 트랜잭션 스트림을 구독하고 트랜잭션 메타데이터를 확인하여 수정된 제안을 확인합니다.

제안 및 신뢰(Offers and Trust)

신뢰선의 한계 값은 제안에 영향을 주지 않습니다. 즉, 발행자가 신뢰할 수 있는 최대 금액보다 많은 금액을 구입하기 위해 제안을 사용할 수 있습니다.

그러나 토큰을 보유하려면 발행자에 대한 신뢰선이 필요합니다. 제안이 사용되면 필요한 신뢰선을 자동으로 생성하여 제한을 0으로 설정합니다. 신뢰선은 계정이 보유해야 하는 예비 용량을 증가시키므로 새 신뢰선이 필요한 모든 제안에는 해당 신뢰선에 대한 예비 용량을 충족하기에 충분한 XRP가 주소에 있어야 합니다.

신뢰선 제한은 원하는 것보다 많은 토큰을 지불로 받는 것을 방지합니다. 제안은 원하는 토큰의 양을 명시적으로 표시하기 때문에 이러한 제한을 초과할 수 있습니다.

제안 선호(Offer Expiration)

기존 제안은 환율별로 그룹화되며, 환율은 TakerGetsTakerPays간의 비율로 측정됩니다. 환율이 더 높은 제안을 우선적으로 받습니다. (즉, 제안을 수락한 사람은 지불한 화폐 금액만큼 가능한 한 많이 받습니다.) 동일한 환율의 제안은 어느 제안이 먼저 제공되었는지를 기준으로 합니다.

제안이 동일한 ledger 블록에서 실행되는 경우, 제안이 실행되는 순서는 거래가 ledger에 적용된 정식 순서에 따라 결정됩니다. 이 동작은 결정적이고 효율적이며 게임하기 어렵도록 설계되었습니다.

제안 만료(Offer Expiration)

제안서를 작성할 때 만료 시간을 선택적으로 추가할 수 있습니다. 기본적으로 제안은 만료되지 않습니다. 이미 만료된 새 제안을 만들 수 없습니다.

만료 시간은 초 단위로 지정되지만, 행사가 만료되는 정확한 실제 시간은 덜 정확합니다. 이전 ledger의 마감 시간보다 빠르거나 같은 만료 시간을 가진 제안은 만료됩니다. 그렇지 않으면 실제 시간이 제안의 만료보다 늦더라도 제안을 계속 실행할 수 있습니다. 즉, 만료 시간이 시계에 표시된 내용과 관계없이 최신 유효성 확인된 ledger의 마감 시간보다 늦으면 제안은 여전히 "활성" 상태입니다.

이것은 네트워크가 합의에 도달하는 방법의 결과입니다. 전체 P2P 네트워크가 합의에 도달하려면 모든 서버가 트랜잭션 실행 시 만료되는 제안에 동의해야 합니다. 개별 서버는 내부 시계 설정에 약간의 차이가 있을 수 있으므로, "현재" 시간을 사용한 경우 어떤 개설이 만료되었는지에 대해 동일한 결론에 도달하지 못할 수 있습니다. ledger의 마감 시간은 해당 ledger의 트랜잭션이 실행된 후에나 알 수 있으므로, 서버는 이전 ledger의 공식 마감 시간을 대신 사용합니다. 레지스터의 마감 시간은 반올림되므로 실제 시간과 제안 만료 여부를 결정하는 데 사용되는 시간 간의 잠재적인 차이가 더욱 커집니다.

Note:

만료된 제안은 트랜잭션이 삭제할 때까지 ledger 데이터에 남아 있습니다. 그 때까지 API에서 검색된 데이터에 계속 나타날 수 있습니다(예: ledger_entry 메소드 사용). 트랜잭션은 일반적으로 만료되거나 자금 지원되지 않은 제안을 자동으로 삭제합니다. 일반적으로 해당 제안과 일치하거나 취소된 제안 또는 교차 화폐 결제를 실행합니다. 제안과 관련된 소유자 예약은 제안이 실제로 삭제된 경우에만 다시 사용할 수 있습니다.

참고

Last updated