이더리움(Ethereum)
이더리움은 2015년 7월 30일 비탈릭 부테린(Vitalik Buterin)이 개발하였다. 비탈릭 부테린은 가상화폐인 비트코인에 사용된 핵심 기술인 블록체인 화폐 거래 기록뿐 아니라 계약서 등의 추가 정보를 기록할 수 있다는 점에 착안하여, 전 세계 수많은 사용자들이 보유하고 있는 컴퓨팅 자원을 활용해 분산 네트워크를 구성하고, 이 플랫폼을 이용하여 SNS, 이메일, 전자투표 등 다양한 정보를 기록하는 시스템을 창안했다. 이더리움은 C++, 자바, 파이썬, GO 등 주요 프로그래밍 언어를 지원한다.-위키백과
비트코인은 결제나 화폐의 용도에 집중하는 반면, 이더리움은 결제뿐만 아니라 계약, SNS, 이메일, 투표 등 다양한 애플리케이션을 블록체인 위에서 운영할 수 있도록 한다. 이더리움 위에서 동작하는 앱을 DApp(디앱)이라 부른다.
그렇다면 이런 다양한 DApp들은 이더리움 위에서 어떻게 동작할까?
이더리움 창시자 비탈릭 부테린
바로 스마트 계약(Smart Contract)를 통해 동작하게 된다. 가령 우리는 축구경기의 내기에서 패한사람이 '나는 내기를 한 적이 없어' 라고 부인 할 수 있다. 그래서 우리는 제 3자인 중계인을 이용하게 된다. 이더리움은 이 제 3자인 중계인 역할을 대체하고자 한다. 이더리움을 이용하면, '내일 아스널이 축구경이에서 이기면 A가 B에게 500원을 이체 한다.' 가 중계인 없이 가능하게 된다.
이더리움은 비트코인의 블록체인 구조를 응용하였고 이를 통해 스마트 계약을 가능하게 했다.
이더리움의 트랜젝션에는 다음과 같은 값들을 포함하고 있다.
*메시지 수신처 *발신처를 확인할 수 있는 서명 *발신처가 수신처로 보내는 이더의 양 *선택적(optional) 데이터 필드 *STARTGAS 값: 트랜젝션 실행이 수행되도록 허용된 최대 계산 단계수 *GASPRICE 값: 매 계산단계마다 발신처가 지불하는 수수료
처음 세 개의 값들은 코인들이 보통 가지는 값들이다. 네 번째에 있는 데이터 필드에는 컨트랙트가 수행할 코드를 가지고 있다. DApp 개발자는 의뢰인으로 부터 트랜젝션 요청이 들어오고 이를 처리할 내용을 작성하여 데이터 필드에 넣게 된다. 위 의 예로 들면 '아스널이 경기에서 이겼는지 확인하고 조건부에 따라 돈을 이체한다.'는 코드가 이 곳에 들어가게 된다.
이때, 데이터 필드의 코드에 잘못된 코드나 무한루프에 빠질 수 있는 코드에 대비하여 다섯 번째의 STARTGAS라는 값이 필요하게 된다. 코드에서 한 계산당 1gas가 사용되는데, STARTGAS는 사용가능한 gas의 수를 의미하고 이를 통해 계산 낭비를 방지한다.
이더리움은 APPLY( )라는 상태 전이 함수를 통해 트랜젝션을 검증하고 수행한다.
APPLY(S, TX) -> S`
컨트렉트 코드 전부 gas가 소모될 때까지 수행하는데, gas가 도중에 부족하다면 수수료 지불을 제외하고 모두 원상태로 되돌린다. 이 때, 수수료는 채굴자가 가져가게 된다. 코드를 수행하고 남은 gas는 다시 발신처에 되돌려준다. 이더리움의 트랜젝션이 오류를 반환할 경우는 다음과 같다. 트랜젝션 형식, 서명, 발신처의 Nonce 일치에 문제가 있다면 오류를 반환한다. 또한 발신처의 잔고가 부족할 때 오류를 반환한다.
채굴 알고리즘도 비트코인과는 조금 다르다. 비트코인은 SHA-256 기반의 채굴방식인 반면, 이더리움은 Ethash 알고리즘을 사용하는데, 이는 무작위로 선택 된 최근 몇 개의 블록내역을 해싱작업하고 결과 값을 내놓는 것이다. 기존 비트코인의 채굴방식의 문제점인 'ASIC에 의한 채굴 장벽'을 낮추기 위해 고안되었다.
출처 및 참고자료: Ethereum white paper
'좌뇌 > 암호화폐' 카테고리의 다른 글
비트코인과 블록체인을 분리할 수 있을까?-블록체인의 종류 (0) | 2018.04.09 |
---|---|
비트코인? 블록체인이 뭔데? (0) | 2018.04.09 |