01

계약보다 프로그램에 가깝다

스마트계약은 블록체인의 특정 주소에 배포되어 정해진 조건에 따라 실행되는 프로그램입니다. 법률 문서가 스스로 판단하는 개념이라기보다 입력을 받으면 코드에 작성된 상태 변경을 수행하는 자동화 규칙에 가깝습니다. 코드가 공개돼도 사용자가 그 결과와 위험을 자동으로 이해하게 되는 것은 아닙니다.

02

상태와 함수

스마트계약은 잔액·소유권·설정값 같은 상태와, 그 상태를 읽거나 바꾸는 함수로 구성됩니다. 읽기 전용 호출은 거래를 만들지 않을 수 있지만 토큰 전송이나 예치처럼 상태를 바꾸는 작업은 사용자의 서명과 네트워크 거래가 필요합니다. 지갑에 표시된 버튼 뒤에서 어떤 함수가 호출되는지 확인해야 합니다.

03

거래와 가스

상태 변경 거래는 검증자가 실행할 연산과 저장 공간을 사용하므로 가스 수수료가 듭니다. 거래가 코드 조건을 통과하지 못해 실패해도 이미 수행한 연산의 비용은 발생할 수 있습니다. 승인하려는 자산, 한도, 예상 수수료와 최소 수령액을 서명 화면에서 확인하는 습관이 중요합니다.

04

권한과 업그레이드

배포된 코드가 항상 바뀌지 않는다는 설명도 구조에 따라 다릅니다. 프록시를 통한 업그레이드, 관리자 일시정지, 수수료 변경, 자산 회수 권한이 있을 수 있습니다. 관리자 키가 개인 한 명에게 있는지 다중서명인지, 변경에 시간 지연이 있는지 살펴봐야 실제 통제 구조를 알 수 있습니다.

05

외부 데이터 의존

블록체인 코드는 현실 세계의 가격이나 사건을 스스로 알 수 없어 오라클 같은 외부 데이터에 의존합니다. 다른 스마트계약을 호출하는 조합성은 기능을 넓히지만 하나의 오류가 여러 서비스로 번질 수도 있습니다. 코드 위험뿐 아니라 오라클, 브리지, 관리자, 프런트엔드의 의존성을 그려보는 편이 좋습니다.

06

사용 전 확인할 것

사용 전에는 공식 주소와 검증된 소스코드, 감사 범위와 날짜, 관리자 권한, 최근 변경, 예치금 규모보다 출금 경로를 먼저 확인하세요. 처음에는 소액으로 승인·예치·회수를 모두 시험하고 불필요한 토큰 승인을 취소합니다. ‘코드가 법’이라는 문구보다 누가 코드를 바꾸고 멈출 수 있는지가 더 실용적인 질문입니다.