BTC
ETH
HTX
SOL
BNB
시장 동향 보기
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

대중 과학 | DeFi 처리량 확장: Layer-One 기사

以太坊爱好者
特邀专栏作者
이 기사는 약 9314자로, 전체를 읽는 데 약 14분이 소요됩니다
Ethereum의 한계와 DeFi 사용자에게 미치는 영향을 살펴보십시오.
AI 요약
Ethereum의 한계와 DeFi 사용자에게 미치는 영향을 살펴보십시오.

편집자 주: 이 기사의 출처는이더리움 애호가(ID: ethfans)편집자 주: 이 기사의 출처는

이더리움 애호가(ID: ethfans)

, 저자: Remco Bloemen, 번역자 및 교정자: Min Min & A Jian, 승인을 받아 Odaily에서 복제.

최근에 DeFi를 사용했다면 최근 치솟는 거래 수수료에 입이 떡 벌어질 것입니다. 오늘날 이더리움 거래에서 수십 또는 수백 달러의 거래 수수료는 드문 일이 아닙니다. 이러한 높은 수수료로 인해 "은행 서비스를 이용할 수 없는 사람들이 은행 서비스를 이용할 수 있게 한다"와 "허가가 필요 없는 금융 인프라가 모든 사람에게 혜택을 주는 것"이라는 원대한 계획은 말할 것도 없고 거대한 고래만이 수익을 낼 수 있습니다. 이더리움은 부자들의 공간이 되고 있습니다.

이미지 설명

- 소액거래일 경우 거래금액의 10%를 초과하는 수수료가 발생할 수 있습니다 -

우리는 모든 가치가 자유롭게 흐를 수 있는 토큰화된 세상을 만들고자 하며 블록체인의 한계로 인해 이 비전을 실현하지 못할 것입니다. 그렇기 때문에 0x Labs는 이러한 한계에 대한 솔루션을 개발하기 위해 전담 연구 엔지니어 팀을 구성했습니다. 이 기사에서는 이더리움의 한계와 DeFi 사용자에게 미치는 영향을 살펴봅니다. 차세대 블록체인에 대해서도 간략하게 소개합니다. 후속 기사에서는 다른 종류의 솔루션(레이어 2)을 살펴보고 DeFi의 요구 사항을 해결하기 위한 자체 전략을 소개합니다.

우선, 이더리움 트랜잭션의 크기는 가스 소비로 측정된다는 것을 아는 것이 중요합니다. 트랜잭션은 블록으로 패키징되며 약 13초마다 블록이 생성됩니다. 각 블록은 "블록 가스 한도"라고 하는 것 때문에 제한된 수의 트랜잭션만 보유할 수 있습니다. 현재 각 블록의 가스 한도는 1,200만 개입니다. 일반적인 ERC20 토큰 거래는 약 50,000 Gas를 소비해야 합니다. 이는 블록이 최대 240개의 토큰 전송 작업을 수용할 수 있음을 의미합니다. 즉, 초당 약 18개의 트랜잭션을 완료할 수 있습니다. DeFi 거래에는 종종 다른 부기 작업 중에서 여러 토큰 전송이 포함되며, 이는 비용을 두 배로 늘리고 처리량을 더욱 제한할 수 있습니다. 가스 용량 및 블록 시간은 거래에 사용할 수 있는 가스의 꾸준한 흐름이 있음을 의미합니다.

먼저 이더리움 탄생 이후 가스 공급 및 사용량의 증가를 살펴보겠습니다.

가스 사용량


매일 약 6,000개의 블록이 이더리움에 추가되어 수십억 개의 가스 거래를 수용합니다. 이 양은 주로 블록 가스 캡의 증가로 인해 시간이 지남에 따라 지속적으로 변화하고 증가합니다. 동시에 이더리움의 트랜잭션 수와 규모가 지속적으로 증가함에 따라 트랜잭션에서 소비되는 총 가스량도 증가하고 있습니다.

이더리움의 전체 발전 과정을 살펴보면 Gas의 공급(회색 부분)과 소비(검은 부분)는 다음 그림과 같습니다.

