Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Ethereum

이더리움(Ethereum)은 블럭체인 기반의 분산 컴퓨팅 플랫폼으로 smart contract 기능을 갖추고 있어서 온라인상에서의 계약을 용이하게 한다. 이더리움은 분산 Turing-complete 가상머신인 EVM(Ethereum Virtual Machine)를 제공한다. 이 가상 머신은 공용 네트워크에서 스크립트를 실행 할 수 있다. 이더리움은 에테르(Ehter)이라고 하는 암호화 토큰을 이용해서 노드에 차명 할 수 있다. 트랜잭션은 내부적인 가격 책정 메커니즘인 Gas를 통해서 이루어진다. Gas를 이용해서 스팸을 줄이고, 네트워크에서 자원을 할당 할 수 있다. Gas는 작업을 수행하기 위한 수수료로 작업증명 구현이라고 볼 수 있겠다. 만약 gas를 너무 낮게 책정하면, DOS 공격에 취약하게 될 것이다.

실제 2016년 9월 이후 알수 없는 공격자로부터 DoS공격이 진행되면서 이더리움 네트워크에 피해를 줬는데, gas비용이 낮다는 점을 이용, 엄청난 수의 빈 거래를 발생시켜서 네트워크에 무리를 주는 방식이었다. 이더리움 네트워크는 2016년 기준 초당 25개 정도의 트랜잭션을 처리할 수 있는 수준이다. 헛점을 잘 찾는다면 네트워크 공격이 가능한 수준이다. 문제 해결은 gas비를 조정하는 것에서 부터 시작된다. 따라서 이더리움 네트워크 설계시에는 적정한 수준의 gas 책정에 유의해야 할 것이다.

아키텍처

에테르

이더리움 블록체인의 화폐역할을 하는 토큰을 에테르라고 한다. 이더리움 네트워크에서 거래 수수료 및 전산 서비스 비용을 지불하는데 사용한다. 비트코인 화폐와 유사한 녀석이다.

DAO가 2016년 해킹을 당하면서 21.50달러에서 8달러로 급락했는데, 비트코인과 마찬가지로 상황에 따른 변동이 크다. 2017년 6월 현재 에테르의 가치는 (무려)5,000%상승한 400달러 이상이었다.

EVM

이더리움의 smart contract는 거래를 위한 프로그래밍 코드를 포함한다. 이 코드를 실행하기 위한 런타임환경이 EVM(Ethereum Virtual Machine)다. 네트워크, 파일 시스템, 호스트의 다른 프로세스와 완전히 분리되는 샌드박스상에서 작동한다. 네트워크에 있는 모든 이더리움 노드들은 EVM 구현을 실행한다. 이더리움 가상머신은 C++, Go, Haskell, Java, Python, Ruby, Rust로 구현됐다. 현재 WebAssembly 구현도 개발 중이다.

Smart contracts

smart contract 참고.

Smart contract는 신뢰 할 수 없는 에이전트 간에 거래를 수행 할 수 있도록, 디지털로 제어되는 거래 매커니즘이다. 이를 이용해서 3자의 개입이라는 경제적 부담없이, 절차와 협상의 수행, 검증을 할 수 있으며, 담합 및 거래에서 파생되는 위험을 회피하기 위해서 사용할 수 있다. 이더리움에서 Smart contract는 EVM에 의해서 실행될 수 있도록 블럭체인에 (실행가능한)스크립트 형태로 저장되며, 분산 응용 프로그램의 형태로 수행된다. 이더리움에 포함된 명령어는 에테르(기술적으로는 gas 라고부르는)를 지불해서 실행되며, 다양한 언어를 이용해서 구현할 수 있다.

프로그래밍 언어

Smart contract에 포함된 코드는 EVM 바이트코드로 컴파일되고, 이더리움 블럭체인에 포함돼서 배포되는 고급 프로그래밍 추상이다. 이들은 Solidity(C및 자바스크립트와 비슷하다.), Serpent(파이선과 유사), LLL(저수준 Lisp와 유사)로 만들 수 있다.

성능

이더리움에서 모든 smart contract는 모든 노드에 공개적으로 저장된다. 이 방식은 모든 노드가 모든 smart contract 계약을 실시간으로 계산하기 때문에 성능에 문제가 발생 할 수 있다. 이더리움 엔지니어들은 계산시간을 개선하는 작업을 해왔지만 뚜렷한 해결책을 찾지 못했다. 2016년 1월, 이더리움 프로토콜은 초당 25회의 트랜잭션을 처리 할 수 있다.

P2P Network

NAT-PMP(NAT Port Mapping Protocol)참고.

참고

문서들

제목 저자 변경일