[Bridge Series] 3. Insured, Bonded, Trusted Bridges

CH Han
Decipher Media |디사이퍼 미디어
41 min readFeb 13, 2022

이번 Bridge Series에서는 블록체인 네트워크 간 자산 혹은 메세지 전송을 가능하게 하는 각종 Bridge솔루션들의 분류 및 작동 방식에 대해 살펴봅니다.

Bridge Series

  1. Introduction
  2. Trustless Bridges
  3. Insured, Bonded, Trusted Bridges

Author
Jason, 안유리, 한충현 of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By 이병헌, 정재환

1. Interlay

1. 개요

Interlay는 폴카닷 네트워크의 파라체인이며, 비트코인 네트워크와 폴카닷 네트워크 간 $BTC 전송만을 목적으로 만들어진 bridge입니다. 전송 방식으로는 Lock and Mint 방식을 채택했으며, 중개자가 되기 위해선 담보가 필요하고, 사용자는 중개자의 악의적인 행동으로 인해 자금을 잃을 위험이 없는 Insured 분류에 속합니다. 기본원리는 2019년 IEEE Symposium on Security and Privacy에서 발표된 ‘XCLAIM: Trustless, Interoperable, Cryptocurrency-Backed Assets’에 기반을 두고 있습니다.

2. 특징

비트코인 네트워크는 암호화폐 시장에서 가장 큰 자금을 소유하고 있는 네트워크입니다. 따라서 $BTC를 다른 네트워크로 전송하여 각종 DeFi 활동에 사용할 수 있다면 매력적일 것입니다. 하지만 비트코인 네트워크에서는 복잡한 스마트 컨트랙트가 불가능하여 범용적인 bridge의 도입이 불가능하며, Interlay는 오로지 $BTC 전송만을 위한 bridge입니다. 비트코인 네트워크의 경우 블록이 완결되는데 통상 6개 블록의 Confirm이 필요하므로 비트코인을 안전하게 전송하기 위해서는 시간이 최소 60분 정도 소요됩니다. 현재 테스트넷 상태로 정식 서비스는 시작하지 않았습니다.

3. Interlay의 작동 원리

Interlay를 이용하여 사용자가 $BTC를 다른 네트워크로 옮긴다고 할 때, 기본적으로 Lock and Mint 구조를 사용합니다. 사용자는 비트코인 네트워크에서 비트코인을 Lock을 걸고, 비트코인을 받을 체인에서 Lock을 걸었던 비트코인의 가치에 대응되는 interBTC를 지급받는 것입니다. 하지만 비트코인 네트워크의 특성 때문에 Interlay에서는 조금 다른 방식으로 비트코인 전송을 취급합니다.​

비트코인 네트워크에서는 복잡한 수준의 스마트 컨트랙트 실행이 불가능합니다. 따라서 사용자가 비트코인 네트워크에서 보유하고 있는 $BTC를 Lock을 걸 수가 없습니다. 이를 해결하기위해 Interlay에는 ‘Vault’라는 역할군을 도입합니다. Vault는 사용자가 보내려는 비트코인의 수탁을 담당하는 역할군으로, 누구나 될 수 있으며, 대신 Vault가 되기 위해서는 Interlay 파라체인에 $DOT 을 담보로 맡기고, 비트코인 네트워크의 거래내역을 확인하기위해 Full node를 운영하고 있어야 합니다.

A. Zamyatin, D. Harz, J. Lind, P. Panayiotou, A. Gervais and W. Knottenbelt, “XCLAIM: Trustless, Interoperable, Cryptocurrency-Backed Assets,” 2019 IEEE Symposium on Security and Privacy (SP), 2019, pp. 193–210, doi: 10.1109/SP.2019.00085.

비트코인을 보내는 과정은 다음과 같습니다.

  1. 사용자는 보내려는 비트코인을 비트코인 네트워크에서 Vault에게 맡깁니다.
  2. 동시에 사용자는 파라체인의 스마트 컨트랙트에 비트코인을 Vault에게 보냈다는 증명을 보냅니다.
  3. 사용자가 비트코인을 Vault에게 보냈다는 사실이 파라체인에서 검증이되면 스마트 컨트랙트는 사용자에게 BTC와 동일한 가치를 갖는 interBTC를 발행해줍니다.

사용자가 Vault에 비트코인을 보낸 사실은 라이트 클라이언트를 통해 감시가 가능하므로 Interlay는 ‘라이트 클라이언트 & 릴레이’방식으로 분류가 됩니다.

이제 Vault라는 중개인에 대해서 살펴보겠습니다. 앞서 언급했듯이 Vault가 되기 위해서는 소유하고 있는 $DOT을 Interlay에서 담보로 묶어야 합니다. 그리고 Vault가 담당할 수 있는 전송되는 비트코인의 양은 절대로 담보로 맡긴 $DOT의 양을 넘을 수 없습니다. 따라서 만약 Vault가 사용자의 비트코인을 폴카닷 네트워크로 전송하려는 요청을 처리하면서 악의적인 행동을 하다가 적발된다면, 자동적으로 스마트 컨트랙트는 Vault가 미리 담보로 맡겼었던 $DOT을 사용자에게 피해를 입은만큼 지급합니다. 즉, 사용자 입장에서는 Vault가 악의적으로 행동했음에도 불구하고 금전적인 손실을 볼 수가 없는 구조이기 때문에 Interlay 브릿지는 ‘Insured’ 분류에 포함되게 됩니다.

4. Interlay Low Level 분석

(출처: Interlay)

interBTC TypeScript 라이브러리는 폴카닷 및 쿠사마 생태계를 비트코인와 연결합니다. 즉, 쿠사마에서 kBTC, 폴카닷에서 interBTC의 형태로 wrapped 토큰을 발행하는 것을 용이하게 해줍니다. 다른 BTC bridge들 (ex. WBTC, renBTC)과는 달리 누구나 담보를 맡기고 이를 중개할 수 있는 Vault 역할을 할 수 있어 진정한 개방형 시스템이라고 할 수 있습니다.

라이브러리를 사용하기 위해서는 PolkadotJS APIPromiseInterBtcApi 객체를 생성해야 합니다.

트랜잭션을 생성하기 위해서는 AddressOrPair 인터페이스를 따르는 account 가 설정이 되어야 합니다. 만약 account가 KeyringPair 형태가 아니라면 signer (ex. 폴카닷 월렛의 intjected extension signer)도 제공되어야 합니다.