이미지 설명

그래프에서 알 수 있듯이 가스 공급은 Byzantium, Constantinople 및 Muir Glacier 하드 포크 이전에 들쭉날쭉한 딥을 보였습니다. 이것은 빙하기로 알려진 이더리움 난이도 폭탄의 효과입니다. 빙하기 동안 블록 생성 시간은 기하급수적으로 증가하여 하루에 채굴되는 블록 수가 감소하고 일일 총 가스 공급량이 감소합니다. 물론 이 상황은 매우 나쁩니다. 따라서 이더리움 네트워크는 네트워크를 복원하기 위해 하드포크를 사용해야 합니다. 이것이 바로 난이도 폭탄의 목적입니다. 혁신이 정체되지 않도록 개선 사항을 도입하는 것입니다. 콘스탄티노플 하드포크가 난이도 폭탄 재설정을 잊었기 때문에 이더리움은 즉시 뮤어 빙하 하드포크를 도입했습니다. 후속 베를린 하드 포크는 이 메커니즘(EIP 2515) 변경을 고려하고 있습니다.

그림의 검은 부분의 Gas 사용량을 보면 2017년 ICO 붐 이후 이더리움의 Gas 사용량이 Gas 상한선의 60% 이상을 차지하고 있음을 알 수 있습니다. 그 이후로 가스 한도는 몇 번의 점프를 통해 4배가 되었습니다. 점프할 때마다 그에 상응하는 가스 사용량이 증가합니다. 지난 몇 달 동안 이더리움 가스 사용량은 가스 한도의 95%에서 정체된 것으로 보입니다.

이더리움의 가스 활용률이 95%를 넘지 못하는 이유를 이해하려면 먼저 빈 블록과 엉클 블록을 이해해야 합니다.

보조 제목

빈 블록과 삼촌 블록

이더리움의 개발 역사를 통틀어 공급이 수요를 초과하더라도 이더리움의 가스 사용량은 가스 상한선의 95%를 넘지 않았습니다. 놀랍게도 나머지 5%의 가스는 빈 블록에서 낭비됩니다. 빈 블록은 일반적이며 약 20개 블록마다 빈 블록이 있습니다. 포함되기를 기다리는 유료 거래가 있는데 왜 빈 블록을 채굴할까요? 데이터를 살펴보겠습니다.

빈 블록 비율은 시간이 지남에 따라 꾸준히 증가했으며 현재 약 5%입니다. 모든 마이닝 풀에는 빈 블록이 있으므로 악성이 아닙니다. 진짜 문제는 차단 속도가 너무 빠르다는 것입니다. 블록을 채굴하는 데 6초 미만이 걸리면 블록이 비어 있을 확률이 기하급수적으로 증가합니다.

한 가지 설명은 채굴자들이 새 블록의 헤더를 받았지만 아직 전체 블록을 처리하지 않았을 때 다음 블록 채굴을 시작한다는 것입니다. 이것은 비트코인에서 "Simple Payment Verification (SPV)" 채굴이라고 불리며, 채굴자들이 즉시 다음 블록 채굴을 시작할 수 있지만 빈 블록만 채굴할 수 있습니다. 새 블록이 처리되면 채굴자는 다음 블록 패키징 및 채굴을 시작할 수 있습니다. 이 설명을 뒷받침하는 또 다른 증거는 동일한 광부가 두 개의 블록을 연속으로 채굴하면 빈 블록 비율이 25% 감소한다는 것입니다.

블록을 비우는 것 외에도 새 블록을 처리하는 동안 이전 블록을 계속 채굴하는 다른 방법이 있습니다(채굴 가능한 새로운 슬롯을 파는 대신). 이로 인해 여러 개의 새로운 블록이 채굴될 가능성이 있습니다. 이더리움에 이런 일이 발생하면 네트워크는 유효한 블록을 선택하고 다른 블록을 삼촌으로 취급합니다. 삼촌 블록을 채굴하는 광부들은 동일한 블록 보상을 받게 됩니다. 엉클 블록 비율은 매우 안정적입니다.

