1. 코드 이즈 로(Code is Law)? 한번 배포하면 끝이라는 오해블록체인, 특히 이더리움 생태계의 등장은 하나의 강력한 이데올로기를 전파했다. 바로 'Code is Law', 코드가 곧 법이라는 선언이다. 이 문장은 중개자 없는 신뢰, 인간의 개입이나 자의적 해석이 배제된 무결점의 자동화된 계약을 상징했다. 한번 이더리움 네트워크에 배포된 스마트 컨트랙트는 그 누구도 수정하거나 중단시킬 수 없다는 '불변성'은 이 새로운 디지털 경제의 대전제였다. 이 불변성은 시스템의 예측 가능성과 신뢰를 담보하는 핵심 기둥으로 여겨졌다. 하지만 이 견고해 보였던 이데올로기는 현실의 냉혹한 벽 앞에서 균열을 보이기 시작했다. 2016년, 전설적인 The DAO 해킹 사건이 터졌다. 코드의 결함, 즉 재진입성 버그를..
우리가 발을 딛고 있는 이 디지털 세계는 종종 무한한 풍요의 공간으로 오해받는다. 데이터는 복제되고, 저장은 거의 무료이며, 대역폭은 넘쳐난다. 하지만 블록체인, 특히 이더리움의 세계는 정반대의 철학 위에 세워져 있다. 이곳은 풍요가 아닌 극도의 '희소성'이 지배하는 영역이다. 이곳의 모든 연산, 모든 저장 공간, 심지어 트랜잭션에 실어 보내는 데이터 한 바이트조차도 '가스(Gas)'라는 이름의 냉정한 비용으로 환산된다. 이유는 간단하다. 당신이 실행하는 transfer 함수 하나는 당신의 컴퓨터에서만 실행되는 것이 아니다. 그것은 전 세계에 흩어진 수천, 수만 대의 노드 컴퓨터가 동시에 검증하고 실행해야 하는 '공공의 명령'이다. 이 무거운 책임을 아무런 대가 없이 허용한다면, 시스템은 악의적인 whi..
디지털 자산의 세계에서 우리가 매일같이 수행하는 가장 기본적인 행위는 '전송'이다. 지갑을 열고, 상대방의 주소를 입력하고, 수량을 적어 버튼을 누른다. 이 모든 과정의 배후에서, transfer라는 이름의 함수가 묵묵히 호출된다. 이더리움과 같은 스마트 컨트랙트 플랫폼 위에서 이 transfer 함수는 약속된 표준, 즉 ERC-20이라는 규약의 일부다. 그것은 토큰이 토큰으로서 기능하기 위한 최소한의 인터페이스이며, 모든 지갑과 거래소가 우리를 대신해 상호작용하는 공용 출입문이다. 이 함수는 겉보기엔 지극히 단순하다. transfer(address to, uint amount). 누구에게, 얼마를 보낼 것인가. 명확하다. 하지만 이 명확한 표면 아래에는, 잘 설계된 소프트웨어 엔지니어링의 정수가 숨어있..
스마트 컨트랙트는 코드로 이루어진 견고한 성채다. 이 성에는 transfer, approve, balanceOf처럼 명확한 이름표가 붙은 여러 개의 정문이 존재한다. 사용자와 다른 계약들은 이 정문들을 통해 예측 가능하고 투명한 방식으로 자신의 용무를 처리한다. 모든 것이 명확한 규칙 아래 움직이는 이 디지털 요새에서, 대부분의 상호작용은 이 이름표 붙은 함수들을 통해 이루어진다. 하지만 이 성에는 정문으로 들어오지 못하는, 혹은 정문이 아예 존재하지 않는 방문객들을 처리하는 단 하나의 비밀스러운 통로가 있다. 이름 없는 호출, 길 잃은 데이터, 혹은 그저 성의 금고에 돈(이더)을 넣으려는 순수한 방문객들. 이 모든 예측 불가능한 요청을 묵묵히 받아내는 존재, 그것이 바로 fallback 함수다. 이름 ..
블록체인 시스템, 특히 이더리움 가상 머신(EVM)의 세계에서 모든 상호작용은 명확한 주소를 기반으로 이루어진다. 계약은 코드로 이루어진 독립적인 행위자이며, 다른 계약 혹은 외부 소유 계정(EOA)과 메시지를 주고받는다. 이 메시지의 핵심에는 항상 두 가지 불변의 진실이 존재한다. 바로 msg.sender와 msg.value다. msg.sender는 이 호출을 직접적으로 시작한 주소이며, msg.value는 이 호출에 담겨 보내진 이더의 양이다. 이 두 가지 요소는 계약 보안의 알파이자 오메가다. 1. 통상적인 대화법: CALL의 세계우리가 일반적으로 이해하는 스마트 컨트랙트 간의 상호작용은 CALL이라는 옵코드를 통해 이루어진다. 이는 현실 세계의 전화 통화나 사무실 간의 업무 요청과 유사하다. 계..