Account의 종류
외부소유계좌 (EOA : Externally Owned Account)
- 개인키(Private key)를 가지고 통제할 수 있는 계좌
- 다른 계좌로의 Ether 송금, 메시지 전송 가능
계약 계좌 (Contract Account)
= EOA + @ (컨트랙트 코드, 저장공간)
- 계약 계좌가 특정 메시지를 받게되면 계좌내 코드가 실행
- 내부 저장공간에 정보를 읽고 쓸수 있다.
Account 구성요소
- 넌스 : Address 에서 전송된 트랜잭션 수. Mining 할때의 넌스값이랑은 다른 값이다.
- 이더량(Ether Balance) : 계좌가 보유하고 있는 이더양
- 계약 코드(Contract code, CA only) : 실제로 실행될 계약 내용이 적힌 솔리디티 코드
- 저장공간(Storage, CA only) : 계약코드 실행에 필요한 정보들을 저장하는 공간
|
|
Nonce EOA 의 경우 : address 에서 전송한 트랜잭션 수 CA의 경우 : 스마트 컨트랙트에서 생성한 다른 스마트 컨트랙트의 수 |
Balance 계정 유형에 관계없이 한 Account 가 소유한 ETH |
storageRoot Merkle Patricia Tree 의 Root Hash |
codeHash EOA 의 경우 : 빈 문자열의 Hash CA 의 경우 : 한 Account 에 포함된 EVM code 의 hash |
Account 생성
- 공개키 = ECDSA (개인키) => 계정번호 = BASE58Check(sha3-256(공개키)
Account의 Transaction
- EOA : 해당 계좌는 아무런 코드를 가지고 있지 않으며 어카운트에서 메시지를 보내기 위해서는 새로운 거래를 만들고 서명해야 함.
- CA : 해당 어카운트는 TX를 받을 때마다 자신의 코드를 활성화시키고, 이에 따라 데이터를 읽거나 내부 저장공간에 기록하고, 다른 TX를 보냄
- 체인링크, 비체인, 쎄타 등 유명한 코인들도 이더리움의 CA 임 (https://etherscan.io/tokens)- 스마트 컨트랙트에 존재하는 함수를 사용하는것이 Internal Transaction 이다.
이더리움 CA의 동작과정
- 예를들어 DApp 이 있다면, DApp의 등록기능, 확인기능이 구성되어 있다.- 스마트 컨트랙트는 확인 버튼을 누른다면 동작하는 함수들을 구현해놓은 곳이다. 이곳에서는 A 함수를 요청한다.- 블록체인에서 저장되어있는 해당하는 스마트 컨트랙트에 있는 A 함수를 요청함을 인지함- A에 해당하는 내용을 마이너가 처리함- 처리내용을 블록체인에 저장- state가 변한다면 스마트 컨트랙트의 데이터에 해당하는 곳을 바꿈- DApp으로 가 요청사항을 보여준다. - 서버에서 해주어야 할 것을 이더리움은 스마트 컨트랙트(원하는 코드를 생성가능)를 통해 지원한다.
이더리움 블록체인의 모든 기능은 항상 EOA의 트렌잭션으로부터 시작된다.
간단한 솔리디티 코드
- 해당 코드는 비체인의 코드이다.
- 이처럼 이더리움을 기반으로 한 토큰은 개발자 마음대로 총 공급량을 정할 수 있다.
블록체인이 개선해야할 세가지 요소
트릴레마 라고 하며, 속도-보안-탈중앙화를 말한다.
'블록체인 > 이더리움' 카테고리의 다른 글
이더리움 Transaction 2 (2) | 2021.06.11 |
---|---|
이더리움 Transaction (0) | 2021.06.11 |
이더리움 가스 (0) | 2021.06.10 |
State machine (0) | 2021.06.10 |
이더리움 구성 (0) | 2021.06.09 |
댓글