2018년에 가스 사용량이 최고조에 달했을 때 엉클 블록 비율도 증가했습니다(현재 5%로 꾸준히 감소). 그 기간 동안 빈 블록 비율도 증가했는데, 아마도 채굴자들이 전략을 변경했기 때문일 것입니다.

빈 블록 비율과 엉클 블록 비율을 줄이는 데 사용할 수 있는 몇 가지 방법이 있습니다. 빈 블록률과 엉클 블록률이 높은 근본 원인은 네트워크 및 블록 처리 지연으로 인해 마이닝 풀이 최신 상태를 얻을 수 없기 때문이라고 가정합니다. 간단하지만 바람직하지 않은 접근 방식은 마이닝 풀을 한 곳에서 최신 상태로 보다 중앙 집중화하는 것입니다. 보다 분산된 솔루션은 bloxroute를 사용하여 마이닝 풀 간에 전용 상호 연결 채널을 생성하는 것입니다. "스파이 마이닝"에서 영감을 받은 또 다른 솔루션은 마이닝 풀이 마이닝 중인 블록을 미리 공유하도록 하는 것입니다. 다른 마이닝 풀은 채굴되는 각 블록에 대해 다음 블록을 준비할 수 있으며, 특정 마이닝 풀이 성공적으로 블록을 채굴하면 다른 채굴 풀은 다음 채굴할 블록을 알고 즉시 전환됩니다. 더 높은 수준에서 노드 통신 프로토콜 및 처리 알고리즘을 개선하는 것도 도움이 될 수 있으며 일부 이점을 가져올 수도 있습니다. 그러나 우리가 본 것처럼 엉클 블록 비율과 빈 블록 비율을 줄이면 일일 가스 공급이 최대 5% 정도 증가할 수 있습니다.

가스 가격

이로부터 가스 캡은 가스 공급량의 95%입니다. 사람들의 가스 수요가 이 한도를 초과하면 어떻게 될까요?

보조 제목

가스 가격

Ethereum 사용자의 Gas 수요가 상한에 도달하면 어떻게 됩니까? 광부는 원하는 대로 포함할 트랜잭션을 선택할 수 있습니다(자세한 내용은 아래 참조). 그러나 사실 채굴자들은 가스 가격이 높은 패키징 거래에 우선순위를 둘 것입니다. 왜냐하면 이것이 그들의 이익을 극대화하고 결국 가스에 대한 최고 가격 경매를 촉발할 것이기 때문입니다.

가스 가격은 비탄력적인 공급의 완벽한 예가 되었습니다. 이더리움 네트워크에서 Gas의 활용률이 80%를 넘어 상한선인 95%에 근접함에 따라 Gas의 가격은 급격하게 상승하게 됩니다. 수요 증가는 사용자가 감당할 수 없을 때까지 가스 가격을 상승시킬 뿐입니다. 가스 가격을 낮추는 유일한 방법은 가스 공급을 늘리거나 가스 수요를 줄이는 것입니다. 최근 가스 한도의 인상은 가스 가격을 효과적으로 낮추기에 충분하지 않습니다.

그림의 데이터는 다음 블록에 포함되기 위해 지불해야 하는 최소 가격을 나타냅니다. 조금 더 기다릴 의향이 있다면 가스 가격은 훨씬 낮아질 것입니다. 최근의 과거 데이터로 판단하면 2분 이상 기다릴 의향이 있다면 가스 가격은 떨어질 것입니다. EIP 1559는 보험료를 줄이면서 거래 처리 속도를 높이는 데 도움이 됩니다.

가스 한도

보조 제목

채굴 풀은 블록의 가스 한도를 결정합니다. 광부와 풀이 작동하는 방식에 대한 간략한 요약부터 시작하겠습니다. 거의 모든 광부는 컴퓨팅 성능의 출처를 다른 사람과 공동으로 선택합니다. 그들은 오랫동안 수입이 없는 위험을 무릅쓰고 혼자 채굴하기보다는 자원을 함께 모으고 꾸준한 수입 흐름을 얻을 것입니다. 따라서 각 채굴자의 기여도를 확인하고 다음 블록의 채굴 작업을 할당하는 역할을 하는 채굴 풀이 생겨났습니다. 대부분의 블록은 대규모 마이닝 풀에서 채굴됩니다. 아래 그림은 이더리움 탄생 이후 채굴 풀에서 생성된 블록의 비율을 보여줍니다.

