Paperis.

© 2026 네오쿤스. All rights reserved.

이용약관개인정보처리방침환불 정책콘텐츠·제거 요청

상호: 네오쿤스 · 대표자: 김근태 · 사업자등록번호: 751-04-03501 · 통신판매업 신고번호: 통신판매업 신고 후 표기 예정

주소: 서울특별시 서초구 서초대로 266, B103-S36호(서초동) · Tel: 010-7254-2475 · 이메일: support@paperis.app

Paperis.

Paperis 아티클

스마트 컨트랙트란 무엇인가 — 모두가 똑같이 돌리고, 적힌 대로 실행되는 약속

결정론·취약점·불변성·코드 감사·형식 검증·업그레이드·프록시·오라클을 「적힌 대로 실행된다는 것은 무엇을 보증하고 무엇을 남기나」 하나로 꿴 첫걸음. 코드가 그대로인 동안 증인들은 가운데 사람 없이 약속을 지키게 하지만, 잘못 적은 조건도 그대로 실행되고, 고칠 열쇠와 바깥 소식은 여전히 누군가를 믿는 일로 남는 자리까지

🌱첫걸음✦AI 생성컴퓨터과학·AI · 2026년 9월 26일

내 분야 논문을 오디오로

관심 분야·저널을 고르면 Paperis가 핵심 논문을 요약하고 음성으로 변환해 드려요. 출퇴근길에 들어보세요.

Paperis 무료로 시작하기 →

스마트 컨트랙트란 무엇인가 — 모두가 똑같이 돌리고, 적힌 대로 실행되는 약속

사람이 없는 투자 모임

2016년 봄, 이더리움이라는 장부 위에 한 투자 모임이 문을 열었습니다. 참여자들은 돈을 넣고, 새로 생긴 회사들이 내놓은 사업 가운데 어디에 투자할지 표를 던질 기회를 받았습니다. 투자자와 회사 사이에 돈을 주고받고 셈을 맞추는 일은 장부에 적힌 프로그램이 알아서 처리했습니다. 모임의 이름은 The DAO였습니다 (DOI: 10.4018/jcit.2019010102).

모임은 문을 연 지 얼마 되지 않아 무너졌습니다. 모인 1억 6800만 달러어치 가운데 5000만 달러어치가 넘는 몫을 이름을 밝히지 않은 누군가가 빼 갔습니다. 그러자 이 장부의 참여자들은 투표를 거쳐 장부를 사건 이전의 상태로 되돌리기로 했습니다. 되돌리는 길은 포크, 곧 「블록체인이란 무엇인가」에서 본 대로 사슬을 두 갈래로 가르는 일이었습니다. 돈은 투자자들에게 돌아갔고 모임은 문을 닫았습니다 (DOI: 10.4018/jcit.2019010102).

이 되돌리기를 두고 한 논문은, 구제 금융이라고 볼 여지가 있고 한 번 적힌 장부는 바뀌지 않는다는 원칙과 「코드가 곧 법」이라는 이 공동체의 정신을 어겼다고 적습니다. 비트코인이 2008년 미국 은행 구제에 맞서 태어났다는 점을 들어, 그 논문은 이것을 아이러니로 봅니다 (DOI: 10.4018/jcit.2019010102).

사람 없이 돌아가게 만든 모임에서, 마지막 결정은 결국 사람들이 모여 내렸습니다. 이 글은 이 사건이 남긴 물음을 따라갑니다. 장부에 적어 둔 약속이 사람 없이 적힌 대로 실행된다는 것은 무슨 뜻인가. 그 약속을 잘못 적었을 때, 장부 바깥의 일을 알아야 할 때, 적은 것을 고치고 싶을 때는 어떻게 되는가. 무엇이 지금 얼마인지는 다루지 않고, 따라 할 수 있는 공격 방법도 적지 않습니다. 이 약속을 법이 어떻게 대하는지는 나라마다 달라서, 이 글은 법학자들의 논증까지만 옮깁니다.

스스로 돌아가도록 만든 황동 기계 장치가 유리 덮개 속에서 멈춰 있고, 그 옆에서 많은 사람이 모여 손을 들어 표결하는 모습.

장부에 적어 둔 약속

「장부에 한 줄 적을 권리」는 한 줄짜리 약속을 예로 들었습니다. 「가가 10을 보내오면, 이 줄에 맡겨 둔 5를 가에게 넘긴다.」 스마트 컨트랙트는 조건과 그때 할 일을 미리 장부에 적어 두고, 누군가 그 줄을 불러내면 조건을 확인해 사람의 판단 없이 그대로 실행되게 한 것입니다. 그 글이 내린 정의이고, 이 글은 이 정의를 한 겹씩 풀어 봅니다.

생각 자체는 블록체인보다 오래됐습니다. 1997년의 한 글은 스마트 컨트랙트를, 컴퓨터 망 위에서 사람 사이의 관계를 형식으로 굳히고 지키려고 약속의 절차와 사용자 화면을 묶은 것으로 소개했습니다. 그 글에 따르면 암호 같은 보안 장치로 알고리즘으로 적을 수 있는 많은 관계를 당사자의 어김과 제3자의 엿보기·방해로부터 지킬 수 있고, 그 보호에는 시간, 사용자 화면, 그리고 알고리즘으로 적은 명세가 얼마나 빠짐없느냐는 한계가 붙습니다 (DOI: 10.5210/fm.v2i9.548). 모든 경우를 코드로 빠짐없이 적어 낼 수 있느냐는 물음입니다.

