검수요청.png검수요청.png

"코인토싱"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(전략)
5번째 줄: 5번째 줄:
  
 
==전략==
 
==전략==
코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것이불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용 되려면 랜덤변수 생성 참여자중 51%이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 [[합의 프로토콜]]이 무너지므로 참여자 51%이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다.
+
코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용 되려면 랜덤변수 생성 참여자중 51%이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 [[합의 프로토콜]]이 무너지므로 참여자 51%이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다.
 
*'''1단계: 랜덤변수 생성, 조각을 네트워크에 전달'''
 
*'''1단계: 랜덤변수 생성, 조각을 네트워크에 전달'''
 
: 참여자는 각각 나름의 방법으로 랜덤 변수를 생성한다. 그리고 이를 나머지 네트워크 구성자의 수에 맞게 조각낸다. 그리고 랜덤 변수의 조각들을 각각의 구성자에게 전달한다. 특정 참여자의 조각 중 과반수를 모으면, 그 참여자가 생성한 랜덤 변수를 항상 복원할 수 있다. 이 복원 가능성은 조작이 불가능하다.<ref name="전략">seungjae1012, 〈[https://steemit.com/coinkorea/@seungjae1012/cardano-ada-pos-ouroboros 카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)]〉, 《스팀잇》, 2018-06-14</ref> 예를 들어 참여자 A, B, C가 있다고 생각하고 A는 악의적인 랜덤변수 생성 참여자라고 생각해보자. A, B, C는 모두 생성한 랜덤변수의 조각을 생성하여 서로 교환한다. 여기서 A는 본인의 조각을 조작할 수 없다. 조작할 경우 A는 1단계를 넘어가지 못한다.
 
: 참여자는 각각 나름의 방법으로 랜덤 변수를 생성한다. 그리고 이를 나머지 네트워크 구성자의 수에 맞게 조각낸다. 그리고 랜덤 변수의 조각들을 각각의 구성자에게 전달한다. 특정 참여자의 조각 중 과반수를 모으면, 그 참여자가 생성한 랜덤 변수를 항상 복원할 수 있다. 이 복원 가능성은 조작이 불가능하다.<ref name="전략">seungjae1012, 〈[https://steemit.com/coinkorea/@seungjae1012/cardano-ada-pos-ouroboros 카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)]〉, 《스팀잇》, 2018-06-14</ref> 예를 들어 참여자 A, B, C가 있다고 생각하고 A는 악의적인 랜덤변수 생성 참여자라고 생각해보자. A, B, C는 모두 생성한 랜덤변수의 조각을 생성하여 서로 교환한다. 여기서 A는 본인의 조각을 조작할 수 없다. 조작할 경우 A는 1단계를 넘어가지 못한다.
18번째 줄: 18번째 줄:
  
 
{{각주}}
 
{{각주}}
 +
 
==참고자료==
 
==참고자료==
 
* 〈[https://eprint.iacr.org/2016/889.pdff 카르다노 백서]〉
 
* 〈[https://eprint.iacr.org/2016/889.pdff 카르다노 백서]〉

2019년 8월 14일 (수) 16:34 판

코인토싱(Coin Tossing)이란 카르다노우로보로스 프로토콜이 채택한 방식으로 조작 불가능하고 믿을 수 있는 랜덤 변수의 생성을 위한 프로토콜이다.

개요

코인토싱(Coin Tossing)은 불특정 다수의 참여자가 서로의 정보를 공평하고, 배신의 위험 없이 안전하게 교환할 수 있게 하는 프로토콜이다. 이를 랜덤 변수 생성에 적용하면 네트워크 참여자 각자가 만든 랜덤 변수를 안전하게 교환할 수 있게 된다. 랜덤 변수가 무결하고, 조작이 불가능하면 지분증명(POW)코인은 그라인딩 어택(Grinding Attack)으로 부터 자유롭다.[1]

전략

코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용 되려면 랜덤변수 생성 참여자중 51%이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 합의 프로토콜이 무너지므로 참여자 51%이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다.

  • 1단계: 랜덤변수 생성, 조각을 네트워크에 전달
참여자는 각각 나름의 방법으로 랜덤 변수를 생성한다. 그리고 이를 나머지 네트워크 구성자의 수에 맞게 조각낸다. 그리고 랜덤 변수의 조각들을 각각의 구성자에게 전달한다. 특정 참여자의 조각 중 과반수를 모으면, 그 참여자가 생성한 랜덤 변수를 항상 복원할 수 있다. 이 복원 가능성은 조작이 불가능하다.[2] 예를 들어 참여자 A, B, C가 있다고 생각하고 A는 악의적인 랜덤변수 생성 참여자라고 생각해보자. A, B, C는 모두 생성한 랜덤변수의 조각을 생성하여 서로 교환한다. 여기서 A는 본인의 조각을 조작할 수 없다. 조작할 경우 A는 1단계를 넘어가지 못한다.
  • 2단계: 랜덤 변수를 암호화 시켜 전달
랜덤변수 생성 참여자 모두가 조각을 전달 받으면, 코인토싱이 시작된다. 시작은 랜덤변수를 암호화시켜 전달하는 것이다. 아직은 아무 정보 교환도 일어나지 않는다.[2]
  • 3단계: 본인의 랜덤변수를 전달
암호화 시킨 랜덤변수를 전달 받은 참여자는 그에 대한 답신으로 본인의 랜덤변수를 보낸다. 이번에는 암호화 되지 않은 랜덤변수이다. 즉 실질적인 정보교환이 한 방향으로 일어난다.[2]
  • 4단계: 암호화 된 변수를 해독하는 키 전달
답신을 받은 참여자는 암호화 된 변수를 해독하는 키를 전달한다. 키를 받은 참여자는 미리 받은 암호화 된 변수를 해독함으로서 상대방의 변수를 얻게 된다. 이 단계에서 서로간의 정보교환이 마무리된다.[2] 예를 들어 A, B, C 참여자중 A가 4단계에서 해독 키를 B와 C에게 보내주지않고 통신을 끊어버린다면 A만 최종 랜덤 변수를 계산할 수 있게된다. 하지만 코인토싱 프로토콜을 사용했기 때문에 B와 C가 1단계에서 받았던 A의 조각을 합치면 A의 변수를 복원할 수 있다. 즉 A가 4단계에서 배신한다 하더라도 B와 C는 A의 변수를 얻을 수 있다.
  • 5단계: 모두의 랜덤변수를 바탕으로 최종 변수 계산
정보교환이 마무리 되면, 네트워크 구성원들은 각자 최종 변수를 계산할 수 있게된다. 누구도 최종 변수를 마음대로 조작할 수 없고, 남들보다 빠르게 최종 변수값을 얻을 수 없다. 즉 완전무결한 랜덤변수가 공정하게 생성된 것이다.[2]

각주

  1. keepit, 〈KEEP!T 블록체인 상식사전〉, 《스팀잇》, 2019-08-14
  2. 2.0 2.1 2.2 2.3 2.4 seungjae1012, 〈카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)〉, 《스팀잇》, 2018-06-14

참고자료

같이보기

  검수요청.png검수요청.png 이 코인토싱 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.