위의 그림에서 알 수 있듯이 Spark Pool, Ethermine, F2Pool은 블록 생성 비율에서 훨씬 앞서 있습니다.

하드포크에 참여하는 것 외에도 마이닝 풀 운영자는 이더리움의 가스 한도를 설정하는 중요한 거버넌스 책임도 수행합니다. 블록 타임, 가스 가격 등의 특성과 달리 각 블록의 가스 상한선을 적극적으로 설정해야 합니다. 새 블록과 이전 블록의 가스 한도 차이는 0.1% 이내여야 하므로 각 블록의 크기는 약간만 변동될 수 있습니다(노란색 종이: 공식 47 참조). 채굴 풀 운영자가 합의에 도달하면 가스 한도를 크게 조정할 수 있습니다. 2.5시간 이내에 가스 한도를 두 배 또는 절반으로 줄일 수 있습니다. 합의가 없는 경우 가스 한도는 채굴 풀 크기의 가중 중앙값입니다.

현재 채굴자의 실제 행동에 대한 자세한 정보가 부족하기 때문에 투표 시스템이라는 더 간단한 접근 방식을 취했습니다. 앞으로 소프트 포크를 통해 이 접근 방식을 보다 정확한 알고리즘으로 변환할 수 있기를 바랍니다.

- 이더리움의 기본 설계 원칙(2015년 3월)

텍스트

이미지 설명

최근 세계에서 가장 큰 이더리움 채굴 풀 중 두 곳이 일일 가스 생산량을 25% 늘리기로 논란의 여지가 있는 결정을 내렸습니다. 이러한 움직임의 목적은 Gas 공급을 늘려 과도하게 높은 거래 수수료를 억제하는 것입니다. 지금까지 우리는 가스 한도를 아무리 늘려도 거래에 대한 사용자 수요의 증가율을 따라갈 수 없다는 것을 발견했습니다. 이것은 가스 가격이 단기적으로 하락한 후 결국 다시 상승할 것임을 의미합니다.

가스 한도를 높이면 이더리움에 숨겨진 보안 비용이 높아집니다. 보시다시피 가스 한도를 높이면 엉클 블록과 빈 블록의 비율이 증가합니다. 정상적인 트랜잭션 로드의 경우 이 효과는 중요하지 않습니다. 그러나 보안상의 이유로 정상적인 경우가 아닌 극단적인 경우에만 관심이 있습니다. Perez와 Livshits(2019)의 연구에 따르면 최악의 경우 처리 효율이 극도로 낮은 트랜잭션 일괄 처리가 발생하는 경우(이러한 트랜잭션 처리 속도는 동일한 Gas 비용으로 일반 트랜잭션보다 100배 느림), 그리고 그것을 블록으로 채우고 노드는 이 블록을 처리하는 데 90초를 소비해야 하므로 노드가 뒤처지고 마이닝 풀은 많은 수의 빈 블록과 엉클 블록을 발굴합니다. 이 연구가 발표된 이후 일부 완화가 나타났지만 문제가 완전히 해결되지는 않았습니다. 따라서 가스 제한을 늘리기로 한 결정은 두 명의 주요 노드 개발자인 Péter Szilágyi와 Alexey Akhunov에 의해 비판을 받았습니다.

텍스트

따라서 주유 한도에 도달하면 주유 가격이 올라가고 더 이상 주유 한도를 올려야 할 것 같지 않습니다. 그래서 우리는 또 무엇을 할 수 있습니까? 트랜잭션에 필요한 가스 비용을 줄일 수 있습니까?

보조 제목

가스 소비