그 생각이 장부 위로 올라왔습니다. 비트코인과 이더리움은 거래를 처리하는 규칙이나 짧은 명령을 적어 넣는 기능을 갖췄고, 이 기능이 자라 장부 위에서 돌아가는 온전한 프로그램이라는 꼴을 얻었습니다. 2016년 무렵 이더리움에서는 이런 컨트랙트 수만 개가 수백만 달러어치를 쥐고 있었습니다 (DOI: 10.1145/2976749.2978309). 처음에는 법적 계약 일반을 자동으로 처리하는 일을 가리키던 이름이, 지금은 블록체인 위에서 돌아가는 코드 조각을 가리키는 이름으로 널리 쓰입니다 (DOI: 10.1109/tse.2019.2942301). 이 글은 뒤의 뜻으로 씁니다.

누군가 그 줄을 불러내면, 「블록체인이란 무엇인가」의 증인들, 곧 장부 사본을 든 노드들이 저마다 그 코드를 돌립니다. 실행 결과는 코드를 돌린 모든 노드가 믿고 합의한 것이 됩니다 (DOI: 10.1109/access.2020.2992698). 따로 돌린 계산들이 한 답으로 모이려면 같은 입력에서 같은 답이 나와야 합니다. 결정론은 같은 입력에 같은 규칙을 적용하면 누가 실행해도 같은 결과가 나오는 성질입니다.

그래서 가운데서 판단하는 사람이 필요 없습니다. 코드가 실행을 맡으니, 올린 코드가 그대로인 동안에는 약속한 두 쪽 누구도 중간에 발을 뺄 수 없습니다 (DOI: 10.1109/access.2019.2921624). 코드를 바꿀 열쇠를 누군가 쥐고 있을 때의 일은 뒤에서 봅니다. 약속한 쪽이 나중에 마음을 바꾸지 못하게 묶어 두는 일, 곧 약속을 지키게 만드는 문제를 푸는 것이 스마트 컨트랙트의 이점으로 꼽힙니다. 대신 믿을 중개자가 없는 탓에 블록체인 위에서 무언가를 만들어 굴리는 비용은 부풀어 오릅니다 (DOI: 10.1146/annurev-financial-110921-022806).

스마트 컨트랙트는 모든 증인이 같은 계산을 되풀이해 같은 답에 이르는 장부 위의 프로그램이고, 그래서 가운데에 판단하는 사람이 없습니다.

가운데 약속 카드(스마트 컨트랙트) 아래 판사석은 비어 있고, 둘레의 증인 다섯이 저마다 같은 계산을 해 모두 같은 답 카드를 들어 올린 그림. 모든 증인이 같은 계산을 되풀이해 같은 답에 이르고, 가운데에 판단하는 사람이 없다.

적어 둔 것이 곧 규칙입니다

2016년의 그 모임에서 돈을 빼 간 공격은 이더리움이 코드를 돌리는 방식의 미묘한 세부를 파고들었습니다. 이더리움은 열려 있어서, 다른 프로그램도 이름을 드러내지 않은 사용자도 어떤 프로그램이 공개해 둔 기능을 불러낼 수 있습니다. 그래서 믿을 수 있는 코드와 믿을 수 없는 코드가 위험하게 엮일 수 있고, 안전한 스마트 컨트랙트를 쓰는 일은 매우 어려울 수 있습니다 (DOI: 10.1145/2993600.2993611).

취약점은 코드에 남아 있어서, 누구든 적힌 규칙대로 불러내기만 해도 만든 사람이 뜻하지 않은 결과가 나오게 하는 틈입니다. 증인들은 적힌 대로 계산할 뿐이라, 만든 사람이 무엇을 뜻했는지 알 길이 없습니다.

틈에는 유형마다 이름이 붙어 있습니다. 재진입은 한 번 불린 기능이 제 일을 끝내기 전에 같은 기능이 다시 불려 들어오는 틈입니다. 2016년 그 모임의 사건이 이 유형의 가장 널리 알려진 예로 꼽힙니다. 이 틈을 막고 찾아내는 방법들도 정리돼 있고, 그 논문은 이 위험을 줄이는 일이 블록체인 응용의 온전함을 지키고 스마트 컨트랙트가 널리 쓰이게 하는 데 꼭 필요하다고 결론짓습니다 (DOI: 10.1109/netcrypt65877.2025.11102145). 그 사건과 한 지갑 프로그램의 해킹은 스마트 컨트랙트 코드에 남은 단순한 실수만으로 수백만 달러의 손실을 냈습니다 (DOI: 10.1109/access.2020.2970495).

고치기도 어렵습니다. 불변성은 한 번 장부에 올린 코드를 그 뒤로 바꿀 수 없다는 성질입니다. 이더리움의 스마트 컨트랙트는 한 번 올리면 적힌 코드를 바꿀 수 없는 것이 기본 성질입니다 (DOI: 10.48550/arxiv.2304.03405, 프리프린트 서베이). 맡겨 둔 몫과 기록은 불릴 때마다 바뀌고, 바뀌지 않는 것은 코드입니다. 올린 뒤에는 보안 패치를 받을 수 없으니, 개발자들은 올리기 전에 단단한 보안 전략을 갖추라는 압력을 받습니다 (DOI: 10.1109/access.2020.2970495).

이 성질은 양쪽으로 작용합니다. 올린 컨트랙트는 무리한 상황만 아니면 바뀌지 않고 손댈 수 없으리라 기대되고, 2022년의 한 논문은 이것을 장점이자 결점이라고 부릅니다. 온전함과 투명함을 북돋우는 장점이고, 보안 패치와 기능 덧붙이기를 막는 결점입니다 (DOI: 10.48550/arxiv.2206.00716, 프리프린트).

