스마트 컨트랙트(Smart Contract)
다른 이름: 스마트 계약 · Smart Contract · 컨트랙트
정의
스마트 컨트랙트는 블록체인에 배포되어 미리 정한 조건이 충족되면 자동으로 실행되는 프로그램으로, 중개자 없이 거래와 규칙을 처리합니다.
스마트 컨트랙트의 작동 방식
스마트 컨트랙트는 만약 A가 일어나면 B를 실행한다는 식의 코드를 블록체인에 올려 둔 것입니다. 한 번 배포되면 누구나 같은 코드를 호출할 수 있고, 결과는 블록체인에 기록됩니다. 이더리움이 이 개념을 대중화했습니다.
탈중앙화 거래소, 대출 프로토콜, 스테이블코인, NFT, 토큰 발행이 모두 스마트 컨트랙트로 작동합니다. 사용자가 컨트랙트를 실행할 때는 그 체인의 기본 코인으로 가스비를 냅니다.
코드가 곧 규칙이기 때문에 버그가 있으면 그대로 악용될 수 있습니다. 또 지갑에서 컨트랙트에 토큰 사용 권한(승인)을 주면 그 컨트랙트가 토큰을 옮길 수 있게 됩니다. 감사 보고서가 있는지, 승인 범위가 적절한지 확인하는 것이 기본 보안 습관입니다.
예시
DEX에서 1,000 USDC를 ETH로 바꾸는 상황을 보겠습니다. 먼저 USDC 컨트랙트에 DEX가 1,000 USDC를 쓸 수 있도록 승인 트랜잭션을 보내고, 다음으로 교환 트랜잭션을 보냅니다. ETH 가격이 2,500 USDC이고 풀 수수료가 0.3%라면 수수료 3 USDC를 뺀 997 USDC로 약 0.3988 ETH를 받습니다. 두 트랜잭션 모두 가스비가 별도로 듭니다.
자주 하는 실수
- 토큰 승인을 무제한으로 허용한 뒤 사용하지 않는 서비스의 권한을 취소하지 않습니다.
- 스마트 컨트랙트는 자동이라 안전하다고 생각하고 감사 여부나 운영 이력을 확인하지 않습니다.
- 지갑 서명 요청의 내용을 읽지 않고 습관적으로 승인 버튼을 누릅니다.
배우고 실습하기
자주 묻는 질문
스마트 컨트랙트는 수정할 수 있나요?
기본적으로 배포된 코드는 바뀌지 않지만, 업그레이드 가능한 구조로 설계된 컨트랙트는 관리자가 로직을 교체할 수 있습니다. 이 경우 관리자 권한이 누구에게 있는지가 중요한 확인 포인트입니다.
비트코인에도 스마트 컨트랙트가 있나요?
비트코인도 제한적인 스크립트 기능은 있지만, 이더리움처럼 복잡한 프로그램을 자유롭게 실행하는 용도로 설계되지는 않았습니다.