Polygon 엔지니어: 왜 Blast가 완전히 L2가 아니라고 말하는가?
원문 제목:《코드 분석: 왜 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 다중 서명일 뿐…"이라고 말했습니다.
지난 며칠 동안 저는 소스 코드를 깊이 연구하여 이 주장이 사실인지 확인했습니다.
아래는 제가 본 모든 것입니다:
- 새로운 지갑 0x52c31이 두 개의 계약을 배포했습니다: 1) 0xa01: Blast Deposit 프록시 계약; 2) 0x5f6: Blast Deposit 구현 계약.

이 "프록시 계약" 설정에 익숙하지 않다면, 후속 내용에서 다시 다룰 것입니다.
- 0x52c31이 이러한 계약을 배포한 후, 소유권을 Gnosis Safe 스마트 계약으로 이전했습니다.
Gnosis Safe 또는 "Safe2" 계약은 가장 인기 있고 신뢰할 수 있는 다중 서명 스마트 계약입니다. 이들은 거래를 실행하기 위해 대다수 서명자의 서명을 요구합니다.

- 현재 Blast 계약을 소유한 Safe 계약에는 5명의 서명자가 있습니다.
이는 대다수(즉, 3/5) 서명자가 이 Safe 계약을 대표하여 거래를 실행해야 함을 의미합니다. 이 5개의 지갑은 모두 매우 새로운 지갑이지만, 소유자는 불명입니다.
- 따라서 3/5 다중 서명 계약이 현재 Blast Deposit 계약의 "소유자"입니다.
우리가 언급한 바와 같이, Blast Deposit 계약은 두 개의 계약으로 구성됩니다: 프록시와 구현.
그들의 "소유자"가 된다는 것은 실제로 무엇을 의미할까요?
- 일반 스마트 계약의 경우, 블록체인에 배포되면 코드를 변경할 수 없습니다. 프록시 스마트 계약은 전체 계약을 교체하지 않고도 스마트 계약을 "업그레이드"(변경)할 수 있게 해줍니다. 이는 일반적으로 버그를 수정하거나 기능을 추가하는 데 사용됩니다.
- Blast 프록시는 OpenZeppelin의 UUPSUpgradeable 계약을 구현합니다. 여기에는 구현 계약의 로직을 변경할 수 있는 "upgradeTo"와 같은 함수가 포함되어 있습니다. 이는 사용자 상호작용 계약이 동일한 계약 주소를 유지할 수 있음을 의미합니다.
- 이러한 업그레이드 가능성의 최악의 경우는 (다중 서명) 소유자가 계약의 로직을 악의적인 내용으로 변경하는 것입니다.
이것은 좀 무섭게 들리죠?…… 사실, 이러한 "보조 기능"은 오늘날 대부분의 L2에서 채택되고 있습니다.
- Optimism 및 Arbitrum과 같은 Optimistic Rollup도 이 기능을 가지고 있습니다.
L2Beat에 따르면:
· OP Mainnet 및 Base 시스템의 코드는 사전 통지 없이 임의로 변경될 수 있습니다.
· Arbitrum One의 업그레이드는 약 12일의 지연이 필요하지만, 이사회는 지체 없이 승인할 수 있습니다.
- zkEVM 세계도 마찬가지입니다.
L2Beat에 따르면:
· Linea, Scroll 및 zkSync 시스템의 코드는 사전 통지 없이 임의로 변경될 수 있습니다.
· Polygon zkEVM의 업그레이드는 약 10일의 지연이 있습니다(긴급 상태가 활성화되지 않는 한).
- 이러한 Rollup이 업그레이드를 수행할 수 있는 다중 서명을 갖춘 이유는 기술이 성숙할 때 임시 보안을 구현하기 위해서입니다. L2Beat가 L2 단계 블로그에서 개요한 바와 같이, Rollup의 마지막 단계는 이러한 보안 위원회가 "심각한 결함"을 해결하는 능력을 제한해야 합니다.

- 보안 위원회의 능력은 시간이 지남에 따라 약화됩니다. 그러나 회원의 인지도는 중요합니다.
예를 들어, Polygon PIP-29는 "시스템 스마트 계약에 대한 범위가 좁고 시간 제한이 있는 변경"을 관리하기 위해 13명의 회원으로 구성될 것을 제안했습니다.