트랜잭션의 가스 소비는 기본적으로 EVM 작업의 소비입니다. 트랜잭션은 많은 기본 EVM 작업으로 구성되며 각 작업의 가스 소비는 EIP 및 하드 포크에 의해 관리됩니다. 과거 하드 포크에서 주요 작업의 가스 소비는 증가(EIP 150, 160, 1884)하고 감소(EIP 1108, 2028, 2200)했습니다. 계획된 "Berlin" 하드 포크는 또한 몇 가지 가스 소비 변경(EIP 1380, 1559, 2046, 2565, 2537) 도입을 고려하고 있습니다.

이는 스토리지가 여전히 DeFi 비용의 큰 부분을 차지할 것임을 의미합니다. 새 잔액을 생성하는 비용은 20,000 Gas이며 기존 잔액을 수정하는 데 드는 비용은 5,000입니다. 전송은 최소 2개월, 교환은 최소 4개월을 변경해야 합니다. 더 복잡한 DeFi 트랜잭션에는 더 비싼 상태 작업이 포함됩니다. 관련 스토리지의 양과 비용을 줄이는 것은 정말 쉽지 않은 일인 것 같고, 이러한 추세는 거스를 수 없습니다. 그러나 좋은 소식은 Layer-2 스케일링 솔루션이 스토리지 집약적이고 컴퓨팅 집약적이 되도록 노력할 것이며, 이는 더 만족스러워 보일 것입니다.

마지막으로 블록의 가스 한도를 늘리는 것은 보안 문제도 있습니다. 가스 한도를 늘리는 것은 가장 효과적인 방법입니다. 순전히 현재 실제 작업의 평균 비용을 기반으로 가스 소비를 변경하는 것도 매우 위험합니다(현재 실제 평균 작업 비용에 대해 순진하게 가스 비용을 최적화하는 것은 매우 위험합니다.).

이제 이더리움 확장이 까다로운 문제인 이유가 분명해졌습니다. 귀하가 제안한 솔루션에 대해 논의하기 전에 DeFi 사용자에게 피해를 줄 수 있는 이더리움의 현재 단점을 하나 더 논의하고 싶습니다.

보조 제목

광부는 가치를 추출할 수 있습니다

블록 생산자는 합의 규칙의 제약을 받지만 합의 규칙은 거래 선택 및 주문과 같은 일부 중요한 자유도 제공합니다. 일반적인 토큰 전송의 경우 생산자의 자유도는 큰 영향을 미치지 않으나, 거래소 거래와 같은 DeFi 거래의 경우 Front-running(체인 상의 거래를 선제적으로 사용하기 위해 더 높은 Gas Price로 거래를 보내는 것을 의미)은 막대한 경제적 가치를 거둘 수 있습니다. . 문제를 더욱 복잡하게 만드는 것은 대상 트랜잭션이 두 트랜잭션 사이에 끼워져 있다는 것입니다. Daian et al.(2019)은 선행 거래에서 얻을 수 있는 가치를 채굴자 추출 가능 가치로 언급한다.

다른 한편으로, 가격 정보 전송 메커니즘이 정보를 업데이트한 후 가장 먼저 포지션을 청산하는 것과 같이 다른 트랜잭션 직후 체인에서 자신의 트랜잭션을 갖는 것도 가치가 있을 수 있습니다. 이것을 백런닝(back-running)이라고 하며 결국 채굴자들의 소득이 됩니다.

채굴자가 추출할 수 있는 가치는 궁극적으로 일반 DeFi 사용자로부터 얻을 수 있으며 더 큰 스프레드, 더 나쁜 가격, 더 높은 취급 수수료 및 더 많은 거래 실패로 나타납니다. 더 나은 DeFi 경험을 얻으려면 이 문제를 해결해야 합니다. 해결책 중 하나는 블록의 트랜잭션을 가스 가격에 따라 낮은 값에서 높은 값으로 주문하도록 요구하는 것과 같이 트랜잭션 주문의 자유를 제한하는 것입니다.

이제 우리는 이더리움의 한계와 DeFi에 미치는 영향에 대해 포괄적으로 이해했습니다. 물론 훌륭한 팀은 모두 솔루션을 개발하고 있습니다.

