본문으로 건너뛰기
Boring Security
프로필
서명과 승인

WETH(래핑된 ETH)는 왜 필요할까?

보링 시큐리티의 학생들에게 가장 헷갈리는 주제 중 하나는 정확히 왜 래핑된 ETH, 즉 wETH가 필요한지, 그리고 그게 ETH랑 어떻게 다른지일 겁니다. 우리가 학생들에게 제일 먼저 명확히 하고자 하는 것은 토큰의 실제 작동 방식입니다. 토큰 표준(token standard), 마켓플레이스, 그리고 지갑 소프트웨어는 여러분이 토큰과 상호작용할 때 프로그램 뒤에 실제로 무슨 일이 일어나는지를 알기 어렵게 합니다. 심지어 Revoke.Cash 같은 앱은 사람들을 혼란스럽게 하고 사람들은 “왜 승인을 한꺼번에 취소하지 못하는 거죠?” 같은 질문을 계속해서 하게 됩니다. 이 글에서 이런 질문들에 답변해보겠습니다.

WETH_04.gif

지금은 존재하지 않는 weth.io에서 가져온 래핑과 언래핑 과정을 묘사한 이미지

래핑된 이더리움 (wETH)이란?

래핑된 이더리움은 승인, 전송, 이전(TransferFrom), 입금과 출금이라는 업그레이드 불가능한 다섯가지 기본 기능을 갖춘 컨트랙트를 이용하는, ERC-20과 호환되는 ETH의 일종입니다. 이더리움 네트워크의  모든 토큰은 여러 표준에 따르거나 따르지 않는 스마트 컨트랙트일 뿐입니다. 여러분이 여러분 지갑의 토큰과 상호작용할 때, 그 토큰의 컨트랙트가 허용하는 것만 할 수 있다는 것을 아는 게 중요합니다. 그러므로, 여러분이 여러분이 가진 토큰을 사용하거나, 옮기거나, 무언가 허가할 때, 그 행위는 컨트랙트 위에서 일어나야 합니다. 보링 시큐리티에서 지갑에 있는 토큰 컨트랙트를 지갑에 북마크 해야 한다고 계속해서 말하는 이유가 바로 이것입니다. 만약 누군가 여러분의 지갑에 있는 특정 토큰 컨트랙트와 상호작용 하려고 한다면, 그것이 여러분의 주의를 환기시켜줄 것이기 때문입니다. 이에 대한 더 자세한 정보는, 우리의 글 중 하나인 승인에 대한 모든 것을 읽어보시기 바랍니다.

| 기능

|

설명

| | --- | --- | |

승인

|

컨트랙트 주소나 다른 EOA(외부 소유 주소) 주소가 여러분 지갑의 wETH를 마치 승인된 주소에 의해 소유된 것처럼 이용할 수 있게 합니다. 이것은 마켓플레이스에서 유저들이 입찰 등을 할 수 있게 하기 위해 사용됩니다.

| |

전송

|

토큰을 여러분의 지갑에서 다른 지갑으로 옮길 때, 전송을 하는 것은 바람직한 행위입니다.

| |

이전 (TransferFrom)

|

이전(TransferFrom)은 위의 승인 방식을 이용합니다. 한 지갑이 여러분의 지갑에 있는 토큰에 대한 승인을 받았다면, 이전 방식은 전송 행위를 하기 위해 쓰입니다. 더 자세한 차이는 이 글에 설명되어 있습니다. 여러분은 이 방식을 이용해 토큰을 전송할 수도 있고,  여러분이 대량 전송을 하지 않을 때에도 마켓플레이스는 종종 여러분이 이 방식을 쓰게 만들 것입니다.

| |

입금 

|

입금 기능은 ETH를 래핑된 이더리움 컨트랙트에 입금하고, 입금한 사람에게 동일한 액수의 wETH를 민팅해줍니다.

| |

출금

|

출금 기능은 래핑된 이더리움 컨트랙트에서 wETH를 출금하고, 컨트랙트에 있던 ETH를 돌려줍니다.

|

ETH를 wETH로 래핑하는 것은 ETH가 ERC-20 호환성을 갖게 하고, 이렇게 하면 ETH는 이더리움 네트워크에 있는 다른 ERC-20 토큰과 함께 사용될 수 있게 됩니다. 또한 이로 인해 ETH는 끊김 없이 교환될 수 있고, Uniswap, GMX, Aave 같이 잘 알려진 디파이 프로토콜에서도 동일한 방식으로 처리할 수 있습니다. “래핑”이라는 말은 약간 잘못된 말인데, 이 용어는 토큰이 디파이 플랫폼 사이에서 더 유연하게 사용되고 오픈씨 같은 NFT 마켓플레이스에서 입찰을 하거나 구매 제안을 할 수 있도록 컨트랙트를 이용하여 ETH를 wETH로 바꾸거나 그 반대로 하는 것만을 가리킵니다. 
 

