Jgtony Developer blog

DApp Challenge : Concept

블록체인 플랫폼에서 돌아가는 DApp에 대한 공부를 해보려고 한다. 아직 블록체인 네트워크에 대한 지식도 부족하고 이 구조가 어떻게 운영되는지도 얕은 지식으로만 알고 있지만 포스팅을 하면서 공부한 내용을 추가할 예정이다. 먼저 이더리움 네트워크에 대한 공부를 시작해 보겠다.

Solidity?

solidity

블록체인 기술은 신뢰성 있는 P2P 분산 스토리지라고 생각할 수 있다. 여기서 이더리움의 역할은 트랜잭션에 의한 내역 및 가상화폐의 입출금을 가능하게 하는 도구로서 이해했다. 이 도구를 사용하여 스마트 컨트랙트 프로그래밍을 하는 언어가 Solidity 라고 결론 지을 수 있었다.

근데 중요한 건 스마트 컨트랙트는 또 뭐지

Smart Contract?

블록체인 계좌를 가지고 있는 사람들끼리 자산을 분배할 수 있는 장치

음 아직 감이 안 온다. 좀 더 쉬운 번역이 필요하다.

contract

거래가 이루어질 때 계약 조건이 성립되는 과정은 실제 사람이 계약서에 쓰인 내용을 그대로 이행해야만 한다. 하지만 디지털 명령어로 계약서를 작성하면 자동으로(Smart하게) 계약이 이루어질 수 있다.

좋다. 스마트 컨트랙트의 개념을 1994년에 제시한 Nick Szabo의 주장을 내가 이해하기 쉽게 바꾸어 보았다.

최초의 블록체인 기반 스마트 컨트랙트를 하게 해주는 언어는 비트코인 스크립트인데, 이 비트코인 스크립트는 반복문의 사용불가 및 취득 정보의 제한성 때문에 한계점이 존재했다고 한다.

이 한계를 극복하기 위해 나온, 스마트 컨트랙트를 위한 블록체인 플랫폼이 이더리움이다. 이더리움은 반복문의 사용을 가능하게 만들면서 DoS의 문제점을 막기 위한 수수료 개념을 도입했다. 이로서 스마트 컨트랙트가 원할하게 이루어질 수 있는 환경이 제공되었다!

다시 핵심으로 돌아와서 스마트 컨트랙트란 “우리의 거래를 자동화하고 또 신뢰성 있게 만들어주는 프로토콜” 이다. 그럼 어떻게 이 스마트 컨트랙트를 이용해서 거래를 할 수 있을까?

앞에서 언급한 Solidity를 이용하서 스마트 컨트랙트를 짜고, 그 코드를 EVM이라는 이더리움 가상 머신에서 실행해야만 동작 할 수 있다.

자 그럼 EVM에 대해 알아보자.

Ethereum Virtual Machine

EVM

EVM이란 이더리움 블락체인 네트워크의 노드들이 접근하는 거대한 서버이다. 여기서 많은 사용자들이 접근하여 데이터를 수정하고 공유하는데, 이 것을 중재하는 것이 EVM의 역할이다. 또 Gas라는 게임머니 같은 개념을 도입해서 수수료의 정책을 조절한다.

자 그럼 도대체 코드는 여기서 어떻게 돌아가는 건데(feat.developers)

Solidity로 짠 코드는 솔리디티 컴파일러에 의해 기계어로 변환되고 이 변환된 기계어가 이더리움 가상 환경에서 돌아갈 수 있다.

Solidity -> Ethereum Bytecodes -> Ethereum VM

이렇게 작동한다. Java로 짠 코드가 Java virtual Machine에서 돌아가는 것과 비슷한 원리이다. 그러나 Solidity로 짠 스마트 컨트랙트는 EVM에서 실행될 때 수수료(Gas)를 지불해야 한다. Gas는 앞에서 언급했듯 작은 경제를 조절하는 수단임과 동시에 비트코인 스크립트의 한계점이었던 반복문의 사용을 허용하되 코드의 남용을 막는 장치 역할을 한다.(똑똑하다..)


자 이제 완벽하게는 아니더라도 대강의 환경을 이해했다. 이제부터는 직접 코딩이다. 뭐든지 맨땅에 해딩하면서 배우는게 정석이라고 했는데 요즘 이미 많은 분들이 초보자들을 위한 친절한 글들을 많이 써주셔서 사실 맨땅도 아니다.

처음으로 DApp에 대한 관심을 가지게 되고 또 많이 배우게 된 글을 소개한다.

https://medium.com/@weekly.teckle/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%93%A4%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-dapp-%EB%A7%8C%EB%93%A4%EA%B8%B0-c6ddb0c6651d

이제 다음번에는 직접 코딩으로 돌아가는 것을 내눈으로 봐야겠다!

Comments