- 따라서, Blast가 다중 서명을 통해 코드 업그레이드를 수행하고 즉시 자금을 훔칠 가능성이 있지만, *현재* 많은 다른 L2 솔루션도 동일한 기능을 가지고 있습니다.
지금까지 저는 Blast를 옹호해왔습니다. 그러나 이제 나쁜 소식입니다… 계속해봅시다.
- Blast는 L2가 아닙니다.
Blast는 두 가지 기능을 가진 스마트 계약일 뿐입니다: 1, 사용자의 자금을 수락합니다. 2, 사용자의 자금을 Lido와 같은 프로토콜에 투자합니다.
테스트넷도 없고, 거래도 없고, 브리지도 없고, Rollup도 없으며, 이더리움에 거래 데이터를 전송하지 않습니다. 이것은 L2가 아닙니다.
- Blast 계약에 예치함으로써, 당신은 기본적으로 3-5명의 낯선 사람이 당신의 자금을 스테이킹할 것이라고 믿는 것입니다.
이 3-5명이 미래에 올바른 일을 하기로 결정하지 않는 한, 당신은 언제든지 이 돈을 인출할 수 없습니다. 다시 말하지만, 여기에는 브리가 없습니다.
- 저에게는 정말 미친 일입니다…
당신은 Blast에서 당신의 돈을 되찾을 수 없습니다, 까지:
낯선 사람들로 구성된 3/5 다중 서명이 새로운 계약을 배포할 때까지;
그 계약이 자금을 인출할 수 있는 기능을 가질 때까지;
그들이 모든 자금을 새로운 계약으로 이전할 때까지.
- 그러나, 더 나쁜 상황이 있습니다.
저는 그들이 계약의 모든 자금을 훔치기 위해 "업그레이드"를 할 필요조차 없다는 것을 말씀드릴 수 있습니다. 이 계약에 사용자가 예치한 자금은 다른 사람들이 인출할 수 없습니다.
계속 살펴보겠습니다.
- 함수 "enableTransition"은 "mainnetBridge" 계약을 매개변수로 요구합니다.
이 "mainnetBridge" 계약의 기능: 모든 스테이킹된 ETH, DAI를 가져옵니다.
그렇다면 이 "mainnetBridge" 계약은 어떤 모습일까요?

- 그것은 절대적으로 무엇이든 될 수 있습니다! Blast는 최대한 많은 LIDO와 DAI를 소비할 수 있는 임의의 "mainnetBridge" 계약을 승인합니다…
이 계약의 정확성에는 분명히 몇 가지 제한이 있을까요? 음, *네*, 코드를 살펴보겠습니다.
- 아래는 "_setMainnetBridge" 함수의 어서션 문입니다.

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

- 따라서, 그들이 할 수 있는 것은:
1) 극히 간단한 스마트 계약을 만들고 이를 mainnetBridge 계약으로 설정합니다;
2) 해당 스마트 계약이 모든 스테이킹된 ETH와 DAI(2억+)를 수신하게 합니다.
스마트 계약을 호출하여 모든 자금을 EOA 지갑으로 인출합니다.
- 우리가 발견한 두 가지 주요 위협은:
· 3/5 다중 서명으로 악의적인 코드를 승인하여 자금을 훔치는 것입니다.
· 악의적인 스마트 계약을 만들고 이를 "mainnetBridge" 스마트 계약으로 설정하여 자금을 훔치는 것입니다. 역시 3/5 다중 서명을 통해 이루어집니다.
- 이것이 실제로 발생할까요? 개인적으로, 제가 추측해야 한다면, 자금이 도난당하지 않을 것이라고 생각합니다.
어쨌든, 저는 실제로 Blast의 원주율 수익 아이디어가 매우 흥미로운 균형이라고 생각합니다.
- 따라서, 현재 상태에서 Blast에 자금을 보내는 것이 위험하다고 개인적으로 생각하지만, 보내는지 여부는 궁극적으로 사용자에게 달려 있으며, 저는 제가 본 것을 여기서 공유하고 있습니다.
저는 여전히 Blast 팀과 이미 예치한 모든 분들에게 행운을 빕니다.