WETH_03.gif

지금은 존재하지 않는 weth.io에서 가져온, 스마트 컨트랙트 상에서 토큰과 WETH가 마찰 없이 교환되는 모습을 묘사한 이미지

안타깝게도, 우리는 이것을 ETH 자체만을 가지고 할 수는 없습니다. ETH는 ERC-20 표준이 생기기 이전에 만들어졌기 때문입니다. 그런 의미에서 우리는 ETH를 “이더리움 네트워크의 프로토토큰”이라고 부릅니다. ETH를 ERC-20과 호환 가능하도록(wETH가 필요 없도록) 만들자는 제안이 있었지만, 우리가 현재 사용하는 지갑의 UI/UX적 문제와 지갑을 털어가는 스캠의 급증으로, 아직 그 일이 일어나지 않은 것은 다행이라고 할 수 있습니다. 이 주제는 나중에 더 자세히 다루겠습니다.

ERC-20과 이더스캔 보기

위에 링크를 연결해둔 것처럼, 우리가 토큰과 상호작용 할 때, 우리는 그것을 통제하는 스마트 컨트랙트와 상호작용할 뿐입니다. 이더스캔을 열어서 여러분이 좋아하는 ERC-20 토큰에 이용 가능한 방식들을 확인해보세요. 뭔가 재미있는 점을 발견하셨나요?

  1. Apecoin (에이프코인) : 이 코인은 wETH 컨트랙트가 가지고 있지 않은 방식들을 가지고 있음을 확인하세요. ERC-20 토큰 중 다수가 “허용치 증가”라는 방식을 가지고 있습니다. 이것은 기능적으로 ERC-20 컨트랙트의 승인과 같고 2021년 우리의 설립자를 속게 만든 악명 높은 BadgerDAO 해킹을 포함한 수많은 디파이의 해킹과 스캠의 핵심이었습니다. 심지어 일 년 뒤 메타마스크는 여전히 아래의 스크린샷과 같은 허용치 증가 방식을 보여주었고 유저들은 무슨 일이 일어나는지 이해하지 못했습니다. 우리는 이것에 대해 승인에 대한 모든 것에서 더 자세히 이야기 했습니다.

increaseallowance2.png

  1. USDC: 여러분은 이 컨트랙트가 우리가 “프록시” 컨트랙트라 부르는 것임을 알게 될 것입니다. 우리는 보링 시큐리티의 102 수업과 프록시 컨트랙트에 대한 모든 것이라는 글에서 프록시 컨트랙트를 더 자세히 다루고 있으니 확인해 보기 바랍니다. 지금은 프록시 컨트랜트는 “업그레이드” 될 수 있고 주 컨트랙트 외부에서도 컨트랙트 로직이 실행될 수 있다는 점만 기억하세요.

  2. 코인게코에서 여러분이 알거나 알지 못하는 코인 이름을 클릭해보세요. 그 코인이 ERC-20 토큰이라면 “정보” 아래 맨 첫째줄에 이더스캔 링크와 함께 컨트랙트가 나와 있을 것입니다. 여기저기 찔러보고 구경해보세요.

그냥 ETH를 쓰면 안되나요?

우리의 학생들에게 제가 한 가지 주고 싶은 과제는 “이더스캔에서 ETH를 사용하기 위해 ‘ETH 컨트랙트’로 바로 가기를 원한다면, 어디로 갈 것인가?”입니다. 이 컨트랙트는 당연히 존재하지 않고, ETH가 할 수 있는 것은 이더리움 그 자체의 핵심 코드 구조에 존재하는 것 뿐입니다. 여러분은 그것을 전송하거나, 가스비를 위해 쓰거나, 아니면 어떤 방식(예를 들어 민팅을 생각해보세요)에 대한 비용으로 추가할 수 있습니다. 여러분은 ETH로 그 이상으로 복잡한 것은 할 수 없습니다.
 

WETH_02.gif

이 그래픽은 지금은 존재하지 않는 weth.io에 있던 것으로, ERC-20과 ETH의 비호환성을 보여줍니다

우리에게 래핑된 이더리움, 즉 wETH가 없었더라면, NFT 마켓플레이스는 어떻게 운영될 수 있었을까요? 뭐, 한가지는 동일한 액수의 ETH로 여러 플랫폼에 입찰을 열어둘 수 없었을 겁니다. Blur에서 거래 제안을 해본 사람이라면 제가 무슨 말을 하는지 정확히 알 겁니다! Blur에서 여러분은 플랫폼에 ETH를 예치해야 하고 그렇게 하면 실질적으로 여러분은 그 생태계에 “가두어”집니다. wETH의 장점은 여러 NFT 마켓플레이스에서 한번에 거래 제안을 할 수 있다는 것과, 그 중 어느 마켓플레이스에서 제안이 수락될 경우에만 지갑에서 돈이 빠져나간다는 것입니다.