보조 제목

하나의 Layer-1, 두 개의 비전

현재 다양한 확장성 솔루션을 연구하는 훌륭한 팀이 많이 있습니다. 이 솔루션은 주로 "Layer-1"과 "Layer-2"의 두 방향이 있습니다. Layer-1 솔루션은 현재 이더리움을 대체하기 위해 보다 확장 가능한 블록체인을 만드는 것이고, Layer-2 솔루션은 현재 Ethereum을 기반으로 보다 확장 가능한 인프라에 액세스하려는 것입니다. 여기에서는 Layer-1에 대해 이야기하고 Layer-2 솔루션은 다음 기사에 남겨둡니다.

우리는 가장 분명한 것부터 시작합니다: 현재 이더리움 블록체인의 성능을 개선하는 것입니다. 이것이 바로 "Eth1.x" 동료들이 하고 있는 일입니다. 이더리움 클라이언트의 성능 향상만 놓고 보면 할 수 있는 일이 많다. 그러나 Eth1.x는 합당한 지원을 받지 못하여 진행이 느립니다. 이 방향으로 성능 향상이 어느 정도 달성될 수 있는지에 대한 기본 아이디어를 갖고 싶다면 Solana에 대해서만 알면 됩니다. 단점은 전체 노드를 실행하려면 매우 고급 하드웨어가 필요하다는 것입니다.

대부분의 다른 솔루션에는 세 가지 공통점이 있습니다: (1) WebAssembly를 가상 머신으로 사용, (2) 최소 상태의 아키텍처, 그리고 가장 중요한 것은 (3) 샤딩입니다. 현재 이더리움은 모든 트랜잭션을 순차적으로 실행합니다. 사실 트랜잭션이 대기열에 추가되도록 하는 것이 블록체인의 핵심이라고 할 수 있습니다. 하지만 이 모델의 단점은 트랜잭션을 병렬로 실행하기 어렵기 때문에 더 많은 리소스를 직접 투자하여 스케일링 문제를 해결할 수 없다는 것입니다. 그런 다음 블록체인을 여러 개의 느슨하게 연결된 필드로 나누고 병렬 처리를 실현할 수 있는 스레드를 "샤드"라고 합니다. 샤드 내에서 트랜잭션은 여전히 ​​직렬로 발생하지만 다른 샤드의 트랜잭션은 점진적으로 발생합니다. 이렇게 하면 모든 샤드가 병렬로 실행되어 네트워크 처리량이 샤드 수의 배수로 확장됩니다. 네트워크를 분할하는 데 사용하는 도메인은 샤드와 일대일로 대응할 필요가 없으며 동일한 샤드(스레드)에 여러 도메인을 할당하고 로드 밸런싱을 위해 이동할 수도 있습니다. 일반적인 샤딩에 대한 자세한 내용은 Near Protocol의 "Night Shadow" 프로토콜 백서를 참조하십시오.

체인의 두 항목은 스펙트럼의 두 끝을 나타냅니다. DFinity는 각 "액터"가 자체 도메인을 가지며 각 액터 간의 상호 작용이 비동기적인 세분화된 끝에 있습니다. 각 계약에 자체 도메인이 있는 약간 더 큰 Near 프로토콜. 거친 입자 끝에는 PolkaDot이 있으며, 도메인은 전체 샤드이며 더 구체적으로 "병렬 체인"이라고 해야 합니다. dApp 개발자의 관점에서 Ethereum 2.0이 어디에 있는지 말하기에는 너무 이릅니다. ETH1 EE(실행 환경)는 성긴 것이어야 하며, 그 경계는 현재 이더리움(즉, Eth2 구현 후 Eth1의 미래)이 형성한 샤드인 샤드의 경계와 정확히 일치해야 합니다. 전용 Eth2EE는 보다 세분화된 접근 방식을 선택할 수 있습니다. 세분화된 체계의 강점은 투명하다는 것입니다. 모든 교차 계약 호출은 샤드 경계를 교차하는지 여부에 관계없이 동등하게 처리될 수 있습니다. 이를 통해 샤드 간에 계약을 이동하여 로드 밸런싱을 수행할 수 있습니다.

