데이터 계층

YU YU·2021년 12월 20일
0

코어 이더리움

목록 보기
5/9

1. 어카운트

이더리움 플랫폼에서 어카운트는 모든 트랜잭션의 실행 주체이자 기본 단위로서 모든 것은 어카운트에서 시작한다. 이더리움은 2가지 어카운트 타입을 갖는다.

1-1. 외부 소유 어카운트(EOA, Externally Owned Account)

일반적으로 말하는 이더리움 사용자 어카운트가 외부 소유 어카운트이다. 사람이 직접 개인키로 관리하며(private key) 스마트 컨트랙트 실행 코드를 가지고 있지 않다. 개인 키를 분실하면 해당 어카운트도 분실한 것이 된다. EOA는 개인 키를 사용하여 전자 서명된 트랜잭션을 생성하고 실행함으로써 다른 EOA나 컨트랙트 어카운트에 메세지를 보낼 수 있다. 보통 EOA 간의 메세지는 이더를 전송하는 것이다. 그러나 EOA는 컨트랙트 어카운트에 메세지를 보내 해당 코드를 실행시켜 다양한 결과를 만들 수 있다.

1-2. 컨트랙트 어카운트(CA,Contract Account)

일반적으로 부르는 스마트 컨트랙트의 정식 용어. contract account는 EOA나 다른 CA의 메세지를 받은 후 내부의 스마트 컨트랙트 코드를 실행한 후, 새로운 컨트랙트를 생성하거나 다른 메세지를 읽거나 보낸다. 또한 필요하면 내부 저장 공간에 데이터를 저장할 수도 있다. 그러나 랜덤 넘버를 생성하거나 직접 운영체제를 조작하는 API를 호출하는 작업 등은 할 수 없다. 오직 EOA나 다른 컨트랙트 코드에 의해서만 작동된다. 즉, 자기 자신이 직접 새로운 트랜잭션을 실행할 수는 없다.

1-3. 어카운트 정보

  • nonce
    - 해당 어카운트로부터 보내진 트랜잭션의 수. 0으로 시작한다.
    - 트랜잭션이 무제한 실행될 때는 의미가 없으나 트랜잭션을 오직 한 번만 실행되게 할 때 사용할 수 있는 카운터. 만약 CA이면 넌스는 EOA에 의해 생성된 컨트랙트 수를 뜻한다.
  • balance
    - 해당 어카운트의 이더 잔고(Wei)
  • root
    - 해당 EOA가 저장될 머클 패트리시아 트리의 루트 노드.
    - 실제 EOA의 저장소는 머클 패트리시아 트리에 저장되는데, 이 트리의 루트 노드를 암호 해시한 것이 바로 root이다. 암호 해시는 Keccak256 암소 해시를 사용한다.
  • CodeHash
    - 해당 EOA의 스마트 컨트랙트 바이트 코드의 해시를 말한다. 코드 해시값이 비어있으면 해당 어카운트는 일반 EOA이고 CA가 아니라는 의미.
profile
코딩 재밌어요!

0개의 댓글