Cardano의 UTxO 모델에서 확장의 의미 이해

https://cexplorer.io/article/understanding-the-meaning-of-extended-in-cardano-s-utxo-model

비트코인은 UTxO 회계 모델을 사용합니다. IOG 팀의 경우 이 모델은 Cardano 임무에 충분하지 않았기 때문에 확장했습니다. Cardano는 확장된 UTxO 모델을 사용합니다. 이번 글에서는 '확장’의 의미에 대해 설명하겠습니다.

결제 그 이상
비트코인 네트워크는 결제를 위해 설계되었습니다. 비트코인의 UTxO 모델은 프로그래밍 가능성의 표현이 제한되어 있습니다. Cardano는 개발자가 가치와 관련된 광범위한 작업(예: UTxO 작업)을 수행할 수 있게 해주는 스마트 계약 플랫폼입니다.

UTxO 모델의 확장은 다음 속성과 관련됩니다.

  • 계약 상태를 유지하는 능력.
  • 일련의 거래에 대해 계약 코드를 재사용하는 기능. 팀에서는 이를 연속성이라고 부릅니다.
  • 다중 자산을 지원하는 능력.
  • 스마트 계약(스크립트)의 더 높은 표현력과 프로그래밍 가능성을 지원하는 능력.

비트코인은 이러한 속성을 제공할 수 없거나 매우 제한된 범위에서만 제공할 수 있습니다. 비트코인은 본질적으로 지출 조건을 확인하기 위해 키를 검증하는 거래 네트워크로 설계되었습니다. 비트코인은 보다 복잡한 금융 운영, 즉 스마트 계약 실행에는 적합하지 않습니다.

비트코인의 UTxO 및 스크립트 기능
비트코인에서는 공개 키를 해싱하여 주소가 생성됩니다. 이 프로세스를 '공개 키 잠금’이라고 합니다. 누군가 BTC를 특정 주소로 보내면 기본적으로 해당 주소와 연결된 공개 키에 BTC가 잠깁니다.

특정 주소에 잠겨 있는 BTC를 사용하려면 주소 소유자가 디지털 서명을 제공하여 잠금을 해제해야 합니다. 이 서명은 주소의 공개 키와 연결된 개인 키를 사용하여 생성됩니다. 개인 키로 거래에 서명하면 BTC가 효과적으로 잠금 해제되어 사용할 수 있습니다.

비트코인에서는 주소가 스크립트와 연결될 수 있지만 특정한 방식으로 연결됩니다. 비트코인에는 몇 가지 다른 스크립트가 있으며, P2PKH(Pay-to-Public-Key-Hash)가 가장 널리 사용됩니다.

비트코인 스크립트(코드/소규모 프로그램)는 거래의 입력 및 출력 섹션에 내장되어 있습니다. 거래를 생성할 때 기본적으로 스크립트를 작성하게 됩니다(opcode는 지출 조건을 나타냄). 스크립트를 배포하려면 이를 비트코인 트랜잭션에 통합합니다.

일반적으로 다음 스크립트를 접하게 됩니다.

  • scriptPubKey는 수신자가 BTC를 사용하려면 특정 조건을 충족해야 하는 잠금 스크립트입니다.
  • scriptSig는 scriptPubKey에 의해 출력된 조건을 충족하는 잠금 해제 스크립트이며 BTC를 사용할 수 있게 해줍니다.

스크립트는 Script로 작성됩니다. 비트코인 스크립트는 비트코인 트랜잭션을 구성하는 데 사용되는 스택 기반 프로그래밍 언어입니다. 비트코인 스크립트에는 일반적인 프로그래밍 언어의 많은 기능이 부족합니다. Turing Complete가 아니므로 여러 논리적 기능이 부족합니다.

따라서 비트코인 주소는 스크립트와 연결될 수 있지만 일반적으로 특정 공개 키에 잠겨 있으며 (스마트) 스크립트 형태의 임의 논리를 포함하지 않습니다. 스크립트는 주로 키 검증에 사용됩니다.

스크립트는 재사용을 위해 블록체인에 별도로 저장되지 않습니다. 대신 각 트랜잭션에는 자체 스크립트가 포함됩니다.

따라서 여러 트랜잭션에서 동일한 스크립트를 확실히 사용할 수 있지만 스크립트의 각 인스턴스는 해당 트랜잭션의 일부로 별도로 저장됩니다. 스크립트를 블록체인에 한 번 저장한 다음 여러 트랜잭션에서 참조하는 메커니즘은 없습니다.

