Second Docs 작성
출처: https://docs.second.tech/ark-protocol/forfeits-connectors/
사용자의 항복 거래는 VTXO를 갱신 하고 시장에서 빠져나가는 데 사용되는 사전 서명된 거래로, Ark 제공업체가 사용자의 VTXO를 제어할 수 있도록 합니다. 제공업체는 이러한 항복 거래를 보관하지만 악의적인 출금 시도를 방지하기 위해 네트워크에 즉시 브로드캐스트하지는 않습니다. 항복 거래는 VTXO에 대한 제어권을 제공업체에게 이전하지만, 제공업체는 VTXO에 보관된 비트코인에 즉시 접근할 수 없으며, VTXO가 만료될 때까지 기다려야 합니다.
"커넥터"는 사용자가 의도한 거래가 완료된 경우에만 중단된 거래가 유효한 거래가 되도록 암호화된 보장을 제공하는 특수 출력입니다. 이러한 의도된 거래는 다음과 같습니다.
- 새로운 VTXO가 새로운 거래 라운드 에 포함되고, 거래는 블록체인에 의해 확인됩니다.
- 라운드 트랜잭션의 출력인 종료 출력이며, 트랜잭션은 블록체인에 의해 확인됩니다.
결과적으로 사용자는 제3자를 신뢰하지 않고도 안전하게 포기 거래에 서명할 수 있습니다. 전체 프로세스가 원자적(완전히 성공적이거나 전혀 변경되지 않음)이고 자율적이며 상대방 리스크 없음을 보장합니다.
커넥터는 앨리스의 포기 거래가 (예를 들어) 블록체인에서 새로운 VTXO의 라운드 거래가 확인된 후에만 유효해지도록 보장합니다.
Ark 내부 결제는 포기 거래를 사용하지 않습니다.
Ark 내부 결제는 사용자가 결제를 시작하기 위해 VTXO를 원자적으로 포기하는 것을 포함하지 않습니다. 대신, 사용자는 Ark 서비스 제공자와 새로운 오프체인 트랜잭션을 사전 서명하여 기존 VTXO 중 하나에서 리프(leaf)를 생성합니다. 사용자가 라이트닝 결제를 시작하려는 경우, Ark 프로토콜은 리프에 맞춤형 HTLC 기반 지출 조건을 적용하여 원자적 실행을 보장합니다.
포기 거래
라이트닝 채널에서 페널티 거래의 개념을 알고 있다면 Ark 프로토콜에서 포기 거래가 어떤 것인지 이미 상상할 수 있을 것입니다.
포기된 지분을 사용하기 위해 각 VTXO의 " 종료 거래 "(리프)에는 두 가지 지출 경로가 있습니다.
- 지출 경로 1 : 이 경로는 사용자(VTXO 소유자)와 Ark 서비스 제공자가 서명하는 2-of-2 다중 서명입니다. 사용자는 이 경로를 사용하여 포기 거래에 서명하고, 이 VTXO에 있는 비트코인을 Ark 서비스 제공자에게 전송합니다. 이 지출 경로에는 시간 잠금이 없습니다. 사용자가 네트워크에 종료 거래를 게시하더라도, Ark 서비스 제공자는 사용자가 비트코인을 인출하기 전에 포기 거래를 발행할 수 있습니다.
- 지출 경로 2 : 이 경로는 사용자가 완전히 제어하며, 사용자가 일방적으로 인출할 수 있도록 합니다(사용자가 포기 거래에 서명하지 않는다는 가정 하에). 이 경로의 상대적 시간 잠금은
60
블록(경과된 블록 약 10개)입니다. 이 시간 잠금은 비트코인 스크립트에서 OP_CHECKSEQUENCEVERIFY(CSV) 명령어를 사용하여 구현됩니다.
- 종료 거래의 출력(잎)에 대한 지출 조건이 어떻게 기권 작업을 지원합니까?
포기 거래는 일반적으로 네트워크에 게시되지 않습니다.
일반적으로 이 두 가지 지출 경로를 기반으로 하는 거래는 사용자가 VTXO를 포기하더라도 네트워크에 브로드캐스트되지 않습니다. 대신, Ark 서비스 제공자는 라운드 거래의 절대 시간 잠금이 만료된 후 온체인 거래를 사용하여 라운드 거래의 모든 자금을 청산합니다(즉, 라운드 거래에 따라 VTXO에 있는 모든 자금을 한 번에 청산합니다).
사용자가 서명한 포기서 거래는 사용자가 이미 포기한 후 일방적으로 철회를 시도하는 특이한 상황을 처리하기 위한 Ark 서비스 제공자의 단순한 "보험"입니다.
면제 거래에서 악의적인 인출을 방지하는 방법
사용자가 악의적인 종료를 시도하면 먼저 VTXO의 모든 브랜치 트랜잭션을 브로드캐스트합니다. 그러나 리프 트랜잭션(종료 트랜잭션)을 게시한 후에는 리프 트랜잭션 출력에 있는 모든 자금을 자신만 관리하는 온체인 주소로 전송하기 전에 상대적인 시간 잠금이 만료될 때까지 기다려야 합니다.
Second의 Ark 구현에서는 이 종료 시간 잠금을 약 10시간으로 설정할 것으로 예상합니다. 이를 통해 Ark 제공자는 악의적인 종료 시도를 감지하고 사용자 서명된 거래 포기를 브로드캐스트할 충분한 시간을 확보할 수 있습니다. 사용자는 기다려야 하므로, 거래 포기는 종료 거래 출력에서 자금을 더 빨리 이체합니다.
중단 트랜잭션은 Ark 제공자에게 어느 정도 보안을 제공하지만, 이상적인 방법은 아닙니다. 악의적인 종료가 발생하면 제공자는 더 이상 해당 라운드의 트랜잭션 출력에서 모든 자금을 단일 트랜잭션으로 인출할 수 없으므로 추가적인 온체인 트랜잭션이 필요합니다. 그러나 여러 트랜잭션(브랜치 트랜잭션에서 리프 트랜잭션까지)을 브로드캐스트하는 데 필요한 온체인 수수료는 사용자가 이러한 작업을 자주 수행하지 않도록 하는 데 충분할 것입니다.
커넥터
이제 포기 프로세스를 이해했으니, "커넥터"가 포기 프로세스의 원자성을 어떻게 보장하는지 살펴보겠습니다. 새로 고침 프로세스를 예로 들겠지만, 종료 프로세스도 완전히 동일합니다.
기권 연산의 원자성은 해당 연산을 의도된 라운드 트랜잭션에 바인딩함으로써 달성됩니다. 관련 라운드 트랜잭션이 아직 확인되지 않은 경우(예: 각 노드의 트랜잭션 풀에 아직 남아 있는 경우), 기권 트랜잭션은 유효하지 않습니다. 브로드캐스트되더라도 네트워크의 노드에 의해 거부되어 전달되지 않습니다. 물론, 라운드 트랜잭션이 확인되지 않으면 새로운 VTXO는 유효한 가치 캐리어가 아닙니다!
- 라운드 거래가 블록체인에서 확인되지 않으면, 포기 거래는 유효한 거래가 아니며 새로운 VTXO가 생성되지 않습니다. -
(번역자 주: 이는 중단 트랜잭션이 라운드 트랜잭션의 작은 출력(커넥터라고도 함)을 자체 입력으로 사용하기 때문입니다. 라운드 트랜잭션이 확인되지 않으면 중단 트랜잭션은 존재하지 않는 입력을 사용하게 되며, 이는 유효하지 않습니다.)
그러나 라운드 거래가 블록체인에서 확인되는 한, 포기 거래는 유효한 거래가 되고 새로운 VTXO가 생성됩니다.
- 라운드 트랜잭션이 블록에 의해 확인되면, 포기 작업과 새로운 VTXO 생성이 동시에 완료됩니다.
추적/블록 공간 사용 최적화
공간 절약을 위해 모든 커넥터를 단일 출력으로 묶고 싶습니다. 하지만 이 작업은 효율적으로 이루어져야 합니다. 단일 Ark 라운드에는 수백 또는 수천 명의 사용자가 참여할 수 있으며, 부주의하게 구성된 커넥터는 매우 크고 값비싼 라운드 트랜잭션을 초래할 수 있습니다.
다음 이미지는 잘못된 설계를 보여줍니다. 여러 커넥터를 하나의 출력으로 묶더라도 트랜잭션 크기는 여전히 빠르게 증가할 수 있습니다.
따라서 Ark 프로토콜은 "커넥터 체인"을 사용합니다. 이는 각 트랜잭션에 커넥터 출력이 있는 일련의 트랜잭션입니다. 아래 그림은 이러한 잘 설계된 번들링 전략을 보여줍니다. 이 전략은 궁극적으로 거래소 데이터를 내장하면서도 더 작은 라운드 트랜잭션을 생성합니다.
그 대신 상호작용이 더 많이 필요합니다. VTXO를 포기하는 사용자는 체인의 모든 커넥터 출력에 대해 포기 트랜잭션에 서명해야 합니다.
아래 그림에서는 사용자가 악의적인 종료를 시도할 때 Ark 서비스 제공자가 어떻게 대응하는지 확인할 수 있습니다. 예를 들어, 블록체인 네트워크에 C1과 F1을 브로드캐스트해야 합니다.
면제 거래 및 커넥터는 가끔씩만 나타납니다.
일반적으로 라운드 트랜잭션만 비트코인 네트워크에 브로드캐스트됩니다. 커넥터 체인의 트랜잭션은 사용자가 양도된 VTXO를 악의적으로 사용하려고 시도하는 경우 에만 온체인 표시됩니다.