만드는 사람들도 이 어려움을 꼽습니다. 스마트 컨트랙트 개발자 20명을 인터뷰하고 실무자 232명에게 설문으로 확인한 2019년 연구에서 드러난 어려움 가운데에는, 스마트 컨트랙트 코드의 안전을 보장할 효과적인 방법이 없다는 것과 개발 도구가 아직 아주 기초적이라는 것이 있었습니다. 연구진은 연구자와 실무자가 개발 경험을 낫게 할 방향을 몇 가지 내놓습니다 (DOI: 10.1109/tse.2019.2942301).

판단하는 사람이 없으니 코드에 남은 실수도 적힌 대로 실행되고, 한 번 올린 코드는 쉽게 고칠 수 없습니다.

틈이 있다는 것과 털렸다는 것

틈을 찾아 주는 자동 도구들은 서로 다른 답을 냅니다. 틈을 미리 표시해 둔 컨트랙트 69개에 도구 아홉 개를 돌리자, 아홉 도구를 다 합쳐도 잡아낸 틈은 42%였고 가장 정확한 도구 하나는 27%였습니다. 소스 코드가 공개된 이더리움 컨트랙트 47,518개 전부에 돌리자 97%가 틈이 있다고 표시됐고, 연구진은 이것이 틀린 경보가 상당히 많다는 뜻이라고 봤습니다. 네 개 이상의 도구가 함께 잡아낸 틈은 적었고, 그 종류도 두 가지였습니다. 2020년에 모두 42만 8천여 번의 분석을 돌린 비교 평가의 결과입니다 (DOI: 10.1145/3377811.3380364).

코드 감사는 컨트랙트를 장부에 올리기 전에 사람이나 도구가 코드를 읽어 틈을 찾는 일입니다. 위의 도구들은 그 일을 돕습니다. 2020년의 한 논문은 널리 쓰이는 탐지 도구 열 가지를 써도 알려진 틈이 여전히 남는다고 보고, 이것이 위험할 만큼 그릇된 안심을 준다고 경고하고, 권고와 앞으로의 연구 방향을 함께 내놓습니다 (DOI: 10.1109/access.2020.2970495).

형식 검증은 코드가 지켜야 할 성질을 수학의 말로 적어 두고, 코드가 그 성질을 지키는지를 증명으로 따지는 방법입니다. 스마트 컨트랙트의 보안 검증을 다룬 논문 53편을 추려 살핀 2019년의 서베이는, 형식 방법에 기댄 정확성 검증이 컨트랙트가 믿을 만하고 정확한지 따지는 더 중요하고 효과적인 방법이 됐다고 보고, 그 앞날이 밝다고 적습니다 (DOI: 10.1109/access.2019.2921624).

반대쪽 기록도 있습니다. 학계의 여섯 연구가 틈이 있다고 보고한 컨트랙트 23,327개를 따라가 보니, 올라간 뒤 실제로 털린 것은 1.98%였습니다. 털린 돈은 거기 걸려 있던 돈의 0.27%를 넘지 않았습니다. 연구진은 이 결과를 돈이 몇 안 되는 컨트랙트에 몹시 몰려 있었고 그 컨트랙트들은 실제로는 털 수 없는 것이었다는 데서 설명합니다 (arXiv:1902.06710, 2019년 arXiv 공개본). 그 설명이 틈이 있는 코드에 돈이 들어 있는 경우까지 덮지는 않습니다. 2016년의 모임에서 누군가 돈을 빼 간 일은 실제로 일어났고, 그 돈은 장부를 갈라 되돌리는 논쟁적인 투표를 거쳐서야 돌아왔습니다. 그 지갑 프로그램의 해킹이 낸 손실도 실제였습니다.

틈이 있다고 표시된 것과 실제로 털린 것 사이에는 거리가 있고, 틈을 찾는 도구들도 서로 다른 답을 냅니다.

고칠 수 있게 하면, 고칠 사람이 생깁니다

고장 난 컨트랙트에 갇혀 버린 돈이 수백만 달러어치에 이릅니다. 사람의 실수와 기술의 발전과 뒤늦게 발견되는 틈 때문에 올린 컨트랙트를 고칠 길이 필요해졌고, 이런 컨트랙트는 큰돈을 쥐고 있어 공격의 표적이 되기도 합니다 (DOI: 10.48550/arxiv.2304.03405, 프리프린트 서베이). 고친 판을 새 컨트랙트로 다시 올리는 길이 있지만, 새 판을 올리는 값과 옛 판을 없애는 값이 함께 듭니다. 그래서 올리기 전의 시험이 꼭 필요하고, 그 시험을 돕는 길도 여럿 나와 있습니다 (arXiv:2112.03426, 프리프린트 서베이).

업그레이드 가능한 컨트랙트는 올린 뒤에도 할 일을 적은 코드를 바꿔 끼울 수 있게 짠 컨트랙트입니다. 흔히 쓰는 방식이 프록시입니다. 프록시는 맡겨 둔 몫과 기록은 제가 들고, 할 일을 적은 코드는 다른 컨트랙트에서 가져와 돌리는 컨트랙트입니다. 가져올 코드를 바꾸면, 쓰는 사람이 부르는 주소는 그대로인 채 컨트랙트가 하는 일이 바뀝니다. 이렇게 짜 두면 뒤늦게 발견한 틈을 올린 뒤에도 메울 수 있습니다.

