본문으로 건너뛰기
Change page

블록체인 데이터 저장 전략

정보를 블록체인에 직접 저장하거나 블록체인에 의해 보호되는 방식으로 저장하는 방법에는 여러 가지가 있습니다.

  • EIP-4844 블롭
  • 콜 데이터
  • L1 메커니즘을 활용한 오프체인
  • 컨트랙트 "코드"
  • 이벤트
  • EVM 저장소

어떤 방법을 사용할지 선택하는 기준은 다음과 같습니다.

  • 정보의 출처. 콜 데이터의 정보는 블록체인 자체에서 직접 가져올 수 없습니다.
  • 정보의 목적지. 콜 데이터는 이를 포함하는 트랜잭션에서만 사용할 수 있습니다. 이벤트는 온체인에서 전혀 접근할 수 없습니다.
  • 어느 정도의 번거로움을 감수할 수 있는가? 풀 노드를 실행하는 컴퓨터는 브라우저에서 실행되는 애플리케이션의 경량 클라이언트보다 더 많은 처리를 수행할 수 있습니다.
  • 모든 노드에서 정보에 쉽게 접근할 수 있도록 해야 하는가?
  • 보안 요구 사항.

보안 요구 사항

일반적으로 정보 보안은 세 가지 속성으로 구성됩니다.

  • 기밀성(Confidentiality), 승인되지 않은 주체는 정보를 읽을 수 없습니다. 이는 많은 경우에 중요하지만, 여기서는 예외입니다. 블록체인에는 비밀이 없습니다. 블록체인은 누구나 상태 전환을 검증할 수 있기 때문에 작동하며, 따라서 비밀을 직접 저장하는 데 사용하는 것은 불가능합니다. 기밀 정보를 블록체인에 저장하는 방법이 있긴 하지만, 모두 최소한 키를 저장하기 위해 어떤 오프체인 구성 요소에 의존합니다.

  • 무결성(Integrity), 정보가 정확하며, 승인되지 않은 주체나 승인되지 않은 방식(예: Transfer 이벤트 없이 ERC-20 토큰 (opens in a new tab)을 전송하는 것)으로 변경될 수 없습니다. 블록체인에서는 모든 노드가 모든 상태 변경을 검증하므로 무결성이 보장됩니다.

  • 가용성(Availability), 승인된 주체라면 누구든 정보에 접근할 수 있습니다. 블록체인에서 이는 일반적으로 모든 풀 노드 (opens in a new tab)에서 정보를 사용할 수 있도록 함으로써 달성됩니다.

여기에 소개된 다양한 솔루션들은 해시가 L1에 게시되기 때문에 모두 뛰어난 무결성을 갖추고 있습니다. 하지만 가용성 보장 수준은 서로 다릅니다.

전제 조건

블록체인 기초에 대한 충분한 이해가 필요합니다. 또한 이 페이지는 독자가 블록, 트랜잭션 및 기타 관련 주제에 익숙하다고 가정합니다.

EIP-4844 블롭

덴쿤 하드포크 (opens in a new tab)를 시작으로 이더리움 블록체인에는 EIP-4844 (opens in a new tab)가 포함되어, 제한된 수명(초기에는 약 18일 (opens in a new tab))을 가진 데이터 블롭이 이더리움에 추가되었습니다. 이러한 블롭은 유사한 메커니즘을 사용하지만 실행 가스와는 별도로 가격이 책정됩니다. 이는 임시 데이터를 게시하는 저렴한 방법입니다.

EIP-4844 블롭의 주요 사용 사례는 롤업이 트랜잭션을 게시하는 것입니다. 옵티미스틱 롤업은 자체 블록체인에 트랜잭션을 게시해야 합니다. 롤업의 시퀀서 (opens in a new tab)가 잘못된 상태 루트를 게시할 경우 검증자 (opens in a new tab)가 오류를 수정할 수 있도록, 이의 제기 기간(challenge period) (opens in a new tab) 동안 누구나 해당 트랜잭션에 접근할 수 있어야 합니다.

