지난 2주간의 작업은 DApp에서의 컨트랙트 전개에 대해 생각하는 데 집중되었으며 대부분의 시간을 zkRollup Layer2의 컨트랙트 개발을 배우고 그들의 네트워크 설계 특성을 연구하고 있습니다. 그중에서 StarkNet이 설계한 Cairo 프로그래밍 언어는 응용 프로그램이 풍부한 DApp을 더 잘 개발하고 가스 소비를 크게 줄이는 데 도움이 될 수 있습니다.
StarkNet에서는 모든 주소가 계약 주소이며 외부 계정(EOA)의 개념이 없습니다. 지갑 계정은 사용자가 서명하고 배포한 "계정 계약"으로 구성되며 개인 키의 서명만이 전송을 작동할 수 있습니다. 이 "계정 계약"의. 이것은 매우 흥미로운 아이디어입니다.Ethereum 메인넷에서 EOA 및 계약 계정은 역사적인 레거시 문제 중 하나라는 것을 알고 있습니다.EIP86 초안에서 EIP-2938 초안에 이르기까지 모두 EOA에서 계정 논리를 추상화하는 데 전념하고 있습니다. 스마트 계약이 관리하는 계정에 논리를 적용하여 "스마트 계약 지갑"을 구현합니다.
StarkNet의 주류 지갑 솔루션인 Argent X는 "스마트 계약 지갑"의 구현입니다. 커뮤니티는 또한 개발자가 스마트 계약 지갑을 로컬 또는 자체 배포된 DApp에서 구현할 수 있도록 해당 JS SDK를 제공합니다.
다중 서명 계약에 주목하면 서비스로서의 스마트 계약 지갑이 Inject Provider의 역할보다 더 많은 주목을 받고 더 많이 사용되었음을 알 수 있습니다.그 중 가장 인기있는 서비스는 Gnosis Safe입니다. *. 그러나 독립 지갑으로서의 스마트 계약 지갑은 특히 L1/L1s 체계에서 널리 사용되지 않았으며 이는 기존 EOA 지갑(예: MetaMask)과 경쟁할 수 없습니다.
*참고: 여기서 Gnosis Safe에서 제공하는 지갑은 EIP86 및 EIP-2938에서 언급한 계약 계정 추상화가 아니라 다중 서명 계약 프로그래밍 패러다임입니다.
내 생각에 스마트 컨트랙트 지갑은 분명한 기술 및 경험적 이점이 있지만 자산이 많은 L1/L1s 네트워크에서 계약의 추가 복잡성 및 보안 위험을 도입하고 니모닉을 기억하는 문제를 변경할 수 없습니다. 여전히 스마트 계약 지갑에 대한 권한을 설정하는 데 필요함) 사용자는 기술적 이점을 인지할 수 없습니다. 사용자가 3자 확인을 사용하여 스마트 계약 지갑의 권한을 검색할 수 있도록 하는 Argent Guardians로 대표되는 혁신적인 제품 외에도 대부분의 사용자는 이를 다중 서명 계약의 맥락에서만 공개 자산 또는 추가 확인으로 사용합니다. 관리 모드.
StarkNet과 유사한 Layer2 네트워크에서는 스마트 계약 지갑에 대한 역사적 부담이 없으므로 DApp에 대한 기술적 아키텍처 이점을 대중에게 가져올 수 있습니다.
사실 이더리움의 Layer 2 네트워크, 특히 zkRollup 네트워크가 출시되면서 스마트 계약 지갑을 통해 사용자가 L1을 사용하는 데 도움이 되는 다층 자산 릴레이 네트워크(Multi-layer Asset Relay Network)를 설계할 수 있을 것입니다. 계정은 모든 애플리케이션 계층 자산을 제어합니다.
Multi-layer Asset Asset Relay Network(이하 MARN)은 현재 현실에 존재하지 않는 광산의 제품 비전입니다.이 기사의 나머지 부분에서는 MARN이 무엇이며 왜 필요한지 설명하겠습니다.
1. 대규모 사용자 제품 요구 사항
Checks Finance DApp 개발 초기 요구 사항으로 돌아가서 다음 기능을 지원해야 합니다.
- 비외부 지갑 SDK : 사용자는 타사 지갑을 다운로드할 필요가 없으며 DApp에서 직접 지갑을 생성할 수 있습니다.
- 비수탁형 지갑 모델 : 사용자는 개인 키를 내 서비스 또는 제3자 외부에 에스크로할 필요가 없지만 사용자가 지갑을 다시 제어할 수 있는 실행 가능한 프로세스를 제공해야 합니다.
- No Gas Fees : 사용자는 가스 토큰을 얻을 수 있는 편리한 채널이 없기 때문에 신규 사용자에게 특히 필요한 가스 요금을 지불했다고 느끼지 않습니다.
- 빠른 블록 확인 : 사용자는 블록체인 트랜잭션을 실행할 때 정체되거나 너무 오래 기다리지 않습니다.
- 안전하고 좋은 자산 유동성 : 사용자는 안전하고 빠르며 거래 깊이가 풍부한 다양한 브리지 계약을 통해 자산을 전송할 수 있습니다.
시장에 나와 있는 대부분의 DApp을 관찰한 결과 4, 5번째 지점에서 잘 할 수 있지만 처음 3번째 지점은 주로 Crypto Native 사용자를 대상으로 하기 때문에 일반적으로 이러한 팀은 비용을 지출하지 않을 것입니다. 최적화를 고려하기에는 비용이 너무 많이 듭니다.
의심할 여지 없이 이러한 어려움은 Web3에 진입하는 사용자의 규모를 크게 제한합니다. 문제가 근본적으로 해결되지 않는다면 Web3 제품이 다음 주기에 몇 배의 사용자 성장을 달성할 수 있을지 확신하기 어렵습니다.
문제 1-3을 해결하기 위해 업계에서 가능한 솔루션을 찾기 시작했습니다.
우선 지갑 솔루션은 우리가 먼저 통과해야 할 중요한 문턱입니다. 현재 DApp 개발자에게는 몇 가지 인기 있는 지갑 솔루션이 있을 것입니다.
- 외부 지갑 연결: 가장 인기가 있지만 신규 사용자의 진입 장벽이 가장 높습니다. 이 문서에서는 이 시나리오를 고려하지 않습니다.
- 로컬 지갑 SDK: 통합은 간단하지만 사용자가 앱 데이터를 삭제하면 개인 키를 검색할 수 없으며 손실 위험이 큽니다.
- 관리형 지갑 서비스: DApp 애플리케이션 로직을 우회하고 관리를 위해 개인 키를 Secrets Service에 직접 업로드하고 트랜잭션 서명을 위해 로컬 SDK를 사용하며 일부 서비스는 개인 키 내보내기를 지원할 수 있는 관리형 지갑 서비스입니다.
대규모 사용자 상품을 위한 솔루션 중 세 번째 호스팅 월렛 솔루션은 현재 대부분의 상품에서 사용하고 있는 솔루션으로 Web3Auth와 MagicLink가 대표적인 상품이다. 사용자가 이메일, 휴대폰 또는 기타 소셜 로그인 방법을 사용하여 개인 키를 관리하고 검색할 수 있다는 것은 매우 분명합니다.이 방법으로 외부 사용자를 충분히 확보할 수 있지만 단점도 매우 분명합니다. 잠재적인 보안 위험을 초래합니다. , 이는 AWS의 개인 키 스토리지 서비스에 국한되지 않을 수 있지만 관리되는 지갑 플랫폼의 설계에 보안 위험을 수반할 수도 있습니다.
둘째, 현재 제로 가스 수수료 설계를 위한 몇 가지 주류 패러다임이 있습니다.
- 트랜잭션 생성 시 Gas Relayer를 사용하여 사용자의 Gas를 프록시: GSN 또는 OpenZeppelin에서 제공하는 Gas Relayer를 사용하여 Meta Transaction 생성(Meta Transaction)
- L2 솔루션(예: IMX 또는 StarkNet)을 사용하여 가스 프록시: 스마트 계약 지갑을 통해 메타 거래를 생성하고 메시지를 받는 거래 당사자 계약이 사용자를 대신하여 가스 요금을 지불할 수 있습니다.
- 로봇 EOA를 사용하여 서버 측에서 사용자 요청 프록시: 이 솔루션은 가장 단순하지만 추가 보안 위험을 초래하며 사용자와 계약 간의 실제 트랜잭션을 표시할 수 없습니다.
Gas Relayer의 추가 처리 수수료와 기본 Gas 수수료를 고려할 때 후자(L2 솔루션)를 사용하여 DApp 계약을 배포하는 것이 분명히 더 효과적이고 비용이 적게 드는 방법입니다. 그중 일부 L2 솔루션은 특정 ERC-20 토큰을 사용하여 가스 요금(예: zkSync2.0)을 지불하도록 지원합니다. 이러한 수수료 모델은 DApp 경제 모델의 일부가 되어 우리가 발행하는 거버넌스 토큰의 가치를 높일 것입니다. , DeFi Kingdoms Crystalvale이 그랬던 것처럼.
정리하자면, 대규모 사용자를 위한 제품 디자인 측면에서 위의 요구 사항을 동시에 지원할 수 있는 제품 디자인 아이디어를 찾아야 하는데, 현재로서는 Layer2 솔루션을 사용하는 것이 더 현실성 있는 방법인 것 같습니다.
2. 외부 계정 문제(EOA)
Layer 2 솔루션을 이용하여 스마트 컨트랙트 월렛을 기반으로 간단하게 메타트랜잭션을 구현할 수 있습니다. Argent X는 여전히 EOA 지갑 MetaMask의 개념을 따릅니다. 지갑이 초기화될 때(StarkNet의 경우 계정 계약을 배포할 때) 지갑의 니모닉 단어를 기억해야 합니다.
이는 혼동하기 쉬운 개념을 제시합니다. DApp은 몇 개의 네트워크를 지원하고 사용자는 몇 개의 EOA 지갑을 만들어야 합니까?
불행히도 시장에 나와 있는 대부분의 DApp은 이러한 어리석지만 무력한 사고 방식을 따릅니다. 나는 이 제품 디자인을 "멀티 지갑 악몽"이라고 부른다.사용자 입장에서 Web3와 Web2 제품의 차이점을 이해하는 것은 쓸모가 없을 뿐만 아니라 사용자 측에서 제품을 사용하는 보안 위험을 크게 증가시킨다.
나는 한편으로는 이 무기력한 방법이 EOA 지갑의 현재 디자인 아이디어와 일치한다는 것을 이해합니다.다른 한편으로는 이러한 권리와 책임의 디자인이 매우 명확하며 계약 및 지갑 개발 팀은 필요하지 않습니다. 개인 키를 분실한 사용자의 실수에 대한 비용을 지불하기 위해. . 하지만 스마트 계약 지갑에서 더 이해하기 쉽고 자연스러운 방법을 찾을 수 있어야 한다고 생각합니다.
간단한 가설은 스마트 계약 지갑이 특정 L1 EOA 지갑을 통해 작동하도록 허용할 수 있는가 하는 것입니다. 또는 가이드 계약 지갑을 다중 서명 지갑의 특권 운영자로 설계하고 신뢰할 수 있는 L1/L2 계정을 EOA 운영자로 설정하여 긴급 회원 권한에서 이 계약의 일일 운영을 변경할 수 있도록 할 수 있습니까?
사실 스마트 컨트랙트 월렛이 가져다주는 무한한 상상력, EOA 월렛이 제공하는 프로그래밍 기능은 에이전시 가스 수수료의 메타 트랜잭션을 지원할 수 있을 뿐만 아니라 EOA 단일 키로부터 월렛을 완전히 해방시킬 수 있습니다. 이것이 Web3가 대규모로 적용되기 위한 필수 조건 중 하나라고 생각합니다.
3. 다층자산중계망(MARN)에 대한 생각
Checks Finance가 일본 시장을 위해 출시한 모바일 DApp을 코딩하기 전에 저는 한 가지 질문에 대해 반복해서 생각해 보았습니다. 지갑 관리는 어떻게 하나요?
MetaMask를 사용하여 모든 지갑을 연결합니까? DeFi, 게임, NFT 거래 시장 등 모든 DApp에서 자산이 똑같이 중요합니까? 모든 자산이 누구나 볼 수 있도록 인터넷에 노출됩니까? 우리는 지갑을 잃어버릴 수 있습니까? 이런 질문들이 내 마음을 맴돌았고 오랫동안 사라지지 않았다.
이러한 질문은 답변해야 하는 동일한 두 개의 코어를 가리킵니다.
- 이상적인 Web3 제품은 정확히 무엇입니까?
- 복잡한 자산을 어떻게 관리합니까? (회원카드, 포인트, 거스름돈, 적금, 자금, 주식)
우리는 다중 체인 및 다중 계층 Web3 세계에 있으며 이것이 오랫동안 계속될 것이라는 데 의심의 여지가 없습니다. 즉, NFT 플레이어는 메인넷에서 MetaMask 지갑을 운영하고 피트니스 애호가는 MetaMask 지갑을 메인넷에서 운영할 것입니다. Solana StepN의 일상 활동에 참여하는 DeFi 사용자는 서로 다른 네트워크를 왕복하고 동시에 수십 개의 EOA 지갑을 소유하며 복잡한 자산 유형을 관리하고 DAO는 네트워크 간 자산 계약이 됩니다.
그러나 Web3가 실제로 대중의 눈에 들어오고 사용자가 10배 이상 증가하면 DApp과 지갑이 그 상태를 유지할 수 있을까요?
Layer 2 및 기타 응용 프로그램 계층의 점진적인 개발로 인해 지갑은 확실히 더 세분화되고 지갑에 보관된 회계 자산도 그에 따라 세분화될 것이라고 생각합니다. 모든 지갑이 EOA 지갑이라면 분명 지금보다 수백 배는 심각한 '다중지갑 악몽'을 불러올 것이다.
그러나 실물 경제의 모든 자산을 Web3로 옮기면 일부 자산이 다른 자산보다 훨씬 덜 중요하다는 것을 알게 될 것입니다. 우리는 지갑에 있는 거스름돈은 잃어버리게 하겠지만, 은행에 저축해 놓은 돈을 잃어버리는 것은 용납할 수 없을 것입니다. 간단하고 사용하기 쉬운 지갑은 일부 시장 위치를 차지할 것이며 널리 사용되는 MetaMask와 같은 EOA 지갑과 달리 일부 인기 있는 DApp에 내장될 수 있습니다.
"응용 계층"에 분산된 이러한 "덜 중요한" 지갑은 권한 네트워크에 의해 생성될 수 있다고 생각합니다. 이 예비 아이디어에서는 이를 다층 자산 릴레이 네트워크(Multi-layer Asset Relay Network)라고 부릅니다.
MARN은 L1 EOA 지갑을 통해 L2(또는 LN) 스마트 계약 지갑을 생성하고 제어할 수 있으며 이러한 LN 지갑이 자산 캐시 레이어가 되도록 할 수 있음을 의미합니다.
즉, L1 → LN 통신을 통해 사용자가 하나의 지갑을 사용하고 모든 계약 지갑을 관리할 수 있으며 개인 키 에스크로에 의존하지 않고 복구 운영자를 사용하여 일부 LN 지갑을 지배할 수 있습니다. .
예를 들어, 사용자가 DApp에 로그인할 때 대부분의 계약 논리는 L2(예: StarkNet)를 기반으로 하며 사용자를 위한 지갑 계약을 자동으로 생성하고 운영자 개인 키를 로컬에 기록할 수 있습니다(로컬 캐시로 손실 허용 가능) 이 계약을 생성할 때 사용자는 L1 외부 계정(MetaMask로 로그인)을 제공하고 대체 사서함 또는 특정 복구 운영자를 제공해야 합니다. 이러한 방식으로 사용자의 로컬 개인 키가 손실된 경우 L1 EOA 계정의 통신 또는 백업 사서함의 인증을 통해 스마트 계약 지갑이 새 운영자를 수정하는 데 도움이 될 수 있습니다. 즉, 로컬에서 무작위로 생성된 운영자를 복구할 수 있습니다. , 교체 가능. 제품 디자인 측면에서 이러한 종류의 복구는 사용자가 개인 키를 기억하는지 여부에 관계없이 언제든지 LN 지갑을 조작할 수 있으므로 사용자가 인식할 수 없습니다.
이러한 설계를 통해 LN 지갑의 자산을 L1 EOA 지갑의 자산 캐시로 사용할 수 있으며, 특정 통신을 통해 사용자는 언제든지 L1에서 LN 지갑의 자산을 인출할 수 있습니다(StarkNet의 경우 이 동작은 30분 이내 완료) 한편, 이는 계약 지갑의 자산 보안을 강화하고 유연한 교차 계층 권한 관리를 제공합니다.
MARN은 사용자에게 더 이상 하나 이상의 EOA 니모닉을 기록할 필요가 없고 LN 서비스에 대한 인식이 없다는 분명한 이점을 제공합니다.
MARN의 궁극적인 설계 목표는 사용자가 단일 외부 지갑을 사용하여 다중 계층 네트워크에서 원활한 권한 제어 및 자산 전송을 달성하도록 돕는 것입니다. 이 목표의 관점에서 볼 때 LN은 애플리케이션 서비스를 위한 기본 인프라가 되어야 합니다. 레이어 2 기술은 이러한 보안 위험을 크로스 체인 브릿지를 작성하는 애플리케이션 개발자에게 넘기지 않고 크로스 체인 자산의 보안을 최대한 보장할 수 있기 때문입니다. 계약 (Axie에게 일어난 일과 같은).
현재 저는 이 개념에 대해 생각하는 초기 단계에 있지만 사용자에게 원활하고 안전한 지갑 경험을 제공하기를 희망하면서 Checks Finance L2의 DApp 코딩에서 이 아이디어를 구현했습니다. MARN의 경우 유사한 아이디어가 있거나 건설적인 제안이 있는 경우 Twitter에서 저와 논의하는 것을 환영합니다. 또한 Mirror에서 이 아이디어에 대한 구체적인 사례를 점진적으로 업데이트하고 최종 제품과 코드를 소스로 공개할 것입니다.
Web3의 대규모 적용이 다음 주기에 발생할 수 있다는 직감이 있습니다. BUIDL을 계속하여 이 심오한 글로벌 변화를 목격하도록 합시다.