쓰는 사람 쪽에서 보면 이것은 위험이기도 합니다. 주소를 바꾸지 않고 컨트랙트를 바꾸는 이런 방식은 컨트랙트의 기능을 몰래 바꿔 돈을 잃게 할 수 있어서, 2024년의 한 연구는 이것이 잠재적인 위험을 키우고 쓰는 사람의 불신을 부른다고 보고 업그레이드의 까닭들을 정리해 개발 권고를 내놓습니다 (DOI: 10.1145/3643916.3644426).

그러면 누가 코드를 바꿔 끼우는가. 2022년에 이더리움에서 찾은 프록시 컨트랙트는 140만 개였고, 그 가운데 서로 다른 업그레이드 가능한 프록시는 8,225개였습니다. 그 8,225개 가운데 약 50%는 업그레이드를 열쇠 하나가 쥔 주소 하나가 다스렸습니다. 약 14%는 「내 코인은 어디에 있나」에서 본 다중서명 지갑이 다스렸고, 거기서는 몇 안 되는 사람이 컨트랙트가 하는 일 전체를 바꿀 수 있었습니다 (DOI: 10.48550/arxiv.2206.00716, 프리프린트).

새로 찍어 내거나 전송을 막거나 거둬 가는 권한처럼 코드에 남겨 둔 권한이 출구로 쓰인 경우는 「러그풀은 해킹이 아니라 권한이다」가 따로 봅니다.

고칠 수 있게 짠 컨트랙트에서는 고칠 열쇠를 쥔 사람이 새로 믿어야 할 자리가 되고, 고칠 수 없게 두면 틈을 메울 길이 없습니다.

겉모양과 투입구는 그대로인 거리의 우체통 뒷문을 열쇠 하나를 쥔 정비사가 열고, 안의 기계 부품을 새것으로 갈아 끼우는 모습. 앞에서 보는 사람에게는 아무것도 바뀌지 않은 것처럼 보인다.

장부는 바깥 세상을 모릅니다

「가가 10을 보내오면」은 장부 안의 일이라 증인들이 스스로 확인합니다. 「가에게 부친 물건이 닿으면」은 다릅니다. 스마트 컨트랙트는 혼자서는 바깥 세상의 자료에 닿지 못하고, 바깥의 자료원과 주고받아야 합니다. 오라클은 장부 바깥의 사실을 모아 스마트 컨트랙트에 넣어 주는 쪽입니다. 오라클이 오염되거나 악의적이거나 부정확한 자료를 넣어 줄 위험은 늘 있고, 한 리뷰는 이 위험을 덜려는 주요 오라클 방식들의 신뢰 장치를 견주고 남은 과제를 꼽습니다 (DOI: 10.1109/access.2020.2992698). 장부 안의 계산은 모든 증인이 되풀이해 확인하지만, 들어온 바깥 소식이 맞는지는 그 계산이 확인해 주지 못합니다. 가격을 알려 주는 쪽을 믿어야 하는 순간은 「스마트 컨트랙트는 바깥 세상을 모른다」가 따라갑니다.

장부 바깥의 사실은 누군가 들여와야 하고, 들여오는 쪽이 믿어야 할 자리가 됩니다.

이름은 계약이지만

은행도 변호사도 법원도 곧 필요 없어진다는 예측이 있었습니다. 대중 매체와 많은 기술 글에서 스마트 컨트랙트는 약속을 맺고 이행하고 집행하는, 치우침 없고 틀리지 않는 프로그램으로 그려졌습니다. 2017년의 한 법학 논문은 이 주장들을 시장의 현실과 블록체인의 기술적 한계에 맞대 보고, 스마트 컨트랙트를 거래 당사자를 전통적인 법·금융 제도의 굴레에서 풀어 주는 반쯤 신화적인 기술로 보기는 어렵다고 결론짓습니다 (DOI: 10.1080/17579961.2017.1378468).

법학자들이 물은 것은, 스마트 컨트랙트가 계약법이 다루는 문제에 더 나은 해법이냐였습니다. 한 연구진의 답은 두 쪽입니다. 스마트 컨트랙트는 새로운 가능성을 열고 상거래를 크게 바꿀 수 있으며 새로운 법적 대응을 요구할 것이다. 그러나 계약법을 밀어내지는 못한다. 연구진은 그 까닭을 따라가면 일이 틀어졌을 때 바로잡아 주는 제도로서 계약법의 몫이 드러나고, 그래서 스마트 컨트랙트는 계약법을 없애기보다 그 몫을 더 환히 비춘다고 봅니다 (DOI: 10.5040/9781509937059.ch-001, 법학 논증).

계약이 실제로 쓰이는 모습에서 출발한 논증도 있습니다. 사람들은 집행되지 않을 조항을 넣기도 하고, 일부러 흐릿하게 남겨 두기도 하고, 집행할 수 있는 조항을 굳이 집행하지 않기도 합니다. 2017년의 한 논문은 스마트 컨트랙트가 법이 하는 일을 얇게 이해한 데 기대고 있다고 비판합니다. 그 논문은 계약을 관계를 꾸리는 사회적 자원으로 보고, 스마트 컨트랙트가 설계상 들여오는 경직성이 법의 이런 사회적 쓰임을 끊을 수 있다고 주장합니다. 저자는 스마트 컨트랙트에 사회 정의와 공정에 이바지할 만한 특징도 있다고 보면서, 그것을 논의하고 만들고 쓸 때 계약의 사회적·관계적 맥락을 꼭 살펴야 한다고 제안합니다 (DOI: 10.17351/ests2017.107).

