이더리움 Account
개인키, 공개키, 주소 생성
- 개인키 : 자신만이 알고 있어야 되는 키 (256bit), 블록체인 상에서 자기자신을 입증할 수 있게 해 줌.
- 공개키 : 모두가 알고 있어도 되는 키 (256bit), 공개키로 잠겨 있는 경우, 맞는 개인키로만 해제 가능
- 주소 : 공개키에 대해 keccak256 해시한 값(256bit)에서 앞 96bit를 버려서 남은 160bit를 16진수 변환해서 사용 (0x…)
주소 종류
- EOA (Externally Owned Account)
- 일반 사용자들이 갖는 주소 등 일반적인 주소가 이에 해당함
- 트랜잭션을 생성할 수 있는 주소 (모든 트랜잭션은 EOA로부터 시작된다.)
- getCode 호출 시, ‘0x’ 반환값을 갖는다.
- CA (Contract Account)
- 솔리디티를 이용해 만든 코드(Smart Contract)를 블록체인 상에 deploy시킬 때, 해당 코드가 인스턴스화되는데 이 떄 해당 인스턴스를 가리키는 포인터 역할을 한다.
- 동일한 동작을 하는 CA는 얼마든지 있을 수 있지만, 해당 주소는 유일하다. (블록체인 상 모든 주소는 유일하다.)
- EOA에서 CA의 함수 호출이 가능하며, CA에서 다른 CA의 함수를 호출하는 것 역시 가능하다. (Internal Transaction으로 동작한다.)
- getCode 호출 시, 해당 컨트랙트에 대한 binary information이 반환된다.
구분하는 법
- web3.eth.getCode(<궁금한 주소>) 의 결과값이 “0x”인 경우 EOA 이다!