스마트 컨트랙트의 활용을 알아보자

🔗블록체인으로 휴대폰 로밍 요금 바로 정산

여기보면 블록체인의 스마트 컨트랙트를 활용한다고 되어있습니다
스마트 컨트랙트란 '자동화된 계약'을 뜻합니다.

한데 이는 블록체인의 전유물 같은 것이 아닙니다.

'스으마아트 컨트래액트' 같은 무시무시한 영어나
'자동화 계약' 같은 읽을 수는 있지만
뭔가 뜻은 파악할 수 없는 단어들 때문에
'오오' 거리고 마는데.. 실은 별거 아닙니다.

예를 보면 더욱 간단히 이해할 수 있을겁니다.


고속철도 앱 켜서 날짜,좌석배치 선택하고 결제클릭하면
그게 스마트 컨트랙트입니다.
열라 스마트하죠?

한편
배달의 민족 앱 켜서 음식 시키면
이건 반정도 스마트 컨트랙트라고 할 수 있습니다.

사전에 음식값을 정해놓고 계약 버튼에 올리고
그 버튼을 누르고 가격정산, 혹은 배달시 받기를 선택하면
되는 것이죠. 다만 이경우는 완전한 스마트 컨트랙트는
아닌데 쌍방 계약 수락을 하기 때문입니다.
즉, 이쪽에서 주문을 했다고 무조건 배달확정..
이 아니라 저쪽에서 주문 수락을 해야됩니다.

정리하면 저쪽에서 모든 것을 준비해놓은 후라
이쪽에서만의 의사에 따라 계약이 완료되느냐 마느냐가
결정되는 것이 '스마트 컨트랙트(자동 계약)'이고

저쪽이 이쪽이 주는 것을 받아보고는 '검토' 같은 것을
통해 반려시킬 수 있다면 이것은 '스마트 컨트랙트'가
아니게 되는 것이죠.

그렇기 때문에
'음료수 자판기'야 말로 스마트 컨트랙트의 위대한
표본이라 할 수 있습니다.

하지만 여기서 제가 여러분의 뒤통수를 때려드리자면
스마트 컨트랙트 자체는 기존에도 계속 있던 것이고
분명 블록체인의 전유물이 아니지만
스마트 컨트랙트를 블록체인에다가 구현해버리면
기존의 스마트 컨트랙트랑 차원이 달라집니다.

무엇이 달라지는가?

위의 위대한 스마트 컨트랙트의 표본씨를 보겠습니다

이 음료수 자판기씨는 분명 완전히 자동화되어있고
지폐 1000원 대신 10원짜리 100개 넣었다는 이유로
1원짜리 1000개로 앙갚음 하지 않습니다. (인간자판기는 함)
뭘 넣던 계약 조건만 맞으면 반드시 적합한 음료수를
뱉게 되어 있죠.

하지만 고장났다면?

스마트 컨트랙트를 완벽히 짜넣었지만
기기 이상으로 먹고 째버리는 경우를 우리는 왕왕 봐왔습니다
심지어 발차기를 먹이자 두개를 내뱉는 기적도 행하죠

위에 예를든 철도예약도 자동화 시스템에 의한 계약이
분명하지만 전산상의 오류 혹은 직원의 실수로 인한
계약 취소 가능성이 분명히 있습니다.

이것이 블록체인이 나오기전에 스마트 계약이란 단어를
따로 사용하지 않은 이유 중 하나입니다.
완전한 스마트 계약이라기엔 현실적으로 오류 가능성
여지가 너무 많았던 것이죠.

그러나 블록체인은 다릅니다.
블록체인의 특징은 완전무결한 불변성이므로

그곳에 올린 스마트 컨트랙트는 기계의 고장이나
직원의 실수 같은 변경요소가 전혀 없습니다.
그러므로 한번 올려진 계약이라면
내가 버튼을 눌렀다면 그 결과가 반드시 정해진대로
나오게 됩니다. 직원이 취소할려해도 불가능
전산상 오류도 불가능. 완전한 신뢰가 가능하죠.

그러므로 블록체인에 올라간 것이야말로
기존의 결과가 달라질 수 있는 어설픈 자동화 계약이 아니라
진정한 자동화 계약

스마트 컨트랙트

로 불릴 자격이 있는 것이죠.

허나 이 역시 완전무결하진 않습니다
51% 공격은 둘째치고 자신이 버튼을 눌렀다는 메세지가
네트워크 혼잡, 수수료 부족 등으로
가지 않는 경우가 있거든요.