중요한 핵심은 여러분이 ETH에서는 승인을 할 수 없고, 따라서 이런 제안은 동일한 방식으로 이루어질 수가 없다는 것입니다. 여러분은 그 돈을 묶어둬야 할 것입니다. 이런 시스템은 Superrare나 Foundation(NFT 마켓플레이스)에서 입찰과 경매 메커니즘에 실제로 이용하는 방식입니다. 이 방식으로부터 플랫폼이 얻는 장점은 여러분의 플랫폼에 대한 wETH 접근 철회로 인해 거래 제안이 최후의 순간에 무효화될 수 없기 때문에 가짜 입찰의 가능성을 줄여준다는 점입니다. 그러나 평범한 유저의 경우에, 단순히 오프체인 서명을 함으로써 입찰을 할 수 있게 되는 것은 ETH를 매번 보내는 것보다 비용 절감의 측면에서 훨씬 좋습니다. 묶이는 돈도 없고, 승인이 완료된 경우, 가스비를 더 지불하지 않아도 됩니다!
 

ETH와 wETH를 가지고 있는 것의 보안상 장점

wETH를 가진다는 것은 웹3와 이더리움 블록체인 전체에 대해 막대한 사용성과 보안 허들을 제시합니다. 보링 시큐리티의 무료 102 수업을 시작할 때, 우리는 항상 이 질문을 합니다. “도대체 wETH가 뭐고 왜 필요한지 아시는 분 있나요?” 우리는 “마켓플레이스가 쓰니까요” “더 저렴해서요” “모르겠는데 알려주세요” 등등 다양한 답변을 듣게 됩니다. 우리가 이에 대해 설명을 하기 전에 정답을 맞추는 학생은 거의 없습니다. 이 학생들이 꽤 경험 많은 NFT 거래 경험자라는 걸 기억하세요. 이것은 생태계에 큰 도전 과제입니다.

그렇기는 하지만, 승인과 서명을 하고 여러 지갑을 효과적으로 사용하는 방법을 아는 것은 여러분의 wETH와 NFT나 에이프코인(APE) 같은 다른 토큰을 지키는 데 도움을 줍니다. 그리고, 여러분이 1) 고급 지갑 설정을 가지고 놀거나 서명 면제 유형(deprecated signature type)에 서명하거나 2) 시드 구문을 잃어버리거나 3) (흔한 스캠인 Mint/Redeem 또는 Security Update 같은 방식에) 트랜잭션 비용의 일부로 ETH를 지불하거나 하지 않는 한 ETH가 여러분의 지갑으로부터 출금될 수 없다는 것을 아는 게 중요합니다. 그럼 wETH를 어떻게 제대로 쓸 수 있을까요?

1) 여러분이 사용하는 마켓플레이스에 wETH를 적은 양만 승인하세요. 링크된 글을 보고 여러분이 사용할 wETH의 양을 변경해보세요. 허용치를 무한히 설정하는 것은 좋지 않은 습관입니다.

2) 자산 대부분을 ETH로 가지고 계세요. ETH는 승인을 통해 지갑에서 빼낼 수 없고 여러분의 시드 구문이 안전한 한 안전합니다.

3) Revoke.Cash와 Approvals.xyz를 종종 확인해 wETH 뿐만 아니라 여러분의 토큰 전체를 보세요. 두 서비스 모두 여러분이 승인한 것 중 남아있는 토큰의 양을 업데이트 해 줄 것입니다.(즉, 플랫폼에 5wETH를 승인했고 3wETH를 사용했다면 2wETH가 남은 것을 보여줄 겁니다.) 이더스캔 토큰 승인 계량기는 이렇게 해주지 않습니다.

4) 서명의 원리에 대해 이해하세요. 충분히 주의하지 않는다면 여러분이 무엇을 가지고 어디에 서명하는지에 따라 의식하지도 못하고 wETH를 내줄 수도 있습니다. 우리의 글 안전한 서명 입문에서 서명에 대해 더 자세히 배워 보세요.

image.png

wETH에 대해 더 알고 싶다면?

코인텔레그래프의 이 기사는 wETH를 얻는 방법과 그것 자체에 대해 설명해줍니다.

wETH에 관해 설명하는 오픈씨의 글은 풍부한 스크린샷으로 그 마켓플레이스에서 wETH를 어떻게 얻고 사용할지에 대해 설명해줍니다.

웹3 보안에 대해 질문이 있거나 더 많은 것을 배우고 싶으신가요? 최신 보안 정보와 스캠, 전략들에 대해 꾸준히 정보를 얻고 싶나요? Boring Security 디스코드 서버에 가입해보세요_._

읽기목록