하지만 이의 제기 기간이 지나고 상태 루트가 완결된 후에는, 이러한 트랜잭션을 알아야 하는 남은 목적은 체인의 현재 상태를 복제하는 것뿐입니다. 이 상태는 훨씬 적은 처리량으로 체인 노드에서도 얻을 수 있습니다. 따라서 트랜잭션 정보는 블록 탐색기와 같은 몇몇 곳에 여전히 보존되어야 하지만, 이더리움이 제공하는 수준의 검열 저항성에 대한 비용을 지불할 필요는 없습니다.

영지식 롤업(Zero-knowledge rollups) 역시 다른 노드가 기존 상태를 복제하고 유효성 증명을 검증할 수 있도록 트랜잭션 데이터를 게시하지만, 이 또한 단기적인 요구 사항입니다.

작성 시점을 기준으로 EIP-4844에 게시하는 비용은 바이트당 1 Wei(10-18 ETH)이며, 이는 블롭을 게시하는 트랜잭션을 포함하여 모든 트랜잭션에 소요되는 21,000 실행 가스 (opens in a new tab)에 비하면 무시할 수 있는 수준입니다. 현재 EIP-4844 가격은 blobscan.com (opens in a new tab)에서 확인할 수 있습니다.

다음은 유명 롤업들이 게시한 블롭을 확인할 수 있는 주소입니다.

콜 데이터

콜 데이터는 트랜잭션의 일부로 전송되는 바이트를 의미합니다. 이는 해당 트랜잭션을 포함하는 블록 내에 블록체인의 영구적인 기록의 일부로 저장됩니다.

이것은 블록체인에 데이터를 영구적으로 기록하는 가장 저렴한 방법입니다. 바이트당 비용은 4 실행 가스(바이트가 0인 경우) 또는 16 가스(그 외의 값)입니다. 데이터가 압축된 경우(일반적인 관행), 모든 바이트 값이 나타날 확률이 동일하므로 평균 비용은 바이트당 약 15.95 가스입니다.

작성 시점을 기준으로 가격은 12 Gwei/가스 및 2300 $/ETH이며, 이는 킬로바이트당 약 45센트의 비용이 든다는 것을 의미합니다. EIP-4844 이전에는 이것이 가장 저렴한 방법이었기 때문에, 롤업은 오류 이의 제기(fault challenges) (opens in a new tab)를 위해 사용할 수 있어야 하지만 온체인에서 직접 접근할 필요는 없는 트랜잭션 정보를 저장하는 데 이 방법을 사용했습니다.

다음은 유명 롤업들이 게시한 트랜잭션을 확인할 수 있는 주소입니다.

L1 메커니즘을 활용한 오프체인

보안의 장단점에 따라, 정보를 다른 곳에 두고 필요할 때 데이터를 사용할 수 있도록 보장하는 메커니즘을 사용하는 것이 허용될 수 있습니다. 이것이 작동하려면 두 가지 요구 사항이 있습니다.

  1. 입력 커밋먼트(input commitment)라고 불리는 데이터의 해시 (opens in a new tab)를 블록체인에 게시합니다. 이는 단일 32바이트 단어일 수 있으므로 비용이 많이 들지 않습니다. 입력 커밋먼트를 사용할 수 있는 한, 동일한 값으로 해시되는 다른 데이터를 찾는 것은 불가능하므로 무결성이 보장됩니다. 따라서 잘못된 데이터가 제공되면 이를 감지할 수 있습니다.

  2. 가용성을 보장하는 메커니즘을 갖춥니다. 예를 들어, Redstone (opens in a new tab)에서는 모든 노드가 가용성 이의 제기를 제출할 수 있습니다. 시퀀서가 기한 내에 온체인에서 응답하지 않으면 입력 커밋먼트가 폐기되므로, 해당 정보는 게시되지 않은 것으로 간주됩니다.

옵티미스틱 롤업의 경우 상태 루트에 대해 최소 한 명의 정직한 검증자가 있다는 것에 이미 의존하고 있기 때문에 이는 허용됩니다. 이러한 정직한 검증자는 블록을 처리할 데이터를 가지고 있는지 확인하고, 오프체인에서 정보를 사용할 수 없는 경우 가용성 이의 제기를 발행합니다. 이러한 유형의 옵티미스틱 롤업을 플라즈마라고 합니다.