비트코인 스크립트에는 상태 개념이 없습니다. 필요한 모든 정보는 잠금 및 잠금 해제 스크립트에 포함되어 있습니다. 이는 스크립트가 상태 비저장이며 실행 사이에 어떠한 정보도 저장하지 않는다는 것을 의미합니다. 스크립트는 BTC를 잠그고 잠금 해제하는 데 거의 독점적으로 사용됩니다.

비트코인에서 UTxO는 BTC 가치를 저장하고 거래하는 데 사용됩니다. 각 UTxO는 특정 주소로 전송된 특정 양의 BTC를 나타냅니다. 고유한 값을 가진 사용자 정의 토큰을 (독점적으로) 나타내는 새 UTxO를 생성하는 것은 불가능합니다.

비트코인이 첫 번째 레이어에 토큰을 가질 수 있다는 말을 들어보셨을 것입니다. 처음으로 소위 컬러 동전이었습니다. 특정 사토시를 사용자 정의 토큰과 연결하는 것입니다. 이는 효과적으로 토큰을 토큰으로 변환하여 무엇이든 나타내는 데 사용할 수 있습니다. 이것은 단어의 진정한 의미에서 토큰이 아니라는 점에 유의해야 합니다.

10개의 사토시가 토큰 X로 표시되는 1000개의 사토시가 있는 UTXO가 있을 수 있습니다. 하나의 토큰 X만 보내려면 새 UTxO를 생성해야 합니다. 이 개념은 실행 가능하지 않았습니다.

서수의 개념은 유색 동전의 개념과 다소 유사하지만 몇 가지 주요 차이점이 있습니다. 서수는 텍스트나 이미지와 같은 정보를 주문하고 새긴 사토시입니다. 이 정보는 sat를 고유하게 만들고 사실상 NFT(Non-Fungible Token)로 전환합니다.

비트코인은 간단히 말해서 단일 자산 원장으로 설명할 수 있습니다. 비트코인 스크립트는 상태 비저장이며 주로 서명(키)을 검증하는 데 사용됩니다. 스크립트는 트랜잭션을 통해 전송되며 블록체인에 저장하여 재사용할 수 없습니다.

확장된 UTxO 모델
확장 UTxO 모델에서는 ‘주소’ 개념이 일반화됩니다. 잠금을 공개 키로 제한하고 키를 서명으로 제한하는 대신 EUTxO 모델의 주소는 (간접적으로) 스크립트 형식의 임의 논리를 포함할 수 있습니다.

이는 공개 키의 해시된 버전이 아닌 Cardano의 주소가 주소에 포함된 스크립트 해시를 통해 스크립트와 연결될 수 있음을 의미합니다. 이를 통해 스마트 계약에 필요한 것과 같은 보다 복잡한 거래 및 상호 작용이 가능해집니다.

주소에는 블록체인에 저장된 스크립트를 식별하는 데 사용되는 스크립트의 해시가 포함될 수 있습니다.

따라서 Cardano에서는 트랜잭션이 스크립트를 포함하고 참조할 수 있습니다. 비트코인은 스크립트를 참조할 수 없습니다. 따라서 스크립트는 항상 트랜잭션에 포함되어야 합니다.

Cardano는 스크립트를 참조할 수 있습니다. 이러한 참조된 스크립트는 출력에 첨부되며 검증 중에 스크립트 요구 사항을 충족하는 데 사용될 수 있습니다. 이는 공통 스크립트를 사용하는 트랜잭션이 훨씬 작을 수 있음을 의미합니다. 스크립트를 사용하는 트랜잭션은 스크립트가 포함된 출력을 참조하는 한 스크립트를 제공할 필요가 없습니다.

참조 스크립트의 개념은 Cardano의 확장 UTXO 모델의 연속성 측면과 관련이 있습니다. 계약 연속성은 일련의 거래에 동일한 계약 코드를 사용할 수 있도록 보장합니다.

Plutus 플랫폼을 통해 개발자는 Cardano 블록체인과 상호 작용하는 애플리케이션(스크립트)을 작성할 수 있습니다. Plutus 프로그래밍 언어는 Haskell에서 발전했습니다. Plutus 스크립트는 True 또는 False 출력으로 순수 함수를 구현하는 코드 조각입니다. 이는 작업의 유효성을 검사하는 데 사용됩니다.

확장 UTxO 모델에서 유효성 검사기 스크립트에는 세 가지 인수가 전달됩니다.

  • 데이텀(Datum): 이는 스크립트가 잠그는 출력 UTxO에 첨부된 데이터 조각입니다. 이는 일반적으로 상태를 전달하는 데 사용됩니다.
  • Redeemer: 지출 입력 UTxO에 첨부된 데이터 조각입니다. 이는 일반적으로 지출자로부터 스크립트에 대한 입력을 제공하는 데 사용됩니다.
  • 컨텍스트: 지출 거래에 대한 정보를 나타내는 데이터 조각입니다. 이는 출력 UTxO가 소비되는 방식에 대한 어설션을 만드는 데 사용됩니다.

