Bitcoin 블록체인의 경우 UTXO 기반으로 상태값이 관리된다. 블록이 새로 생길 때마다 UTXO 사용여부를 업데이트 하는 식으로 사용자의 잔액이 관리된다.
Ethereum 블록체인의 경우 State기반으로 Account(계정)에 잔액, 데이터 상태값이 저장되어 블록이 생길 때 마다 잔액을 업데이트 하는 방식이다.
EOA는 Private Key를 소유한 사람이 관리하는 방식으로 Bitcoin의 PKI와 동일한 방식으로 관리된다. Eth 전송, Contract 호출 등 다양한 활동을 할 수 있다. 계정 생성에 비용이 발생하지 않는다.
CA는 생성한 사용자의 정보에 의해서 네트워크에서 Account를 생성한다.
사용자의 호출에 따라 State 변경, 함수 호출, ETH 전송 등 다양한 활동을 할 수 있다.
계정 생성에 코드의 크기에 따른 비용이 발생한다.
이 비용은 생성자가 지불한다.
Etheruem의 경우 사용자가 직접 관리하는 EOA(External Owned Account)와 Smart Contract 코드를 네트워크에 배포시에 생기는 CA(Contract Account) 두 가지 종류가 존재한다.
CA만 가진 데이터이며, EOA는 빈 공간으로 가지고 있다. Contract Code의 Hash 정보가 들어가게 된다. EVM code와 같이 사용된다.
계정 Merkle Patricia Trie의 root node의 Hash 값이다. 기본값은 비어있는 상태이다. Account Storage와 같이 사용된다.
계정에서 전송한 Transaction의 수를 기록한다. 0부터 시작하여 1회 전송 시 마다 +1 씩 증가한다.