컨트랙트 코드

한 번만 작성하면 되고, 덮어쓸 일이 없으며, 온체인에서 사용할 수 있어야 하는 정보는 컨트랙트 코드로 저장할 수 있습니다. 즉, 데이터가 포함된 "스마트 컨트랙트"를 생성한 다음 EXTCODECOPY (opens in a new tab)를 사용하여 정보를 읽습니다. 코드를 복사하는 것이 비교적 저렴하다는 장점이 있습니다.

메모리 확장 비용을 제외하고, EXTCODECOPY는 컨트랙트에 처음 접근할 때("콜드(cold)" 상태일 때) 2600 가스가 소요되며, 동일한 컨트랙트에서 후속 복사를 수행할 때는 100 가스에 32바이트 단어당 3 가스가 추가로 소요됩니다. 바이트당 15.95 가스가 드는 콜 데이터와 비교할 때, 이는 약 200바이트부터 더 저렴해집니다. 메모리 확장 비용 공식 (opens in a new tab)에 따르면, 4MB 이상의 메모리가 필요하지 않은 한 메모리 확장 비용은 콜 데이터를 추가하는 비용보다 적습니다.

물론 이것은 데이터를 읽는 데 드는 비용일 뿐입니다. 컨트랙트를 생성하는 데는 약 32,000 가스 + 바이트당 200 가스가 소요됩니다. 이 방법은 동일한 정보를 여러 트랜잭션에서 여러 번 읽어야 할 때만 경제적입니다.

컨트랙트 코드는 0xEF로 시작하지 않는 한 의미 없는 내용이어도 상관없습니다. 0xEF로 시작하는 컨트랙트는 훨씬 더 엄격한 요구 사항을 가진 이더리움 객체 형식(ethereum object format) (opens in a new tab)으로 해석됩니다.

이벤트

이벤트 (opens in a new tab)는 스마트 컨트랙트에서 발생(emit)하며 오프체인 소프트웨어에서 읽습니다. 오프체인 코드가 이벤트를 수신할 수 있다는 것이 장점입니다. 비용은 가스 (opens in a new tab)로 지불되며, 375 가스에 데이터 바이트당 8 가스가 추가됩니다. 12 Gwei/가스 및 2300 $/ETH를 기준으로 하면, 이는 1센트에 킬로바이트당 22센트가 추가되는 셈입니다.

저장소

스마트 컨트랙트는 영구 저장소 (opens in a new tab)에 접근할 수 있습니다. 하지만 비용이 매우 비쌉니다. 이전에 비어 있던 저장소 슬롯에 32바이트 단어를 쓰는 데 22,100 가스가 소요 (opens in a new tab)될 수 있습니다. 12 Gwei/가스 및 2300 $/ETH를 기준으로 하면, 이는 쓰기 작업당 약 61센트, 즉 킬로바이트당 19.5달러에 해당합니다.

이것은 이더리움에서 가장 비싼 형태의 저장소입니다.

요약

이 표는 다양한 옵션의 차이점과 장단점을 요약한 것입니다.

저장소 유형데이터 출처가용성 보장온체인 가용성추가 제한 사항
EIP-4844 블롭오프체인약 18일 (opens in a new tab) 동안 이더리움이 보장해시만 사용 가능
콜 데이터오프체인이더리움이 영구적으로 보장(블록체인의 일부)컨트랙트에 기록된 경우 해당 트랜잭션에서만 사용 가능
L1 메커니즘을 활용한 오프체인오프체인이의 제기 기간 동안 "최소 한 명의 정직한 검증자" 보장해시만이의 제기 메커니즘에 의해 보장되며, 이의 제기 기간 동안에만 유효
컨트랙트 코드온체인 또는 오프체인이더리움이 영구적으로 보장(블록체인의 일부)"무작위" 주소에 기록되며, 0xEF로 시작할 수 없음
이벤트온체인이더리움이 영구적으로 보장(블록체인의 일부)아니요
저장소온체인이더리움이 영구적으로 보장(블록체인의 일부이자 덮어쓸 때까지 현재 상태 유지)