BlockChain 기술을 기반으로 Smant Contract 기능을 구현하기 위한 분산 컴퓨팅 플랫폼이다.
Ethereum 네트워크의 모든 사람들의 동의하는 하나의 표준 컴퓨터 (Ethereum Virtual Machine, EVM)가 있습니다. Ethereum에 참여하는 모든 참가자들은 EVM의 상태 복사본을 보관하고 있습니다.
Ethereum Virtual Machine(EVM)은 Ethereum 네트워크를 구성하는 Client를 실행하고 있는 수천 개의 연결된 컴퓨터에 의해서 유지되는 하나의 단일 개체를 의미합니다.
Ethereum 프로토콜은 EVM이 중단되지 않고 지속적으로 불변하는 작동을 유지하기 위한 목적으로 존재합니다. BlockChain의 상태는 언제나 하나의 정규 상태를 가지며, EVM은 블록에서 블록으로 새로운 유효 상태를 계산하는 규칙을 정의합니다.
Ethereum은 SmartContract
를 기반으로 각 노드에 분산 유한 상태 머신 데이터로 볼 수 있습니다. Ethereum의 상태는 계정, 잔액, 기계 상태를 보유하고 있는 대규모 데이터 구조로서 미리 정의된 규칙에 다라서 블록에서 블록으로 변경할 수 있고 임의의 코드를 실행할 수 있습니다. 블록에서 블록으로 상태를 변경하는 규칙은 EVM에 의해서 정의를 합니다.
EVM은 입력이 주어지게 되면 결정론적인 출력을 생성합니다.
기존에 검증된 S와 새로 검증된 Transaction (T)을 Ethereum 상태 transation 기능 Y(S, T) 에 넣어 새로운 형태 S'을 생성합니다.
Ethereum의 맥락에서, State는 Modified Merkle Patricia Trie 라고 불리는 구조의 모든 계정의 Hash로 연결된 하나의 Single root hash 유지하고 있습니다.
Transaction은 계정에서 암호로 서명된 데이터 입니다. Transaction은 호출된 메시지의 결과가 담겨 있는 transaction과 contract의 결과가 담겨있는 2가지 타입의 종류가 있습니다.
Contract는 smart contract
의 bytecode가 포함된 새로운 contract 계정이 생성됩니다. 다른 계정이 해당 계약으로 메시지를 호출할 때마다 해당하는 바이트 코드를 실행합니다.
Ethereum
에서의 계정은 Ethereum
네트워크에서 거래를 보낼 수 있는 Ethereum
(ETH) 잔액을 가진 대상을 말합니다. 계정은 사용자가 제어하거나 스마트 컨트랙트를 배포할 수 있습니다.
Ethereum
에서는 2가지 타입의 계정이 존재합니다.
두 개의 Account는 모두 ETH 토큰을 소유하거나 보낼 수 있으며, 배포된 contract와 상호작용 하는 것이 가능합니다.
EOA | Contract | |
---|---|---|
생성 비용 | 생성 비용 없음 | network 저장 공간 사용으로 비용 발생 |
트랜잭션 | transaction 시작 가능 | 수신한 transaction에 대한 응답 가능 |
ETH 전송 | 다른 EOA와 통신만 가능 | trigger code를 활용하여 다른 Contract, EOA와 통신 |
KeyPair 소유 | Key Pair 소유 | Key Pair를 소유하지 않음 |
Ethereum
은 다음 4가지 종류의 필드 값을 가지고 있습니다.
transactions
를 구분하고 각 개수를 세기 위한 값keccack256
알고리즘을 기본으로 하여 인코딩하여 저장합니다.