법과 기술이 부딪치는 자리를 실무 쪽에서 본 연구도 있습니다. 문헌과 정보기술·법·산업 전문가 30명의 인터뷰를 묶은 2020년 연구는, 스스로 집행되고 실행된다는 이런 계약이 법 실무를 이해하고 굴리는 방식을 근본부터 바꿀 수도 있다고 보면서, 스마트 컨트랙트도 여전히 일반 법 체계의 테두리 안에 있다고 봅니다. 가능성을 시험한 사례는 많았지만 큰 규모로 실제 쓰인 경우는 아직 아주 적었고, 연구진은 더딘 확산의 주요 원인을 법이 요구하는 것과 정보기술이 할 수 있는 것 사이의 어긋남에서 찾았습니다. 연구진은 스무 가지 문제마다 처방을 내고 정보시스템 연구가 스마트 컨트랙트를 발전시키는 데 중요한 몫을 할 수 있다고 보면서, 경영과 조직의 문제가 계속 걸림돌로 남을 수 있다고 적습니다 (DOI: 10.1177/0268396220924669).

이 절의 문헌들은 스마트 컨트랙트가 당사자를 법의 테두리 밖으로 데려가지 못한다고 보고, 그중 한 연구진은 스마트 컨트랙트가 일이 틀어졌을 때 바로잡는 계약법의 몫까지 대신하지는 못한다고 결론짓습니다.

한 줄짜리 약속을 올려 보면

「내 코인은 어디에 있나」에서 코인을 두 곳에 나눠 둔 그 사람을 다시 불러오겠습니다. 이 사람이 가와 약속을 하나 맺고, 그 약속을 코드로 적어 장부에 올립니다. 「가가 10을 보내오면, 맡겨 둔 5를 가에게 넘긴다.」 이 사람은 5를 컨트랙트에 맡기고, 올리는 값으로 수수료를 치릅니다.

가가 10을 보내면 이 거래가 그 줄을 불러냅니다. 증인들은 저마다 코드를 돌리고, 같은 입력이니 같은 답을 내고, 그 결과에 합의합니다 (DOI: 10.1109/access.2020.2992698). 5가 가에게 넘어갑니다. 올린 코드가 그대로인 한 이 사람은 중간에 마음을 바꿔 발을 뺄 수 없고 (DOI: 10.1109/access.2019.2921624), 가는 이 사람이 약속을 지킬지를 따로 믿지 않아도 됩니다. 약속을 지키게 만드는 문제를 푸는 것, 앞에서 본 이점이 이것입니다.

이제 이 사람이 조건을 잘못 적었다고 해 보겠습니다. 「10을 보내오면」이 「1을 보내오면」으로 적혔습니다. 적힌 대로 실행된다는 정의를 대 보면, 잘못 적힌 조건도 그대로 실행됩니다. 증인들은 이 사람이 10을 뜻했다는 것을 알 길이 없어서, 가가 1을 보내와도 적힌 대로 5를 넘기게 됩니다. 올린 코드는 바꿀 수 없으니 이 틈은 그대로 남습니다 (DOI: 10.48550/arxiv.2304.03405, 프리프린트 서베이).

앞에서 본 도구 비교와 1.98%는 도구가 찾는 유형의 틈을 센 결과입니다 (DOI: 10.1145/3377811.3380364; arXiv:1902.06710). 적은 사람의 뜻과 적힌 숫자가 어긋난 이런 틈을 도구가 잡는지는 그 연구들이 말하지 않습니다. 가가 1을 보내올지는 이 장면이 정할 수 없습니다. 그렇게 되면 이 사람이 적은 코드 안에는 결과를 되돌릴 자리가 없고, 코드 바깥에서 무엇이 이 일을 바로잡을 수 있는지는 나라와 사정에 따라 달라서 이 글이 다루지 않습니다.

다음 약속은 물건입니다. 이 사람이 가에게 물건을 팔기로 하고, 「가가 맡겨 둔 10을, 물건이 가에게 닿으면 이 사람에게 넘긴다」고 적습니다. 10은 장부 안에 있지만 물건이 닿았는지는 장부 바깥의 일이라, 누군가 「닿았다」를 넣어 줘야 합니다. 그 오라클이 틀린 소식을 넣으면 증인들은 그 소식을 확인할 길이 없고, 코드는 들어온 대로 10을 넘깁니다. 오라클이 오염되거나 악의적이거나 부정확한 자료를 넣을 위험은 늘 있습니다 (DOI: 10.1109/access.2020.2992698).

마지막으로 이 사람이 틈을 발견하고 고치고 싶어졌다고 해 보겠습니다. 고친 판을 새로 올릴 수 있지만 새 판을 올리는 값과 옛 판을 없애는 값이 함께 들고 (arXiv:2112.03426), 가에게도 새 판이 어디 있는지 알려야 합니다. 처음부터 프록시로 짜 두었다면 할 일을 적은 코드를 바꿔 끼워 틈을 메울 수 있습니다. 그때 고칠 열쇠는 누가 쥐는가. 이 사람이 혼자 쥐면 2022년에 센 업그레이드 가능한 프록시의 약 50%와 같은 모양이 됩니다. 「내 코인은 어디에 있나」의 다중서명처럼 열쇠 여럿을 이 사람이 모두 쥐어도, 가 쪽에서 보면 한 사람이 쥔 것과 같습니다. 다른 몇 사람과 다중서명으로 나눠 쥐면 약 14%와 같은 모양이 되는데, 그때도 몇 안 되는 사람이 컨트랙트가 하는 일 전체를 바꿀 수 있습니다 (DOI: 10.48550/arxiv.2206.00716, 프리프린트). 열쇠를 쥔 쪽은 부르는 주소를 그대로 둔 채 컨트랙트가 하는 일을 바꿀 수 있고, 그 변화는 쓰는 사람에게 손실이 될 수 있습니다 (DOI: 10.1145/3643916.3644426). 그 열쇠가 틈을 메우는 길이면서, 동시에 가가 새로 믿어야 할 자리입니다.

