스마트 콘트랙트란 무엇인가요?
스마트 콘트랙트는 이더리움 네트워크의 필수적인 부분입니다. 강력한 스마트 콘트랙트 기술과 더불어 왜 이것이 혁신적일 수 있는지 알아볼까요?
1990년대 닉 자보(Nick Szabo)가 처음으로 스마트 콘트랙트에 대해 기술했습니다. 당시 그는 스마트 콘트랙트를 사용자 인터페이스와 프로토콜을 결합해 컴퓨터 네트워크를 공식화하고 보호하는 하나의 도구라고 정의했습니다. 자보는 신용 시스템, 결제 처리, 콘텐츠 저작권 관리와 같이 계약적 합의를 필요로 하는 다양한 분야에서 스마트 콘트랙트의 잠재적 사용 사례를 논의했습니다.
가상자산의 세계에서 우리는 스마트 콘트랙트를 블록체인상에서 작동하는 하나의 애플리케이션 또는 프로그램이라 정의할 수 있습니다. 일반적으로 이는 일련의 특정 규칙에 의해 시행되는 디지털상의 합의로 기능합니다. 해당 규칙들은 컴퓨터 코드에 의해 사전 정의되어 있으며, 모든 네트워크 노드에 의해 반복되고 실행됩니다.
핵심적인 것은 블록체인 스마트 콘트랙트를 통해 신뢰가 필요 없는 프로토콜을 생성할 수 있다는 것입니다. 이는 두 당사자가 서로가 누구인지 알거나 신뢰할 필요 없이 블록체인을 통해 약속할 수 있음을 의미합니다. 이들은 특정 조건이 충족되지 않으면, 계약[콘트랙트]이 실행되지 않음을 확신할 수 있습니다. 이 외에도 스마트 콘트랙트를 사용하면 중개자가 필요하지 않기 때문에, 운영 비용을 크게 낮출 수 있습니다.
비트코인 프로토콜이 수년간 스마트 콘트랙트를 지원해 왔음에도 불구하고, 이는 이더리움의 창시자이자 공동 설립자인 비탈릭 부테린(Vitalik Buterin)에 의해 유명해졌습니다. 한 가지 알아둘 것은 각 블록체인은 서로 다른 방법으로 스마트 콘트랙트를 구현할 수 있다는 것입니다.
해당 아티클은 이더리움 블록체인의 핵심적인 부분인 이더리움 가상 머신(Ethereum Virtual Machine)에서 작동하는 스마트 콘트랙트를 중점적으로 다룰 것입니다.
어떻게 작동하나요?
간단히 말해 스마트 콘트랙트는 결정론적 프로그램으로 작동합니다. 이는 특정 조건이 충족될 때 특정한 일을 수행합니다. 스마트 콘트랙트 시스템은 보통 "if...then..." 진술을 따릅니다. 스마트 콘트랙트라는 용어는 널리 알려져 있지만, 법적 계약은 아니며 스마트한 계약도 아닙니다. 이는 단지 분산화된 시스템(블록체인)에서 작동하는 코드의 일부입니다.
이더리움 네트워크상에서 스마트 콘트랙트는 사용자들(주소들)이 상호작용할 때 발생하는 블록체인 작업을 실행하거나 관리하는 역할을 합니다. 스마트 콘트랙트가 아닌 모든 주소를 외부 소유 계정(EOA)이라 합니다. 따라서 스마트 콘트랙트는 컴퓨터 코드에 의해 제어되며, 외부 소유 계정은 사용자에 의해 제어됩니다.
기본적으로 이더리움 스마트 콘트랙트는 콘트랙트 코드와 두 개의 공개 키로 구성됩니다. 첫 번째 공개 키는 콘트랙트 작성자가 제공한 키입니다. 다른 키는 콘트랙트 자체를 나타내며, 각 스마트 콘트랙트의 고유한 디지털 식별자 역할을 합니다.
블록체인 트랜잭션을 통해 생성된 모든 스마트 콘트랙트는 외부 소유 계정(또는 다른 스마트 콘트랙트)에 의해 호출될 때만 활성화될 수 있습니다. 그러나 첫 번째 실행은 언제나 외부 소유 계정(사용자)에 의해 이뤄집니다.
주요 특징
이더리움 스마트 콘트랙트는 보통 다음과 같은 특징을 갖습니다.
분산성. 스마트 콘트랙트는 모든 이더리움 네트워크 노드에 의해 복제되고 배포됩니다. 이는 중앙 집중형 서버를 기반으로 하는 솔루션과의 주된 차이점 중 하나입니다.
결정론적. 스마트 콘트랙트는 요구 조건을 만족할 때만 설계된 작업을 수행합니다. 또한 누가 실행하든 결과는 항상 같을 것입니다.
자율성. 스마트 콘트랙트를 통해 모든 종류의 작업을 자동화할 수 있습니다. 그러나 대부분의 경우 스마트 콘트랙트가 실행되지 않으면 "휴면" 상태 속에서 어떠한 작업도 수행하지 않습니다.
불변성. 스마트 콘트랙트는 배포 후 변경할 수 없습니다. 스마트 콘트랙트는 특정 기능이 사전에 구현된 경우에만 "삭제"할 수 있습니다. 따라서 우리는 스마트 콘트랙트가 변조 방지 코드를 제공한다고 말할 수 있습니다.
사용자 정의 가능성. 스마트 콘트랙트는 배포 전, 여러 방법으로 코딩할 수 있습니다. 따라서 다양한 종류의 분산화된 애플리케이션(DApps) 을 만드는 데 사용할 수 있습니다. 이는 이더리움이 튜링 완전 블록체인이라는 사실과 관련됩니다.
신뢰의 불필요성. 두 당사자 혹은 그 이상이 스마트 콘트랙트를 통해 서로를 알지 못하거나 신뢰하지 않고도 상호작용할 수 있습니다. 또한 블록체인 기술은 데이터 정확성을 보장합니다.
투명성. 스마트 콘트랙트는 공개 블록체인에 기반하기 때문에, 소스 코드는 불변할 뿐만 아니라 누구에게나 공개되어 있습니다.
스마트 콘트랙트를 변경하거나 삭제할 수 있나요?
이더리움 스마트 콘트랙트가 활성화된 이후 새로운 기능을 추가하는 것은 불가능합니다. 그러나 생성자가 SELFDESTRUCT라 하는 기능을 코드에 포함했다면, 향후 스마트 콘트랙트를 "삭제"할 수 있으며, 새로운 것으로 변경할 수 있습니다. 그러나 해당 기능이 코드에 사전 포함되지 않았다면, 이를 삭제할 수 없습니다.
특히, 이른바 업그레이드 가능한 스마트 콘트랙트는 콘트랙트 불변성에 대해 개발자가 보다 높은 유연성을 갖게 합니다. 여러 방법을 통해 다양한 수준의 복잡한 특징들과 함께 업그레이드 가능한 스마트 콘트랙트를 생성할 수 있습니다.
간단한 예로, 하나의 스마트 콘트랙트가 다수의 작은 콘트랙트로 나눠져있다고 해보겠습니다. 이들 중 일부는 변할 수 없도록 설계되어 있는 반면, 다른 것들은 "삭제" 기능을 사용할 수 있습니다. 이는 일부 코드(스마트 콘트랙트)가 삭제되거나 교체될 수 있는 반면, 다른 기능들은 온전함을 의미합니다.
장점과 사용 사례
스마트 콘트랙트는 프로그래밍 가능한 코드로서 사용자 정의가 가능하며, 다양한 서비스와 솔루션을 제공하는 동시에 매우 다양한 방법으로 설계될 수 있습니다.
탈중앙화되고 스스로 실행되는 프로그램으로서 스마트 콘트랙트는 보다 높은 투명성을 제공하고 운영 비용을 절감시킬 수 있습니다. 구현 방법에 따라 효율성을 높이고 관료적 비용을 절감시킬 수도 있습니다.
스마트 콘트랙트는 특별히 두 당사자 혹은 그 이상의 당사자가 자금을 전송하거나 교환할 때 유용할 수 있습니다.
즉, 스마트 콘트랙트는 매우 다양한 사용 사례를 위해 설계될 수 있습니다. 몇 가지 예로는 토큰화된 자산 생성, 투표 시스템, 가상자산 지갑, 탈중앙화된 거래소, 게임, 모바일 애플리케이션이 있습니다. 또한 의료, 자선재단, 공급망, 거버넌스, 탈중앙화 금융(DeFi)과 같은 분야에 대한 블록체인 솔루션과 함께 실행될 수 있습니다.
ERC-20
이더리움 블록체인상에서 발행된 토큰은 ERC-20이라 알려진 표준을 따릅니다. 해당 기준은 모든 이더리움 기반 토큰의 핵심 기능들을 구성합니다. 이러한 디지털 자산을 보통 ERC-20 토큰이라 하며, 이는 현 가상자산의 상당 부분을 차지하고 있습니다.
많은 블록체인 회사들과 스타트업은 이더리움 네트워크상에서 디지털 토큰을 발행하기 위해 스마트 콘트랙트를 구현했습니다. 발행 이후 대다수 회사들은 자신들의 ERC-20 토큰을 ICO(Initial Coin Offering)를 통해 유통시킵니다. 대부분의 경우, 스마트 콘트랙트를 사용하면 신뢰가 필요 없고 효율적인 방식으로 자산을 교환하고, 토큰을 유통할 수 있습니다.
한계
스마트 콘트랙트는 사람이 작성한 컴퓨터 코드로 구성됩니다. 해당 코드는 취약할 수 있고, 버그가 있을 수 있기 때문에 수많은 위험을 초래할 수 있습니다. 이상적으로 말하자면 경험이 많은 프로그래머가 코드를 쓰고 구현해야 하며, 특별히 민감한 정보 또는 막대한 양의 돈이 연관될 때는 더욱 그렇습니다.
그 외에도 누군가는 중앙화된 시스템이 스마트 콘트랙트가 제공하는 해결책과 기능을 제공할 수 있다고 주장합니다. 주된 차이점은 스마트 콘트랙트는 중앙화된 서버가 아닌 분산화된 P2P 네트워크에서 작동한다는 것입니다. 또한 이들은 블록체인 시스템에 기반하기 때문에 불변하거나 변경하기가 무척이나 힘든 경향이 있습니다.
불변성은 특정 상황에서는 무척 좋을 수 있지만, 다른 경우에는 무척 좋지 않을 수 있습니다. 예를 들어, 2016년 탈중앙화 자치 조직(DAO) "The DAO"가 해킹을 당했을 때, 스마트 콘트랙트 코드의 결점으로 수백만 이더(ETH)를 도난당했습니다.
그들의 스마트 콘트랙트가 불변하는 것이었기 때문에, 개발자는 코드를 수정할 수 없었습니다. 이는 결국 하드 포크로 이어졌고, 두 번째 이더리움 체인을 탄생시켰습니다. 간단히 말해, 하나의 체인이 해킹을 "되돌리고", 정당한 소유자에게 자금을 돌려줬습니다(이는 현 이더리움 블록체인의 일부입니다). 다른 체인은 해킹에 개입하지 않기로 했고, 블록체인 상에서 일어난 일은 절대로 변경되어서는 안된다고 주장했습니다(해당 체인은 현재의 이더리움 클래식입니다).
한 가지 주목할 것은 해당 문제가 이더리움 블록체인에서 비롯된 것이 아니라는 점입니다. 대신에 이는 불완전한 스마트 콘트랙트 구현에 의해 발생했습니다.
스마트 콘트랙트의 또 다른 한계는 불확실한 법적 상황과 관련됩니다. 스마트 콘트랙트는 대부분 국가에서 회색지대에 있을뿐더러, 오늘날 법 체계에도 들어맞지 않기 때문입니다.
예를 들면, 많은 계약들은 두 당사자를 적절히 식별하고 18세 이상일 것을 요구합니다. 블록체인 기술을 통해 가능한 익명성과 더불어 중개자가 없다는 사실은, 해당 요건들을 위태롭게 할 수 있습니다. 이에 대한 잠재적인 해결책이 있기는 하지만, 특별히 국경이 없는 분산화된 네트워크에 대해 스마트 콘트랙트를 법적으로 시행하는 것은 어려운 일입니다.
비판
일부 열렬한 블록체인 지지자들은 스마트 콘트랙트가 머잖아 우리의 상업, 관료 시스템의 상당한 부분을 대체하고 자동화할 해결책으로 보고 있습니다. 가능한 현실이긴 하지만, 보편화되기는 쉽지 않을 것입니다.
스마트 콘트랙트는 분명 흥미로운 기술 중 하나입니다. 그러나 분산화되고, 결정론적이며, 투명하고, 다소 불변적인 특징은 일부 상황에서는 그다지 매력적이지 않을 수 있습니다.
기본적으로 비판은 스마트 콘트랙트는 많은 현실 문제에 적합한 해결책이 아니라는 사실에 기반하고 있습니다. 실제로 일부 조직들은 기존의 서버 중심 대안을 사용하는 것이 유리합니다.
스마트 콘트랙트와 비교할 때 중앙화된 서버는 유지하기 간편하고 저렴하며, 속도 및 크로스-네트워크 커뮤니케이션(상호운용성) 측면에서 더 높은 효율성을 제공하곤 합니다.
마치며
스마트 콘트랙트가 가상자산 세계에 큰 영향을 끼쳤으며, 블록체인 영역에 혁신을 가져왔다는 것은 의심할 여지가 없습니다. 최종 사용자가 스마트 콘트랙트와 직접적으로 상호작용하지 않을 수 있지만, 스마트 콘트랙트는 향후 금융 서비스에서부터 공급망 관리에 이르기까지, 다양한 분야의 애플리케이션의 추동력이 될 수 있습니다.
스마트 콘트랙트와 블록체인 모두 우리 사회 대부분의 영역을 뒤흔들 수 있습니다. 그러나 이러한 획기적인 기술이 대규모로 채택되기 위한 많은 장벽들을 넘을 수 있을지는 시간이 지나야만 알 수 있을 것입니다.