USDT 중심의 스테이블체인으로서 원활하고 효율적인 사용자 경험을 제공하기 위해 구축된 Stable의 핵심 혁신 중 하나는, 사용자가 가스 요금을 지불하지 않고도 USDT0를 전송하거나, USDT0를 gasUSDT로 언래핑할 수 있는 기능입니다.

주요 기능

  • 가스 없는 USDT0 전송: 사용자는 어떤 가스 토큰도 보유하거나 소비할 필요 없이 USDT0 토큰을 다른 주소로 전송할 수 있습니다.
  • 가스 없는 USDT0 언래핑: 사용자는 USDT0(ERC-20 스타일의 래핑된 USDT 토큰)를 gasUSDT(네이티브 가스 토큰)로 가스 없이 언래핑할 수 있으며, 이를 통해 추가적인 온체인 활동에 네이티브 토큰을 사용할 수 있습니다.
참고: 네이티브 가스 토큰(gasUSDT)의 EOA 간 전송은 중앙화 거래소로의 실수 전송을 방지하기 위해 제한됩니다.

작동 방식

가스 없는 상호작용은 EIP-2612 Permit 익스텐션을 활용합니다. 이는 사용자가 오프체인 서명을 통해 토큰 사용 권한을 제3자에게 부여할 수 있도록 하는 메커니즘을 가지고 있습니다. 해당 트랜잭션에 대한 가스는 Stable DAO가 제어하는 업그레이드 가능한 스마트 컨트랙트가 지불합니다.

가스 없는 USDT0 전송

단순한 USDT0 전송 트랜잭션은 가스가 들지 않으며, 전송 프로세스는 다음과 같이 진행됩니다: Gas-free USDT0 Transfer Process
  1. 사용자가 웹 프론트엔드에서 전송 시작 사용자는 Stable Wallet을 통해 가스 없는 USDT0 전송을 요청합니다.
  2. 사용자가 Permit 메시지 서명 프론트엔드는 사용자가 GaslessTxExecutor 컨트랙트가 USDT0 토큰을 사용할 수 있도록 허용하는 permit 메시지에 서명하도록 합니다.
  3. 프론트엔드가 Permit을 백엔드로 전송 서명된 permit이 Stable 백엔드로 전달됩니다.
  4. 백엔드가 트랜잭션 제출 백엔드는 GaslessTxExecutor 컨트랙트로 트랜잭션을 전송합니다. 해당 트랜잭션에 대해, Stable 백엔드 계정이 사용자를 대신하여 가스를 지불합니다.
  5. Executor가 USDT0 컨트랙트에서 permittransferFrom 호출 서명된 permit을 사용해 컨트랙트가 다음을 수행합니다:
    • permit() 호출로 지출 권한 등록
    • transferFrom() 호출로 토큰 전송
  6. USDT0가 수신자에게 전송됨 토큰이 송신자 계정에서 지정된 수신자에게 이동됩니다.

가스 없는 언래핑

USDT0를 가스로 사용하기 위해서, 이는 먼저 gasUSDT로 언래핑되어야 합니다. 이 과정은 가스비가 들지 않습니다. 언래핑 과정은 다음과 같이 동작합니다: Gas-free USDT0 Unwrap Process 가스 없는 USDT0 언랩 프로세스
  1. 프론트엔드에서 사용자 액션 시작 사용자는 Stable Wallet을 통해 가스 없는 USDT0 언랩 요청을 시작합니다.
  2. 사용자가 Permit 메시지 서명 프론트엔드는 사용자가 GaslessTxExecutor 컨트랙트가 USDT0를 사용할 수 있도록 허용하는 permit 메시지에 서명하도록 합니다.
  3. 프론트엔드가 Permit 요청을 백엔드로 전송 실행을 위해, 서명된 permit 메시지가 Stable 백엔드로 전송됩니다.
  4. 백엔드가 트랜잭션 제출 백엔드는 GaslessTxExecutor 컨트랙트로 트랜잭션을 전송합니다. 해당 트랜잭션에 대해, Stable 백엔드 계정이 사용자를 대신하여 가스를 지불합니다.
  5. Executor가 USDT0 컨트랙트에서 permit 호출 GaslessTxExecutor 컨트랙트는 서명을 사용해 USDT0 컨트랙트에서 permit() 메서드를 호출합니다.
  6. Executor가 OStableWrapper 컨트랙트에서 withdrawTo 호출 이후 executor는 OStableWrapper 컨트랙트의 withdrawTo() 메서드를 호출하여 언래핑 프로세스를 시작합니다.
  7. Wrapper가 Approve 및 transferFrom 호출 OStableWrapper 컨트랙트는 다음을 수행합니다:
    • 사용자 계정으로부터 USDT0를 가져오기 위해 스스로를 approve
    • transferFrom() 호출로 실제 토큰 이동
  8. USDT0가 Wrapper로 전송됨 지정된 양의 USDT0가 사용자 계정에서 OStableWrapper로 이동됩니다.
  9. Wrapper가 네이티브 USDT 발행 요청 Wrapper는 Stable 체인의 bank precompile 모듈에서 mint() 함수를 호출합니다.
  10. 네이티브 USDT가 사용자에게 전송됨 Bank precompile이 네이티브 USDT를 발행하고 이를 사용자 계정에 직접 입금합니다. 사용자는 이제 이 네이티브 토큰을 다양한 온체인 활동에 사용할 수 있습니다.
Stable은 USDT0 전송 및 언래핑 같은 필수 작업에서 가스 필요성을 제거함으로써 사용자 경험을 단순화합니다. EIP-2612와 안전한 릴레이어 설계를 활용하여, Stable은 가스 없는 인프라를 통해 마찰 없는 온보딩과 원활한 상호작용을 가능하게 합니다.