BTC $63,397.22 +1.40%
ETH $1,880.43 +2.36%
BNB $588.24 +2.27%
XRP $1.08 +2.48%
SOL $73.56 +3.11%
TRX $0.3269 -0.08%
DOGE $0.0704 +2.93%
ADA $0.1885 +9.25%
BCH $213.64 +3.31%
LINK $8.33 +4.05%
HYPE $52.62 +1.09%
AAVE $92.70 +2.83%
SUI $0.6916 +2.96%
XLM $0.1741 +2.57%
ZEC $486.50 +5.15%
BTC $63,397.22 +1.40%
ETH $1,880.43 +2.36%
BNB $588.24 +2.27%
XRP $1.08 +2.48%
SOL $73.56 +3.11%
TRX $0.3269 -0.08%
DOGE $0.0704 +2.93%
ADA $0.1885 +9.25%
BCH $213.64 +3.31%
LINK $8.33 +4.05%
HYPE $52.62 +1.09%
AAVE $92.70 +2.83%
SUI $0.6916 +2.96%
XLM $0.1741 +2.57%
ZEC $486.50 +5.15%

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?

Summary: 현재 상태에서 Blast로 자금을 송금하는 것은 위험합니다.
추천 읽기
2023-11-24 15:36:16
현재 상태에서 Blast로 자금을 송금하는 것은 위험합니다.

원문 제목:《코드 분석: 왜 Blast가 완전히 L2가 아닌가》

원문 저자: Jarrod Watts

원문 번역: 금색 재정 0xjs


편집자 주: 새로운 L2 네트워크 Blast가 이번 주 출시된 이후로 여론의 중심에 서 있습니다. NFT 거물 Christian이 500개의 stETH를 Blast에 예치한 것뿐만 아니라, 22일에는 Blast가 2000만 달러의 자금을 조달했다고 발표했습니다. 많은 개발자들이 Blast의 코드와 본질에 대해 논쟁을 벌이고 있으며, 그 중 Polygon의 Jarrod Watts는 Blast가 Layer2 네트워크가 아니라고 단언했습니다. 본문은 그의 X 트윗에서 번역한 것입니다.

누군가는 "Blast는 단지 3/5 다중 서명일 뿐…"이라고 말했습니다.

지난 며칠 동안 저는 소스 코드를 깊이 연구하여 이 주장이 사실인지 확인했습니다.

아래는 제가 본 모든 것입니다:

  1. 새로운 지갑 0x52c31이 두 개의 계약을 배포했습니다: 1) 0xa01: Blast Deposit 프록시 계약; 2) 0x5f6: Blast Deposit 구현 계약.

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?

이 "프록시 계약" 설정에 익숙하지 않다면, 후속 내용에서 다시 다룰 것입니다.

  1. 0x52c31이 이러한 계약을 배포한 후, 소유권을 Gnosis Safe 스마트 계약으로 이전했습니다.

Gnosis Safe 또는 "Safe2" 계약은 가장 인기 있고 신뢰할 수 있는 다중 서명 스마트 계약입니다. 이들은 거래를 실행하기 위해 대다수 서명자의 서명을 요구합니다.

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?


  1. 현재 Blast 계약을 소유한 Safe 계약에는 5명의 서명자가 있습니다.

이는 대다수(즉, 3/5) 서명자가 이 Safe 계약을 대표하여 거래를 실행해야 함을 의미합니다. 이 5개의 지갑은 모두 매우 새로운 지갑이지만, 소유자는 불명입니다.


  1. 따라서 3/5 다중 서명 계약이 현재 Blast Deposit 계약의 "소유자"입니다.

우리가 언급한 바와 같이, Blast Deposit 계약은 두 개의 계약으로 구성됩니다: 프록시와 구현.

그들의 "소유자"가 된다는 것은 실제로 무엇을 의미할까요?


  1. 일반 스마트 계약의 경우, 블록체인에 배포되면 코드를 변경할 수 없습니다. 프록시 스마트 계약은 전체 계약을 교체하지 않고도 스마트 계약을 "업그레이드"(변경)할 수 있게 해줍니다. 이는 일반적으로 버그를 수정하거나 기능을 추가하는 데 사용됩니다.


  1. Blast 프록시는 OpenZeppelin의 UUPSUpgradeable 계약을 구현합니다. 여기에는 구현 계약의 로직을 변경할 수 있는 "upgradeTo"와 같은 함수가 포함되어 있습니다. 이는 사용자 상호작용 계약이 동일한 계약 주소를 유지할 수 있음을 의미합니다.


  1. 이러한 업그레이드 가능성의 최악의 경우는 (다중 서명) 소유자가 계약의 로직을 악의적인 내용으로 변경하는 것입니다.

이것은 좀 무섭게 들리죠?…… 사실, 이러한 "보조 기능"은 오늘날 대부분의 L2에서 채택되고 있습니다.


  1. Optimism 및 Arbitrum과 같은 Optimistic Rollup도 이 기능을 가지고 있습니다.

L2Beat에 따르면:

· OP Mainnet 및 Base 시스템의 코드는 사전 통지 없이 임의로 변경될 수 있습니다.


· Arbitrum One의 업그레이드는 약 12일의 지연이 필요하지만, 이사회는 지체 없이 승인할 수 있습니다.


  1. zkEVM 세계도 마찬가지입니다.

L2Beat에 따르면:

· Linea, Scroll 및 zkSync 시스템의 코드는 사전 통지 없이 임의로 변경될 수 있습니다.

