스마트 계약 함수 – 스캠을 알아채는 방법
주요 시사점: |
— 스마트 계약 함수는 블록체인 사용 설명서라 할 수 있습니다. 이를 통해 NFT 플랫폼 및 DeFi 서비스와 같은 지갑과 제3자 간의 특정 상호작용을 승인할 수 있습니다. — 많은 사람들이 이 기능을 제대로 이해하지 못하기 때문에 서명한 내용을 실제로 확인하지 않고 맹목적인 신뢰를 바탕으로 트랜잭션을 승인해 버립니다. 그래서 스캐머들이 이 사각지대를 엄청난 기회로 악용하고 있는 것입니다. — 잘못된 스마트 계약 승인을 악용한 스캠이 날로 증가하고 있습니다! 따라서 자신이 지금 무엇에 서명하고 있는지 제대로 아는 것이 그 어느 때보다 중요합니다. — 이 시간에는 위험 신호를 인지하여 사기 피해를 당하지 않는 방법을 자세히 알아 보겠습니다. |
현재 사람들을 교묘히 속여 여러분이 힘들게 번 암호화폐와 NFT를 빼앗는 수단으로 스캐머들이 가장 많이 사용하고 있는 방법이 바로 스마트 계약 함수입니다. 따라서 이제 이 기능을 제대로 알고 사용할 때입니다!
암호화폐 공간은 대부분 스마트 계약에 의해 추동되는 새로운 기회와 새로운 유형의 상호작용으로 가득 차 있습니다. 스마트 계약은 Web3 플랫폼 및 서비스와 지갑의 상호 작용을 관할합니다. 이를 통해, 디지털 자산의 사용에 있어서 전례 없는 자유를 제공하여, 개인 키에 대한 소유권을 기반으로 하는 완전히 새로운 디지털 세계의 가능성의 문을 활짝 열고 있습니다.
그러나 이러한 자유에는 무거운 새로운 책임이 따릅니다. 암호화폐라는 영역은 많은 사람들에게 아직 생소한 분야이기 때문에 사용자는 평소보다 실수에 더 취약할 수 밖에 없습니다. 모든 것이 새롭고 빠르게 변화할 뿐만 아니라, 때때로 Web3의 복잡한 UX로 인해 각 상호작용의 의미를 해석하기가 더욱 어렵습니다. Web3는 실제 나의 자산이 걸려 있는 살벌한 공간이며, 스캐머들은 여러분이 실수하기만을 기다리고 있습니다.
속지 않으려면 Web3와 상호작용 시 관련 위험 신호를 식별해내는 기술이 필수적입니다. 이 기술을 습득하는 것은 예상보다 어렵지 않습니다. 그저 약간의 안내가 필요할 뿐이죠.
이 글에서는 상호작용 시 접하게 되는 몇 가지 주요 스마트 계약 함수와 그 의미 및 스캠 시도 시 이를 식별해내는 방법에 대해 안내합니다.
스마트 계약 함수란?
가장 기본적인 것부터 시작해보겠습니다. 스마트 계약 함수가 정확히 무엇일까요?
간단히 말해서 함수는 특정 작업을 수행할 수 있도록 하는 스마트 계약 내의 코드 조각입니다. “함수 호출”을 통해 지갑과 사용 중인 플랫폼 간에 지정된 상호 작용이 시작됩니다.
스마트 계약과의 상호작용은 Web3에서는 피해갈 수 없는 부분이며, 스마트 계약은 본질적으로는 위험하지 않습니다.
그러나 실생활에서 벌어지는 스캠과 마찬가지로 상황이 중요하며, 무언가 잘못되었음을 나타내는 위험 신호를 식별해낼 수 있는 능력이 가장 중요합니다.
스마트 계약 함수의 위험 신호: 용어집
Web3를 안전하게 탐색하기 위해 숙지해야 할 몇 가지 주요 스마트 계약 함수가 있습니다. 이제 그 각각의 함수를 차례대로 살펴보면서, 그 기능, 관련된 스캠 및 위험을 스스로 감지해내는 방법에 대해서 설명하겠습니다.
1) SetApprovalforAll
SetApprovalforAll 함수는 Web3 참여 시 자주 접하게 되는 개념이기 때문에 제대로 이해하는 것이 중요합니다. 마켓플레이스에서 판매할 NFT를 올릴 때 이 함수를 가장 흔하게 볼 수 있으며, 그 기능은 간단합니다. 이 함수를 사용하면 NFT가 판매될 때마다 마켓플레이스가 판매자의 지갑에 있던 NFT를 다른 사람의 지갑으로 옮길 수 있습니다.
그럴듯하죠? 그러나 약간의 파장도 뒤따를 수 있습니다.
SetApprovalforAll에 수반되는 리스크
SetApprovalforAll 함수는 매우 일반적으로 쓰이지만 범위가 지나치게 넓기 때문에 사용자에게는 매우 위험한 상호작용이기도 합니다.
이 함수를 승인한다는 것은 지갑 내 특정 스마트 계약 상의 모든 ERC20 토큰과 NFT에 대한 액세스 권한을 사용중인 플랫폼에 내어 준다는 의미입니다. 개방형 계약이기 때문에 이는 해당 스마트 계약 상의 모든 토큰에 적용되게 됩니다.
마치 친구를 위해 백지수표를 쓰는 것과 같죠. 본질적으로 “나는 이 플랫폼이 약속대로 행동하고 내가 예상하는 한도 내에서 행동할 것이라고 믿습니다”라고 말하는 것과 같습니다. 그런데 이것이 실수라면 어쩌죠?
스캠 – 스캠을 감지하는 방법
SetApprovalforAll은 스캠 측면에서는 큰 타격을 입을 수 있기 때문에 서명하기에 안전한 시기와 문제가 있는 시기를 식별할 수 있어야 합니다.
이 함수 메시지가 표시되는 유일한 경우는 NFT를 마켓플레이스에 올리거나 DEX와 상호작용할 때입니다. 토큰 판매나 거래 시, 지갑에서 토큰을 이동할 수 있도록 해당 플랫폼에 권한을 부여해야 하는 것이므로 일견 합리적인 것처럼 보입니다. 그러나 이러한 상황 외에 이 스마트 계약 함수가 표시된다면 긴장해야 합니다.
항상 다음과 같이 자문해야 합니다: 나는 지금 왜 내 자산에 대한 액세스 권한을 다른 사람에게 양도하려 하는가? 이런 식으로 생각하면 트랜잭션의 합법성 여부를 판단하는 데 도움이 됩니다.
NFT를 민팅하시나요? 그렇다면 이 함수가 표시되어서는 안됩니다..
NFT를 구매하시나요? 그렇다면 이 함수가 표시되어서는 안됩니다.
허용 항목 목록에 서명하시나요? 네, 맞습니다! 그렇다면 이 함수가 표시되어서는 안됩니다!
이제 이러한 유형의 트랜잭션에 서명하는 것이 무엇을 의미하는지 알았으니, 메시지가 표시되는 각각의 상황을 평가하고 위험 신호인지 여부를 스스로 결정할 수 있을 것입니다.
2) SafeTransferFrom
또 다른 매우 일반적인 스마트 계약 함수는 SafeTransferFrom입니다. 이 메시지는 자신의 지갑에서 다른 지갑으로 NFT를 보내는 트랜잭션 중에 표시됩니다.
예를 들어, 방금 Ledger를 구입했고 기존 핫 월렛에서 Ledger Nano의 안전한 새 이더리움 계정으로 NFT를 보내려고 한다고 가정해 보겠습니다. 핫 월렛에 SafeTransferFrom이 표시되면 확인을 눌러야 하겠죠. 이러한 맥락에서는 전혀 이상할 것이 없습니다.
SafeTransferFrom에 수반되는 리스크
문제는 다른 상황에서 이 함수를 접할 때 발생합니다. 여기서 여러분이 승인하는 것은 NFT를 다른 지갑으로 전송하는 것이며, 해당 지갑이 자신의 지갑이 아닌 이상 자신의 NFT를 다른 지갑으로 보낼 이유는 없겠죠.
스캠 – 스캠을 감지하는 방법
그렇다면 어떤 종류의 스캠이 이 함수 호출을 사용하여 사람들을 속이고 그들의 암호화폐를 빼내려고 할까요?
최근에 Momoco 웹사이트에서 자체 NFT에 대한 무료 민팅을 제공한다고 하자, 민팅을 신청하려고 수많은 사람들이 해당 웹사이트로 몰렸습니다. 문제가 뭐였나구요? 민팅이 없었다는 것이죠.
대신 “민팅” 버튼을 누르면 SafeTransferFrom 호출이 발생했습니다(사용자들은 해당 민팅 프로세스의 일부라고 생각하여 승인을 했겠죠. 바로 사회 공학 스캠 방식이죠!) 이로 인해 타겟이 된 지갑에서 NFT를 전송하는 계약이 승인되어 수백 명의 사람들이 해당 스캠으로 인해 자신의 NFT를 잃게 되었습니다.
그 사람들이 스캠에 휘말리기 전에 사기인지 눈치챌 수 있는 방법은 없었을까요?
꼭 기억해야 할 것이 있습니다. 스마트 계약 함수 호출의 경우, 함수 상자에 기록되는 내용은 반드시 실행되게 되어 있습니다. 이 경우 그것은 한 지갑에서 다른 지갑으로 전송이 이루어 질 것이라는 것이었죠.
이것은 즉각적인 위험 신호입니다. 여러분이 민팅을 수행 중이면 전송이 아닌 “민팅”에 대한 함수 호출이 표시되어야 하니까요. 그런데 트랜잭션은 분명히 전송을 표시합니다. 또한 NFT가 LEDGER 지갑에서 다른 지갑 주소로 이동합니다. 즉, 지갑이 NFT를 수령하는 것이 아니라 전송을 수행하고 있는 것입니다.
요컨대, 승인하려 하는 작업의 유형 및 전송 방향을 포함해 함수 호출의 세부 사항을 간략히 살펴보기만 해도 무턱대고 상황을 믿고 버튼을 누르기 보다는 해당 트랜잭션을 확인할 수 있을 것입니다.
3) SendEth
이제 드디어 마지막 항목이군요! Web3에서 작업을 수행해 본 사람이면 누구나 이미 SendEth 함수를 보았을 것입니다. 문자 그대로 이더(Ether)를 다른 지갑으로 전송한다는 의미이죠. 자신이 보유한 서로 다른 지갑 주소 간에 ETH를 보내거나(예를 들어 방금 Ledger를 구입하여 자금을 새 계정으로 이체하는 경우) 마켓플레이스에서 구매하는 경우에 해당할 수 있겠죠.
SendEth에 수반되는 리스크
그러나 운이 좋지 않으면 예상하지 못한 상황에 이 함수가 팝업되는 것을 볼 수도 있습니다. NFT 민팅이 좋은 예입니다. 여기서 사용자들은 자신들이 민팅을 하고 있다고 믿고 있지만 실제로는 자금을 다른 주소로 이체하고 있습니다.
스캠 및 스캠 감지법
함수 호출만 봐도 알 수 있습니다 즉 진짜 민팅이면 “민팅”이라고 표시되어야 하니까요). 또한 우측 상단의 수령 주소를 보고도 알 수 있죠. 민팅은 다른 지갑이 아닌, 블록체인 자체와의 직접 트랜잭션이기 때문에 이 상황에서 수령 주소가 표시되는 것 또한 위험 신호로 봐야 합니다.
스마트 계약 스캠: 신뢰하지 말고 확인하세요
지금까지 Web3에 참여할 때 만나게 되는 주요 스마트 계약 함수(및 수반되는 리스크)에 대한 용어들을 살펴보았습니다.
이제 이러한 다양한 함수의 의미를 알았으니 관련 스캠이 매우 명백해 보일 수 있지만 사회 공학이 특히 Web3의 까다로운 새로운 표준과 결합되면 매우 강력한 힘을 발휘할 수 있습니다. 그렇기 때문에 암호화폐 여정을 시작하기 전에 지식으로 무장하는 것이 매우 중요합니다.
따라서 배움을 게을리 하지 말고 Web3의 무한한 가능성에 기꺼이 빠져들어 보세요! 키는 여러분이 쥐고 있고, 이를 유지하기 위해 Ledger 아카데미가 바로 사용자 곁에 있으니까요.