개인키를 랜덤하게 생성하는 비결정적 방식과 공통 시드로부터 생성하는 결정적(deterministic) 방식이 있다.
여러개의 키를 랜덤하게 만드는 방식으로 Type-0형 지갑이라고 한다. 키들은 독립적으로 랜덤하게 생성되고 아무런 연관성이 없다.
같은 상태라면 똑같은 입력을 주었을 때 항상 같은 결과가 나오는 방식이다. 시드 값과 해시 함수를 이용해서 연쇄적으로 키를 만든다. 각 키들은 시드값을 시작으로 키체인을 이룬다. 키들은 독립적이지 않고 관계를 갖는다. 초기 시드값으로는 단어 목록이나 문장을 사용할 수 있다.
결정적 방식은 초기 시드 값만 보관하면 나머지 키들은 언제든지 다시 만들 수 있다. 이방식을 Type-1형 지갑이라고 하고 이를 보완한 방식으로는 BIP-32로 제안된 계층적 구조를 가진 Type-2형 지갑이 있다.
HD지갑은 계층적 구조로 키와 지갑 주소를 관리 할 수 있다. 마스터 시드로 마스터 개인키와 공개키를 만들고, 마스터키로 하위 계층의 키와 주소를 생성한다.
이 구조의 특징은 하위 계층의 공개키를 만들 때 상위 계층의 공개키를 사용한다는 것이다. 이렇게 만든 공개키는 자기 계층의 개인키로 만든 공개키와 같다. 특정 계층의 개인키-공개키 쌍은 암호학적 틍징을 갖추고 있으므로 전자서명과 검증에 사용될 수 있다.
사용자가 임의로 문장이나 단어목록을 지정하면 Brain Wallet이 되고, 사전에서 랜덤하게 문장이나 단어목록을 지정하면 Mnemonic Wallet이 된다.
BIP-39는 단어목록을 안전하게 선택하는 방법을 제안하고 있다.
블록체인 네트워크의 목적은 트랜잭션이다. 암호, 지갑, 채굴 등 트랜잭션 이외의 요소들은 트랜잭션을 안전하게 만들기 위한 부수적인 것이다. 트랜잭션은 블록체인 기록된 코인의 소유권을 이전하는 절차이다. 트랜잭션에는 보내는 사람과 받는 사람이 있어야 하고 대상인 코인(잔액)이 있어야 한다.
트랜잭션 데이터는 최종적으로 블록체인의 특정블록에 저장된다. 트랜잭션의 고유 ID로는 트랜잭션 데이터의 해시 값이 사용된다. 이 ID를 통해서 블록체인에서 데이터를 검색할 수있다.
가스 : 트랜잭션을 실행하기 위한 수수료의 단위
1 Ether = 1,000,000,000 Gwei