원작자: Jarrod Watts
원본 편집: Golden Finance 0xjs
편집자 주:
새로운 L2 네트워크 Blast는 이번 주 출시 이후 여론의 뜨거운 자리에 올랐습니다. NFT 고래 크리스찬이 Blast에 500 stETH를 입금했을 뿐만 아니라, 지난 22일 Blast도 2천만 달러의 자금 조달을 완료했다고 발표했습니다. 많은 개발자들은 Blast의 코드와 특성에 대해서도 논쟁을 벌이고 있으며 Polygon의 Jarrod Watts는 Blast가 레이어 2 네트워크가 아니라고 솔직하게 말했습니다. 이 기사는 그의 X 트윗을 번역한 것입니다.
누군가 "Blast는 3/5 다중 서명일 뿐이에요..."라고 말했습니다.
나는 이 주장이 사실인지 확인하기 위해 지난 며칠 동안 소스 코드를 조사했습니다.
내가 보는 모든 것은 다음과 같습니다.
1. 새로운 지갑 0x52c31은 2개의 계약을 배포합니다: 1) 0xa01: 대량 입금 프록시 계약, 2) 0x5f6: 대량 입금 구현 계약.
이러한 "에이전시 계약" 설정이 익숙하지 않은 경우 나중에 다시 설명하겠습니다.
2.0x52c31 이러한 계약을 배포한 후 소유권을 Gnosis Safe 스마트 계약으로 이전하세요.
Gnosis Safe 또는 "Safe2" 계약은 가장 인기 있고 신뢰할 수 있는 다중 서명 스마트 계약입니다. 거래를 실행하려면 대다수 서명자의 서명이 필요합니다.
3. 이제 Blast 계약을 소유한 Safe 계약에는 5명의 서명자가 있습니다.
이는 서명자의 대다수(예: 3/5)가 이 안전 계약을 대신하여 거래를 실행해야 함을 의미합니다. 이 5개의 지갑은 모두 아주 새로운 지갑이지만 소유자는 알 수 없습니다.
4. 따라서 3/5 다중 서명 계약은 이제 Blast Deposit 계약의 "소유자"입니다.
앞서 언급했듯이 Blast Deposit 계약은 에이전트와 구현이라는 두 가지 계약으로 구성됩니다.
그들의 "소유자"가 된다는 것은 실제로 무엇을 의미합니까?
앞서 언급했듯이 Blast Deposit 계약은 에이전트와 구현이라는 두 가지 계약으로 구성됩니다.
그들의 "소유자"가 된다는 것은 실제로 무엇을 의미합니까?
5. 일반 스마트 계약을 사용하면 블록체인에 배포된 코드를 변경할 수 없습니다. 프록시 스마트 계약을 사용하면 전체 계약을 교체하지 않고도 스마트 계약에 대한 "업그레이드"(변경)를 수행할 수 있습니다. 이는 일반적으로 버그를 수정하거나 기능을 추가하는 데 사용됩니다.
6. Blast 에이전트는 OpenZeppelin의 UUPSUpgradeable 계약을 구현합니다. 여기에는 구현된 계약의 논리를 변경할 수 있는 "_upgradeTo"와 같은 함수가 포함됩니다. 이는 사용자가 상호 작용하는 계약이 동일한 계약 주소를 유지할 수 있음을 의미합니다.
7. 이 업그레이드 가능성에 대한 최악의 시나리오는 (다중 서명) 소유자가 계약 논리를 악의적인 것으로 변경하는 것입니다.
조금 무서운 것 같죠? ...사실 이러한 "보조 기능"은 오늘날 대부분의 L2에서 사용됩니다.
8. Optimism 및 Arbitrum과 같은 낙관적 롤업에도 이 기능이 있습니다.
L2Beat에 따르면:
·OP 메인넷 및 베이스 시스템을 보호하는 코드는 사전 예고 없이 임의로 변경될 수 있습니다.
·Arbitrum One 업그레이드는 약 12일의 지연이 필요하지만 지체 없이 이사회의 승인을 받을 수 있습니다.
9. zkEVM 세계에서도 마찬가지입니다
L2Beat에 따르면:
·Linea, Scroll 및 zkSync 시스템을 보호하는 코드는 예고 없이 변경될 수 있습니다.
·Polygon zkEVM 업그레이드는 약 10일 정도 지연됩니다(긴급 상태가 활성화되지 않은 경우).
10. 이러한 롤업에 업그레이드를 수행할 수 있는 다중 서명이 있는 이유는 기술이 성숙되는 동안 임시 보안을 활성화하기 위한 것입니다. L2Beat가 L2 단계 블로그에서 설명했듯이 롤업의 마지막 단계에서는 이러한 안전 위원회가 "심각한 결함"을 해결하는 능력을 제한해야 합니다.
11. 안전보장이사회의 역량은 시간이 지남에 따라 감소합니다. 그러나 회원 가시성이 중요합니다.
예를 들어, Polygon PIP-29는 "시스템의 스마트 계약에 대한 좁은 범위, 시간 제한 변경"을 관리할 13명의 구성원을 제안합니다.
12. 따라서 Blast가 다중 서명을 통해 코드 업그레이드를 수행하고 즉시 자금을 훔치는 것이 실제로 가능하지만 *현재* 동일한 작업을 수행하는 다른 L2 솔루션이 많이 있습니다.
12. 따라서 Blast가 다중 서명을 통해 코드 업그레이드를 수행하고 즉시 자금을 훔치는 것이 실제로 가능하지만 *현재* 동일한 작업을 수행하는 다른 L2 솔루션이 많이 있습니다.
지금까지 저는 Blast를 옹호해왔습니다. 하지만 나쁜 소식이 있습니다. 계속 진행하겠습니다.
13.Blast는 L2가 아닙니다.
Blast는 두 가지 기능을 갖춘 스마트 계약입니다. 1. 사용자 자금을 수락합니다. 2. Lido와 같은 프로토콜에 사용자 자금을 투자하십시오.
테스트넷도 없고, 트랜잭션도 없고, 브리지도 없고, 롤업도 없고, 이더리움으로 전송되는 트랜잭션 데이터도 없습니다. 이것은 L2가 아닙니다.
14. Blast 계약에 입금하면 기본적으로 3~5명의 낯선 사람이 귀하의 자금을 약속할 것이라고 믿습니다.
이 3~5명이 미래에 올바른 일을 하기로 결정하지 않는 한 언제든지 돈을 인출할 수 없습니다. 다시 말하지만 여기에는 다리가 없습니다.
15. 이건 정말 미친 짓이야...
다음의 경우까지 Blast에서 돈을 돌려받을 수 없습니다.
낯선 사람들로 구성된 3/5 다중 서명에 의해 새로운 계약이 배포됩니다.
계약에는 자금을 인출할 수 있는 기능이 있습니다.
그들은 모든 자금을 새로운 계약으로 옮깁니다.
16. 하지만 더 나쁜 상황도 있다.
계약에 있는 모든 자금을 훔치기 위해 "업그레이드"할 필요조차 없으며, 이 계약에 사용자가 예치한 자금은 다른 사람이 인출할 수 없습니다.
어디 보자.
17. "enableTransition" 함수에는 "mainnetBridge" 계약이 매개변수로 필요합니다.
이 "mainnetBridge" 계약의 기능: 약속된 모든 ETH 및 DAI를 가져옵니다.
그렇다면 이 "mainnetBridge" 계약은 어떤 모습일까요?
18. 무엇이든 될 수 있어요! Blast는 가능한 최대 금액의 LIDO 및 DAI를 사용하기 위해 "mainnetBridge" 계약을 승인합니다.
이 계약의 정확성에는 몇 가지 제한이 있어야 합니까? 음, *예*, 해당 코드를 살펴보겠습니다.
19. 다음은 "_setMainnetBridge" 함수의 Assertion 문입니다.
그것은... 해당 주소에 코드가 있는지 확인합니다! 예, EOA 주소가 아닌 한 계약의 모든 자금을 소유하도록 승인되었습니다. 현재 총 자금 규모는 2억 달러를 초과합니다.
20. 그러므로 그들은 다음과 같이 할 수 있다고 가정할 수 있다:
1) 매우 간단한 스마트 계약을 생성하고 이를 mainnetBridge 계약으로 설정합니다.
2) 스마트 계약이 약속된 모든 ETH 및 DAI(2억 개 이상)를 받도록 합니다.
EOA 지갑으로 모든 자금을 인출하려면 스마트 계약을 호출하세요.
21. 우리가 확인한 두 가지 주요 위협은 다음과 같습니다.
·자금을 훔치기 위해 3/5 다중 서명으로 승인된 업그레이드된 악성 코드입니다.
·악의적인 스마트 계약을 생성하고 이를 "mainnetBridge" 스마트 계약으로 설정하여 자금을 훔치는데, 역시 3/5 다중 서명을 통해 이루어집니다.
22. 정말 이런 일이 일어날까요? 개인적으로 추측하자면 자금이 도난당했다고 생각하지 않습니다.
그럼에도 불구하고 실제로 Blast의 기본 수익률에 대한 아이디어는 매우 흥미로운 절충안이라고 생각합니다.
23. 그래서 저는 개인적으로 Blast에 자금을 보내는 것이 현재 상태에서는 위험하다고 생각하지만, 보내거나 보내지 않는 것은 궁극적으로 사용자의 결정이며, 여기서 본 내용을 공유하고 있습니다.
블래스트 팀과 입금을 잘해주신 모든 분들의 건승을 기원합니다.
모든 댓글