저녁 먹으면서 이곳 저곳 기웃거렸더니 역시 용어 정리를 잘해주신 분이 계셔서 링크 올립니다.
@easyblockchain/7pgjbi
이 분 글도 한번 다 정독해야겠네요. 저한테 도움이 많이 될 거 같습니다.(댓글에 있는 스팀잇 활용팁도 꿀이네요.ㅎ)
궁금해서 그냥 정독하고 왔습니다. ㅎㅎ 스팀잇은 좋아하지 않을 수가 없네요.ㅎ
한번 꼭 읽어보시길 바랍니다. 그림도 곁들여서 정말 쉽게 잘 설명하시네요.ㅎ 머클트리 설명같은 경우 이 글 뒤에 리스팀하겠습니다.
자 @yellowboy1010님의 응원 방문도 있었으니 더 힘내서 백서를 읽어보겠습니다.
2. 거래
우리는 전자 화폐를 디지털 서명의 연속으로 정의한다. 각 암호키 소유자들은 그 전까지의 거래 내역에 다음 소유자의 공개키를 덧붙인 뒤에 자신의 비밀키로 암호화하는 디지털 서명을 하고 넘긴다. 돈을 받는 사람은 서명 소유자들의 체인과, 서명들을 검증할 수 있다.
1) 디지털 서명은 대충 이해된다 치고 공개키는 뭐고 개인키는 뭔가?
방금 찾은 @easyblockchain님의 블로그입니다. 아주 잘 설명되어 있습니다.
@easyblockchain/2kjjep
좀더 재밌는 버전을 원하신다면 유명인이신 @twinbraid 님의 초보코인 시리즈를 보셔도 충분합니다.
@twinbraid/3y3vsq
@twinbraid/z2fyh-02
(@twinbraid 님의 글을 우선 읽으시는 걸 추천드립니다)
공개키는 쉽게 말해 제 지갑주소였군요(정확히는 공개키로 생성되는 거지만).
Edi2ksEskp93XZsog8W어쩌구 저쩌구 적혀있던..
예전에 서클이란 개인지갑을 썼었는데 개인키라는 건 찾아보지도 않았었네요. 거래소야 걍 통장같은 거라서 신경도 안 썼고..
개인 지갑 사용을 해보면 이 두가지는 확실히 더 알 수 있겠네요. 그럼 또 해봐야죠!
하여간 거래소 예를 들어보겠습니다. 거래소에 비트코인을 입금할 때 거래소는 저에게 주소를 부여합니다. 기억하기도 어려운 이상한 주소들이죠..그 이상한 주소들이 지금 그림의 다음 거래자의 공개키가 되는 거고 제가 개인키로 암호화하여 보낸 거래를 성립시키는 열쇠가 되는 거군요. 제가 거래소의 공개키를 암호하여 보냈기 때문에 그 거래소의 공개키로 밖에 열 수 없는 거구요. 제 개인키와 공개키를 써서 서명을 했으니 검증도 되는거구요.
문제의 과정은 돈을 받는 사람은 소유자들 중 한 명이 이중지불을 하지 않았는지 검증할 수가 없는 상황에서 발생한다. 공통적인 해법은 각 거래가 이중지불이 되었는지 신용해주는 중앙기관을 도입하는 것이다. 각 거래 후에, 그 화폐는 다시 새로운 화폐로 찍어내기 위해 중앙기관으로 회수되어야 하고, 이중지불이 아니란 걸 믿을 수 있도록 중앙기관에서만 직접 화폐를 발행하여 쓰도록 한다. 이러한 방법의 문제는 화폐 시스템 전체가 바로 은행 같은 중앙기관에 모든 거래 내역이 거쳐가도록 하는 방법에 의존하게 된다는 것이다.
위에 그림에서 보듯이 거래는 연속적인 행동입니다. 각각의 거래가 저렇게 물려있고 백서의 설명과 같이 보내는 사람이 그 전까지의 거래내역에 공개키를 붙이는 방식으로 거래를 진행하면, 하나씩 뒤로 가면서 이 돈이 언제 다른 식으로 쓰인적이 있는지를 확인할 수 있다는 내용입니다. 이 확인을 위해 모든 거래가 공개적이어하며 시간 순서에 따라 역순으로 거슬러 올라갈 수 있는(다른 쪽으로 세서 확인할 수 없는 거래가 만들어지지 않는), 하나의 줄기를 가진 시스템이 필요하다는 것이고요.
이런 시스템은 그 전 거래를 확인하기 위한 시간이 필요하니 과반수 이상의 노드들이 그것을 확인해서 그 전에 이 돈이 쓰인 적이 없다는 것을 증명(컨펌)을 하기까지 시간이 필요하다는 말인 것 같습니다.
3. 타임스탬프 서버
우리가 제안하는 해결 방법은 타임스탬프 서버에서 시작된다. 타임스탬프 서버는 시간 내역이 기록된 항목들의 블록 해시를 취합하고, 신문이나 유즈넷 포스트처럼 그 해시를 널리 발행하는 역할을 한다[2~5]. 이러한 타임스탬프 내역은 해시에 포함될 수 있도록 그 시간에 데이터가 명백히 존재했다는 것을 입증한다. 각 타임스탬프 내역은 이전 타임스탬프로부터 받은 해시 내역을 포함시킴으로써 보강하는 체인을 형성한다.
1) 또 나왔습니다. 해시(hash)는 뭔가요?
위키의 해설은 외계어로 되어있네요. 알아두면 언젠가 좋은 내용인 거 같아서 링크는 올리겠습니다. 걍 귀찮으시면 패스.
https://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%99%94_%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98
역시 위의 두분이 친절한 설명을 해놓으셨군요. 정말 감사드립니다.
@twinbraid/4yjj7b (댓글까지 읽어보세요)
@easyblockchain/2
그러니까 해시는 암호화해서(hashing) 나타나는 값으로 가장 중요한 특성은 똑같은 것을 넣어야 같은 해쉬같이 나온다는 거군요. 보내는 사람이 해시로 값을 만들어서 보내는 경우 받는 사람이 가지고 있는 정보와 조금이라도 변경된 부분이 있으면 받은 사람이 같은 해시함수로 풀었을 때 다른 해시값이 나오기 때문에 보안성을 강화하는 역할을 하는 거구요.
타임스탬프는 정보가 그 시간에 정확히 존재함을 말해주고 그 값의 변경이 없었음을 말해주니, 타임 스탬프 서버는 특정 시간에 기록된 해시값들을 널리 발행하여 그 시간에 정보가 존재하였고, 이전 타임스탬프로부터 받은 해시의 정보가 변하지 않았다는 것을 보강하는 역할이겠군요.(이해는 되는데 말로 풀기가 좀 힘드네요... 잘못 이해하서 그런가.--)
후아 하루를 꼬박 썼는데 요고밖에 못 쓰네요..역시 초보라 진도가.ㅋㅋㅋ
그래두 글 쓰면서 새롭게 이해되는 게 많아서 좋네요.ㅎㅎ 보시는 분들도 좀 이해가 되셔야할텐데..
많이 읽는 것보다 생각을 많이 해야한다는 말 명심하겠습니다.!
그럼 다음 글에서 뵙겠습니다!