그러나 DeFi 애플리케이션의 경우 비동기식 transferFrom 호출은 상당한 문제를 야기합니다. Eth와 Dai를 교환하려는 두 당사자 Alice와 Bob 간의 간단한 교환을 상상해 보십시오. 기본 계약은 다음과 같습니다.

하지만 이제 오류를 처리할 수 있어야 합니다. 첫 번째 트랜잭션이 실패하면 간단히 트랜잭션을 중단할 수 있습니다. 하지만 첫 번째 트랜잭션이 성공하고 두 번째 트랜잭션이 실패하면 Alice에게 ETH를 반환할 수 있어야 합니다. 문제는 오류를 처리하기 전에 Bob이 돈을 썼을 수 있다는 것입니다. 이 문제를 해결하는 한 가지 방법은 에스크로를 사용하는 것입니다.

이제 아무도 동전을 잃지 않습니다. 그러나 이제 Bob은 Alice의 입찰에 대한 무료 독점 옵션을 갖게 되었습니다. Alice의 돈은 이제 관리인의 관리하에 보관되지만 돈은 다른 사람의 거래 요청을 수락하거나 Bob과의 거래가 성공할 것이라고 보장할 수 없습니다. 악의적인 행동을 처벌함으로써 이 문제를 해결할 수 있지만, DeFi 거래마다 가치가 크게 다르기 때문에 합리적인 처벌을 결정하기 어렵습니다. 또한 모든 시장 참여자가 처음부터 동일한 저축 계약(관리인)에 돈을 넣도록 요구할 수 있지만 그렇게 하면 상태를 다시 중앙 집중화하고 샤딩 지점을 무효화합니다.

알아야 할 또 다른 사항은 이러한 동시성 문제가 까다로울 수 있다는 것입니다. 실제 거래소에서는 주문의 채움 상태를 지속적으로 업데이트해야 하므로 작성이 더 복잡해집니다. 이더리움 1.0을 괴롭힌 재진입 버그가 잠재적으로 엄청난 결과를 초래하는 나비라면 동시성 문제는 어디에나 들어갈 수 있는 침대의 버그입니다. 동시성 버그는 비결정적이며 테스트에서 전혀 나타나지 않을 수 있습니다. 위의 간단한 교체 예에서 보았듯이 개발자는 빈대처럼 전체 아키텍처를 처음부터 다시 생각해야 합니다. 이를 제거하는 유일한 방법은 모든 것을 풀다운하고 처음부터 다시 빌드하는 것입니다.

교환은 나머지 DeFi 세계의 초석이며 분명히 지속적인 프로세스입니다. 우리는 오더북 형식의 거래소가 어떻게 도전에 직면하는지 이미 보았습니다. 자동화된 시장 조성자 교환은 참가자가 이미 관리인(계약)에 자금을 저장하기 때문에 더 간단하지만 이 시나리오에서는 예비 잔액 자체가 병렬 처리를 방지합니다. 더 빠른 기존 거래소에서도 정산 활동은 궁극적으로 매칭 엔진에서 순차적으로 처리되며 동시성은 사용되지 않습니다(단, 기존 거래소도 중복성을 가질 수 있는 것이 좋습니다). 전통적인 교환이 어떻게 작동하는지 자세히 살펴보려면 Brian Nigito의 강연을 시청하십시오.

텍스트

참조

Daniel Perez & Benjamin Livshits (2019). “Broken Metre: Attacking Resource Metering in EVM.”

Daian et al. (2019). “Flash Boys 2.0: Frontrunning, Transaction Reordering, and Consensus Instability in Decentralized Exchanges.”

Brian Nigito (2017). “How to Build an Exchange.”

Danny Ryan (2020). “The State of Eth2, June 2020.”

Scott Shapiro & William Villanueva (2020). “ETH 2 Phase 2 WIKI.”

DeFi
ETH
Odaily 공식 커뮤니티에 가입하세요