Cardano의 EUTXO 모델을 사용하면 개발자는 이러한 기본 요소를 사용하여 상태 저장 스크립트를 작성할 수 있습니다.

데이텀은 스크립트 상태를 추적하는 데 사용될 수 있습니다. Datum은 스크립트 주소의 출력 UTxO를 사용하고 이를 스크립트 주소로 보내는 데 중요한 역할을 합니다. 따라서 Cardano에서는 Datum을 사용하여 상태를 스크립트와 연결할 수 있습니다.

Plutus 스크립트의 표현력과 프로그래밍 가능성을 통해 개발자는 광범위한 논리를 구현할 수 있습니다. 예를 들어, 간단한 유효성 검사기 스크립트는 특정 키가 지출 거래에 서명했는지 여부를 확인할 수 있습니다(이는 비트코인 스크립트와 유사합니다). 그러나 약간의 신중한 확장을 통해 개발자는 스크립트를 사용하여 더 복잡한 논리를 표현할 수 있습니다.

Datum 및 Redeemer를 사용하면 이러한 스크립트의 기능이 더욱 향상되어 상태를 전달하고 지출자의 입력을 수용할 수 있습니다. 스크립트는 Datum 및 Redeemer 값을 가져와서 계산이나 비교를 수행한 다음 부울 값(지출 가능성을 결정함)을 출력할 수 있습니다.

Cardano의 원장은 여러 자산을 지원하도록 설계되었습니다. 다중 자산 원장이라고 합니다. 이를 통해 Cardano는 회계를 수행하거나 두 가지 이상의 자산 유형(기본 ADA 코인)으로 거래할 수 있습니다.

토큰이 발행되면 새로운 UTxO가 생성됩니다. 사용자가 토큰을 만들면 기본적으로 이러한 토큰을 보관하는 새로운 UTxO가 생성됩니다. 그런 다음 이러한 UTxO는 ADA 코인이 있는 UTxO와 마찬가지로 거래에 사용될 수 있습니다.

Plutus 스크립트는 ADA와 정확히 동일하게 토큰으로 작동할 수 있습니다.

카르다노는 간단히 다중 자산 원장으로 설명할 수 있습니다. 발행된 토큰은 ADA 코인과 유사한 속성을 가진 새로운 UTxO입니다. Plutus 스크립트는 상태 저장됩니다. 스크립트는 Datum, Redeemer 및 트랜잭션 컨텍스트와 함께 작동하므로 개발자는 키 확인 이상의 더 복잡한 논리를 생성할 수 있습니다. 스크립트는 원장에 저장되고 반복적으로 참조될 수 있습니다.

결론
UTxO 모델에는 기사에서 언급되지 않은 또 다른 중요한 의미가 있습니다. 즉, 더 높은 확장성이 가능하다는 것입니다. UTxO는 기본적으로 주변 환경과 독립적인 개체입니다. UTxO를 사용한 트랜잭션은 다른 UTxO와 관계없이(즉, 기본적으로 다른 사용자의 트랜잭션과 관계없이) 검증될 수 있습니다. 즉, UTxO 모델이 지원하는 또 다른 기능은 병렬성입니다. 이 기능은 입력 엔도서(Input Endorsers)라는 향상된 기능을 통해 활용됩니다.

아마도 Bitcoin UTxO와 Cardano UTxO의 가장 큰 차이점은 Datum, 즉 임의 데이터를 추가하는 기능일 것입니다. 설명된 차이점 중 상당수는 UTxO와 다소 관련이 있지만 주로 두 프로젝트의 철학과 디자인이 다르기 때문에 다릅니다. Bitcoin UTxO에 데이터(Datum)를 추가할 수 있다면 Bitcoin 스크립트를 추가로 확장해야 합니다. 저장된 데이터는 어떤 것, 이상적으로는 일부 거래 입력(Redeemer)과 비교할 수 있으면 더 유용합니다. 새로운 UTxO를 생성하는 기능은 비트코인이 의도적으로 갖고 있지 않은 기능입니다. 이러한 고려는 앞으로도 계속될 수 있다.

블록체인은 속성이 전체를 형성하는 여러 구성 요소로 구성됩니다. UTxO는 이러한 구성 요소 중 하나일 뿐입니다. 회계 모델의 잠재력을 활용하는 것은 다른 구성 요소에 따라 달라집니다. 확장 UTxO의 잠재력은 Plutus 플랫폼, 거래, 원장 기능 등과 관련이 있습니다.