📍 이더리움(Ethereum)이란?
- 암호화폐의 대장인 비트코인과 더불어 코인계를 이끌어가는 양대산맥이 바로 '이더리움'이다.
이더리움은 비트코인을 기반으로 만든 가장 대표적인 알트코인으로서, '비트코인 2.0'이라고도 부른다.
- 이더리움은 비트코인과 비슷한 전자화폐의 기능과 더불어
솔리디티(Solidity) 등의 언어를 이용해 스마트 계약을 작성함으로 여러 분야에 접목할 수 있다는 특징이 있다.
- 이더리움은 블록체인 기술을 기반으로 스마트 계약 기능을 구현하기 위한 분산 컴퓨팅 플랫폼이다.
'이더리움'은 플랫폼이고, '이더'가 암호화폐이지만
일반적으로 구별하지 않고 '이더리움'을 암호화폐의 이름으로 사용하기도 한다.
- 이더리움은 솔리디티라는 언어를 통해 스마트 컨트랙트를 위한 코드를 작성하고,
EVM(Ethereum Virtual Machine)을 통해 이더리움 블록체인 위에서 코드를 실행시킬 수 있다.
이를 통해 이더리움은 여러 개의 독립적인 스마트 컨트랙트를 동시에 실행할 수 있어서 월드 컴퓨터라고도 불린다.
📍스마트 컨트랙트(Smart contract)란?
- 블록체인 기반으로 금융거래, 부동산 계약, 공증 등 다양한 형태의 계약을 체결하고 이행하는 것을 말한다.
- 계약 당사자가 사전에 협의한 내용을 미리 프로그래밍하여 전자 계약서 문서 안에 넣어두고,
이 계약 조건이 모두 충족되면 자동으로 계약 내용이 실행되도록 하는 시스템을 의미한다.
- 스마트 계약은 코드에 적힌 계약 조건이 만족되면 그 즉시 계약이 성사된다.
이 때 계약 상대방이 믿을만한 사람인지, 중간에 신뢰를 보증할 제3자가 필요한 것은 아닌지,
계약이 안전하게 처리됐는지 고민할 필요가 없다.
모든 과정은 자동으로 이뤄진다.
어떠한 다운타임, 검열, 사기 행위, 제3자 간섭 없이 프로그래밍된 대로 정확히 실행되는 프로그램이다.
- 스마트 컨트랙트는 코드로서 블록체인에 기록되기 때문에 누구도 처음에 명시된 조건을 바꿀 수 없다.
이더리움은 블록 안에 거래 기록뿐 아니라 조건문과 반복 명령어 등 실행 코드를 포함하는 것이 가능해
금융 결제뿐만 아니라 다양한 분야에서 사용할 수 있다.
📍스마트 컨트랙트 플랫폼
- 스마트 컨트랙트를 구현하기 위한 컨트랙트 코드는
이더리움 가상머신(EVM; Ethereum Virtual Machine)이라는 독립된 실행 환경에서 실행된다.
- 스마트 컨트랙트는 실행할 때마다 수수료인 가스(gas)가 발생하고
네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다.
무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면
중간에 수수료 한계점에 도달하게 되는데, 이때 중단된다.
- 이더리움에서 스마트 컨트랙트는 솔리디티(Solidity) 언어로 프로그래밍된다.
- 솔리디티 언어로 프로그래밍된 스마트 컨트랙트는
컴파일러(solc)에 의해 바이트코드(bytecode)로 컴파일되고,
컴파일된 바이트코드는 블록에 포함되어 이더리움 가상머신(EVM)에 의해 실행된다.
- 이더리움 가상머신(EVM)은
이더리움 스마트 컨트랙트의 바이트코드를 실행하는 32바이트 스택 기반의 실행환경이다.
- 이더리움이 제공하려는 것은 튜링 완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다.
* 튜링 완전(turing complete)이란?
쉽게 말해 계산적인 문제를 그 프로그래밍 언어나 추상 머신으로 풀 수 있다는 의미이다.
이 프로그래밍 언어는 코딩된 규칙에 따라
'어떤 상태'를 '다른 상태'로 변환시키는 기능이 포함된 계약을
사용자들이 직접 작성할 수 있게 함으로써,
인간이 상상할 수 있는 모든 종류의 계약을 스마트 컨트랙트로 만들 수 있다.
모든 계약을 자동으로 실행할 수 있고, 이를 위한 다양한 분산형 애플리케이션인 디앱(DApp)도 만들 수 있다.
누구든지 솔리디티 언어를 사용해 스마트 컨트랙트와 디앱을 작성하고
소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환함수(state transition function) 등을 생성할 수 있다.
📍 EVM (Ethereum virtual machine)
솔리디티로 짠 스마튼 컨트랙트는 그 자체로는 실행 되지 않는다.
솔리디티는 사람들이 이해하기 위해 만든 언어이기 때문이다.
그래서 컴파일러를 통해 기계가 이해할 수 있는 기계어로 변경해주어야 한다.
이를 Ethereum Bytecode라고 하며, 이 바이트 코드는 가상머신인 EVM 에서 실행된다.
EVM은 Ethereum 블록체인 네트워크의 노드들이 공유하는 하나의 가상 머신이다.
매우 거대한 하나의 분산 컴퓨터라고 볼 수 있다.
블록체인 네크워크상의 노드들은 이 거대한 컴퓨터에 접근할 수 있고,
컴퓨터가 저장하고 있는 상태도 바꿀 수 있다.
하지만 전세계 많은 사람들이 동시에 EVM의 상태를 변경하면 분명 데이터의 충돌이 일어날 것이다.
우리가 다른 사람들과 공유 문서를 사용할 때도 동일한 부분을 서로 다르게 고치면 충돌이 일어나듯이
EVM 데이터도 충돌이 일어날 수 밖에 없다.
이것을 중재하는 역할이 마이닝과 합의 알고리즘이다.
EVM을 사용하려면 비용을 지불해야 한다.
그 비용은 단순히 트랜잭션의 크기에 비례하는 것이 아니라, 실제로 트랜잭션을 실행하는데 필요한 비용이다.
이 때 사용되는 개념이 Gas이다.
Gas는 화폐가 아니다. Gas는 일의 양을 나타내는 단위와 비슷하다.
트랜잭션을 생성한 주체는 트랙잰션 실행에 필요한 최대 Gas (Gas Limit)를 설정해야 한다.
자신의 트랜잭션이 실행되기 위해서 필요한 Gas의 양을 사전에 예상을 통해서 입력해야만 한다.
Gas 비용은 채굴자들이 가져가는 것이기 때문에 Gas Limit을 크게 설정하면 채굴자들이 많은 수수료를 얻기 위해 우선적으로 트랜잭션을 처리하기도 한다.
[ EVM이 동작하는 순서 ]
- 트랜잭션이 올바른 형식인지 확인
- 트랜잭션 수수료 계산(Gas limit x Gas Price)
- Gas 지불 초기화. 이 시점부터 트랜잭션에서 처리된 바이트만큼 특정 양의 가스를 차감
- 트랜잭션 금액을 수신 계정으로 보냄 (Smart Contract도 이 단계에서 실행됨)
- 송신 계정에 트랜잭션을 완료할 수 있을 만큼 Gas Price가 충분하지 않으면 트랜잭션의 모든 변경 사항이 되돌려짐. 그러나, 트랙잰션 수수료는 채굴자에게 지불되고 환불되지 않음.
- 5번의 경우와 다른 이유로 트랜잭션이 실패한 경우, 송신 계정에 Gas price를 환불하고, 채굴자가 사용된 Gas와 관련된 비용은 채굴자에게 전달됨
EVM은 누구나 접속할 수 있는 컴퓨터이기 때문에 이 컴퓨터를 특정 프로그램이 독접하면 안 된다.
이것을 방지하기 위해 Gas가 도입되었고, 트랜잭션을 생성할 때 Gas Limit을 정하며
EVM은 트랜잭션을 처리하면서 Gas를 소모한다.
Gas Limit으로 설정한 Gas가 모두 소모되면 EVM은 해당 트랜잭션을 종료시킨다.
그렇기 때문에 무한정 반복되는 조건은 존재할 수 없다.
* 참고 자료
http://wiki.hash.kr/index.php/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80
http://wiki.hash.kr/index.php/%EC%8A%A4%EB%A7%88%ED%8A%B8_%EA%B3%84%EC%95%BD
https://opentutorials.org/course/2869/18360
'Programming > 블록체인' 카테고리의 다른 글
[블록체인-7] 암호화폐 지갑 유형(콜드월렛, 핫월렛) / 공개키 암호화 방식 (1) | 2022.03.13 |
---|---|
[블록체인-6] 디앱(DApp) (0) | 2022.03.07 |
[블록체인-4] 합의 알고리즘 / 작업증명(PoW) / 지분증명(PoS) / 위임지분증명(DPoS) (0) | 2022.03.06 |
[블록체인-3] 분산원장기술 / 채굴 (1) | 2022.03.01 |
[블록체인-2] 블록체인은 비트코인과 같을까? 비트코인은 왜 만들어졌을까? (1) | 2022.02.28 |