이 경우는 스마트 컨트랙트 자체의 문제는 아니라서
도착만하면 무조건 실행된다는 것에선 변함이 없긴 합니다
(덕분에 이미 메세지를 보낸상태서 처리가 안된다고
버튼 여러번 눌렀다가 중복 실행되어 통곡하는 경우가
꽤 많죠)

것보단 해킹이 문제입니다.

블록체인하면 절대 해킹안당한다는 것이 통념이지만
이는 블록체인상의 기록 변조에 관한 얘기입니다.
스마트 컨트랙트 역시 변조는 못하죠.

하지만 해킹이란 것은 변조,조작만을 얘기하는 것이
아닙니다. 어떻게든 시스템의 허점이 있으면 그것을
찔러서 뚫고 원하는 목적을 달성하기만 하면
그걸 해킹이라고 합니다.

(걍 얍삽한 플레이면 프로그램계에선 죄다 해킹임)

예를들어 계약서에 100원 결제버튼과 환불버튼이 있습니다.
결제를 누른적이 있으면 환불버튼이 활성화 되게 만듭니다.
근데 1회 결제시 1회 환불.. 이라는 것을 빼먹었네요??

그럼 그 계약서는 골때리게 됩니다.
한번 결제 버튼을 누른후 환불버튼을 마구 클릭하면
계속 환불이 되는 것이죠.
이 같은 경우도 프로그램계에선 무조건 해킹이라고 합니다.

(아무튼 해킹임 해킹이라면 해킹임)

즉, 계약서를 잘못만들어서 찌를 구석이 있을 경우
충분히 해킹이 가능하다는 것이죠.

이와 같은 방식으로 폭망한 것이 바로
이더리움의 다오 스마트 컨트랙트 해킹입니다.
당시 다오해킹사태는 멀쩡히 있는 이더리움 지갑에서
돈들이 빠져 나간 것이 아니라
저런 허접한 계약서를 만들어서 다오라는 회사에
ico 할려고 유저들이 지불한 돈이 환불공격에 대규모로
빠져 나간 것이 원인입니다.

다만 일반적 ico를 넘어 참가규모가 워낙 컸기에
피해규모가 컸고 그래서 문제가 되었던 것이죠.
소규모 ico가 지들 계약서 빵구나서 폭망했다면
별관심도 없었을겁니다.

스마트 컨트랙트의 활용


자 그럼 다시 처음으로 돌아가서
kt가 사용한 '실시간 로밍 자동 정산' 기술이란 기존과
어떤 차이점이 있을까요.

기존에도 반쪽짜리 스마트 컨트랙트로 원래 처리해왔었죠.
그리고 계속 그것 사용하면 됩니다.
굳이 블록체인으로 할 이유는?
그 이유는 기사에 나온 '로밍 정보의 검증'이라는 것에서
찾아볼 수 있습니다.

정보가 맞는지 기존의 컨트랙트는 입력은 물론이고
출력쪽에서의 오류나 실수를 찾아봐야했습니다.
하지만 스마트 컨트랙트의 경우는
출력에 오류가 날 이유가 없습니다. (제대로 만들었다면)
그러므로 확인작업은 입력에만 집중할 수 있죠.
일처리가 반으로 줄어드는 것입니다.

또한 출력 오류가 날 수가 없기 때문에
기존의 '로밍 정산소' 등을 통해서 데이터를 모은후
한번에 정산하는 식으로 오류를 줄일 노력을 할 필요가
없습니다.
기존의 컨트랙은 매번 출력할 경우 매번 오류확률이
있으니 모아서 한꺼번에 정산했습니다.
후에 어디서 틀렸는지 찾을려면 주옥같으니까요

하지만 스맛 컨트랙은 매번 출력해도 반드시 정확한
결과가 나옵니다. 그러므로 데이터를 모을 필요없이
실시간으로 입력을 넣어주면 됩니다
그렇게 함으로써 사용자들은 정산이 될때까지
기다릴 필요없이 실시간으로 정산할 수 있게 되는 것이죠.
(사실 이부분은 걍 추측임-ㅅ- 본인은 로밍이 뭔지도 모름)

이와 같은 응용방법은 이외에도 아주 많습니다.
기업들은 자기네들이 돌리는 체인이니 수수료 패널티없이
더욱 활용성을 높일 수 있을테고
2세대인 이더리움보다 여러면에서 낫다는 3세대인
이오스가 나오는 시점이니
앞으로도 무궁한 발전이 있을 걸로 기대됩니다 :)

H2
H3
H4
3 columns
2 columns
1 column
36 Comments