장면을 모아 보면, 코드를 바꿀 열쇠가 아무에게도 없는 동안에는 가가 이 사람이 중간에 마음을 바꾸지 않으리라는 것을 따로 믿지 않아도 됐습니다. 이 사람이 고칠 열쇠를 쥐면 가는 바로 그것을 다시 믿어야 합니다. 증인들이 보증한 것은 그때 적혀 있는 코드가 적힌 대로 실행된다는 것이고, 이것은 가운데 사람 없이 얻었습니다. 그 대신 두 사람은 무엇이 적혔는지, 누가 그것을 바꿀 수 있는지, 바깥에서 무엇이 들어오는지를 여전히 누군가에게 기대야 했습니다. 잘못 적힌 조건은 적은 사람을 다치게 할 수 있고, 바꿔 끼울 열쇠와 틀린 바깥 소식은 가를 다치게 할 수 있습니다. 믿어야 할 곳은 사라지지 않고, 코드와 그 코드를 쓴 사람, 고칠 열쇠를 쥔 사람, 바깥 소식을 들여오는 쪽으로 옮겨 갑니다. 이 문장은 앞의 근거들을 이 글이 묶은 것입니다.

한 줄짜리 약속을 장부에 올려 본 장면을 네 컷으로 그린 삽화. 가가 10을 보내면 증인들이 저마다 코드를 돌리고 같은 답을 내 5가 가에게 넘어간다. 조건을 잘못 적어도 적힌 대로 실행된다. 물건이 닿았는지는 장부 바깥의 일이라 누군가 들여와야 한다. 고칠 열쇠가 아무에게도 없는 동안에는 믿지 않아도 됐지만, 이 사람이 열쇠를 쥐면 가는 바로 그것을 믿어야 한다.

어디를 더 볼까

이 글로 「블록체인 첫걸음」이 끝납니다. 다음 묶음 「돈이 되는 순간 무너진 것들」의 여섯 편은 스마트 컨트랙트를 안다고 치고 시작하고, 저마다 이 글의 한 자리에서 이어집니다.

적힌 대로 실행된다는 보장이 무엇을 보장하지 않는지는 코드는 약속대로 작동했다 — 알고리즘 스테이블코인이 보장한 것과 보장하지 못한 것이 봅니다. 값을 스스로 지키겠다고 코드에 적어 둔 조건이 그대로 작동하면서도 무너진 경우입니다.

장면의 물건 대신 가격을 들여올 때, 그 가격을 장부 바깥에서 가져오든 장부 안의 거래에서 읽든 알려 주는 쪽을 믿어야 하는 일은 스마트 컨트랙트는 바깥 세상을 모른다 — 가격을 알려주는 자를 믿어야 하는 순간이 따라갑니다. 이 글의 오라클 한 문단이 그 편의 출발점입니다.

새로 찍어 내거나 전송을 막거나 거둬 가는 권한처럼 코드에 남겨 둔 권한이 출구로 쓰인 경우와, 그런 권한이 정상 운영에도 쓰인다는 양면성은 러그풀은 해킹이 아니라 권한이다 — 코드에 남겨 둔 출구, 그리고 그것을 미리 재려는 시도가 다룹니다.

증인들이 장부 하나 안에서 서 주던 보장이 장부와 장부 사이로 넘어갈 때는 다리는 체인의 보장을 물려받지 않는다 — 크로스체인 브리지는 왜 반복해서 털리는가가 봅니다.

2016년의 그 모임처럼 표로 굴러가는 조직에서, 규칙을 바꾸는 표 자체를 사는 일은 규칙을 바꿀 권한도 살 수 있다 — 토큰 투표로 굴러가는 조직에서 거버넌스가 공격 표면이 될 때가 다룹니다.

모든 증인이 같은 계산을 되풀이하는 값을 덜려고 실행을 장부 바깥으로 옮기는 설계, 그리고 거기서 다시 나타나는 고칠 열쇠의 물음은 L2는 정말 이더리움만큼 안전한가 — 롤업이 물려받는 것과 물려받지 않는 것이 봅니다.

근거 논문