account를 설정했다면, 이제 interBTC를 발행하거나 상환하는 요청을 진행할 수 있습니다.

interBTC 발행 (비트코인 -> 폴카닷)

interBTC 상환 (폴카닷 -> 비트코인)

References

2. Ren Protocol

1. 개요

Ren Protocol(https://renproject.io/)은 가상자산을 중앙집중형 거래소를 거치지 않고 교환할 수 있도록 개발된 프로토콜로 RenVM(Ren Virtual Machine)이 그 작동 엔진 역할을 하고 있습니다. Ren 토큰은 RenVM을 실행하는 노드 운영자들에게 보상으로 제공됩니다. 2017년 당시에는 Republic Protocol이라는 이름으로 출시되었으나 이후 Ren으로 리브랜딩되었습니다.

Ren의 신뢰구조는 Insured입니다. Insured 방식을 활용하는 bridge 서비스는 서비스의 신뢰도를 담보를 제공한 검증자들의 합리적 선택에 의존한다는 점에서 Bonded와 유사합니다. 그러나 해킹 등으로 인해 사용자들의 피해가 발생하면 제공된 담보를 바탕으로 피해액을 보상하는 구조이기 때문에 Insured로 분류가 가능합니다.

2022년 1월 현재, Ren Protocol은 Fungible Token 전송 기능만을 제공하고 있으며, 1/31일 기준 $1.23B의 TVL(https://defillama.com/protocol/renvm)을 기록하고 있습니다.

2. 특징

Ren Protocol은 범용 상호운용성(Universal Interoperability)를 목표로 출시되었습니다. 이는 임의의 체인에서 다른 체인으로 자산을 전송할 수 있는 기능으로, 유저가 발생시킨 하나의 트랜잭션으로 이 기능이 수행되어야 합니다. 가령, 범용 상호운용성을 갖춘 프로토콜은 1) ETH Dex에서 BTC를 ZEC로 교환하여 2) ZEC을 Polkadot 체인으로 전송하여 스테이블 코인 대출의 담보로 제공한 후 3) 해당 스테이블 코인을 다시 Ethereum으로 전송하는 기능이 최초의 BTC 트랜잭션으로 수행되어야 합니다. Ren Protocol은 이러한 기능을 RenVM을 통해 가능하게 하고 있습니다.

Ren Protocol은 Custodian의 신뢰도에 bridge의 신뢰도를 의존하는 Trusted방식의 bridge 서비스들과 달리, 탈중앙화된 방식을 사용합니다. 이렇게 작동되는 RenVM은 다크노드에 의해 구동됩니다. 다크노드는 100,000 REN을 담보로 예치해야 하며, 현재 수천 대의 다크노드가 독립적으로 운영되며 RenVM을 구성하고 있습니다. RenVM에서 실행된 모든 트랜잭션의 결과는 암호화되고 다크노드 간 통신은 ECDSA 프라이빗 키를 생성하는 RZL MPC 알고리즘을 통해 이루어집니다. 즉, 각 다크노드는 직접 계산을 수행하지만 상대 노드의 계산 과정에 대해 알 수 없으며 그 결과값만을 공유합니다. 이 과정은 zkProof를 통해 이루어집니다.

다크노드들은 RenVM을 구동시키기 위해 협력하면서 네트워크 대역폭 확당에 기여하고 전체 계산력과 정보 수용력을 증진시키고 있습니다. Ren Protocol은 이렇게 컴퓨팅 자원을 제공하는 다크노드들에게 REN 토큰을 지급하는 인센티브를 제공하고 있습니다.

3. 작동원리

RenVM은 3 종류의 크로스체인 트랜잭션을 지원합니다. 아래 내용은 BTC와 ETH을 그 사례로 설명한 내용입니다. 현재 Ren Protocol은 ETH, MATIC, Fantom, Avalanche, Solana, BSC, Arbitrum의 체인으로의 자산 전송을 지원하고 있습니다.

  • Bitcoin에서 Ethereum으로 BTC 전송 (Lock-and-Mint 트랜잭션)
  • Ethereum에서 Bitcoin으로 BTC 재전송 (Burn-and-Release 트랜잭션)
  • Ethereum에서 Polkadot으로 BTC 전송 (Burn-and-Mint 트랜잭션)

① Lock-and-Mint 트랜잭션

Lock-and-Mint 트랜잭션은 사용자가 최초에 발생시키는 트랜잭션으로, Origin 체인에서 Host 체인으로의 자산 전송을 수행하는 트랜잭션입니다. 위의 사례로 설명하면, BTC를 Bitcoin에서 Ethereum으로 전송하는 트랜잭션이 이에 해당합니다.

RenVM에서 이 트랜잭션을 수행하려면, 사용자는 BTC를 RenVM에 전송하고 해당 자산을 커스터디에 예치해야 합니다. 자산 예치가 성공적으로 이루어지면 RenVM은 사용자에게 ‘minting signature’를 반환합니다. 사용자는 이를 활용하여 Host 체인에서 토큰화된 자산을 mint할 수 있다. 토큰화된 자산은 예치된 자산과 일대일로 페깅되어 있으며, 언제든지 상환이 가능합니다. Ren Protol의 백서에서는 아래 그림을 통해 Lock-and-Mint 트랜잭션의 발생과 처리 과정을 설명하고 있습니다.

