편집자 주: 이 기사는 web3 경매에 관한 모든 것에 대한 지속적인 시리즈의 일부입니다. 1부에서는 경매 설계에 대한 개요와 무허가형 블록체인 맥락에서 메커니즘 설계와 관련된 기술적 과제(및 기회)를 다루었습니다. 2부에서는 시장 청산과 가스 전쟁 방지에 관한 내용을 다루었습니다. 3부에서는 표준 경매 유형의 개요, 이론이 실제로 어떻게 해석되는지 살펴보고 새로운 봉인 입찰 Vickrey 경매의 첫 번째 구현을 공유합니다.
온체인 경매는 NFT 판매부터 담보 경매에 이르기까지 web3에서 가장 흥미롭고 유비쿼터스적인 디자인 공간 중 하나이며 구현 및 연구의 새로운 환경을 제공합니다. 경매 메커니즘 설계는 수세기 동안 존재해 왔으며 최근 수십 년 동안 웹과 전자 상거래의 출현으로 발전해 왔지만 이제 우리는 이러한 접근 방식을 스마트 계약에 적용하고 있습니다.
또한 우리는 Vickrey 경매의 오픈 소스 Solidity 구현과 커뮤니티의 몇 가지 흥미로운 개발( 효율성 개선 제안 , 새로운 이론적 결과 및 2개의 해커톤 우승 포함 )을 포함하여 블록체인에 고유한 더 많은 경매 디자인을 보기 시작했습니다. 봉인입찰 경매 실시 ). 첫 번째 설계에서 우리는 개인 정보 보호와 자본 효율성 사이에서 절충점을 찾았습니다. 담보를 통해 정확한 입찰 값을 공개하지 않고 낙찰자로부터 지불을 강제하기 위해 과잉 담보(입찰자가 입찰에서 요구하는 것보다 더 많은 담보를 잠김)를 사용했습니다. 양. 더 많은 자본을 잠그면 잠재적으로 더 큰 기회 비용으로 더 많은 개인정보 보호를 얻을 수 있습니다. 하지만 과잉 담보 없이 입찰 프라이버시를 확보할 수 있다면 어떨까요 ?
CREATE2이 게시물에서는 Opcode와 상태 증명을 결합하여 입찰자가 필요한 것보다 더 많은 담보를 확보하지 않고도 입찰 개인정보 보호를 보장하는 "SneakyAuction"이라고 하는 새로운 경매 설계를 소개합니다. 먼저 작동 방식을 분석한 다음 가스 비용, 사용자 경험 및 개인 정보 보호 측면에서 이전 구현(OverCollectralizedAuction)과 비교합니다. 또한 GitHub의 Auction Zoo 리포지토리 에 구현을 추가하여 이를 포크하고 빌드하고 더 많은 메커니즘을 따라갈 수 있도록 했습니다. 그동안 작동 방식에 대해 자세히 알아보고 아래에서 과거 디자인과 비교해 보세요.
작동 방식: CREATE2를 사용하여 입찰에 참여
온체인에서 "최종적으로 공개되는" 봉인 입찰 경매를 생성하는 데 필요한 두 가지 요구 사항이 있습니다. 첫째, 입찰은 입찰 기간 동안 비공개로 유지되어야 하며 입찰 기간이 끝나면 공개되어야 합니다. 커밋-공개 체계(사용자가 해시 커밋 값을 게시한 다음 나중에 입력을 공개하는 방식)는 이 메커니즘을 온체인에 복제할 수 있습니다. 두 번째 요구 사항은 담보입니다. 입찰은 낙찰자가 약속을 이행하기에 충분한 자금을 확보할 수 있도록 담보로 뒷받침되어야 합니다.
commitBid초과 담보된 Vickrey 구현에서 잠재 구매자는 기능을 호출하고 해시 약정 및 에스크로할 담보를 제공하여 입찰을 합니다 . 이 접근 방식은 요구 사항을 충족하지만 몇 가지 단점이 있습니다. 입찰 자체가 해시에 의해 숨겨지더라도 거래 commitBid는 사용자의 의도를 공개적이고 즉각적으로 나타냅니다. "나는 이 경매에 입찰하고 싶습니다. 여기 내 입찰에 대한 담보가 있습니다." 초과담보가 없으면 의도 와 담보 의 가시성(및 연결성)이 입찰가를 드러낼 것입니다. 그러나 거래 의도를 난독화할 수 있다면 과잉 담보에 의존하지 않고도 입찰 프라이버시를 달성할 수 있을 것입니다.
EIP-1014CREATE2 에 도입되고 콘스탄티노플 하드 포크에 포함된 opcode는 이를 수행할 수 있는 방법을 제공합니다. 및 opcode 는 모두 스마트 계약을 배포하는 데 사용되지만 배포 주소가 계산되는 방식이 다릅니다. 배포 주소는 배포자 주소와 nonce의 해시로 계산됩니다. 반면에 배포 주소는 계약의 바이트 코드 및 생성자 매개 변수, 임의의 솔트 및 배포자 주소( 세부 정보 )의 해시로 계산 됩니다 .CREATECREATE2CREATECREATE2
CREATE2예측 가능한 주소에 계약을 배포하기 위해 공장 패턴에서 자주 사용됩니다. 예를 들어 UniswapV3PoolDeployerCREATE2 계약은 각 풀 계약을 토큰 쌍 및 수수료 계층의 기능인 주소에 배포하는 데 사용됩니다 . CREATE2특히 변형 계약 패턴에서 업그레이드 가능한 스마트 계약을 (재)배포하는 데에도 사용할 수 있습니다.
우리에게 더 중요한 것은 CREATE2배포 주소가 입력 바이트 코드 및 매개 변수에 의해 정의된 모든 동작에 대한 해시 커밋으로 기능할 수 있다는 것입니다. 생성자 매개변수가 입찰을 인코딩하는 경우 CREATE2주소는 입찰 약속으로 사용될 수 있습니다.
Solidity에서 볼트 주소 계산하기
또한 계약 자체는 금고 역할을 할 수 있습니다. 입찰자는 계약이 배포되기 전에CREATE2 ETH를 금고 주소 로 보내 한 번의 간단한 전송으로 입찰을 담보로 하고 약속할 수 있습니다! 입찰자는 금고 주소에 대한 개인 키를 가지고 있지 않기 때문에 입찰이 공개될 때까지 담보가 잠겨 있으며, 이때 SneakyAuction 계약이 금고를 배포하고 잠금을 해제합니다.
SneakyVault 계약. 입찰이 낙찰되었는지 확인하고 그에 따라 ETH를 판매자 또는 입찰자에게 보냅니다. 생성자의 모든 것!
이 접근 방식을 사용하면 거래가 외부 소유 주소(EOA)로의 전송과 구별되지 않게 됩니다. 입찰 거래는 블록체인의 다른 전송 중에서 눈에 잘 띄지 않게 숨겨져 있습니다. 그러나 한 가지 중요한 주의 사항은 이 겉보기에 깔끔한 솔루션으로 인해 담보가 언제 잠겼는지 확인하기가 어렵다는 것입니다 . 경매 보안을 위해서는 입찰이 공개되기 전에 금고에 자금을 조달하는 것이 중요합니다. 그렇지 않으면 기회주의적인 구매자는 대부분의 입찰이 이미 공개된 공개 기간이 끝날 때까지 기다렸다가 금고를 담보할지 여부를 결정할 수 있습니다. 우리는 상태 증명이라는 또 다른 도구를 사용하여 공개 기간이 아닌 입찰 기간 동안 금고가 담보로 제공되도록 해야 합니다 .
상태 증명을 사용하여 소급적으로 담보 확인
입찰 기간 동안 금고가 담보로 제공되었는지 확인하는 한 가지 방법은 과거 블록에서 잔액을 확인하는 것입니다. 아카이브 노드에 쿼리하여 오프체인을 수행하는 것은 상대적으로 쉽습니다. 그러나 (신뢰할 수 없는) 온체인을 달성하는 것은 훨씬 더 어렵습니다. EVM의 BALANCEopcode는 주소의 현재 잔액을 읽지만 과거 잔액을 검색하는 그러한 opcode는 존재하지 않습니다. 실제로 모든 종류의 기록 상태 액세스를 제공하는 유일한 EVM opcode는 BLOCKHASH마지막 256개 블록 중 하나의 해시를 반환하는 입니다. 다행스럽게도 오프체인의 도움을 받아 블록해시는 우리의 사용 사례에 충분히 잘 작동합니다.
블록해시는 블록 헤더의 해시이며, 여기에는 (다른 메타데이터 중에서) 해당 블록의 상태 루트가 포함됩니다. 상태 루트는 Merkle-Patricia trie 의 루트 노드입니다. 여기서 각 리프 노드는 특정 주소에 해당하고 해당 블록의 주소 잔액을 포함합니다. 이러한 리프 노드 온체인에 직접 액세스할 수는 없지만 리프 노드의 내용이 올바른지 확인할 수 있습니다. 실제로 Alchemyeth_getProof (다른 제공업체 중에서) 가 지원하는 RPC 방법은 이 검증을 수행하는 데 필요한 Merkle 증명을 반환합니다(Leo Zhang은 이것이 Ethereum 라이트 클라이언트의 맥락에서 어떻게 작동하는지에 대한 심층적인 설명을 제공합니다). 이는 약간의 오프체인 도움(단일 RPC 호출)을 통해 입찰자가 입찰 기간 동안 금고가 담보로 제공되었음을 SneakyAuction 계약에 증명할 수 있음을 의미합니다.
EVM 블록 헤더의 구성 요소입니다. 출처: https://ethereum.stackexchange.com/a/6414
우리의 구현에서는 경매에 대해 공개된 첫 번째 입찰이 이전 블록의 블록해시를 저장합니다. 이 거래는 경매를 입찰 단계에서 공개 단계로 효과적으로 전환합니다. 공개된 모든 후속 입찰은 해당 블록 이전(즉, 첫 번째 입찰이 공개되기 전) 금고가 충분히 담보화되었다는 Merkle 증거를 제공해야 합니다. 첫 번째 거래 는 revealBid이상적으로는 개인 거래 풀(예: Flashbots)을 통해 제출됩니다. 그렇지 않으면 멤풀(공개된 입찰의 가치를 확인)을 관찰하는 입찰자가 거래를 먼저 실행하고 마지막 순간에 입찰할 수 있습니다.
LibBalanceProof
입찰자의 비용을 최소화하기 위해 우리는 Aragon 팀(2018년에 온체인 스토리지 증명을 개척한 사람)이 작성한 계약 과 온체인 RLP 에 대한 Hamdi Allam의 계약 을 기반으로 구축된 온체인 잔액 증명을 확인하기 위해 가스에 최적화된 라이브러리를 작성했습니다. 디코딩 . 우리 라이브러리는 상태 트리의 특정 구조에 의존하는 여러 가지 낮은 수준의 트릭과 최적화를 사용하므로 일반적인 Merkle-Patricia 트리 증명에는 사용할 수 없습니다. 그 대가로 SneakyAuction 계약을 통해 30,000가스 미만의 볼트 과거 잔액을 확인할 수 있습니다.
우리는 또한 RPC 방법 을 위한 경량 JavaScript 래퍼를eth_getProof 작성했습니다 . 주소와 블록 번호가 주어지면 입찰을 공개하는 데 사용할 수 있는 잔고 증명과 RLP 직렬화된 블록 헤더가 반환됩니다.
비교 방법
가스 비용, 사용자 경험, 개인 정보 보호 등 기술 설계자나 사용자가 관심을 갖는 몇 가지 주요 측면에 따라 새로운 SneakyAuction 접근 방식을 지난 출시된 OverColtralizedAuction 디자인과 비교해 보겠습니다.
가스 비용
SneakyAuction의 revealBid, endAuction및 withdrawCollateral기능에는 을 배포해야 하므로 SneakyVaultOverColtralizedAuction에 비해 비용이 더 많이 듭니다. revealBid약 25,000가스의 비용이 드는 균형 증명도 확인하기 때문에 특히 비쌉니다.
초과담보경매 | 비열한 경매 | |
경매 생성 | 132,625 | 112,296 |
커밋입찰 | 46,120 | 21,000(ETH 전송 비용) |
공개 입찰 | 33,728 | 135,741 |
경매 종료 | 57,652 | 87,340 |
담보 철회 | 30,426 | 65,825 |
Foundry 단위 테스트를 기반으로 한 다양한 작업의 대략적인 가스 비용
사용자 경험
두 가지 구현이 유사한 전체 흐름(입찰 단계, 공개 단계, 경매 종료)을 따르지만 사용자 경험에는 몇 가지 차이점이 있습니다. SneakyAuction에는 몇 가지 사소한 단점이 있습니다.
- 배포되지 않은 저장소에 ETH를 보내는 경험은 프런트 엔드에 의해 추상화될 수 있지만 블록 탐색기에서 입찰 거래를 검토하는 사용자에게 잠재적으로 혼란을 줄 수 있습니다.
- OverColtralizedAuction을 사용하면 모든 입찰이 공개된 경우 경매를 조기에 종료할 수 있습니다. 계약에서는 얼마나 많은 입찰이 이루어졌는지 알 수 없기 때문에 SneakyAuction에서는 이것이 불가능합니다.
- 입찰자는 다시 전화하여 입찰을 업데이트하고 OverColtralizedAuction으로 담보를 충전할 수 있습니다 commitBid. SneakyAuction에서는 입찰 금고가 담보로 확보되면 입찰자는 업데이트를 할 수 없습니다.
은둔
OverColtralizedAuction의 입찰 개인 정보 보호는 추가 담보를 확보하기로 선택한 입찰자에 의존합니다(따라서 구경꾼은 입찰의 상한선을 알지만 정확한 금액은 알 수 없습니다). 반면에 SneakyAuction은 경매 자체와 전혀 관련이 없는 온체인 활동, 즉 경매 입찰 기간 동안 발생하는 ETH 전송으로부터 개인정보를 보호합니다.
단순화를 위해 각 입찰이 단일 ETH 전송을 사용하여 담보로 제공된다고 가정해 보겠습니다. 우리는 다음을 관찰합니다.
- 담보 거래는 누군가가 온체인 볼트 주소와 처음으로 상호 작용하는 것이어야 합니다.
- 나머지 입찰 기간 동안 다른 거래가 금고 주소에 영향을 미칠 것으로 예상하지 않습니다.
- 아무도 개인 키를 갖고 있지 않기 때문에 볼트 주소에서 거래가 시작될 수 없습니다.
입찰 기간 동안 "손길이 닿지 않은" 주소로 ETH를 전송하는 것은 그럴듯한 입찰입니다. 즉, 입찰 거래를 숨기는 "잡음"입니다. SneakyAuction의 개인 정보 보호를 정량화하는 데 도움이 되도록 이러한 노이즈 분포의 모양을 살펴볼 수 있습니다.
이 히스토그램은 손대지 않은 주소로의 일일 ETH 전송(이더리움 메인넷에서)의 연간 분포를 보여주며, 24시간 입찰 기간 동안의 노이즈 분포를 보여줍니다. 대부분의 거래가 [0.001, 1] ETH 범위에 속한다는 것을 알 수 있습니다. 이는 해당 범위의 예상 입찰가를 가진 경매가 가장 강력한 개인 정보 보호를 가질 것임을 의미합니다. 반면, 일반적인 소음은 예상 입찰가가 10ETH보다 큰 경매에 대해 충분한 프라이버시를 제공하지 못할 수 있습니다. 해당 범위에서 100회 이상의 전송이 거의 없으므로 많은 입찰을 유치하는 경매는 배포에 눈에 띄는 스파이크를 생성합니다. .
이 데이터에 대한 또 다른 관점을 위해 이 분산형 차트는 2022년 10월 15일의 거래를 두 개의 가상 경매 입찰과 중첩하여 묘사합니다.
200개의 입찰, 일반적으로 1ETH 정도에 배포됨
200개의 입찰, 일반적으로 약 100 ETH에 배포됨
직관적으로 관찰자가 두 번째 경매에서 입찰을 식별하는 것이 훨씬 쉬울 것입니다. 실제로 EM( 기대 최대화 ) 알고리즘과 같은 클러스터링 알고리즘을 사용하여 어떤 거래가 입찰인지 예측할 수 있습니다.
그러나 실제로 SneakyAuction을 더욱 비공개적으로(따라서 더욱 매력적으로) 만들 수 있는 몇 가지 다른 요소가 있습니다.
- 더 긴 입찰 기간: 개인 정보 보호는 입찰 기간에 따라 확장됩니다. 입찰 기간이 길수록 입찰을 숨기기 위한 전송이 더 많아집니다.
- 동시 경매: 개인 정보 보호는 동시 경매 수에 따라 확장됩니다. – 두 경매가 동시에 입찰 단계에 있는 경우 한 경매의 입찰은 다른 경매에 잡음으로 작용합니다.
SneakyAuction은 초과 담보의 이점도 누릴 수 있습니다. SneakyVault는 초과 ETH를 입찰자에게 반환하므로 입찰자는 추가 개인 정보 보호를 위해 초과 담보를 선택할 수 있습니다. 따라서 어떤 의미에서 SneakyAuction은 이전 구현보다 훨씬 더 강력한 개인정보 보호를 제공합니다.
SneakyAuction의 개인 정보 보호 메커니즘의 간단한 결과는 입찰 기간 동안 입찰 횟수 를 숨긴다는 것입니다. 이는 입찰 값만 숨기는 OverColtralizedAuction에 비해 이점이 있습니다. 특정 경매에 대해 이루어진 입찰 약정 수가 완전히 공개됩니다(경매의 경쟁력이 얼마나 되는지 알 수 있음).
***
봉인된 입찰 경매의 첫 번째 구현은 실제 기능을 온체인 설계 결정으로 변환한 반면, 두 번째 설계는 블록체인의 공개 특성을 장점으로 활용하는 새롭고 실용적인 메커니즘에 의존합니다. 즉, 봉인된 입찰은 관련 없는 사람들 사이에 "숨겨집니다". 블록체인 활동.
이 새로운 접근 방식은 과도한 담보 없이 입찰 개인 정보 보호를 달성할 수 있는 편리한 방법이지만 모든 경매(예: 높은 가치의 입찰이 많은 경매)에 반드시 적합한 것은 아닙니다. 더 작은 입찰을 기대하는(특히 장기간에 걸쳐) 경매의 경우 개인 정보 보호가 향상됩니다.
***
여기에 표현된 견해는 인용된 개별 AH Capital Management, LLC(“a16z”) 직원의 견해이며 a16z 또는 그 계열사의 견해가 아닙니다. 여기에 포함된 특정 정보는 a16z가 관리하는 펀드의 포트폴리오 회사를 포함한 제3자 소스에서 얻은 것입니다. a16z는 신뢰할 수 있는 출처에서 가져온 정보이지만, 해당 정보를 독립적으로 검증하지 않았으며 해당 정보의 현재 또는 지속적인 정확성이나 주어진 상황에 대한 적합성에 대해 어떠한 진술도 하지 않습니다. 또한 이 콘텐츠에는 제3자 광고가 포함될 수 있습니다. a16z는 그러한 광고를 검토하지 않았으며 그 안에 포함된 어떠한 광고 콘텐츠도 보증하지 않습니다.
이 콘텐츠는 정보 제공의 목적으로만 제공되며 법률, 비즈니스, 투자 또는 세금 관련 조언으로 의존해서는 안 됩니다. 그러한 문제에 대해서는 자신의 조언자와 상담해야 합니다. 증권이나 디지털 자산에 대한 언급은 설명 목적으로만 제시된 것이며 투자 추천이나 투자 자문 서비스 제공을 제안하는 것이 아닙니다. 또한, 이 내용은 투자자나 잠재 투자자를 대상으로 하거나 사용하려는 의도가 없으며, a16z가 관리하는 펀드에 대한 투자 결정을 내릴 때 어떤 상황에서도 의존할 수 없습니다. (a16z 펀드에 대한 투자 제안은 해당 펀드의 사모 각서, 청약 계약서 및 기타 관련 문서를 통해서만 이루어지며 전체 내용을 읽어야 합니다.) 언급되거나 언급되거나 언급된 모든 투자 또는 포트폴리오 회사 설명된 내용은 a16z가 관리하는 차량에 대한 모든 투자를 대표하지 않으며 해당 투자가 수익성이 있을 것이라는 보장이나 향후 다른 투자가 유사한 특성이나 결과를 가질 것이라는 보장은 없습니다. Andreessen Horowitz가 관리하는 펀드에 의한 투자 목록(발행자가 a16z에 공개를 허용하지 않은 투자 및 공개 거래되는 디지털 자산에 대한 미발표 투자 제외)은 https://a16z.com/investments 에서 확인할 수 있습니다. / .
여기에 제공된 차트와 그래프는 정보 제공의 목적으로만 제공되며 투자 결정을 내릴 때 이에 의존해서는 안 됩니다. 과거 성과는 미래 결과를 나타내지 않습니다. 내용은 표시된 날짜 기준으로만 설명됩니다. 본 자료에 표현된 모든 예상, 추산, 예상, 목표, 전망 및/또는 의견은 예고 없이 변경될 수 있으며, 다른 사람이 표현한 의견과 다르거나 반대될 수 있습니다. 추가적인 중요한 정보는 https://a16z.com/disclosures를 참조하세요.
코인인증하고 코인올백 공식카톡방 입장하기
https://open.kakao.com/o/slRwZOog