[공부하자! 블록체인] 6. 스마트계약(SmartContract)에 대해
블록체인에서 통화 교환은 송금과 통화 보관을 자동 이행 계약의 모든 것이라고 합니다. 블록을 채굴하는 노드에서 수수료가 발생하지만, 사림이 들어가는 것은 아닙니다.
비트코인은 원래 구상대로 통화의 교환으로 사용되어 왔지만, 블록체인이 가지는 변조 방지 특성에 주목한 사용자는 다양한 응용이 가능하다고 봅니다. 예로, 저작권, 소유권등의 정보를 블록체인에 포함시켜 그 시점에서 누가 그 권리를 가지고 있는지를 명확하게 증명할 수 있습니다. 또한, 해당 권리의 매매나 교환에 대한 정보를 블록체인에 저장하며, 누구로부터 누구에게 소유권이 이동했는지가 명확해 집니다. 소유권의 일련의 변화를 참조하여 과거 기록을 보면 내역 확인이 가능합니다.
이런 이유로 기존 사업의 상호작용을 블록체인으로 변경해서 대체할 수 있는 가능성이 보이고 있습니다. 예로, 중앙기관과 기업, 사람을 통하는 절차와 상호 작용을 배제할 수 있고, 시간 비용 및 인건비 등의 금융비용도 줄일 수 있습니다. 또한 중간수수료를 제외하면 거래 및 교환에 대한 사용자가 보다 효율적으로 가치를 교환할 수 있습니다.
권리의 증명이나 권리의 이동 등에 대한, 현실세계의 계약을 블록체인에서 자동으로 집행하는 구조를 스마트계약(SmartContract)라고 합니다.
넓은 의미의 스마트계약
스마트계약의 개념은 비트코인이 나오기 전부터 존재하였고, 비트코인골드 스폰서인 암호학자 Nick Szabo가 1997년도에 처음 발표했습니다. 이때 소개된 스마트계약은 도입한 예로는 길거리에서 보던 자판기입니다. 자판기는 사용자가 필요한 금액을 투입하고, 구입하고 싶은 상품버튼을 누르는 조건을 충족하면, 사용자에게 상품을 제공하는 매매계약이 자동으로 실행되도록 프로그램되어 있다. 계약은 서면으로 작성하는 것아 아니라, 거래 자체 행위를 말합니다.
또한, 통화의 교환을 스마트계약으로 표현하면, “홍길동은 한국 원화를 1000원이상을 가지고 있다”가정하에 홍길동은 이순신에게 1000원을 송금의뢰를 했다”라는 조건이 충족되면 “이순신은 홍길동에게서 1000원을 받을 수 있다”라고 합니다.
현실에서는 원화를 교환할 때 자동화하는 것은 힘들지만, 스마트계약이 실현하고 싶은 것은 이런 상호작용의 자동화입니다. 예로 하이패스의 자동충전을 스마트계약이라고 말할 수 있습니다. “미리 충전이 자동처리”되도록 설정하고 “충전하는 은행계좌”를 등록해두면, “잔액을 은행계좌에서 자동으로 충전”하는 계약이 자동으로 실행됩니다. 물론 이 개념이 나올 당시에는 블록체인이 존재하지 않았습니다. 이렇게 설명하는 이유는 기존 스마트계약의 개념을 실현하는 예로써 넓은 의미의 스마트계약이라고 말하기 때문입니다.
협의의 스마트계약
이번에는 협의의 스마트계약을 블록체인 기준으로 실행되는 자동 실행 프로그램으로 정의합니다. 현실에서는 가치있는 것을 프로그램으로 표현하고 미리 설정한 상태가 되면 지정하는데로 가치를 이동시키는 해당 규칙을 프로그램에서 설명합니다. 규칙을 만족하면 설정하는데로 가치를 자동으로 이동시킵니다.
앞서 설명한 자판기에서 실제로 나온 상품이 자신이 원하는 제품인지는 사용자가 직접 확인해야 합니다. 그러나, 확인까지 프로그램에서 검증하는 구조를 도입하면 아래와 같은 장점이 존재합니다.
첫번째, 계약상대를 전적으로 신뢰하지 않아도 됩니다. 현실에서는 매장에서 상품을 구입하는 행위나 개인간의 중고거래나 금전적인 거래를 할 경우에는 상대방을 신뢰한다는 가정하에 계약이 됩니다. 상대방을 신뢰하지 못하면, 계약은 진행되기 어렶습니다. 그러나 이런 상호작용을 스마트계약에 맡기면, 상대방을 신뢰하지 않아도 가치 교환이 자동으로 이루어집니다. 블록체인 자체는 누군가가 중앙에서 관리하는 것이 아니고, 거래정보가 블록에 기록되어 누구라도 참조가능하기 때문에 부정한 방법으로 악용하기 어렵고, 투명한 거래가 가능합니다.
두번째, 중개하는 제3자가 필요 없기 때문에 비용절감이 됩니다. 상대방 신용을 판단하기 어려운 거래라면 보통 중개업자나 신용기관이 필요합니다. 예로, 신용카드로 쇼핑을 할 때 신용카드를 매장에 제출합니다. 매장 또는 소비자가 이용하고 싶은 금액을 신용카드를 발급받을 당시 신용카드 발급회사에 확인해야 합니다. 신용카드 회사는 소비자가 지불할 능력이 있는가?를 확인하고 지불능력이 있다고 확인되면 매장에서 지불 시, 신용카드 회사가 대납합니다. 매장은 해당 정보를 받아 상품을 소비자에게 제공합니다.
제3자가 중계하여 물건을 받지 못한 경우에도 신용카드 회사가 보증해줍니다. 매장측의 입장에서는 대금을 받을 수 없는 상황은 모면하지만, 해당 비용으로 신용카드 수수료가 발생합니다. 프로그램에서 자동 집행하려면 제3자의 기능을 자동화하면 해당 수수료 비용을 줄일 수 있습니다.
이런 신용카드 교환의 전제조건은 소비자는 신용카드 회사에 미리 성함, 주소, 현재소득, 직장등의 개인정보를 제출하고 사전심사를 받아 통과해야 합니다. 매장도 신용판매를 위해 회사 위치, 운영책임자, 업종 정보를 제출해야 하는 지체시간이 다소 걸립니다. 이런 심사가 끝난다고 하여 바로 종료하기 어렵고, 그에 따른 상응하는 시간이 필요하지만, 프로그램에 결제에 필요한 정보를 저장해두면 시간이 단축됩니다.
스마트계약의 실제 예제
그럼 스마트계약으로 무엇을 실제로 실현해서 사용할 수 있는지에 대해서 설명하겠습니다. 다만, 여기서 설명하는 내용은 현재 진행형으로 논의가 다양하게 이루어지고 있고 다양한 개발들도 생겨나고 있습니다.
법률 자동 집행
결혼하거나 이혼할 때 조건을 스마트계약에 의해 처리된다고 생각해 봅시다. 미리 재산분할을 법적효력을 가지는 서면으로 체결했다고 해도, 실제로 그만큼 재산분할이 되었는지는 개개인별로만 알 수 있습니다. 스마트계약에서 재산을 자동으로 재산분할하도록 프로그래밍해두면, 이혼 이슈가 발생하면 바로 재산분할을 할 수 있습니다.
현재 사회에서는 계약할 때와 계약을 집행하는 부분으로 분리됩니다. 이 두가지를 같이 처리하는 것으로 계약에 강제력을 가질 수 있도록 유언 또는 급여지급이 안되어 법정이나 노동부를 찾아가는 문제가 없어질지도 모릅니다. 제3자에 의해 계약이 완전하게 집행되는지 감시할 필요도 없어지기 때문에 여러가지 부수적인 비용을 절감할 수 있습니다.
컨텐츠 유통의 수익 자동 분배
음악이나 영상컨텐츠 유통에 대해서도 응용이 가능합니다. 현재 컨텐츠 제작자는 음반사나 영화배급사와 계약하여 컨텐츠 전송기업이 최종 사용자에게 컨텐츠를 전달하는 구조가 일반적입니다. 최종 사용자가 지불한 금액을 배포하는 기업에 지불하고 중간 이익금을 공제한 금액을 컨텐츠 제작자에게 환원하는 구조입니다. 컨텐츠 제작자와 최종 사용자를 직접 연결하여 최종 사용자가 지불한 대가를 직접 컨텐츠 제작자에게 자동으로 지급하는 구조도 구축이 가능합니다.
보험 자동 지불
자동차 보험은 매년 계약하여 지불하게 되는데 이를 스마트계약으로 처리할 경우, 보험 사고가 발생할 때 해당 상황을 블록체인에게 기록하여 자동으로 보장된 내용을 집행하는 것도 가능합니다. 각종 평가를 통해 일반 교통사고 실현이 어려울지도 모르지만, 실제로 프랑스 AXA보험사는 탑승 예정 비행기 도착이 일정 시간 지연이 발생하면 자동으로 보장내용을 집하는 구조를 스마트계약을 이용하는 사례도 있습니다. (참고로 비슷한 보험서비스로 InsurETH라는 것이 존재합니다)
카쉐어링 또는 카풀
쏘카와 같은 카쉐어링에 스마트계약을 적용한다고 가정해 봅시다. 자동차를 빌려주고 싶은 사용자는 미리 어떤 자동차를 소유하고 있는지, 어떤 조건으로 자동차를 구입해서 할부가 있는지에 대한 조건을 등록합니다. 그렇게 되면 자동차를 렌트하려는 사용자는 대여차량의 차종등 조건으로 검색하면 어떤 기간내에 빌릴 수 있는지를 보여줍니다.
여러가지 조건을 만족하면 바로 대차계약을 완료하고 렌트 사용자는 그 자동차에서 정해진 조건에서 자동차를 빌리고 결제도 스마트계약으로 자동을 대행할 수 있습니다.
NGO단체 모음 금액 기부처로 자동 송금
길거리를 가다 보면, 여러가지 기금 모금을 하는 단체들이 있는데 기부한 위치에서 기부한 금액이 송금되고 있는지, 또는 공개된 기부금 총액이 정말로 올바르게 사용되는지 기부한 사용자가 확인하는 방법이 없습니다. 최근 유니세프가 각종 비리 의혹으로 인해 곤혹스러운 상태가 되면서, 기부 후원이 끊어지게 되는 것처럼 이런 사태가 벌어지기 전에 “목표 금액에 도달하면 미리 지정된 기부처에 송금한다” 계약을 프로그래밍하여 투명한 모금활동을 가능하게 합니다. 또한 기부금 금액 자체를 누구나 볼 수 있도록 해두면, 외부에서도 모금 활동 진척상황을 수시로 알 수 있습니다.
근태관리 시스템
근태 관리 시스템 구축도 가능합니다. 개별 고용 계약정보를 미리 프로그래밍해두고 근태에 관련 보상을 매월 자동으로 지불하는 스마트계약을 만듭니다. 피고용자가 근태관리를 블록체인에 기록하여 투명성이 높은 임금을 지불할 수 있습니다. 고용주측은 좀더 피고용자의 업무 상태를 확인할 수 있고, 피고용자는 고용계약을 준수하여 입금을 받을 수 있습니다. 또한 급여를 계산하는 사무작업을 없앨 수 있습니다.
선거 전자투표
전자투표 환경에도 적용이 가능합니다. 개표일자와 시간을 미리 정한 스마트계약에 대해 유권자가 투표하는 구조를 만듭니다. 스마트계약의 소스코드를 공개하여 자의적인 부정할 수 없는 것을 유권자는 명확하게 이해하고 투표를 집계하는 비용을 줄일 수 있습니다.
그 외 농산물 산지증명이나 출자증명서등 추적이 필요한 분야와 금융 분야와 상당히 궁합이 좋습니다. 확실하게 기록을 보관할 문서 및 계약서, 제3자가 중계하고 신뢰를 증명해야 하는 부분에는 거의 모든 스마트계약의 적용분야라고 봐도 됩니다.
물론 스마트계약은 블록체인 구조에 불과하지만 현실세계에 자동으로 영향을 미치는 것은 아닙니다. 사람이 직접 실행할 필요가 없이 모든 이슈를 프로그래밍만으로 판단하기는 어렵습니다. 최종적인 판단은 사람이 판단해야 하지만, 스마트계약은 결정을 인간의 작업 부담을 줄이는 방법 중 하나입니다.
좋은 글 감사합니다. 풀보팅합니다.
Hello! Good article! I'm interested in the them of ICO and crypto-currency, I'll subscribe to your channel. I hope you will also like my content and reviews of the most profitable bounties and ICO, subscribe to me @toni.crypto
There will be a lot of interesting!
어렵군요. 자주 와서 공부 많이 하겠습니다. 좋은 글 감사합니다.
Congratulations @voidlink! You received a personal award!
Click here to view your Board
Congratulations @voidlink! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!