
EOA 는 외부사용자계정으로 일반적으로 이야기하는 개인 지갑 계정을 의미하며, private key 에 의해 control 된다.
CA 는 스마트컨트랙트를 배포하였을 때 생성되는 account 이며, 네트워크에 배포된 코드에 의해 control 되는 account 이다.
이더리움의 모든 account 는 account 를 식별하기 위한 address 와 네 가지 필드를 가지고 있다.

nonce 는 account 가 전송한 트랜잭션의 갯수를 나타내는 정수이다. 트랜잭션을 전송할 때 현재 계정의 nonce 값을 같이 첨부하여 트랜잭션이 중복되어 전송되지 않았음을 보장하기 위해 사용된다.
컨트랙트의 경우 트랜잭션을 전송할 수 없기 때문에 CA 의 nonce 는 해당 컨트랙트가 create opcode 를 통해 생성한 컨트랙트의 갯수를 의미한다.
balance 는 해당 account 가 보유하고 있는 ether balance 를 나타낸다.
codeHash 는 CA 의 경우 스마트컨트랙트의 코드가 담기는 곳이다. EOA 는 해당 값에 빈 문자열(””)의 해시값이 담겨 있다.
storageRoot 는 각 account 가 갖고 있는 storage trie 의 root node 를 해시한 값이다. storage trie 는 컨트랙트의 데이터를 저장하고 있는 trie 이다. EOA 는 해당 값이 비어 있다.
트랜잭션을 실행할 때 account 를 소유한 유저가 트랜잭션을 본인이 보냈음을 증명하기 위해서 private key 로 생성된 서명을 한다.
트랜잭션 데이터와 동봉된 서명을 전달받은 이더리움 프로토콜은 두 단계 작업을 수행한다.
signer 와 account 가 사실상 동일한 이더리움의 아키텍처는 심플하다는 장점이 있으나, 비밀키를 분실할 경우 account 도 사용할 수 없다는 단점도 존재한다.