Lock-and-Mint 트랜잭션 예시 (출처 : Ren Protocol Whitepaper, https://github.com/renproject/ren/wiki#renvm)

먼저, Alice는 RenVM에 BTC를 예치하기 위해 Bitcoin 트랜잭션을 발생시키고 해당 트랜잭션을 RenVM에 알립니다. RenVM을 구성하는 다크노드들이 이 트랜잭션을 인식하여 트랜잭션의 존재 여부, 세부사항, 컨펌 여부를 검증합니다. 검증이 성공적으로 이루어지면 RenVM은 RZL MPC 알고리즘을 사용하여 Alice에게 minting signature를 반환합니다. Alice는 이제 minting signature를 가지고 Ethereum에서 처음 예치한 Bitcoin의 수량에 맞는 renBTC를 받을 수 있습니다. (단, 일정 수수료 제외) 이 트랜잭션을 통해 Alice는 ERC-20 토큰인 renBTC를 발행받을 수 있습니다.

이 과정에서 사용자가 발생시켜야 하는 트랜잭션은 최초의 비트코인 트랜잭션입니다. 그 이후의 모든 과정은 Third-party에 의해 수행되기 때문에, Alice는 ERC-20 토큰을 발행받으면서 ETH를 가스비로 지불할 필요가 없어집니다.

② Burn-and-Release 트랜잭션

Burn-and-Release 트랜잭션은 Lock-and-Mint 트랜잭션에 대응되는 트랜잭션으로 자산을 Host 체인에서 Origin 체인으로 재전송하는 기능을 수행합니다. 사용자는 페깅된 자산을 Host 체인에서 소각하고 Origin 체인에서 기초 자산을 어떤 주소로 상환받을 것인지 지정합니다. Host 체인이 페깅된 자산을 소각하고, 이를 검증한 후에 RenVM이 Origin 체인에서 같은 규모의 자산을 ‘방출’한다는 점에서 Burn-and-Release 트랜잭션이라고 불립니다. Ren Protocol 백서에서는 Ethereum에서 Bitcoin으로 BTC 재전송하는 트랜잭션을 아래 그림을 통해 설명하고 있습니다.

Burn-and-Release 트랜잭션 예시 (출처 : Ren Protocol Whitepaper, https://github.com/renproject/ren/wiki#renvm)

먼저, Alice는 renBTC를 Ethereum에서 소각하면서 Bitcoin 주소를 특정합니다. RenVM를 구성하는 다크노드들이 이 소각을 검증하고, BTC를 전송하는 서명을 발생시킵니다. 이에 따라 Alice가 특정한 Bitcoin 주소에 수수료를 제외한 금액의 BTC가 전송됩니다. Lock-and-Mint 트랜잭션처럼 Alice는 단 하나의 트랜잭션만을 발생시키면 이후의 과정은 Third-party에 의해 수행됩니다. 여기서도 RenVM에 의해 모든 과정이 수행되기 때문에 ETH를 가스비로 지불할 필요가 없습니다.

③ Burn-and-Mint 트랜잭션

Burn-and-Mint 트랜잭션은 자산을 한 Host 체인에서 다른 Host 체인으로 전송하는 트랜잭션입니다. RenVM은 하나의 Host 체인에서 페깅된 자산을 소각하고, 다른 Host 체인에서 페깅된 자산과 상응하는 또다른 자산을 발행합니다. RenVM이 지원하는 이 트랜잭션을 통해 이 과정에서 Origin 체인을 거치지 않고 한 체인에서 다른 체인으로 자산 전송이 가능합니다. . Ren Protocol 백서에서는 Ethereum에서 Polkadot으로 BTC를 보내는 Burn-and-Mint 트랜잭션을 아래 그림을 통해 설명하고 있습니다.

Burn-and-Mint 트랜잭션 예시 (출처 : Ren Protocol Whitepaper, https://github.com/renproject/ren/wiki#renvm)

먼저, Alice는 Ethereum에서 renBTC를 소각하면서 Polkadot 주소로 renBTC를 보내고 싶다고 특정합니다. RenVM은 이 소각을 검증한 후 RZL MPC 알고리즘을 활용해 Alice에게 minting signature를 발행합니다. Alice는 이 minting signature를 Polkadot에 제출한 후 수수료를 제외한 renBTC를 Polkadot 주소로 발행받습니다.

Ren Protocol은 RenVM이 제공하는 세 종류의 트랜잭션을 통해 Origin 체인의 자산을 Host 체인으로, 한 Host 체인에서 다른 Host 체인으로 옮기는 등의 기능을 제공하고 있습니다.

4. Ren Low-level 분석

① Smart Contract

BTC를 이더리움 컨트랙트로 가져오기 위해서는 BTCGateway 컨트랙트를 가져와야 합니다. BTCGateway컨트랙트는 RenVM에서 BTC를 Lock하고 Release하는 데 사용됩니다.

모든 디지털 자산(BTC, ZEN 등)은 각각 Gateway를 가지고 있습니다. 따라서 각각의 GatewayRegistry 컨트랙트를 통해 BTCGateway의 주소를 받아와야 합니다. 아래는 이더리움 컨트랙트에서 Gateway, GatewayRegistry를 나타낸 코드입니다.

② Deposit 함수

Ren에서는 BTC를 이더리움 네트워크에서 lock, mint하는 기능을 제공합니다. BTC를 이더리움에 lock, mint할 때 RenVM은 아래의 세 파라미터를 통해 BTCGateway컨트랙트에 접근합니다.

  • amount : 이더리움으로 전송되는 BTC의 양을 의미합니다.
  • nHash(논스 해쉬) 이더리움에서 Lock을 확인하는 데 사용됩니다.
  • sig: RenVM에서 mint를 승인하는 signature 입니다.

이더리움 컨트랙트는 예치와 인출 시 메시지를 첨부할 수 있는 기능을 제공합니다. event로써 메시지를 입력하는데, constructor앞에 이더리움 컨트랙트를 추가합니다.

또한 deposit 함수를 constructor 뒤에 추가합니다.

Gateway에서는 pHash(Payload Hash)라는 변수를 활용합니다. 해당 변수에 메시지를 비롯한 추가 정보를 입력할 수 있습니다. 이제 BTCGateway 의 주소를 얻고 mint 함수를 활용할 수 있습니다. 이 함수는 전송 이후 수수료를 제외한 renBTC의 양을 보여줍니다.

이제 deposit 함수는 다음과 같아집니다.

③ Withdraw 함수

withdraw 함수는 deposit 함수와 유사합니다. Gateway에서 burn을 통해 renBTC를 소각시킨 후 같은 양의 BTC를 to 를 통해 비트코인 주소로 전송합니다.

④ Balance

Balance에서는 BTCGateway 의 주소를 가져오는 대신, renBTC ERC20 컨트랙트의 주소가 필요합니다. 여기서는 getTokenSymbol 을 사용합니다.

3. WBTC(Wrapped Bitcoin)

1. 개요

WBTC(Wrapped Bitcoin)는 비트코인을 이더리움 환경에서 사용할 수 있도록 자산을 교환하는 기능과 한 체인에서 다른 체인으로 자산을 전송하는 기능을 제공하는 bridge 서비스입니다. 2019년 Bitgo, Kyber, Republic Protocol이 공동 개발한 프로젝트로, WBTC를 이용하면 이더리움 네트워크를 활용하면서 비트코인의 유동성 및 스마트 컨트랙트 기능을 조합할 수 있습니다. WBTC 출시로 비트코인과 이더리움 각 생태계의 장점을 활용하고 비트코인의 사용 범위를 넓히는 효과가 기대되고 있습니다. 2022년 1월 28일을 기준으로 WBTC 는 TVL $10.011B을 기록(https://www.stelareum.io/en/defi-tvl/protocol/wbtc.html)하고, 2022년 1월 12일 기준으로 1,552 건의 일일 트랜잭션 수를 기록하며 그 활용 범위가 확대되고 있습니다.

BTC의 안정성과 유동성을 이더리움 네트워크로 옮김으로써, BTC 거래의 느린 거래속도를 해결하고 디파이 플랫폼에서 BTC를 활용할 수 있도록 하는bridge입니다. 이에 따라 2021년 6월 기준 전체 BTC의 1%가 WBTC로 토큰화되었습니다.

2. 특징

  • 보안성

WBTC는 비트코인을 이더리움 네트워크에서 사용할 수 있는 ERC-20 토큰입니다. BTC와 1:1 비율로 발행되어 BTC를 WBTC로 바꾸기 위해서는 BTC를 예치하고 WBTC를 다시 BTC로 바꾸기 위해서는 WBTC를 소각시킵니다. 이때 WBTC의 가치를 보증하는 비트코인의 비축분은 온체인에서 누구나 확인할 수 있어 높은 투명성을 강점으로 하고 있습니다. WBTC는 이러한 특징을 POR(Proof of Reserves)라고 명명하고 있습니다.

또한, WBTC 백서에 따르면 WBTC와 BTC의 환전은 아토믹 스왑으로 이루어져 해킹이나 탈취의 위험이 없다는 보안상 장점이 있습니다. 아토믹 스왑은 중앙화된 거래소를 거치지 않고 서로 다른 코인을 직접 교환하는 것으로, 거래 수수료이 없고 해킹의 위험이 매우 낮다는 장점이 있으나 Custodian, 검증자 등에게 신뢰도를 의존한다는 단점이 있습니다.

  • 주요 Players

실제 WBTC에서는 BitGo가 관리자의 역할을, Kyber와 Republic Protocol은 판매자의 역할을 수행하고 있습니다. WBTC는 관리자에 의하여서만 발행되고 판매자들에 의해 분배되는 WBTC와 BTC의 교환 과정은 DAO가 두 코인의 잔액을 확인하는 감사과정을 통해 그 투명성을 높이고 있습니다. 다만, 이러한 bridge 구조는 제3자의 신뢰도에 bridge의 신뢰도가 의존하는 구조로 가장 집중화되었다고 평가할 수 있습니다. 악의적인 행동 발생 시에 주요 행위자들을 규제하기 어렵고, 실제 피해가 발생했을 때 사용자의 피해를 보상하는 구조를 갖추고 있지 못합니다.

2022년 1월 27일 기준 16개 기관(Compound, MakerDAO, GOPAX, Loopring 등)이 DAO로 참여하고 있습니다. https://github.com/WrappedBTC/DAO에서 WBTC의 주요 행위자인 Custodian, Merchant 등의 정보를 확인할 수 있습니다.

WBTC의 처리 속도는 BTC에서 6개의 confirmation이 진행되고 비트코인 네트워크의 완결성이 완성되는 시간인 대략 1시간 정도의 시간이 소요됩니다. WBTC 백서에서 보안상 강점을 언급한 것처럼, 현재까지의 해킹 사례는 없습니다. Fungible Token 중 비트코인 전송만 제공하고 있으며, Bitcoin과 Ethereum 사이 교환만을 지원한다는 점에서 타 bridge 서비스에 비해 범용성은 다소 부족하다고 평가할 수 있습니다.

  • 수수료 구조

WBTC의 주요 특징 중 하나는 사용자 간 WBTC 이동할 때 발생하는 네트워크 수수료만을 제외하고는 별도의 추가 비용이 부과되지 않는다는 것입니다. WBTC는 네트워크를 구성하는 각 구성원들에게 네트워크 수수료를 제공합니다. 먼저, Custodian은 merchant가 WBTC를 발행하거나 소각할 때 수수료를 받게 됩니다. 또한, Merchant는 사용자가 다른 자산을 Wrapped 형태로 교환할 때에 수수료를 수취하게 됩니다.

3. WBTC 주요 Player 와 작동원리

가장 먼저 Custodian으로 불리는 관리인은 WBTC의 기초 자산인 BTC를 보유하는 조직입니다. WBTC에서는 BitGo가 그 역할을 수행하고 있어 다소 중앙화되었다고 평가할 수 있습니다. WBTC는 Custodian에 의해서만 발행됩니다.

둘째, Merchant로 불리는 판매자입니다. Merchant들은 WBTC의 토큰의 분배를 규제하여 커뮤니티의 핵심적인 역할을 수행합니다. WBTC에서는 Kyber와 Republic Protocol이 그 기능을 수행하고 있습니다.

셋째, WBTC DAO는 생태계의 운영이 제대로 이루어지고 있는지 감사 및 통제 기능을 하는 참여자입니다. 네트워크의 모든 결정은 구성원의 승인을 받아야 하며 이는 다중 서명 계약에 의해 결정됩니다.

마지막으로 사용자는 WBTC를 통해 발행받은 WBTC를 보유하며 거래와 대출 등의 기타 금융 거래를 수행합니다.

WBTC 주요 Player (출처 : https://www.asiacryptotoday.com/wrapped-bitcoin-wbtc/)

WBTC로의 교환 과정은 BTC를 래핑된 코인으로 전환하고자 하는 사용자의 요청에서 시작됩니다. Merchant는 실사와 KYC를 거쳐 WBTC의 발행과 소각을 진행합니다. Merchant가 발행을 결정하면 그들은 Custodian에게 가서 WBTC 발행 이전에 BTC 예치가 이루어지도록 요청합니다. POR 컨센서스 매커니즘을 통해 전체 커뮤니티는 모든 WBTC가 기초 자산에 의해 backed됨을 보증할 수 있습니다.

  • WBTC 발행 및 반환

WBTC를 구입하기 위해 사용자는 merchant에게 원하는 금액의 BTC를 예치하고 WBTC 발행을 요청합니다. BTC 예치를 확인한 후 KYC와 AML 과정을 거쳐 Merchant는 사용자에게 WBTC를 분배합니다.

WBTC를 팔거나 BTC로 교환하기 위해서는 사용자들은 redemption 요청을 merchant에게 보내야 합니다. 이후 WBTC는 소각되고 그에 상응하는 BTC가 사용자에게 반환됩니다.

References

  1. https://www.asiacryptotoday.com/wrapped-bitcoin-wbtc/
  2. https://wbtc.network/

3. WBTC whitepaper

4. Wormhole

(출처 : https://wormholecrypto.medium.com/introducing-wormhole-32b16d795c01)

1. 개요

Wormhole 은 솔라나 네트워크에서 개발한 bridge 서비스로 테라, 솔라나, BSC, 이더리움 간의 자산 이동과 메시지 전송을 지원합니다. 검증자에 의해 자산이 체인 A에서 Lock-up 되었는지 확인한 후, 체인 B에서 해당 자산의 이동이 자유로운 구조입니다. Wormhole은 2021년 8월 메인넷을 런칭했고, 솔라나와 여러 Defi 네트워크 간의 연결통로 역할을 하고 있습니다.

Wormhole은 토큰뿐만 아니라 NFT의 가격정보를 이종의 블록체인 네트워크에서 상호교환하는 기능을 지원합니다. 이를 통해 Wormhole은 솔라나에서 파생되지 않은 다른체인의 자산들을 솔라나 기반의 Defi 생태계에서 활용할 수 있는 경로를 제공하는 겁니다. 또한, 데이터의 이동도 가능하다는 점에서 그 범용성이 높다고 평가할 수 있습니다.

그러나 2022년 2월 3일, Wormhole이 3억 2,4000만 달러 규모의 자금이 해킹되는 사건이 발생했습니다. 당시 Wormhole은 해킹 가능성으로 네트워크를 일시중단한다고 밝혔고, 이후 12만개의 wETH이 탈취 당했음을 발표했습니다.

이 사건은 역대 네번째로 규모가 큰 가상자산 탈취 사례로 꼽히고 있습니다. 전문가들은 이번 사건에 대해 디파이 서비스의 보안 수준이 거대한 자금 규모에 맞는 수준에 이르지 못했음을 보여주는 사례라고 평가하고 있습니다. Wormhole이 이번 해킹 사례의 피해를 복구하고 한 층 발전된 보안 수준을 구축하는 것은 Wormhole을 향한 신뢰도를 회복하는 데에 필수적일 것입니다.

(출처 : Elliptic, https://www.coindeskkorea.com/news/articleView.html?idxno=77455)

2. 특징

Wormhole의 특징은 제3자의 신뢰도에 bridge의 신뢰도가 의존하는 구조입니다. 즉, 가장 집중화된 구조이며, Insured와 달리 악의적인 행동이 발생하더라도 규제 또는 보상 구조가 없습니다. Wormhole에는 19개의 Guardian이 활동하고 있으며, 전체 가디언 노드의 2/3이 승인하면 유효한 트랜잭션으로 인정되는 구조입니다. 이때 19개의 Guardian들은 동일한 비중으로 consensus에참여한다는 것이 특징입니다. 그러나 이 Trusted 구조는 빠르지만 보안에 취약하고 보상 구조가 없으며, 기관 위주의 Guardian 조직이 중개인으로 활동하고 있다는 점에서 진입장벽이 높다고 평가할 수 있습니다. 실제 최근의 해킹사례가 보안의 취약점을 드러낸 사례라고 평가할 수 있습니다.

Wormhole의 성능은 수수료, 속도, 유동성 조정 측면으로 평가가 가능합니다. 가장 먼저, Wormhole bridge의 수수료는 현재 sub-cent입니다. 이는 cent보다 적은 수수료를 뜻하며 매우 저렴한 수준입니다. 또한, 공식 사이트에 속도에 대한 구체적인 수치가 제공되고 있지 않지만, 메인 체인의 속도와 완결성을 취하고 있습니다. Wormhole의 유동성 조정 구조는 Lock-and-Mint 방식입니다. 이는 유동성 네트워크를 이용하는 것이 아니라, 한쪽 네트워크에서 특정 코인을 Lock하고 다른 쪽 네트워크에서 Lock된 코인 가치에 상응하는 코인을 Mint하는 방식입니다. 따라서, 유동성을 조정하는 과정이 따로 필요없습니다.

Wormhole은 Kudelski Security에서 Audit을 받은 바 있습니다. 그러나 22년 2월 대규모 해킹 사태가 발생하면서 Wormhole 보안성에 대한 의문이 지속되는 중입니다.

상기한 것처럼, FT뿐 아니라 NFT와 메시지 전송 기능까지 제공하고 있으며, 이더리움, 솔라나, 테라, BSC, Polygon, Avalanche, Oasis 등의 체인들과의 커뮤니케이션 기능도 제공합니다.

Wormhole의 경우, 2022년 2월 213일 기준 $2B의 TVL을 갖고 있습니다. 또한, 일평균 1,700여 개의 트랜잭션을 처리하고 있습니다. 그리고 예치된 NFT의 규모는 1,315개로 Womhole이 제공하는 사이트(https://portalbridge.com/#/stats)에서 확인이 가능합니다.

(출처 : https://portalbridge.com/#/stats)

3. 작동 원리

Wormhole은 SPL 표준을 이더리움의 ERC-20과 연결하는 기능을 제공합니다. 이를 통해 이더리움의 높은 가스비가 부담스러운 사용자들은 솔라나의 높은 트랜잭션 속도와 낮은 수수료의 혜택을 누릴 수 있게 됩니다.

가장 먼저 Wormhole 이용을 원하는 사용자는 ERC-20 토큰을 Wormhole에 Lock합니다. 19개의 Guardian들은 자산의 예치 기록을 확인한 후 Wormhole 컨트랙트를 통해 SPL 표준의 토큰을 발행합니다. 예치된 자산에 상응하는 규모의 자산이 발행되는 Lock-and-Mint 방식입니다.

4. Wormhole Low-Level 분석

  1. 토큰 브리지

Wormhole의 토큰 브리지는 현재 다음의 체인에서 사용이 가능합니다.

  • Solana
  • Ethereum
  • Terra
  • Binance Smart Chain
  • Polygon
  • Avalanche
  • Oasis

토큰들은 한 체인에서 다른 체인으로 lockup/mint 그리고 burn/unlock 메카니즘을 통해 이동합니다. 이러한 운영방식을 채택하여 Wormhole의 토큰 브리지는 여러 체인에서 상호운용이 가능합니다.

① 전송

토큰을 체인 A에서 B로 전송하기 위해서는 A에서 토큰을 lock한 후 B에서 다시 발행해야 합니다. 가장 중요한 것은 토큰이 A에서 Lock되었음을 확인하는 것 입니다. 이를 위해 Wormhole에서는 A에서 lock이 성공적으로 이루어지면 해당 정보를 담은 메시지를 전송합니다. 이 베시지는 아래와 같은 구조로 구성됩니다.

체인 B가 이 정보를 확인하면 체인 B에서 그에 상응하는 가치의 토큰을 발행합니다.

② 증명

위의 과정은 어떤 토큰이 실제로 lock되었는지 정보를 제공하지 않습니다. 즉, lock이 이루어진 주소만 제공하기 때문에, 토큰 증명을 통해 어떤 토큰이 lock된 것인지 확인이 필요합니다. A체인은 주소 이외의 심볼 등을 포함한 메타데이터를 메시지에 포함시킵니다.

2. NFT 브리지

NFT 브리지의 작동 원리는 토큰 브리지와 유사합니다. 그러나 일반 토큰 전송과 달리, NFT는 유일한 자산임을 표현할 방법이 요구됩니다. 따라서, 토큰 증명 과정이 불필요합니다. NFT 전송 메시지는 다음과 같은 구조를 지닙니다.

References

  1. https://medium.com/r?url=https%3A%2F%2Fko.0xzx.com%2F20201008120620.html

2. https://www.coindeskkorea.com/news/articleView.html?idxno=77455

3. https://medium.com/solanakorea/%EC%9B%9C%ED%99%80-wormhole-%EC%86%94%EB%9D%BC%EB%82%98-%ED%95%B4%EC%BB%A4%ED%86%A4-%EC%86%8C%EA%B0%9C-343eddc507d6

4. https://www.steemcoinpan.com/hive-101145/@harryji/solana-bsc-terra-ethereum

5. https://docs.wormholenetwork.com/wormhole/existing-applications/nft-bridge

5. Polygon PoS bridge

(출처 : https://stakehound.com/es/polygon-logo-2/)

1. 개요

Polygon PoS bridge는 이더리움(Ethereum)과 폴리곤(Polygon)을 연결하는 bridge로써, 빠른 자산 전송을 위해 Proof-of-Stake 방식을 채택하였습니다. bridge는 기본적으로 루트 체인에서 차일드 체인으로 자산을 이동하는 것을 돕는 스마트 컨트랙트를 말합니다. 여기서 루트 체인은 Goerli 또는 Ethereum Mainnet을 의미하며 차일드 체인은 Polygon Mumbai 또는 Polygon Mainnet을 나타냅니다. 이더리움과 폴리곤 간에 자산을 이동하는 데는 주로 Plasma bridge, PoS bridge의 두 가지 bridge가 사용됩니다. Plasma bridge는 플라즈마 출구 메커니즘으로 인해 향상된 보안을 제공합니다. 그러나 차일드 토큰에 제한 사항이 있으며 Plasma bridge에서 Polygon에서 Ethereum으로 입출금을 하는 경우 7일의 기간이 소요됩니다. 이는 유연성과 빠른 출금이 필요한 DApp 사용자에게 불편을 초래합니다.

반면 Polygon PoS bridge는 이더리움에서 폴리곤으로 입금을 완료하는 데 7~8분이 소요되고, 폴리곤에서 이더리움으로 출금하는 데 ~30분이 소요되어 빠른 전송 속도에 강점을 가지고 있습니다. Polygon PoS bridge는 외부 밸리데이터에 의해 보호되며, 통해 체크포인트를 간격으로 빠른 출금을 가능하게 합니다.

여기서 체크포인트는 폴리곤 트랜잭션을 이더리움 블록체인에 병합하는 프로세스를 의미하며, 모든 트랜잭션은 밸리데이터에 의해 빈번한 시간 간격으로 이더리움 체인에 기록됩니다. 체크포인트는 메인 체인에 대한 완결성을 제공하는 것 외에도 출금이 이루질 때 토큰의 소각을 증명하는 역할을 합니다. 이를 통해 사용자는 Patricia Merkle 증명 및 헤더 블록 증명을 사용하여 루트 컨트랙트에 남아 있는 토큰을 증명할 수 있습니다. 남은 토큰을 증명하려면 헤더 블록이 PoS를 통해 루트 체인에 커밋되어야 합니다.

2. 특징

Polygon PoS bridge는 가장 대표적인 Bonded 모델 중 하나로, 중개인에게 담보를 요구함으로써 중개인이 악의적인 행동을 일으킬 경제적 유인을 부족하게 만듭니다. 그러나 담보물이 소각될 가능성이 있어 Insured 모델과 달리 사용자의 피해를 구조적으로 보상할 수 없다는 특징을 가지고 있습니다. Polygon PoS bridge의 중개인이 되기 위해서는 ETH를 스테이킹해야 하며, 중개인의 2/3 이상이 동의해야 자산 전송이 이루어지는 메커니즘을 취하고 있습니다.

2021년 4분기를 기점으로 Polygon 네트워크에 기반해 빌딩하는 팀이 급격하게 증가하였습니다.(출처 : https://blog.polygon.technology/teams-building-on-polygon-set-new-record-moralis-data-show/)

2022년 1월을 기준으로, Polygon 네트워크에 기반하여 dApp을 구축한 팀은 11,400 팀을 넘어섰습니다. Polygon PoS bridge의 낮은 수수료와 개발의 편리성, 에너지 효율성의 장점 덕분에 Polygon PoS bridge를 활용해 프로젝트를 구축하는 팀은 지난 하반기동안 거의 2개월마다 3배씩 증가하였습니다(Polygon PoS bridge의 경우 이더리움 가스비를 제외하고 별도의 수수료가 청구되지 않습니다). 또한 완벽한 EVM(Ethereum Virtual Machine) 호환성을 가지고 있다는 장점도 가지고 있습니다. 기존 도구를 활용해 이더리움 네트워크에 작업을 쉽게 마이그레이션할 수 있게 함으로써 많은 개발자 커뮤니티가 Polygon을 채택하도록 할 수 있었습니다.

그 결과 Polygon은 대출 플랫폼 Aave와 같은 DeFi 프로토콜에서부터 하이엔드 브랜드인 Dolce & Gabbana, OpenSea와 Mark Cuban의 Lazy.com을 포함한 NFT 마켓플레이스에 이르기까지 Web3에서 가장 큰 프로젝트들을 네트워크 상으로 끌어들였습니다. Decentraland 및 Sandbox와 같은 가상세계도 폴리곤 네트워크에서 메타버스와 게임을 제공하기 위해 토대를 마련하고 있습니다.

3. Polygon PoS bridge 작동 원리와 Low Level 분석

PoS bridge를 사용하는 첫 번째 단계는 루트 토큰 과 차일드 토큰을 매핑하는 것 입니다. 매핑은 루트 체인의 토큰 컨트랙트와 자식 체인의 토큰 컨트랙트가 서로 자산을 전송하기 위해 연결을 유지하는 것을 의미합니다. 이를 로우 레벨에서 자세히 설명하면 다음과 같습니다.

예금

자산 토큰의 소유자는 조건부 컨트랙트를 승인하여 예치할 만큼의 토큰을 잠급니다. 이에 대한 승인 트랜잭션이 확인되면 자산 토큰 소유자는 RootChainManager 컨트랙트와 상호 작용하여 입금을 완료합니다. 이후 자산은 State Sync Mechanism을 통해 보관 및 보호됩니다. State Sync Mechanism는 이더리움 네트워크에서 폴리곤 네트워크로 데이터를 보내는 가장 단순한 형태의 메커니즘을 의미합니다. 메커니즘 자체의 내부 동작은 RootChainManager로 이루어진 함수를 호출하여 ChildChainManager 계약을 트리거하는 방향으로 이루어집니다.

출금

자산 인출은 PoS bridge를 사용하면 간단하게 이루어집니다. Polygon 체인에서 자산 토큰을 소각하고, 이 소각 트랜잭션 해시를 수집한 후 RootChainManager에 제출하면 프로세스가 완료됩니다. 이것이 이루어지면 RootChainManager는 이더리움 체인에 잠겨 있는 자금을 해제하기 위해 조건부 컨트랙트을 요청합니다. 폴리곤 체인에서 소각 트랜잭션이 검증되면 소각 트랜잭션을 체크포인트하려는 시도가 발생합니다. 체크포인트가 완료되기 까지는 30분에서 3시간 정도의 시간이 걸립니다.

다음으로, 이 소각 트랜잭션에 대한 증거는 exit 함수를 호출하여 RootChainManager에 제출됩니다. exit 함수를 호출하면 체크포인트 확인을 위해 burnHash를 받고, 예치된 자금을 해제하여 조건부 컨트랙트를 트리거하는 과정으로 이어집니다. 매핑이 완료되면 matic.js SDK 를 사용하여 컨트랙트와 상호작용하거나 SDK 없이 동일한 작업을 수행할 수 있습니다. matic.js SDK는 자산 전송 메커니즘을 모든 애플리케이션과 매우 쉽게 통합할 수 있도록 사용자 친화적인 방식으로 설계되어 있습니다.

References

  1. Polygon Docs (https://docs.polygon.technology/docs/develop/ethereum-polygon/pos/getting-started/)
  2. Polygon Blog (https://blog.polygon.technology/why-web3-developers-are-choosing-polygon-over-others-solutions/)
  3. Polygon Blog (https://blog.polygon.technology/teams-building-on-polygon-set-new-record-moralis-data-show/)

6. Multichain (Previously Anyswap)

(출처 : https://www.prnewswire.com/news-releases/anyswap-to-officially-rebrand-as-multichain-301446381.html)

1. 개요

Anyswap은 크로스체인 탈중앙화 거래소를 지원하며 출시되었으나, 더 나은 크로스체인 서비스를 제공할 목적으로 DEX 기능을 제거하고 2021년 12월 16일 Multichain으로 리브랜딩을 실시하였습니다. 현재는 제3자의 신뢰도에 bridge의 신뢰도가 의존하는 Trusted 구조를 띄고 있습니다. 34개의 가디언 노드의 신뢰에 의존해야 하며 악의적인 행동이 발생해도 규제 또는 보상 구조 존재하지 않습니다. 또한 Multichain의 중개인은 특정 조직, 기관, 개인으로 구성되어 있어 중개인으로 활동하기 위한 진입장벽이 높습니다. 이러한 점에서 집중화된 구조로 분류할 수 있습니다. 이와 더불어 SMPC 노드들의 멀티시그 형식으로 bridge가 구동되는 것이 특징이며, Lock and Mint 모델을 취하고 있습니다.

2. 특징

Multichain은 Avalanche, BSC, Celo, Cronos, Ethereum, Fantom, Fuse, Fusion, IOTEX, Harmony, Heco, Kucoin, Moonriver, OKEx, Polygon, Shiden, Telos, xDai, Arbitrum, Boba, Bitcoin, Litecoin, Blocknet, ColossusXT, Terra 등 총 32개의 체인을 지원하고 있습니다. 그에 따라 지속적으로 5억 달러 이상의 일일 거래량을 기록하고 있고, TVL은 100억 달러를 넘어섰습니다. 또한 2022년 2월 13일을 기준으로 7,800여 명의 유저를 확보하고 있습니다.

아직까지 해킹 사례는 없지만, 보안 취약점이 발견되어 지난 1월 17일 사용자에게 경고 조치가 내려졌습니다. 이는 보안회사 Dedaub에 의해 발견되었으며, 6개의 토큰(WETH, PERI, OMT, WBNB, MATIC, AVAX)을 승인한 경우 승인을 취소해야 한다는 경고가 발령되었습니다. 또한 인출 시 크로스체인 수수료로 출금 금액의 0.1%를 취한다는 특징이 있습니다. 그 외의 자체 수수료는 발생하지 않으며, 전송하려는 네트워크에 따라 기본적인 네트워크 가스비가 발생합니다.

3. Multichain 작동 원리

각 bridge는 두 블록체인을 연결하는 역할을 하고 있습니다. 자산을 보내는 체인에서 locked되는 자산은 별도의 SMPC 지갑 주소로 전송되고 그곳에 안전하게 보관됩니다. 이것은 분산 관리 계좌(Decentralized Management Account)입니다. 이 글에서는 자산을 보내는 체인을 출발 블록체인, 자산을 받는 블록체인을 도착 블록체인이라는 용어를 사용하겠습니다. 스마트 컨트랙트를 통해 분산 관리 계좌에 있는 토큰과 동일한 비율로 도착 블록체인 토큰이 발행되고(1:1) 사용자의 지갑으로 보내집니다. 토큰이 스마트 컨트랙트로 다시 전송될 때는 반대의 과정이 발생합니다. 토큰 소각이 완료되면 SMPC 노드는 원본 체인(출발 체인)에서 이를 해제합니다. SMPC 노드는 사람의 개입 없이 완전히 자율적인 방식으로 출발 블록체인을 도착 블록체인과 연결하는 여러 기능을 수행합니다.

Deposit

크로스체인 자산의 예금 프로세스 (출처: https://docs.multichain.org/how-it-works/cross-chain-bridge)
  • 두 블록체인 사이에 새로운 bridge가 생성되면 SMPC 노드는 자산을 보낼 때 사용되는 분산 관리 계좌를 생성합니다. 이러한 자산은 도착 블록체인에서 크로스 자산이 발행되는 동안 안전하게 보관됩니다. 이 계정 주소는 사람이나 다른 외부 소유 주소가 아닌 SMPC 노드에 의해서만 컨트롤됩니다.
  • 또한 두 블록체인 사이에 새로운 bridge가 생성되면 SMPC 노드는 도착 체인의 새 스마트 컨트랙트에 랩핑된 자산을 연결합니다. 이 컨트랙트은 제 3자 또는 멀티체인 팀에서 생성할 수 있으며, 도착 체인에서 새 토큰을 발행하거나 자산이 원본 체인으로 상환되어 토큰을 소각할 때 사용됩니다. 이 컨트랙트는 AnyswapV5ERC20.sol 또는 트랜잭션 수수료 등과 같이 프로젝트에 필요한 사용자 custom 코드를 포함하도록 수정되었습니다.
  • MPC 노드는 분산 관리 계정을 모니터링합니다. 새 자산이 분산 관리 계정에 도착하면 도착 체인에서 Wrapped Asset 스마트 컨트랙트를 불러와서 토큰을 발행합니다.

Withdraw

크로스체인 자산의 출금 프로세스 (출처: https://docs.multichain.org/how-it-works/cross-chain-bridge)
  • 자산이 상환되면 MPC 노드가 Wrapped Asset 스마트 컨트랙트을 실행하여 토큰을 소각합니다. 그런 다음 MPC 노드는 분산 관리 계정에서 자산을 해제하고 이를 출발 체인의 사용자에게 보냅니다.

Wrapped Asset 스마트 컨트랙트 AnyswapV5ERC20은 표준 ERC20 유형의 컨트랙트의 superset으로, MPC 노드 네트워크만 자산을 발행할 수 있도록 합니다. SMPC 주소가 보유하고 있는 자산과 래핑된 자산 간이 서로 상이한 것을 방지하기 위해 다른 주소를 통해 발행할 수 없습니다. 이러한 이유로 리베이스 토큰, 탄력적인 공급이 필요한 토큰을 포함하여 일부 자산 유형은 bridge에 적합하지 않습니다.

4. Multichain Low Level 분석

Swapin 은 SMPC 네트워크에서 '특정 토큰이 이더리움에서 DcrmAddress로 전송되었는지'에 대한 정보를 수신하는 역할을 합니다. 이 때 스마트 컨트랙트가 호출되어 특정 토큰이 해당 체인 위에서 발행됩니다.

Swapout 함수는 사용자가 특정 토큰을 이더리움으로 다시 보낼 때 호출됩니다. 이 과정에서 특정 토큰은 소각되고 SMPC 네트워크는 이더리움 상에서 특정 토큰의 대상 주소를 해제합니다.

Swapin, Swapout 함수 모두 swap(txid, pairID, isSwapin) 합니다.

References

  1. Multichain Docs (https://docs.multichain.org/how-it-works/cross-chain-bridge)
  2. Multichain medium (https://medium.com/multichainorg/multichain-weekly-update-january-14-79847cacdb4)
  3. Multichain medium (https://medium.com/multichainorg/action-required-critical-vulnerability-for-six-tokens-6b3cbd22bfc0)
  4. Anyswap Dashboard (https://anyswap.net/dashboard)

마치며

이번 Bridge Series를 통해 다양한 bridge 솔루션들이 나오게 된 배경과 방식에따른 분류를 알아보고, 실제로 다양한 분류의 각종 bridge들을 자세히 살펴보았습니다. 다양한 네트워크가 존재하는 만큼, bridge들도 각자가 해결하고자 하는 문제점을 다양한 방식으로 풀어나간 것을 알 수 있었습니다. 그럼 과연 크로스체인을 가능하게 하는 bridge들로 인해 앞으로 네트워크는 장밋빛 미래만 남아있는 것일까요? 안타깝지만 크로스체인에 대해 우려하는 의견들도 하나, 둘 씩 나오고 있습니다.

이더리움의 창시자 비탈릭 부테린이 최근에 크로스체인에 대해서 우려하는 입장을 내비치기도 했습니다. 레딧 커뮤니티에 글을 기고하였으며, 디사이퍼에서도 이에 대해 미디엄 아티클을 작성해놓은 것이 있으니 관심있으신 분들은 참고 부탁드립니다. 중심 내용으로는, 한 체인에서 보안이 문제가 생기게 되면, bridge로 연결된 다른 체인에서도 문제가 전염될 수 있다는 것입니다. 최근에 발생한 웜홀 bridge 해킹사태에서도, 모회사인 점프 트레이딩이 피해액을 전부 변상하지 않았다면, 이더리움 네트워크에서 솔라나 네트워크로 $ETH를 전송하여 사용하고 있는 사람들이 막심한 피해를 입을 수 있었습니다.

물론 이러한 일이 흔하게 발생하진 않지만, 여러 크로스체인 솔루션들은 이러한 점을 인지하고 앞으로 더 탈중앙적이고 보안성이 강한 형태로 발전해야할 것입니다. 또한 추가적으로, 현재까지도 다양한 bridge 서비스들이 일반 사용자들에게 접근성이 그리 좋은 서비스라고 할 순 없습니다. 앞으로의 블록체인 mass adoption 되기 위해서는 사용자 입장에서 여러 네트워크를 사용하고 있는지 모를 정도로의 깔끔한 사용자 인터페이스와 경험을 제공해야할 것입니다.

--

--