Skip to content

Instantly share code, notes, and snippets.

@dittos
Last active December 29, 2015 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dittos/7677607 to your computer and use it in GitHub Desktop.
Save dittos/7677607 to your computer and use it in GitHub Desktop.

적당히 자세한 비트코인의 원리

비트코인 주소

31uEbMgunupShBVTewXjtqbBv5MndwfXhb (비트코인 주소의 예.)

비트코인을 보내거나 받을 때 사용하는 주소다. 다른 사람의 주소를 알면 그 주소로 내 비트코인을 송금할 수 있다. 반대로 다른 사람에게 내 주소를 알려주고 비트코인을 부쳐달라고 할 수도 있다. 비트코인 주소는 누구나 얼마든지 만들 수 있어서 누가 소유한 주소인지 추적하기 어렵다. 따라서 익명성을 보장해준다. 실제로 거래를 할 때마다 주소를 새로 생성해서 사용할 것을 권장하고 있다.

먼저 공개키/비밀키 쌍을 만든 뒤, 공개키를 적절한 방법으로 해싱해서 비트코인 주소를 생성한다. 물론 비밀키는 다른 사람에게 알려주면 안되고 안전하게 보관해야 한다. 비밀키로 거래 내역을 서명하면, 공개키를 알고 있는 사람들이 올바른 거래인지 검증할 수 있게 된다.

트랜잭션

트랜잭션은 간단하게 말해 비트코인 송금 내역이다. 다음과 같은 내용이 들어간다.

  • 1개 이상의 출력: 비트코인을 누가 얼마나 받게 되는지 나타낸다. 받는 사람에 대한 정보는 공개키의 해시로 표현한다. (비트코인 주소와는 해시 방식이 다름.)
  • 1개 이상의 입력: 각 입력은 이전에 발생한 트랜잭션의 출력 중 하나를 가리킨다. 즉, 보내려는 비트코인의 출처를 나타낸다.

트랜잭션이 유효하다는 것을 증명하기 위해 비밀키로 서명을 한다. 서명을 함으로서 이전에 비트코인을 받은 사람과 새로운 트랜잭션의 발행자가 동일인임을 확인할 수 있게 된다.

블럭

마이닝

마이닝 풀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment