SUAVE는 플래시봇이 개발한 탈중앙화 프로젝트로, 키 보유와 상호 신뢰 등 MEV 과정에서 발생하는 문제를 해결하기 위해 TEE 환경을 갖춘 네트워크를 구축합니다. 동시에, SUAVE 프로젝트에 TEE를 추가함으로써 SUAVE는 단순히 MEV 문제를 해결하는 것 이상의 가능성을 갖게 되었습니다.
SUAVE 코드베이스
수아브 프로젝트는 이더 익스텐션에 기반하고 있으므로 본질적으로 EVM과 호환됩니다. 현재 GitHub에 SUAVE-geth, SUAVE-std, SUAVE-examples 등 관련 프로젝트가 있습니다.
이 중 SUAVE-geth는 암호화 연산 환경을 추가하여 geth를 확장하는 실행 계층 코드이며, 암호화 연산 환경에서 일부 사전 컴파일을 수행합니다. 특히 주목할 만한 것은 표준 HTTPS 요청을 위한 프리컴파일이 추가되어 개발자가 TEE 환경을 사용하여 사용자에게 다른 네트워크에 대한 액세스를 제공할 수 있다는 점입니다. 또한 암호화 매개변수 가져오기, 암호화 정보 저장, 암호화 정보 가져오기 등 신뢰할 수 있는 환경에서의 개발을 위한 인프라를 구성하는 TEE 사용 기능에 기반한 여러 프리컴파일이 포함되어 있습니다.
SUAVE-std는 개발자의 편의를 위해 만들어진 프로젝트로, 개발 도구의 라이브러리로 이해할 수 있습니다. 예를 들어, HTTP 요청을 사용하는 방법을 래핑하고 그 위에 ChatGPT를 사용하기 위한 코드베이스까지 래핑하여 개발자가 직접 ChatGPT 요청 메시지를 조립하고 ChatGPT 반환 메시지를 파싱할 필요가 없으며, HTTP 요청 메시지를 조립할 때 API 키를 자신의 것으로 대체하기만 하면 됩니다. 이 모든 작업이 TEE 보안 환경에서 이루어지기 때문에 API 키의 보안이 보장됩니다. 처음에 ChatGPT의 표준 라이브러리는 기본적으로 0.7 온도의 GPT-3.5 터보 모델을 사용했지만, 이제는 모델을 파라미터로 전달할 수 있는 유연한 인터페이스가 있습니다.
수아브 예제 프로젝트는 애플리케이션 개발 방법의 쇼케이스, 더 적절하게는 초보자를 위한 튜토리얼을 목적으로 합니다. SUAVE 애플리케이션 개발을 처음 접하는 개발자는 이 프로젝트의 예제를 학습하고 비교할 수 있습니다.
>
실제 SUAVE 개발
수아브는 이더 확장(실행 환경을 MEVM 또는 수정된 이더리움 가상 Machine)을 기반으로 하기 때문에 스마트 컨트랙트 개발은 EVM과 호환되며, 공식 개발 문서는 솔리디티에서 소개됩니다. 따라서 개발자의 입장에서는 솔리디티의 개발 경험을 충분히 적용할 수 있으며, SUAVE 애플리케이션 개발에서 스마트 컨트랙트 개발은 TEE 환경에서 암호화 연산 기능을 갖춘 솔리디티 개발로 이해하시면 됩니다.
몇 가지 주요 SUAVE MEVM 프리컴파일이 있는데, 그 중 첫 번째는 confidentialInputs로 애플리케이션 요청에서 암호화된 파라미터(일반적으로 개인키, API 키 등과 같이 암호화해야 하는 개인 정보)를 받습니다. 이 프리컴파일은 애플리케이션의 인터페이스로도 사용할 수 있습니다. 이 사전 컴파일은 애플리케이션 요청에서 암호화된 매개변수(일반적으로 개인 키, API 키 등과 같이 암호화해야 하는 일부 개인 정보)를 받아들입니다. 보안 보장을 위해서는 해당 평문이 TEE 환경에서만 나타날 수 있어야 하며 애플리케이션 개발에서는 이 인터페이스를 통해 정보를 가져와 평문을 얻어야 합니다. 전송 프로세스는 완전히 암호화되어 안전하고 안전하며, 그 원칙은 나중에 설명하겠습니다. 두 번째는 confidentialStore이며, 그 역할은 매개 변수에서 개인 정보를 얻을 때 종종 계산에 참여할 필요가 없으므로 나중에 사용하기 위해 저장하는 개인 정보를 저장하는 것입니다. 세 번째는 계산에 개인 정보가 필요할 때 TEE 컨텍스트에서 명시적 데이터를 요청하기 위한 인터페이스인 confidentialRetrieve입니다.
SUAVE의 안전한 개인 정보 저장을 통해 개발자는 "사용자가 개인 키를 업로드한 다음 제3자가 비즈니스 연산을 수행하고, 조건이 충족되면 제3자가 사용자의 개인 키로 직접 서명할 수 있다"와 같은 시나리오를 수행할 수 있습니다. 이렇게 하면 제3자가 특정 규칙에 따라 사용자의 개인키를 사용하여 서명할 수 있지만, 제3자는 개인키 평문에는 절대로 액세스할 수 없습니다."
SUAVE는 교차 체인에 HTTPS 요청을 사용합니다. 툴셋에는 크로스체인 정보 읽기를 직접 수행하는 게이트웨이라는 라이브러리가 있습니다. 사용자가 특정 체인에 대한 RPC 노드를 설정하거나, 더 일반적으로는 Infura, Etherscan 등과 같은 API 키 정보를 업로드한 다음 호출이 필요할 때 해당 노드에 직접 HTTP 요청을 사용하는 것이 핵심입니다. 체인 전체에 정보를 기록해야 하는 경우, 툴셋에는 개발자가 EIP1559와 같은 메시지를 인코딩한 다음 최종적으로 eth_sendRawTransaction 인터페이스를 통해 트랜잭션을 브로드캐스트하는 데 도움이 되는 트랜잭션 패키지가 있습니다.
또 다른 시나리오는 솔리디티에서 컴파일한 바이트코드를 비공개 파라미터로 업로드 및 저장한 다음 조건이 충족되면 이를 배포 및 호출하여 비공개 라이브러리를 생성하는 것입니다. 이 시나리오는 개인 키 + 개인 바이트코드 라이브러리로 확장할 수 있습니다. 이렇게 하면 타사 델리게이트 호출을 할 때 완전히 비공개 트랜잭션을 만들 수 있습니다.
SUAVE 특징
SUAVE의 최종 상태는 체인이며, 우리는 이를 SUAVE 체인이라고 부르며, 이는 MEVM을 구현하는 체인으로 생각할 수 있습니다. EVM과 호환되는 블록체인이기 때문에 ERC20, ERC721과 같은 자산도 SUAVE에 구축할 수 있으며, 온체인 운영은 EVM 계열과 다르지 않습니다. 온체인 운영은 EVM 시리즈 체인의 운영과 다르지 않지만 다른 체인의 노드에 트랜잭션을 보내는 등 오프체인 운영이 추가되고 오프체인 운영의 결과나 사용 조건이 SUAVE 체인에 저장될 수 있으며 저장된 결과는 합의에 의해 보장되는 것이 고유성입니다. 이러한 방식으로 오프체인 계산과 온체인 상태 간의 일관성을 확보할 수 있습니다. 예를 들어 개발자는 스마트 컨트랙트를 작성하여 체인에 특정 조건을 기록하고(수정 가능), 체인 네트워크 노드에 액세스하여 반환된 결과가 요구 사항을 충족하면 미리 설정된 특정 ERC20 자산의 전송이 수행될 수 있습니다.
위는 모두 SUAVE의 오프체인 신뢰 컴퓨팅의 특징입니다. 아시다시피 SUAVE는 플래시봇 팀에서 개발했고, 플래시봇 팀에서 "MEV의 미래"로 평가받고 있는 만큼 번들 트랜잭션 처리는 반드시 필요합니다. 신뢰 환경의 SUAVE 체인을 기반으로 번들 트랜잭션을 조립하여 플래시봇의 릴레이 노드로 전송하는 MEV의 원리는 매우 간단합니다. MEV의 원리는 매우 간단합니다. 번들 트랜잭션을 조립하여 플래시봇의 릴레이 노드로 전송하는 것입니다. 코드에서도 개인 키를 비공개로 저장할 수 있다는 사실은 엄청난 잠재적 사용 가능성을 만들어냅니다. 예를 들어, 빌더는 타겟 체인에서 가스 보상 외에 SUAVE 체인에서 일부 디지털 자산을 얻을 수 있습니다. MEV 시장의 경우, 개인 정보에 대한 보안 보장을 통해 비즈니스를 유연하게 정의할 수 있는 능력은 현재 MEV가 할 수 없는 일입니다(신뢰, 계약, 영업권 등에 기반한 전통적인 보장만을 체인화할 수 있습니다).
SUAVE 개발 도구 및 인프라
개발자에게는 온체인 스마트 컨트랙트 개발 외에도 dapp의 프론트엔드 개발은 ether.js와 같은 툴셋 개발의 중요한 부분이기도 합니다. SUAVE 애플리케이션 개발에서 SUAVE 체인은 EVM 변환을 기반으로 하기 때문에 ether.js 및 web3.js와 같은 도구도 사용할 수 있으며 이러한 도구는 SUAVE 체인의 스마트 컨트랙트와 상호 작용하는 데 다른 EVM 호환 체인과 다르지 않지만 비기밀 환경의 기능만 호출할 수 있습니다. SUAVE 체인의 스마트 컨트랙트는 온체인(SUAVE 체인 참조)과 오프체인(크로스체인 작업도 이 범주에 포함) 작업으로 나뉘며, 오프체인 작업은 실제로 기밀 환경 계산을 의미합니다. 기밀 환경 계산을 위해 플래시봇 팀은 두 가지 언어(Go와 타입스크립트)로 SDK를 제공하고 있으며, 사용 방법은 SUAVE의 문서에 설명되어 있습니다. 기밀 연산이 포함된 트랜잭션(플래시봇 팀에서는 기밀 연산 요청이라고 함)을 SUAVE 노드로 전송할 때, 전체 전송 과정에서 TEE 환경에서만 평문으로 끝나는 비공개 파라미터인 confidentialinputs를 가져올 수 있습니다.
마지막으로 스마트 컨트랙트의 배포와 관련하여, SUAVE 체인의 테스트 네트워크의 이름은 Regil이었으나 현재는 Toliman으로 업그레이드되었으며, 배포 방법은 SUAVE 문서에 자세히 설명되어 있습니다. 배포 방법, 배포 후 상호작용 등은 이더리움의 스마트 컨트랙트 배포와 다르지 않습니다.
Kettle
스마트 컨트랙트가 배포된 후 실제로 실행되는 방식은 이더와는 다르며, SUAVE의 주요 실행 유닛은 Kettle이라고 불립니다. Kettle은 수아브의 TEE 런타임 환경(MEVM 노드와 컨피덴셜 데이터 저장소로 구성됨)입니다. 개발자가 스마트 컨트랙트를 작성하고 배포할 때 사용자가 기밀 컴퓨팅 요청(이하 CCR)을 보내고 스마트 컨트랙트에 기밀 컴퓨팅이 필요한 경우, 실제로 이를 실행하는 것이 바로 Kettle입니다(MEVM 노드와 신뢰 데이터 저장소 포함).
Kettle의 구조는 다음과 같습니다:
보시다시피 개발자는 솔리디티 언어를 사용하여 애플리케이션을 개발 및 배포하고, 최종 요청이 Kettle에 오면 모두 MEVM에서 처리하는데, MEVM은 geth의 기능을 가지고 있을 뿐만 아니라 그 위에 개인 데이터 등을 저장하고 조회할 수 있는 프리컴파일을 추가하기도 합니다. 또한, SUAVE 체인에서 상태를 처리(수정, 검색 포함)합니다.
Kettle의 주요 업무는 개인 연산을 수신하고 처리하는 것뿐만 아니라 개인 데이터의 저장 및 검색을 처리하는 것입니다. 프라이빗 데이터를 저장하는 것을 예로 들면, 전체 프로세스는 다음과 같습니다: 사용자 프론트엔드에서 SDK 또는 suave geth 도구를 사용하여 SUAVE 체인의 스마트 컨트랙트에 CCR 요청을 시작하면, SDK 또는 suave geth 도구는 Kettle 환경에서만 사용할 수 있는 데이터 키(대칭 키)로 프라이빗 데이터를 암호화하고, SUAVE의 RPC 노드를 사용하여 대칭 키로 프라이빗 데이터를 암호화하게 됩니다. SUAVE의 RPC 노드는 암호 텍스트만 볼 수 있습니다. Kettle과 노드의 일대일 관계 여부는 SUAVE의 문서에서 확인할 수 없습니다. 마찬가지로 Kettle 자체, 노드 및 키 교환에 대한 자세한 원리는 문서에 설명되어 있지 않습니다. 그러나 알려진 암호화 및 복호화 프로세스를 기반으로 개발자는 사용자의 프런트엔드에서 Kettle의 내부 TEE 환경까지 개인 데이터의 보호가 보장될 수 있다고 믿을 수 있는 근거를 가지고 있습니다.
개인 데이터 Kettle은 스마트 컨트랙트를 개발할 때 개발자가 방문자와 수정자의 데이터를 지정하고, 이 컨트랙트에 액세스하도록 지정하면 Kettle이 전송 네트워크를 통해 게시되는 신뢰 데이터 스토어에 저장됩니다. Kettle의 데이터 저장소는 전역적으로 업데이트되지 않으므로 후속 CCR 요청도 이 Kettle로 보내야 합니다. 개발자가 스마트 컨트랙트를 배포하면 사용자는 해당 Kettle에 액세스하고(CCR 요청에 파라미터가 있으며, Kettle 주소를 지정해야 함), 해당 Kettle의 비공개 데이터에 액세스할 수 있습니다. 사용자가 스마트 컨트랙트에서 개인 데이터를 요청하는 CCR을 보내면, 해당 데이터를 저장할 때 설정한 ID와 키를 사용하여 해당 키 값으로 개인 데이터에 액세스하고 사용합니다.
HTTP 요청 등과 관련된 작업도 Kettle에서 처리합니다. 분명히 이러한 작업은 SUAVE 체인 외부에 있는 작업으로, 단일 노드에서 실행되며, SUAVE는 체인이지만 블록체인의 특성이 약하기 때문에 Kettle이 CCR 요청을 실행할 때 이를 검증할 많은 노드에서 실행되지 않을 것입니다. 그 이유는 매우 간단하며, 체인 외부의 리소스에 대한 액세스는 확실히 특정 무능력을 보장 할 수 없습니다. 따라서 이들은 작업 외부의 SUAVE 체인이며 결과는 실제로 노드에 따라 다릅니다. 따라서 개발자는 주전자 주소의 배포 (이 시점에서 주전자는 특별한 스마트 계약으로 볼 수 있음), 후속 사용자 CCR 요청에 따라 해당 주전자 주소를 가져 오는 데주의를 기울여야합니다.
또한 개발자가 알아야 할 또 다른 문제가 있습니다. Kettle은 현재 테스트 네트워크인 톨리맨의 TEE 환경에서 실행이 보장되지 않습니다. 따라서 테스트 네트워크에서 스마트 컨트랙트를 개발할 때는 개인 데이터를 보호하고 실제 개인 데이터가 유출되지 않도록 주의해야 합니다.
요약
TEE 환경을 도입한 세이브 체인은 애플리케이션 개발에 충분한 강력한 기능을 제공하며, 잠재적인 적용 시나리오는 매우 많습니다. 또한 간단하고 편리한 크로스체인 운영은 디앱 설계에 충분한 상상력을 제공합니다.
수아브 체인의 케틀 디자인은 오프체인 리소스를 처리할 수 있으며, 이는 검증과 합의의 문제를 가져옵니다. 부정직한 케틀은 네트워크를 파괴합니다. Kettle이 악을 행하지 않도록 보장하는 방법, 악을 행한 것에 대해 처벌받을 수 있는지 또는 악을 행하는 비용이 충분히 높은지 확인하는 방법은 모두 해결해야 할 문제이며, SUAVE 체인 합의는 PoA 모델을 채택하여 관행에 대한 고려를 견딜 수 있는지 여부는 개발자가 여전히 기다리고 있습니다.
Preview
유익한 보고서를 통해 암호화 산업에 대한 더 넓은 이해를 얻고 비슷한 생각을 가진 다른 저자 및 독자와 심도 있는 토론에 참여하십시오. 성장하는 Coinlive 커뮤니티에 참여하실 수 있습니다.https://t.me/CoinliveSG