· Polygon zkEVM의 업그레이드는 약 10일의 지연이 있습니다(긴급 상태가 활성화되지 않는 한).

  1. 이러한 Rollup이 업그레이드를 수행할 수 있는 다중 서명을 갖춘 이유는 기술이 성숙할 때 임시 보안을 구현하기 위해서입니다. L2Beat가 L2 단계 블로그에서 개요한 바와 같이, Rollup의 마지막 단계는 이러한 보안 위원회가 "심각한 결함"을 해결하는 능력을 제한해야 합니다.

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?


  1. 보안 위원회의 능력은 시간이 지남에 따라 약화됩니다. 그러나 회원의 인지도는 중요합니다.

예를 들어, Polygon PIP-29는 "시스템 스마트 계약에 대한 범위가 좁고 시간 제한이 있는 변경"을 관리하기 위해 13명의 회원으로 구성될 것을 제안했습니다.

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?


  1. 따라서, Blast가 다중 서명을 통해 코드 업그레이드를 수행하고 즉시 자금을 훔칠 가능성이 있지만, *현재* 많은 다른 L2 솔루션도 동일한 기능을 가지고 있습니다.

지금까지 저는 Blast를 옹호해왔습니다. 그러나 이제 나쁜 소식입니다… 계속해봅시다.


  1. Blast는 L2가 아닙니다.


Blast는 두 가지 기능을 가진 스마트 계약일 뿐입니다: 1, 사용자의 자금을 수락합니다. 2, 사용자의 자금을 Lido와 같은 프로토콜에 투자합니다.


테스트넷도 없고, 거래도 없고, 브리지도 없고, Rollup도 없으며, 이더리움에 거래 데이터를 전송하지 않습니다. 이것은 L2가 아닙니다.


  1. Blast 계약에 예치함으로써, 당신은 기본적으로 3-5명의 낯선 사람이 당신의 자금을 스테이킹할 것이라고 믿는 것입니다.


이 3-5명이 미래에 올바른 일을 하기로 결정하지 않는 한, 당신은 언제든지 이 돈을 인출할 수 없습니다. 다시 말하지만, 여기에는 브리가 없습니다.


  1. 저에게는 정말 미친 일입니다…


당신은 Blast에서 당신의 돈을 되찾을 수 없습니다, 까지:


낯선 사람들로 구성된 3/5 다중 서명이 새로운 계약을 배포할 때까지;


그 계약이 자금을 인출할 수 있는 기능을 가질 때까지;


그들이 모든 자금을 새로운 계약으로 이전할 때까지.


  1. 그러나, 더 나쁜 상황이 있습니다.

저는 그들이 계약의 모든 자금을 훔치기 위해 "업그레이드"를 할 필요조차 없다는 것을 말씀드릴 수 있습니다. 이 계약에 사용자가 예치한 자금은 다른 사람들이 인출할 수 없습니다.

계속 살펴보겠습니다.


  1. 함수 "enableTransition"은 "mainnetBridge" 계약을 매개변수로 요구합니다.

이 "mainnetBridge" 계약의 기능: 모든 스테이킹된 ETH, DAI를 가져옵니다.

그렇다면 이 "mainnetBridge" 계약은 어떤 모습일까요?

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?


  1. 그것은 절대적으로 무엇이든 될 수 있습니다! Blast는 최대한 많은 LIDO와 DAI를 소비할 수 있는 임의의 "mainnetBridge" 계약을 승인합니다…

이 계약의 정확성에는 분명히 몇 가지 제한이 있을까요? 음, *네*, 코드를 살펴보겠습니다.


  1. 아래는 "_setMainnetBridge" 함수의 어서션 문입니다.

Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?


그것은… 해당 주소에 코드가 있는지 확인합니다! 네, EOA 주소가 아닌 한; 그것은 계약 내의 모든 자금을 승인했습니다. 현재 자금 총액은 2억 달러를 초과했습니다.


Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?

  1. 따라서, 그들이 할 수 있는 것은:

1) 극히 간단한 스마트 계약을 만들고 이를 mainnetBridge 계약으로 설정합니다;


2) 해당 스마트 계약이 모든 스테이킹된 ETH와 DAI(2억+)를 수신하게 합니다.


스마트 계약을 호출하여 모든 자금을 EOA 지갑으로 인출합니다.


  1. 우리가 발견한 두 가지 주요 위협은:

· 3/5 다중 서명으로 악의적인 코드를 승인하여 자금을 훔치는 것입니다.


· 악의적인 스마트 계약을 만들고 이를 "mainnetBridge" 스마트 계약으로 설정하여 자금을 훔치는 것입니다. 역시 3/5 다중 서명을 통해 이루어집니다.


  1. 이것이 실제로 발생할까요? 개인적으로, 제가 추측해야 한다면, 자금이 도난당하지 않을 것이라고 생각합니다.

어쨌든, 저는 실제로 Blast의 원주율 수익 아이디어가 매우 흥미로운 균형이라고 생각합니다.


  1. 따라서, 현재 상태에서 Blast에 자금을 보내는 것이 위험하다고 개인적으로 생각하지만, 보내는지 여부는 궁극적으로 사용자에게 달려 있으며, 저는 제가 본 것을 여기서 공유하고 있습니다.

저는 여전히 Blast 팀과 이미 예치한 모든 분들에게 행운을 빕니다.


warnning 위험 경고
app_icon
ChainCatcher Building the Web3 world with innovations.