프리프린트·서베이·법학 논증·단일 연구는 본문에서 등급이나 연구 설계를 밝혔다.

  • "Understanding a Revolutionary and Flawed Grand Experiment in Blockchain" (2018) — DOI: 10.4018/jcit.2019010102 — 2016년 봄 이더리움 위의 The DAO. 투자자가 표결로 벤처에 투자, 거래는 자율 실행. 1억 6,800만 달러 중 5,000만 달러 이상 탈취로 곧 실패. 커뮤니티가 투표로 해킹 이전 상태로 되돌려(포크) 투자자에게 반환·DAO 폐쇄. 이것은 구제라고 볼 여지가 있고 장부 불변성과 「code is law」 정신을 어겼다(arguably) — 2008년 은행 구제에 대한 반발로 태어난 비트코인과의 아이러니.
  • "Formalizing and Securing Relationships on Public Networks" (1997) — DOI: 10.5210/fm.v2i9.548 — 스마트 컨트랙트는 프로토콜과 사용자 인터페이스를 묶어 망 위의 관계를 형식화·보호한다. 암호 등으로 알고리즘으로 명세 가능한 관계를 당사자 위반과 제3자 도청·방해로부터 지킬 수 있으나 시간·UI·알고리즘 명세의 완전성이라는 한계까지다. 신용·콘텐츠 권리·결제 등 적용.
  • "Making Smart Contracts Smarter" (2016) — DOI: 10.1145/2976749.2978309 — 비트코인과 이더리움은 거래 처리 규칙·스크립트를 적는 기능을 지원하고, 이것이 블록체인 위에서 도는 온전한 프로그램으로서의 스마트 컨트랙트로 발전. 이더리움에서 수만 개 컨트랙트가 수백만 달러어치를 보유(초록 첫머리만 확보).
  • "Smart Contract Development: Challenges and Opportunities" (2019) — DOI: 10.1109/tse.2019.2942301 — 원래 법적 계약 자동화 일반을 가리키던 용어가 블록체인 위 저수준 코드 스크립트로 쓰임. 개발자 20명 인터뷰 + 실무자 232명 설문: 코드 안전을 보장할 효과적 방법 없음, 도구 기초적, 언어·VM 한계, 자원 제약 성능, 온라인 자료 부족. 개선 방향 제시.
  • "Trustworthy Blockchain Oracles: Review, Comparison, and Open Research Challenges" (2020) — DOI: 10.1109/access.2020.2992698 — 스마트 컨트랙트의 본질은 실행 결과를 모든 실행 노드가 믿고 합의하는 탈중앙 실행. 스스로는 외부 데이터에 접근 못 하고 오라클이 모아 넣어 줌. 오라클이 오염·악의·부정확 데이터를 줄 위험은 늘 있다. 신뢰 특성 비교와 열린 과제.
  • "A Survey on Security Verification of Blockchain Smart Contracts" (2019) — DOI: 10.1109/access.2019.2921624 — 코드가 실행하므로 어느 쪽도 물러설 수 없다(trustless execution). 공격으로 큰 손실. 관련 논문 53편 서베이·분류, 형식 방법에 기댄 정확성 검증이 더 중요하고 효과적인 방법이 됐으며 앞날이 밝다고 결론.
  • "Smart Contracts and Decentralized Finance" (2023, 서베이) — DOI: 10.1146/annurev-financial-110921-022806 — 약속 문제를 넘는 등의 이점, 외부 정보 접근과 법적 집행 통합의 어려움, 믿을 중개자 부재가 구현 비용을 부풀림. 디파이 응용 개관.
  • "Formal Verification of Smart Contracts" (2016) — DOI: 10.1145/2993600.2993611 — 이더리움의 개방성 때문에 프로그램과 가명 사용자가 다른 프로그램의 공개 메서드를 불러 믿을 코드와 못 믿을 코드가 위험하게 엮일 수 있고, 안전한 컨트랙트 작성은 매우 어려울 수 있다. TheDAO 공격은 EVM 의미론의 미묘한 세부를 파고들어 약 5,000만 달러어치를 옮겼다.
  • "Reentrancy Vulnerability in the Blockchain Ecosystem: Historical Attacks, Detection Approaches, and Mitigation Strategies" (2025) — DOI: 10.1109/netcrypt65877.2025.11102145 — 재진입은 첫 함수 호출이 끝나기 전에 함수를 반복 호출하게 하는 취약점. 2016년 DAO 공격이 가장 악명 높은 사례. 탐지·예방 기법 논의, 완화가 중요하다고 결론.
  • "Smart Contract: Attacks and Protections" (2020) — DOI: 10.1109/access.2020.2970495 — 불변성 때문에 올린 뒤 보안 패치 불가 → 배포 전 강한 보안 전략 요구. DAO·Parity 지갑 해킹은 단순한 버그로 수백만 달러 손실. 공격 4범주·주요 공격 기법 7가지 분석. 널리 쓰이는 탐지 도구 10가지를 써도 알려진 취약점이 남아 위험한 그릇된 안심을 준다. 권고와 향후 연구.
  • "A Comprehensive Survey of Upgradeable Smart Contract Patterns" (2023, 프리프린트) — DOI: 10.48550/arxiv.2304.03405 — 이더리움 컨트랙트는 한 번 올리면 바꿀 수 없음. 사람의 실수·기술 발전·새 취약점 때문에 업그레이드 필요, 큰돈을 쥐어 공격 표적, 과거 공격의 큰 손실과 고장 난 컨트랙트에 갇힌 수백만 달러. 프록시 패턴 카탈로그, 약 10만 검증 컨트랙트 분석 중 기존 탐지의 약 70%가 오탐.
  • "Not so immutable: Upgradeability of Smart Contracts on Ethereum" (2022, 프리프린트) — DOI: 10.48550/arxiv.2206.00716 — 배포된 컨트랙트는 합리적 상황에서 불변·변조 불가로 기대되며 이는 장점(온전성·투명성)이자 결점(보안 패치·기능 갱신 차단). 6가지 업그레이드 패턴. 프록시 140만 개 중 고유 업그레이드 가능 프록시 8,225개, 약 50%는 단일 EOA가, 약 14%는 다중서명 지갑이 통제해 소수가 로직 전체를 바꿀 수 있다.
  • "Empirical review of automated analysis tools on 47,587 Ethereum smart contracts" (2020) — DOI: 10.1145/3377811.3380364 — 자동 분석 도구 9개를 주석 달린 취약 컨트랙트 69개와 이더스캔 소스 공개 컨트랙트 47,518개에 적용(분석 428,337회). 주석 데이터의 취약점 중 전체 도구가 잡은 것은 42%, 최고 정확도 Mythril 27%. 대형 데이터에서 97%가 취약으로 표시 — 오탐이 상당하다는 시사. 4개 이상 도구가 동시에 잡은 취약점은 적고 두 범주뿐.
  • "Smart Contract Vulnerabilities: Vulnerable Does Not Imply Exploited" (2019, arXiv 공개본 v5) — arXiv:1902.06710 — 학술 연구 6개가 보고한 취약 컨트랙트 23,327개 중 배포 이후 실제 악용은 1.98%, 걸린 300만 ETH의 0.27% 이하. 자금이 실제로는 악용할 수 없는 소수 컨트랙트에 몰려 있다는 것으로 설명.
  • "A Survey of Verification, Validation and Testing Solutions for Smart Contracts" (2021, 프리프린트 서베이) — arXiv:2112.03426 — 배포 후 수정 불가, 새 버전 배포로만 가능하며 새 컨트랙트 배포·옛 컨트랙트 파기 비용이 든다. 그래서 배포 전 테스트가 필수. 테스트 네트워크·보안 분석 도구·에뮬레이터·시뮬레이터로 분류, 장단점.
  • "The Sword of Damocles: Upgradeable Smart Contract in Ethereum" (2024) — DOI: 10.1145/3643916.3644426 — 주소를 바꾸지 않고 컨트랙트를 바꾸는 업그레이드는 기능을 몰래 바꿔 손실을 부를 수 있어 위험을 키우고 불신을 부른다. 프록시 탐지(F1 99.37%)로 첫 1,200만 블록에서 업그레이드 가능 컨트랙트 126,500개. 메타모픽 방식으로 업그레이드된 것의 64.3%는 악성 MEV 봇. 업그레이드 이유 정리와 개발 권고.
  • "Smart contracts: terminology, technical limitations and real world complexity" (2017, 법학) — DOI: 10.1080/17579961.2017.1378468 — 대중 매체와 기술 글은 스마트 컨트랙트를 은행·변호사·법원을 대체할 치우침 없고 틀리지 않는 프로그램으로 그린다. 용어 정리와 기술적·법적 제약 검토 결과, 당사자를 전통 법·금융 제도의 굴레에서 해방하는 반쯤 신화적인 기술로 보기 어렵다.
  • "Contracts: Ex Machina" (2021, 단행본 장·법학) — DOI: 10.5040/9781509937059.ch-001 — 스마트 컨트랙트가 계약법이 다루는 문제에 더 나은 해법인가. 새 가능성을 열고 상거래를 크게 바꿀 수 있으며 새 법적 대응을 요구하지만, 계약법을 대체하지 못한다. 그 까닭이 구제 제도로서 계약법의 본질적 역할을 드러내며, 스마트 컨트랙트는 계약법을 없애기보다 그 역할을 비춘다.
  • "Book-Smart, Not Street-Smart: Blockchain-Based Smart Contracts and The Social Workings of Law" (2017, 법·사회 연구) — DOI: 10.17351/ests2017.107 — 일부 특징은 사회 정의·공정에 이바지할 수 있으나 법이 하는 일에 대한 얇은 이해에 기댄다. 집행 불가 조항·의도적 불명확 조항·집행 가능 조항의 비집행이라는 세 관행. 설계상 경직성이 법의 사회적 쓰임을 끊을 수 있어, 사회적·관계적 맥락을 논의·개발·배포에서 살펴야 한다.
  • "Is code law? Current legal and technical adoption issues and remedies for blockchain-enabled smart contracts" (2020) — DOI: 10.1177/0268396220924669 — 문헌과 IT·법·산업 전문가 30명 인터뷰. 타당성 시험은 많으나 대규모 구현은 아주 적다. 느린 채택의 주요 원인은 법적 요구와 IT 역량의 불일치. 스마트 컨트랙트는 일반 법 체계의 테두리 안에 있다. 세 수준 20가지 문제와 처방, 경영·조직 문제가 계속 걸림돌일 수 있다.
📚 블록체인 첫걸음 — 봉인과 열쇠, 그리고 증인
5 / 5
  1. 1.열쇠와 자물쇠 — 공개키는 왜 공개해도 안전한가
  2. 2.블록체인이란 무엇인가 — 아무도 관리하지 않는 장부가 성립하는 이유
  3. 3.장부에 한 줄 적을 권리 — 채굴과 스테이킹은 실제로 무엇을 사는 일인가
  4. 4.내 코인은 어디에 있나 — 지갑과 거래소, 그리고 열쇠를 누가 쥐는가
  5. 5.스마트 컨트랙트란 무엇인가 — 모두가 똑같이 돌리고, 적힌 대로 실행되는 약속
← 이전 글내 코인은 어디에 있나 — 지갑과 거래소, 그리고 열쇠를 누가 쥐는가

이 글은 AI가 연구 논문을 바탕으로 작성한 교육·정보 제공용 콘텐츠이며, 전문가의 조언을 대체하지 않습니다. 오류를 발견하셨나요? 알려주세요

© 2026 네오쿤스(Paperis) · 링크 공유는 환영합니다. 전문 전재·재배포는 사전 허가가 필요합니다.