코수가 되는 길
Ethereum An Overview 본문
이더리움이란?
'월드 컴퓨터' 라고 불리우는 이더리움에 대해 알아보자.
- 이더리움은 블록체인을 기반으로 분산형 온라인 서비스(분산형 애플리케이션)를 만드는 플랫폼으로 스마트 컨트랙트 기반으로 작동한다.
(스마트 컨트랙트라는 프로그램을 실행하는 오픈 소스에 기반을 둔, 전 세계에 걸쳐 탈중앙화된 computing infrastructure 이다.)
- 이더(ether)라는 암호화폐를 이용하여 실행 자원비용을 측정하고 제한한다.
비트코인과의 비교
공통점
- P2P(peer-to-peer) network connecting participants
- PoW (작업증명) ----> 현재는 PoS로 전환됨. (The Merge upgrade)
- 디지털 서명과 해시
- 디지털 화폐사용 (이더)
차이점
- payment nework 가 목적이 아님. 거래기록 + 소프트웨어를 같이 저장하자는 아이디어 ( = Distributed Turing Machine with Blockchain Protection)
- 디지털 화폐로 사용되는 이더가 이더리움을 운용하는데에 필수적이기는 하지만 이더의 사용 목적은 word computer 로서
이더리움 플랫폼 사용료를 지불하기 위한 유틸리티 화폐( utility currency ) 이다.
- 매우 제한적인 스크립트 언어를 사용하는 비트코인과 달리 , 이더리움은 임의성과 무한 복잡성을 가진 코드를 실행할 수 있는
가상 머신(virtual machine) 을 운영하는 범용 프로그래밍이 가능한 블록체인으로 설계됨.
-> 비트코인의 스크립트 언어가 의도적으로 지불 조건에 대한 단순한 참/거짓 평가에만 제한되어 있는 반면, 이더리움 언어는
* 튜링 완전 (turing complete) 언어다.
-> 이더리움이 범용 컴퓨터로 직접 작동할 수 있음을 의미함.
* Turing complete 란?
튜링 완전(turing completeness)이란 어떤 프로그래밍 언어나 추상 기계가 튜링 기계와 동일한 계산 능력을 가진다는 의미이다. 이것은 튜링 기계로 풀 수 있는 문제, 즉 계산적인 문제를 그 프로그래밍 언어나 추상 기계로 풀 수 있다는 의미이다.
제한 없는 크기의 기억 장치를 갖는 기계를 만드는 것이 불가능하므로, 진정한 의미의 튜링 완전 기계는 아마도 물리적으로 불가능할 것이다. 그러나, 제한 없이 기억 장치의 크기를 늘려갈 수 있다고 가정할 수 있는 물리적인 기계 혹은 프로그래밍 언어에 대해서는, 느슨하게 튜링 완전하다고 간주한다. 이런 맥락에서, 요즘 나온 컴퓨터들은 튜링 완전하다고 여겨지고 있다.
요약
이더리움과 같은 범용 블록체인을 사용함으로써 개발자는 P2P 네트워크, 블록체인, 합의 알고리듬 등의 기본 메커니즘을 구현하지 않고도 특정 애플리케이션을 프로그래밍할 수 있다.
(Ethereum 플랫폼은 이러한 세부 사항을 추상화하고 분산형 블록체인 애플리케이션을 위한 결정론적이고 안전한 프로그래밍 환경을 제공하도록 설계되었습니다.)
이더리움 : 범용 블록체인
- 최초의 블록체인, 즉 비트코인의 블록체인은 비트코인 단위 및 소유 상태를 추적한다.
비트코인은 트랜잭션이 상태전이 ( state transition ) 를 일으켜 코인의 소유권을 변경하는 탈중앙화된 합의 *상태머신
(state machine) 라고 생각 할 수 있다. 상태 전이는 여러 블록이 채굴된 후 모든 참가자가 시스템의 공통(합의) 상태로 수렴할 수 있 도록 합의 규칙에 의해 제한된다.
- 이더리움 또한 탈중앙화 상태머신으로써, 화폐 소유 상태만 추적하는 것이 아닌 범용 데이터 저장소의 역할 또한 수행하는데,
key - value 튜플로 표현할 수 있는 모든 데이터를 저장할 수 있는 저장소의 상태 전이를 추적한다.
특정 키는 key - value 데이터 저장소에서 임의의 값을 보유하고 그 값을 참고한다.
이더리움에는 코드와 데이터를 저장하는 메모리가 있으며, 이더리움은 블록체인을 사용하여 이 메모리가 시간에 따라 어떻게 변하는지를 추적한다. 범용 저장 프로그램 컴퓨터와 마찬가지로, 이더리움은 상태 머신에 코드를 로드하고 그 코드를 실행하고 그 결과 상태를 저장할 수 있다. 범용 컴퓨터 대부분과의 중요한 차이점 중 두가지는 이더리움의 상태 변화가 합의 규칙에 의해 관리되고 상태가 전체적으로 배포 된다는 것이다.
-> 임의의 상태를 추적하고 상태 머신을 프로그래밍하여 합의로 작동하는 월드-와이드 컴퓨터
* 상태머신
이더리움 상태 전이는 바이트코드 (bytecode, 기계어 명령어) 를 실행하는 스택 기반 가상머신인 EVM (Ethereum Virtual Machine) 에 의해 처리된다. 스마트 컨트랙트라는 EVM 프로그램은 고수준 프로그래밍 언어( 솔리디티 등 ) 로 작성되고 EVM 에서 실행되도록 바이트코드로 컴파일된다.
튜링 완전의 함축적 의미 / 가스 (gas) 란 ?
- 튜링은 컴퓨터에서 프로그램을 시뮬레이션하여 프로그램 종료 여부를 예측할 수 없음을 증명했음.
-> 정지 문제 (halting problem, 임의로 주어진 튜링 머신이 주어진 입력 테이프에 대해 정지하는가 정지하지 않는가를 판정하는 알고 리즘의 존재 여부를 묻는 문제 )
- 프로그램을 실행하지 않고서는 프로그램의 경로를 예측 할 수 없다는 의미. 튜링 완전 시스템은 무한 루프에서 실행 될 수 있음.
- 모든 참여 노드 (클라이언트) 는 모든 트랜잭션을 검증하고 그 트랜잭션이 호출하는 스마트 컨트랙트를 실행해야 한다. 그러나 튜링이 증명한 것처럼 이더리움은 스마트 컨트랙트가 종료될지 혹은 실제로 스마트 컨트랙트를 실행하지 않고 얼마나 오랫동안 실행될지를 예측할 수 없다. (무한 실행의 가능성이 존재함.) 노드가 유효성 검사를 실행할 때 우연히 또는 의도적으로 스마트 컨트랙트가 영원히 지속하도록 만들 수 있는데 이는 사실상 서비스 거부 공격으로 간주됨.
-> 이더리움이 사전에 자원 사용을 예측 할 수 없다면 스마트 컨트랙트가 사용하는 자원을 어떻게 제한하는가 ?
이를 해결하기 위해 가스 (gas) 라는 과금 매커니즘을 도입.
- EVM이 스마트 컨트랙트를 실행하게 되면, 가스는 각 명령어 ( 계산, 데이터 접근 등 ) 의 비용을 일일이 계산한다. 각 명령어는 가스 단위 로 미리 정해진 비용이 존재.
- 스마트 컨트랙트를 실행 시킬 때 트랜잭션은 스마트 컨트랙트를 실행하는 데 사용할 수 있는 가스의 최대 사용량을 가지고 있어야 함.
- 계산에 소비되는 가스의 총량이 트랜재션에서의 가스 가용량을 초과한다면 EVM은 실행을 중지한다.
- 가스는 각 프로그램이 사용할 수 있는 리소스를 제한하여 이더리움 튜링 완전 계산을 허용하게 하는 매커니즘이다.
범용적인 블록체인에서 탈중앙화 애플리케이션(DApp) 으로
- 스마트 컨트랙트보다 더 넓은 의미를 가지는 DApp ( 댑 ) 은 스마트 컨트랙트와 웹 사용자 인터페이스를 합한 것으로 생각할 수 있음.
- 댑은 공개되고 탈중앙화된 P2P 기반 서비스 위에 제공되는 웹 애플리케이션임.
최소 구성요소
- 블록체인 스마트 컨트랙트
- 웹 프론트엔드 사용자 인터페이스
추가적으로 많은 댑은 다음과 같은 탈중앙화 구성요소를 포함한다.
- 탈중앙화 (P2P) 스토리지 프로토콜과 플랫폼
- 탈중앙화 (P2P) 메세지 프로토콜과 플랫폼
제 3세대 인터넷 ( Ethereum and "Web 3.0" )
- Web 1.0 : read - only
- Web 2.0 : read - write
- Web 3.0 : read - write - own
DApp 의 개념은 웹 애플리케이션의 모든 측면에서 P2P 프로토콜로 탈중앙화를 도입하여 World Wide Web 을 자연스럽게 다음 단계로 발전시키기 위한 것으로, Web 3.0 은 웹 애플리케이션에 초점을 두는 새로운 버전을 말한다.
( 중앙 집중적으로 관리되는 애플리케이션으로부터 탈중앙화 프로토콜에 의해 구축된 애플리케이션으로의 전환. )
- Web3 has native payments : uses cryptocurrency(not relying on outdated banks)
- Web3 is trustless : it operates using incentives and economic mechanisms instead of relying on trusted third- parties.
'Study > BlockChain' 카테고리의 다른 글
| Ethereum : Accounts and Transactions (1) (2) | 2022.12.03 |
|---|