차이점

이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.

차이 보기로 연결

비트코인 [2012-08-27 10:22]
lifthrasiir 새로 만듦
비트코인 [2012-09-23 05:52] (현재)
lifthrasiir 오타
줄 46: 줄 46:
 따라서 어떤 주소가 얼마만큼의 비트코인을 가지고 있다는 얘기는 첫번째 형태의 거래로 처리될 수 있는 출력이 그만큼 많이 있다는 소리일 뿐이다. 두번째 형태의 거래를 쓰거나, 아니면 완전히 다른 형태의((예를 들어서 받는 쪽과 보내는 쪽이 모두 신뢰하는 제 3자의 서명을 함께 쓰는 [[에스크로]]라거나, 수학 문제를 풀어야만 받을 수 있는 출력이라거나(...), 그냥 아무나 받을 수 있는 출력이라거나 어쨌든 스크립트를 잘 짜면 별의별 것을 다 만들 수 있다. 자세한 내용은 비트코인 위키의 [[https://en.bitcoin.it/wiki/Script|스크립트]] 참고.)) 스크립트를 쓴다면 거래 주체를 추적하기는 훨씬 어려워진다(사실 주소만 써도 이미 어렵긴 하다). 비트코인에서 거래는 공개되어 있지만 거래 주체는 공개되어 있지 않다는 얘기는 여기서 유래한다. 따라서 어떤 주소가 얼마만큼의 비트코인을 가지고 있다는 얘기는 첫번째 형태의 거래로 처리될 수 있는 출력이 그만큼 많이 있다는 소리일 뿐이다. 두번째 형태의 거래를 쓰거나, 아니면 완전히 다른 형태의((예를 들어서 받는 쪽과 보내는 쪽이 모두 신뢰하는 제 3자의 서명을 함께 쓰는 [[에스크로]]라거나, 수학 문제를 풀어야만 받을 수 있는 출력이라거나(...), 그냥 아무나 받을 수 있는 출력이라거나 어쨌든 스크립트를 잘 짜면 별의별 것을 다 만들 수 있다. 자세한 내용은 비트코인 위키의 [[https://en.bitcoin.it/wiki/Script|스크립트]] 참고.)) 스크립트를 쓴다면 거래 주체를 추적하기는 훨씬 어려워진다(사실 주소만 써도 이미 어렵긴 하다). 비트코인에서 거래는 공개되어 있지만 거래 주체는 공개되어 있지 않다는 얘기는 여기서 유래한다.
  
-거래의 입력에 들어 있는 비트코인의 합은 거래의 출력의 합보다 작을 수 없다(당연히). 그리고 기존 출력에 있는 비트코인의 일부만을 소비하고자 할 때도 남은 잔돈에 대응하는 출력이 있어야 한다. 대부분의 비트코인 클라이언트는 이 경우 새 공개키·비밀키를 생성해서 그 주소에 잔돈을 보내고, 나중에 그 잔돈이 필요할 때 해당 비밀키를 사용한다. (자기 자신한테 보낼 수도 있지만 이러면 잔돈을 사용한다는 것이 노출되어서 보통 그렇게 안 한다.) 그래서 겉으로 보이는 것과는 달리, 비트코인 사용하는 생각보다 많은 주소를 동시에 사용할 수도 있다. 사용하고 있는 공개키·비밀키들은 **지갑**(wallet)이라 불리는 파일에 기록되며, 이 지갑 파일이 사라지면 잔돈의 주소조차 잃어버릴 수 있으니 매우 조심해야 한다.+거래의 입력에 들어 있는 비트코인의 합은 거래의 출력의 합보다 작을 수 없다(당연히). 그리고 기존 출력에 있는 비트코인의 일부만을 소비하고자 할 때도 남은 잔돈에 대응하는 출력이 있어야 한다. 대부분의 비트코인 클라이언트는 이 경우 새 공개키·비밀키를 생성해서 그 주소에 잔돈을 보내고, 나중에 그 잔돈이 필요할 때 해당 비밀키를 사용한다. (자기 자신한테 보낼 수도 있지만 이러면 잔돈을 사용한다는 것이 노출되어서 보통 그렇게 안 한다.) 그래서 겉으로 보이는 것과는 달리, 실제로는 생각보다 많은 주소를 동시에 사용할 수도 있다. 사용하고 있는 공개키·비밀키들은 **지갑**(wallet)이라 불리는 파일에 기록되며, 이 지갑 파일이 사라지면 잔돈의 주소조차 잃어버릴 수 있으니 매우 조심해야 한다.
  
 거래의 입출력 외에도 거래에는 거래가 생성된 시각과, 그 거래가 블록에 실제로 포함될 때까지 기다려야 하는 시간 또는 블록 번호(lock time), 거래를 생성한 뒤에 서명을 바꾸지 않고 거래를 갱신하기 위한((거래가 블록에 들어가기 전에 당사자들끼리 협상을 할 수 있게 하려는 것이다. 물론 블록에 들어갈 때는 이 필드는 최대값으로 바뀐다.)) 순열 번호(sequence number) 등이 함께 있다. 이들은 입출력 스크립트와 함께 다양한 형태의 거래를 구현하는데 쓸 수 있다. 거래의 입출력 외에도 거래에는 거래가 생성된 시각과, 그 거래가 블록에 실제로 포함될 때까지 기다려야 하는 시간 또는 블록 번호(lock time), 거래를 생성한 뒤에 서명을 바꾸지 않고 거래를 갱신하기 위한((거래가 블록에 들어가기 전에 당사자들끼리 협상을 할 수 있게 하려는 것이다. 물론 블록에 들어갈 때는 이 필드는 최대값으로 바뀐다.)) 순열 번호(sequence number) 등이 함께 있다. 이들은 입출력 스크립트와 함께 다양한 형태의 거래를 구현하는데 쓸 수 있다.
줄 87: 줄 87:
 ! 전자 서명에는 [[타원곡선서명알고리즘]](ECDSA)이 사용되었으며, 좀 더 구체적으로는 secp256k1 곡선이 사용되었다. [[http://www.secg.org/collateral/sec2_final.pdf|SEC 2]]에 따르면 대략 3072비트 [[RSA]]에 맞먹는다고 한다. 공개키에 사용하는 원 데이터는 물론 곡선 상의 좌표를 [[식별부호화규칙]](DER)으로 표현한 것. ! 전자 서명에는 [[타원곡선서명알고리즘]](ECDSA)이 사용되었으며, 좀 더 구체적으로는 secp256k1 곡선이 사용되었다. [[http://www.secg.org/collateral/sec2_final.pdf|SEC 2]]에 따르면 대략 3072비트 [[RSA]]에 맞먹는다고 한다. 공개키에 사용하는 원 데이터는 물론 곡선 상의 좌표를 [[식별부호화규칙]](DER)으로 표현한 것.
 ? 암호화 알고리즘 ? 암호화 알고리즘
-! 없다! 비트코인은 어떤 [[대칭암호]]나 [[비대칭암호]]도 쓰지 않는다. 물론 개별 서비스나 지갑 암호화 같은 거라면 모르겠지만.+! 없다! 비트코인은 어떤 [[대칭암호]]나 [[비대칭암호]](의 암호화·복호화 부분)도 쓰지 않는다. 물론 개별 서비스나 지갑 암호화 같은 거라면 모르겠지만.
 ? 네트워크 프로토콜 ? 네트워크 프로토콜
 ! 위에서는 네트워크 프로토콜에 대한 설명은 별로 안 되어 있는데, 이는 이 프로토콜이라는 것이 공통의 데이터베이스를 그다지 복잡하지 않은 전파 알고리즘으로 갱신하는 것에 불과해서 그렇다. 거래나 블록 같은 건 서명이 들어 가서 쉽게 바꾸기 어렵지만, 네트워크 프로토콜은 (심지어 암호화도 되어 있지 않기 때문에) 쉽게 바꿀 수 있다. ! 위에서는 네트워크 프로토콜에 대한 설명은 별로 안 되어 있는데, 이는 이 프로토콜이라는 것이 공통의 데이터베이스를 그다지 복잡하지 않은 전파 알고리즘으로 갱신하는 것에 불과해서 그렇다. 거래나 블록 같은 건 서명이 들어 가서 쉽게 바꾸기 어렵지만, 네트워크 프로토콜은 (심지어 암호화도 되어 있지 않기 때문에) 쉽게 바꿀 수 있다.

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2012-09-23 05:52 | 작성자 lifthrasiir