스마트 컨트랙트는 블록체인에 배포되어 고정된 규칙에 따라 자금을 보유하고 옮기는 프로그램으로, 결정론적으로 실행되며 — 같은 입력은 언제나 같은 결과를 냅니다 — 네트워크의 모든 노드가 그 실행을 검증하고, 그 사이에 어떤 회사도 어떤 담당자도 끼지 않습니다. 온체인에서 하는 일의 거의 전부가 스마트 컨트랙트입니다. 토큰, 스왑, 대출 시장, 그리고 프로토콜이 여러분의 잔액을 움직이도록 허용하는 승인까지요. 코드 자체가 거래 상대이기 때문에 설득할 수도, 항의할 수도 없습니다 — 결함이 고객센터 문의가 아니라 털린 금고가 되는 이유이기도 하죠. EVM 체인은 이를 스마트 컨트랙트라 부르고, Solana는 프로그램이라 부르며, TON은 지갑까지도 컨트랙트로 모델링하지만, 메커니즘은 어디서나 같습니다. 지갑도 그 위에 세워집니다. WATS Hot Wallet은 EVM 체인에서 ERC-4337 페이마스터 컨트랙트를, Solana와 TON에서는 등가의 수수료 지불자를 사용해, 모든 수수료를 체인별 네이티브 가스 코인이 아닌 하나의 토큰 ATS로 청구합니다.
돈을 움직이는 코드
스마트 컨트랙트는 블록체인에 배포되어 고정된 규칙에 따라 자금을 보유하고 옮기는 프로그램입니다. 한번 배포되면 결정론적으로 실행되고 — 같은 입력은 언제나 같은 결과를 냅니다 — 네트워크의 모든 노드가 그 실행을 검증하며, 그 사이에 어떤 회사도 어떤 담당자도 끼지 않습니다. 토큰, 스왑, 대출 시장은 모두 스마트 컨트랙트입니다. 그 자체가 거래 상대인 코드죠.
마지막 표현이 핵심입니다. 은행을 이용할 때는 어떤 기관이 여러분에게 빚을 지고, 법 체계가 그 청구권을 뒷받침합니다. 스마트 컨트랙트를 이용할 때는 코드가 곧 계약 전부입니다 — 설득할 수도 없고, 항의할 수도 없습니다. 바로 그 성질이 Web3를 가능하게 만들었고, 동시에 그 실패를 그토록 가차 없게 만듭니다.
자판기 — 정직한 버전
고전적인 비유는 스마트 컨트랙트를 자판기에 빗댑니다. 동전을 넣으면 간식이 나오고, 점원은 필요 없습니다. 규칙 자체가 곧 서비스입니다. 이 부분은 정확하며 결정론을 잘 담아냅니다 — 기계가 오늘따라 당신이 마음에 안 든다고 결정할 수는 없으니까요.
이 비유가 감추는 것은 이렇습니다. 누구나 기계를 설치할 수 있고, 동전을 받기 시작하기 전에 확인해 주는 검사관은 없습니다 — 컨트랙트는 첫날부터 잘못돼 있을 수도, 의도적으로 악의적일 수도 있습니다. 게다가 이 기계는 진짜 돈을 담고 있습니다. 유동성 풀과 대출 시장은 사용자 자금을 컨트랙트 안에 그대로 보관하므로, 결함은 걸려버린 간식이 아니라 털린 금고가 됩니다. 그리고 자판기와 달리 컨트랙트는 서로를 호출합니다. 그 조합 가능성이 DeFi를 떠받치는 초능력이며 — 동시에 망가진 기계 하나가 거기에 연결된 모든 기계를 끌어내릴 수 있다는 뜻이기도 합니다.
매일 무엇과 상호작용하고 있을까?
암호화폐를 조금이라도 써봤다면 이미 스마트 컨트랙트를 사용한 것입니다 — 보통 트랜잭션 하나당 여러 개씩요.
- 토큰은 컨트랙트입니다. ERC-20 "잔액"은 지갑 안에 놓여 있는 코인이 아니라, 토큰 컨트랙트 내부 장부의 한 항목 — 주소를 금액에 대응시킨 매핑 — 입니다. 토큰을 보낸다는 것은 그 컨트랙트에게 두 항목을 갱신해 달라고 요청하는 일입니다.
- 스왑은 컨트랙트입니다. DEX 풀은 두 개의 토큰을 보유하고 공식으로 거래 가격을 매기는 컨트랙트입니다 — 오더북도 없고, 반대편에 앉은 트레이딩 데스크도 없습니다.
- 승인은 여러분이 컨트랙트를 설정하는 일입니다. DEX가 여러분의 토큰을 움직이려면, 먼저 토큰 컨트랙트에 얼마까지 가져가도 되는지 알려줘야 합니다 — 온체인에 기록되는 allowance죠. 그 권한은 거래가 끝난 뒤에도 살아남기 때문에 제대로 이해해 둘 가치가 있습니다. 토큰 승인과 Permit에서 여러분이 정확히 무엇을 허락하는 것인지 다룹니다.
어떤 체인에서는 지갑조차 컨트랙트입니다 — 그러니 이제 주요 생태계들이 어떻게 다른지 살펴볼 차례입니다.
EVM, Solana, TON의 컨트랙트는 어떻게 다른가?
발상은 어디서나 같습니다 — 네트워크가 검증하는 결정론적 코드죠 — 하지만 아키텍처는 사용자가 체감할 수 있는 방식으로 다릅니다.
| EVM 체인 | Solana | TON | |
|---|---|---|---|
| 흔히 쓰는 이름 | 스마트 컨트랙트 | 프로그램 | 컨트랙트(액터) |
| 상태가 있는 곳 | 코드와 저장소가 하나의 주소에 함께 | 코드는 프로그램에, 상태는 각 트랜잭션에 전달되는 별도 계정에 | 각 컨트랙트가 자기 상태를 보유하고 비동기 메시지로 다른 컨트랙트와 대화 |
| 토큰 모델 | 하나의 ERC-20 컨트랙트가 모든 보유자의 잔액을 기록 | SPL 토큰 프로그램이 보유자별 토큰 계정을 관리 | 보유자마다 jetton 잔액이 각자의 작은 자식 컨트랙트에 존재 |
| 기본적으로 업그레이드 가능? | 아니요 — 프록시를 쓰지 않는 한 바이트코드는 불변 | 예 — 업그레이드 권한이 폐기되기 전까지 | 컨트랙트 자체 코드가 허용하는 경우에만 |
TON은 이 모델을 가장 멀리까지 밀어붙입니다. 지갑을 포함해 체인 위의 모든 것이, 다른 컨트랙트와 메시지를 주고받는 컨트랙트입니다.
배포된 뒤에도 스마트 컨트랙트를 바꿀 수 있을까?
EVM 체인에서 배포된 바이트코드 자체는 편집할 수 없습니다. 하지만 여러분이 상호작용하는 것의 상당수는 프록시 뒤에 있습니다. 고정된 주소를 호출하면 그 주소가 모든 호출을 별도의 구현 컨트랙트로 전달하는데 — 관리자는 프록시가 새 코드를 가리키게 만들 수 있습니다. 주소는 그대로지만, 그 뒤의 규칙까지 그대로일 필요는 없습니다.
그러니 "불변"은 사실 키에 관한 질문입니다. 업그레이드 권한을 누가 쥐고 있나요 — 팀 구성원들의 멀티시그인지, 공개된 지연을 강제하는 타임락인지, 거버넌스 투표인지, 아니면 권한이 소각되고 코드가 최종 확정되어 아무도 아닌지. 어느 쪽도 자동으로 정답은 아닙니다. 업그레이드 가능성은 팀이 버그를 고칠 수 있게 해주지만, 동시에 여러분 발밑에서 계약이 바뀔 수 있다는 뜻이기도 합니다. 실제로 많은 대형 프로토콜은 중간 지점에 있습니다 — 업그레이드는 가능하되, 타임락과 멀티시그 뒤에 두는 것이죠.
스마트 컨트랙트 버그는 왜 그렇게 치명적인가?
코드가 곧 거래 상대이기 때문에, 버그는 고객센터 문의가 아니라 돈을 등지고 열려 있는 문입니다. 송금을 되돌려 줄 이상거래 부서도 없고, 대부분의 체인에서는 그 문이 열려 있는 동안 현실을 일시정지시킬 권한을 가진 사람도 없습니다.
이 패턴은 기술 자체만큼이나 오래됐습니다. 2016년, 초기 이더리움 투자 컨트랙트였던 The DAO의 재진입(reentrancy) 버그로 공격자가 그 자금의 상당 부분을 빼갔고, 그 여파가 얼마나 컸던지 이더리움은 이를 되돌리기 위해 하드포크를 단행했으며 그 과정에서 Ethereum Classic이 갈라져 나왔습니다. 생태계 전체를 대신해 잠긴 토큰을 보관하는 브리지 컨트랙트도 같은 근본적 이유로 암호화폐 역사상 가장 큰 손실을 여러 차례 만들어 냈습니다. 막대한 가치를, 오직 코드만이 지키고 있다는 것이죠.
감사를 받으면 컨트랙트는 안전해질까?
더 안전해질 뿐, 안전한 것은 아닙니다. 감사는 보안 엔지니어들이 특정 시점의 특정 버전 코드를 유료로 검토하는 일입니다. 알려진 버그 유형과 허술한 패턴은 잡아내지만, 코드가 옳음을 증명하지도, 이후의 업그레이드를 포괄하지도, 감사자가 본 적 없는 프로토콜과 조합됐을 때 컨트랙트가 어떻게 동작할지 감안하지도 않습니다. 감사를 충실히 받은 프로토콜도 결국 털린 적이 있습니다.
사용자 입장에서의 실전 해석은 이렇습니다. 감사를 받았고 동시에 시간과 예치 가치로 검증된 컨트랙트를 선호하고, 감사받지 않은 신규 컨트랙트는 실험으로 취급하며, 토큰 승인을 빡빡하게 유지하고, 상대편 코드가 스스로 얻어낸 신뢰 이상으로는 절대 예치하지 마세요.
WATS는 어디에 들어맞는가
WATS Hot Wallet에서는 스마트 컨트랙트 배관이 곧 수수료 모델 그 자체입니다. 여러분이 서명하는 모든 트랜잭션 — 전송이든 컨트랙트 호출이든 — 은 체인의 네이티브 가스 대신 하나의 토큰인 ATS로 청구되며, EVM에서는 ERC-4337 페이마스터가, Solana와 TON에서는 등가의 수수료 지불자/릴레이어가 이를 처리합니다. ATS는 LayerZero OFT이므로 하나의 잔액이 EVM, Solana, TON에 걸쳐 작동하고, 걷힌 ATS는 100M에서 30M 하한을 향해 소각됩니다. 비수탁형은 그대로 유지됩니다 — 키는 여러분이 보유하고, WATS는 키를 절대 보유하지 않습니다 — 그리고 WATS는 ERC-4337 + OFT 단일 토큰 수수료를 네이티브 가스 대신 청구하며 그 소각과 결합한 최초이자 유일한 지갑입니다.
스마트 컨트랙트는 암호화폐의 별난 구석이 아닙니다 — 토큰을 옮길 때마다 여러분이 서명하는 대상 그 자체이며, 반대편의 코드는 여러분의 자금과 그것을 작성한 사람 사이에 서 있는 유일한 것입니다. 여러분의 통제 아래 남는 것은 두 가지입니다. 무엇을 승인하는가, 그리고 키가 어디에 있는가. 권한을 허락하기 전에 승인 내역을 점검하고, 모든 예치 규모를 그 코드가 얻어낸 신뢰에 맞추세요 — 그런 다음, 여러분을 대신해 자금을 움직일 수 없는 지갑에서 서명함으로써 키 쪽은 계속 여러분의 것으로 두세요. WATS Hot Wallet이 지원하는 여덟 개 체인 — Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana, TON — 전부에서 정확히 그런 지갑입니다. 키는 사용자가 보유하고 WATS는 키를 절대 보유하지 않으며, 수수료 쪽은 이 글이 설명한 바로 그 기술 위에서 돌아갑니다. 체인별 네이티브 가스 대신 ATS로 청구하는 ERC-4337 페이마스터 컨트랙트 말이죠.
자주 묻는 질문
토큰은 정말 스마트 컨트랙트인가요?
네. EVM 체인에서 ERC-20 토큰은 주소를 잔액에 대응시키는 저장소를 가진 컨트랙트입니다 — 여러분의 토큰은 그 장부의 항목이지 지갑 안에 든 물건이 아닙니다. Solana에서는 SPL 토큰 프로그램이 보유자별 토큰 계정을 관리하고, TON에서는 보유자마다 jetton 잔액이 각자의 작은 자식 컨트랙트에 존재합니다. 어느 경우든 토큰을 전송한다는 것은 프로그램에게 기록을 갱신해 달라고 요청하는 일입니다.
배포된 뒤에 스마트 컨트랙트를 바꿀 수 있나요?
경우에 따라 다릅니다. EVM 체인에서 배포된 바이트코드는 불변이지만, 많은 프로젝트가 프록시를 씁니다. 사용자는 고정된 주소를 호출하고, 그 주소는 관리자가 교체할 수 있는 구현 컨트랙트로 호출을 전달하죠. Solana 프로그램은 업그레이드 권한이 폐기되기 전까지 기본적으로 업그레이드가 가능합니다. 그러니 진짜 질문은 업그레이드 키를 누가 통제하느냐입니다 — 멀티시그인지, 타임락인지, 거버넌스 투표인지, 아니면 아무도 아닌지. 불변성 주장을 믿기 전에 그것부터 확인하세요.
감사를 받은 스마트 컨트랙트는 써도 안전한가요?
더 안전할 뿐, 안전하지는 않습니다. 감사는 특정 시점의 특정 버전 코드에 대한 검토입니다. 알려진 버그 유형은 잡아내지만 정확성을 증명하지도, 이후의 업그레이드를 포괄하지도, 다른 프로토콜과의 모든 상호작용을 시험하지도 않습니다. 감사를 충실히 받은 컨트랙트도 결국 털린 적이 있습니다. 감사는 여러 신호 중 하나로 다루세요 — 운영된 기간, 보호 중인 가치, 관리자 키가 쥔 권한의 크기와 함께 — 그리고 그에 맞춰 노출 규모를 정하세요.
스마트 컨트랙트와 상호작용하려면 그 체인의 네이티브 코인이 필요한가요?
보통은 그렇습니다 — 네트워크는 자기 코인으로 가스를 정산하므로, ETH가 0인 지갑은 어떤 토큰을 들고 있든 이더리움 컨트랙트를 호출할 수 없습니다. 그 자체가 스마트 컨트랙트인 페이마스터가 이를 바꿔 놓으며, WATS Hot Wallet이 구체적인 사례입니다. Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain에서는 ERC-4337 페이마스터를, Solana와 TON에서는 등가의 수수료 지불자를 사용해 모든 수수료를 하나의 토큰 ATS로 청구하고, 그 아래에서 네트워크는 여전히 네이티브 가스를 받습니다. ATS는 LayerZero OFT이므로 하나의 잔액이 여덟 체인을 모두 아우르고, 체인마다 채워 둬야 하는 가스 예비금이 없습니다. 이것은 할인이 아닙니다 — 블록 공간의 비용은 동일하고, 그 값을 치르는 토큰만 달라질 뿐입니다.
스마트 컨트랙트를 쓴다는 것은 자금에 대한 통제권을 넘긴다는 뜻인가요?
아니요. 컨트랙트를 호출하는 것은 여러분이 자기 키로 지시에 서명하는 일이며, 컨트랙트는 그 서명과 이미 허용해 둔 토큰 승인이 허락하는 범위 안에서만 움직일 수 있습니다 — 그래서 어떤 감사 배지보다 승인을 빡빡하게 유지하는 편이 더 중요합니다. 가장 중요한 것은 키가 여러분의 것으로 남는 것입니다. WATS Hot Wallet은 완전한 비수탁형이라 키는 사용자가 보유하고 WATS는 키를 절대 보유하지 않으며, WATS NFC 메탈 카드 역시 개인 키를 전혀 저장하지 않습니다 — WATS 앱 안에 있는 키에 탭으로 인증할 뿐이죠. 여러분이 실제로 떠안는 위험은 컨트랙트의 코드와 거기에 허용해 준 allowance이지, 서명에 사용한 지갑이 아닙니다.

