비트코인의 중심화 합의 메커니즘의 마지막 단계는 블록을 체인에 조립하고 최대 작업량 증명의 체인을 선택하는 것이다. 한 노드가 새 블록을 검증하면 새 블록을 기존 블록 체인에 연결하여 어셈블하려고 합니다.
노드는 다음 세 가지 블록을 유지 관리합니다.
첫 번째는 주 체인에 연결된 것입니다
두 번째는 주 체인에서 브랜치를 생성하는 것입니다 (대체 체인)
마지막 하나는 알려진 체인에서 상위 블록을 찾을 수 없는 (고아 블록) 입니다
검증 중에 규정 준수 위반이 발견되면 검증이 실패하고 해당 블록이 노드에 의해 거부되어 체인에 추가되지 않습니다.
언제든지 주 체인은 모든 유효 체인에서 가장 많은 작업량 증명을 누적하는 블록 체인입니다. 일반적으로 주 체인도 가장 많은 블록이 포함된 체인이며 길이가 같은 체인도 두 개 있지만 그 중 하나는 더 많은 작업 로드 증명서를 가지고 있어야 합니다. 주 체인에는 주 체인의 블록과 "형제" 블록이 서로 있는 브랜치도 있습니다. 이러한 블록은 유효하지만 주 체인의 일부가 아닙니다. 이러한 분기를 보존하는 목적은 향후 어느 시점에서 이들 중 하나가 연장되고 누적 작업 로드 증명에서 주 체인을 초과하는 경우 후속 블록이 이를 참조하기 위한 것입니다.
노드가 새 블록을 수신하면 이 블록을 기존 블록 체인에 삽입하려고 시도합니다. 노드는 해당 블록의 상위 청크를 참조하는 이 블록의 "상위 청크 해시" 필드를 확인합니다. 그런 다음 이 노드는 기존 블록 체인에서 이 상위 블록을 찾으려고 시도합니다. 대부분의 경우 상위 블록은 주 체인의 "정점" 에 있습니다. 즉, 이 새 블록이 주 체인을 연장합니다. 예를 들어, 새 청크 277,316 은 상위 청크 277,315 의 해시 값을 참조합니다. 대부분의 노드는 이미 주 체인의 상단으로 277,315 를 사용했기 때문에 277,316 블록을 받으면 블록 체인을 연장할 수 있습니다.
경우에 따라 새 블록이 연장된 블록 체인이 주 체인이 아닌 경우도 있습니다. 이 점은 "블록 체인 분기" 섹션에서 볼 수 있습니다. 이 경우 노드는 새 블록을 대기 체인에 추가하고 대기 체인을 기본 체인의 작업 로드와 비교합니다. 대기 체인이 기본 체인보다 더 많은 작업량을 누적하면 노드가 대기 체인에 수렴됩니다. 즉, 노드는 대기 체인을 새 기본 체인으로 선택하고 이전 기본 체인은 대기 체인이 됩니다. 노드가 광부인 경우, 이 업데이트의 더 긴 블록 체인을 연장하기 위해 새 블록을 구성하기 시작합니다.
노드에서 유효한 청크를 받았지만 기존 청크 체인에서 상위 청크를 찾을 수 없는 경우 해당 청크는 "고립 블록" 으로 간주됩니다. 고립된 블록은 노드가 상위 청크를 받을 때까지 고립된 블록 풀에 저장됩니다. 상위 청크가 수신되어 기존 청크 체인에 연결되면 노드는 청크 풀에서 청크를 제거하고 상위 청크에 연결하여 청크 체인의 일부로 만듭니다. 두 개의 블록이 매우 짧은 시간 간격 내에 파내면 노드가 반대 순서 (하위가 상위 앞에 있음) 로 수신될 수 있으며, 이때 고립 현상이 발생합니다.
유효한 최대 누적 작업 로드 블록 체인을 선택하여 모든 노드가 결국 네트워크 전체에서 합의했습니다. 더 많은 작업량이 체인에 추가됨에 따라 가능한 체인 중 하나가 확장되면서 체인의 일시적인 차이가 결국 해결됩니다. 광산 노드는 연장하려는 블록 체인을 선택하여’ 투표’ 한다. 새 블록을 파서 체인을 연장하면 새 블록 자체가 투표를 나타냅니다.
블록 체인의 분기
청크 체인은 중앙화되지 않은 데이터 구조이기 때문에 서로 다른 복제본 간에 항상 일관성을 유지할 수는 없습니다. 블록은 여러 시간에 걸쳐 telegram 홈페이지의 다운로드 장소 같은 노드에 도달할 수 있으며, 이로 인해 노드가 서로 다른 블록 체인의 전모를 갖게 될 수 있습니다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 예술명언) 해결 방법은 각 노드가 항상 최대 작업 로드 인증서가 누적된 블록 체인, 즉 가장 긴 누적 작업 로드 체인 또는 최대 누적 작업 로드 체인을 선택하고 연장하는 것입니다. 노드는 체인의 각 블록에 대한 작업 로드를 누적하여 이 체인의 작업 로드 증명의 총량을 얻습니다. 모든 노드가 최대 누적 작업 로드 체인을 선택하는 한 전체 비트코인 네트워크는 결국 일관된 상태로 수렴됩니다. 블록 체인 버전의 일시적인 차이로 인해 분기점이 발생하며, 분기점에 더 많은 블록이 추가됨에 따라 이 문제가 해결됩니다.
이 섹션에서 설명하는 블록 체인 분기점은 글로벌 네트워크의 전송 지연으로 인해 자연스럽게 발생합니다. 우리는 또한 이 장의 뒷부분에서 고의로 야기된 분기점을 다시 한 번 살펴볼 것이다.
다음 몇 가지 차트에서 비트코인 네트워크의 단순화된 표현인 네트워크를 통해’ 분기점’ 이벤트의 진행 상황을 추적할 예정입니다. 설명을 위해 여러 블록이 네트워크 전체에 다양한 모양 (별, 삼각형, 역삼각형, 다이아몬드) 으로 표시됩니다. 네트워크의 각 원은 노드를 나타냅니다.
각 노드에는 고유한 글로벌 블록 체인 뷰 각도가 있습니다. 각 노드는 이웃으로부터 블록을 수신할 때 자체 블록 체인 복사본을 업데이트하고 최대 누적 작업 로드 체인을 선택합니다. 설명을 위해 각 노드에는 기본 체인의 맨 위에 있다고 믿는 블록이 있음을 나타내는 그래픽 모양이 포함되어 있습니다. 따라서 노드 안에 별이 보이면 해당 노드는 별 블록이 주 체인의 맨 위에 있는 것으로 간주된다는 의미입니다.
다음 그림에서 네트워크는 스타 블록 주 체인의 "정점" 인 균일한 블록 체인 관점을 가지고 있습니다.
두 개의 후보 블록이 동시에 가장 긴 블록 체인을 연장하려고 할 때 분기점 이벤트가 발생합니다.
일반적으로 두 명의 광부가 거의 동시에 작업량 증명 해법을 계산할 때 분기점이 발생합니다. 두 광부가 각각의 후보 블록에 대한 해결책을 발견한 후, 자신의’ 승리’ 블록을 즉시 네트워크로 전파해 이웃 노드로 전파한 후 전체 네트워크로 전파했다. 유효한 블록을 받은 각 노드는 이를 복사본에 통합하고 블록 체인을 확장합니다. 나중에 노드가 동일한 상위 블록을 가진 또 다른 후보 블록을 받으면 노드는 해당 블록을 대체 체인에 연결합니다. 결과적으로 일부 노드는 하나의 후보 블록을 "보고" 다른 노드는 다른 후보 블록을 "보고" 두 개의 경쟁 버전의 블록 체인이 나타납니다.
다음 그림에서는 두 광부 (노드 X 와 노드 Y) 가 거의 동시에 두 개의 다른 블록을 파내는 것을 볼 수 있습니다. 이 두 블록은 별 블록의 하위 블록이며 이 블록 체인을 연장할 수 있습니다. 보기 쉽도록 노드 X 에서 생성된 청크는 삼각형으로 표시하고 노드 Y 에서 생성된 청크는 역삼각형으로 표시합니다.
광부 노드 X 가 삼각형 블록 작업 로드 증명에 대한 솔루션을 찾았다고 가정하면 별 상위 블록의 맨 위에 빌드합니다. 동시에, 스타 블록 확장과 동일한 노드 Y 는 역삼각형 블록 작업 로드에 대한 증명된 솔루션을 찾아 확장 블록 체인으로 사용합니다.
이제 두 개의 가능한 블록, 노드 X 의 삼각형 블록과 노드 Y 의 역삼각형 블록이 있습니다. 두 블록 모두 유효하며 모두 유효한 작업 로드 증명 솔루션을 포함하고 동일한 상위 블록 (별 블록) 을 확장합니다. 이 두 블록은 거의 동일한 트랜잭션을 포함할 수 있지만 트랜잭션 정렬에는 약간의 차이가 있습니다.
두 블록이 네트워크를 통해 전파되기 시작하면 일부 노드는 먼저 삼각형 블록을 받고 다른 노드는 역삼각형 블록을 먼저 받습니다. 다음 그림과 같이 비트코인 네트워크의 노드는 블록 체인의 정점에 대해 의견이 분분합니다. 하나는 삼각형 블록을 정점으로 하고 다른 하나는 역삼각형 블록을 정점으로 합니다.
위 그림에서 노드 x 가 먼저 삼각형 블록을 수신한 다음 이를 사용하여 별 체인을 확장한다고 가정합니다. 노드 x 삼각형 블록 주 체인을 선택합니다. 그 후 노드 x 는 역삼각형 블록을 받았습니다. 두 번째 수신이기 때문에 이 역삼각형 블록은 경쟁 실패의 산물이라고 판단했다. 그러나 역삼각형의 블록은 버려지지 않습니다. 별 체인의 상위 블록에 연결되어 대체 체인을 형성합니다. 노드 X 는 자신이 telegram 중국어 버전으로 다운로드한 사이트가 어느 정도 우승 체인을 제대로 선택했다고 생각하지만’ 실패’ 체인도 저장하며’ 실패’ 체인이 결국’ 승리’ 하면 다시 포장하는 데 필요한 정보도 갖고 있다.
네트워크의 다른 쪽 끝에서 노드 Y 는 자신의 시각에 따라 블록 체인을 구성합니다. 먼저 역삼각형 블록을 얻고 이 체인을’ 승자’ 로 선택합니다. 나중에 삼각형 블록을 받으면 삼각형 블록도 별 체인의 상위 블록에 대체 체인으로 연결됩니다.
쌍방은 모두’ 옳다’ 혹은’ 옳지 않다’ 이다. 둘 다 블록 체인에 대한 자신의 유효한 입장이다. 나중에야 이 두 경쟁사슬이 어떻게 추가적인 일을 통해 확장되었는지 이해할 수 있다.
노드 X 캠프의 다른 노드는 확장 블록 체인의 맨 위로 "삼각형" 을 사용하여 후보 블록 마이닝을 즉시 시작합니다. "삼각형" 을 후보 블록의 상위 블록으로 사용하여 자체 해시 계산력으로 투표합니다. 그들의 투표는 자신이 선택한 체인을 주 체인으로 지지한다는 것을 보여준다.
마찬가지로 노드 Y 캠프의 다른 노드는 "역삼각형" 을 상위로 하는 후보 노드 구축을 시작하여 주 체인으로 간주되는 체인을 확장하고 경쟁이 다시 시작됩니다.
분기 문제는 거의 항상 한 블록의 수 수준에서 해결된다. 네트워크의 일부 산력은 "삼각형" 블록이 상위 블록인 "삼각형" 블록에 초점을 맞추고 그 위에 새 블록을 만듭니다. 다른 부분의 산력은 역삼각형 블록에 집중됩니다. 계산력이 이 두 진영 사이에 균등하게 분배된다 해도 한 진영이 다른 진영 앞에서 업무량 증명해법을 발견하고 전파한다. (윌리엄 셰익스피어, 윈스턴, 해리포터스, 해리포터스, 해리포터스, 해리포터스, 해리포터스, 노력명언) 예를 들어, "삼각형" 블록에서 일하는 광부들이 "다이아몬드" 블록을 찾아 블록 체인 (별-삼각형-다이아몬드) 을 연장하면, 그들은 즉시 이 새로운 블록을 전파할 것이며, 전체 네트워크는 다음 그림과 같이 이 블록이 유효하다고 생각할 것입니다.
"삼각형" 을 이전 라운드에서 승자로 선택한 모든 노드는 단순히 블록 체인을 한 블록으로 확장합니다. 그러나 역삼각형을 선택한 노드에 이제 별-삼각형-다이아몬드 및 별-역삼각형의 두 체인이 표시됩니다. 별-삼각형-다이아몬드 이 체인은 이제 다른 체인보다 더 길다 (더 많은 작업량이 누적됨). 따라서 이러한 노드는 다음 그림과 같이 별-삼각형-마름모꼴을 주 체인으로 설정하고 별-역삼각형 체인을 대체 체인으로 만듭니다.
이러한 노드는 블록 체인에 대한 입장을 수정하고 더 긴 체인을 주 체인으로 간주하도록 강요당했기 때문에 체인의 재공감대이다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 체인명언) 확장 별-역삼각형에 종사하는 광부들은 이제 이 일을 중단할 것이다. 왜냐하면 그들이 포장한 후보 블록은’ 고독’ 이고, 이 고독한 블록의 상위 블록인’ 역삼각형’ 은 더 이상 가장 긴 체인이 아니기 때문이다. 역삼각형 내의 트랜잭션은 메모리 풀에 다시 삽입되어 다음 블록에 포함됩니다. 해당 블록이 더 이상 기본 체인에 없기 때문입니다. 전체 네트워크는 단일 체인 상태 (별-삼각형-다이아몬드, "다이아몬드" 가 체인의 마지막 블록이 됩니다. 모든 광부들은 즉시’ 마름모꼴’ 을 상위로 하는 후보 블록을 만들어 이 별-삼각형-마름모꼴 체인을 확장하기 시작했다.
이론적으로 두 블록의 분기점은 가능합니다. 이는 이전 분기점으로 서로 대립하는 광부에서 발생하며 거의 동시에 두 개의 다른 블록의 솔루션을 발견했습니다. 그러나, 이런 상황이 발생할 확률은 매우 낮다. 단일 블록 분기점은 매일 발생하며, 이중 블록 분기점은 최대 몇 주마다 발생합니다.
비트코인은 블록 간격을 10 분으로 설계해 빠른 거래 확인 (거래 결제) 과 낮은 분기 확률 사이의 타협이다.
블록 생성 간격이 짧을수록 거래 청산이 더 빨리 완료되며 블록 체인 분기점이 더 자주 발생합니다.
간격이 길면 분기 수가 줄어들지만 결제 시간이 길어질 수 있습니다.
비트코인 광산은 매우 경쟁적인 산업이다. 비트코인의 탄생부터 매년 비트코인 계산력이 기하급수적으로 증가하고 있다. 2010 년과 2011 년, 많은 광부들이 CPU 를 사용하는 것에서 GPU 를 사용하는 것으로 업그레이드, 현장 프로그래밍 가능 도어 배열 (FPGA) 을 사용하여 광산을 파는 것과 같은 기술 변화도 반영되고 있습니다. 2013 년 ASIC 광산을 도입해 SHA256 알고리즘을 광산 전용 실리콘 칩에 직접 고화시켜 산력의 또 다른 큰 도약을 가져왔다. 이 칩을 채택한 최초의 광산기가 제공할 수 있는 계산력은 2010 년 비트코인 네트워크의 전체 계산력보다 더 크다.
비트코인 네트워크가 가동된 후 처음 5 년 동안의 마지막 힘은 다음과 같습니다.
2009: 0.5mh/sec-8mh/sec (16 배 증가)
2010: 8mh/sec-116gh/sec (14,500 배 증가)
2011: 16gh/sec-9th/sec (562 배 증가)
2012: 9th/sec-23th/sec (2.5 배 증가)
2013: 23th/sec-10ph/sec (450 배 증가)
2014: 10ph/sec-300ph/sec (3000 배 증가)
2015: 300ph/sec-800ph/sec (266 배 증가)
2016: 800ph/sec-2.5eh/sec (312 배 증가)
다음 그림에서, 우리는 최근 2 년 동안 비트코인 네트워크 계산력의 증가를 볼 수 있다. 보시다시피 광부 간의 경쟁과 비트코인의 발전으로 계산력 (네트워크의 초당 총 해시 값) 이 기하급수적으로 증가했다.
비트코인 채굴력이 폭발적으로 증가함에 따라 그에 맞는 난이도도 그에 따라 증가한다. 다음 그림의 난이도 표시기는 최소 난이도 (첫 번째 블록의 난이도) 에 대한 현재 난이도의 비율을 보여줍니다.
최근 2 년 동안 ASIC 칩은 더욱 밀집되어 칩 제조업 최전방의 16nm 특징 크기에 가까워졌다. 현재 광산을 파는 이익률이 일반 컴퓨팅보다 빠른 속도로 업계를 이끌고 있기 때문에 ASIC 제조업체의 목표는 범용 CPU 칩 제조업체를 능가하고 14nm 크기의 칩을 설계하는 것입니다. 비트코인 광산에는 더 이상 비약적인 공간이 없다. 이 업계가 무어의 법칙의 최전방에 닿았기 때문이다. 무어의 법칙은 계산 밀도가 18 개월마다 두 배로 늘었다고 지적했다. 그럼에도 불구하고, 고밀도 칩과 고밀도 데이터 센터의 배포 경쟁이 계속되면서 네트워크 컴퓨팅은 기하급수적으로 성장하고 있으며 데이터 센터는 수천 개의 칩을 배포할 수 있습니다. 지금의 경쟁은 더 이상 단일 칩을 비교하는 능력이 아니라 광산이 얼마나 많은 칩을 쑤셔 넣을 수 있는지, 그리고 열과 전력 공급 문제를 잘 처리한다.
2012 년 이후 비트코인 광산은 블록 헤드의 기본 구조 제한을 해결하는 방안을 발전시켰다. 비트코인 초기에 광부들은 결과 해시 값이 목표 값보다 낮을 때까지 난수를 반복하여 블록을 찾을 수 있었습니다. 난이도가 증가한 후 광부들은 종종 40 억 개의 값을 시도한 후에도 여전히 덩어리가 나지 않았다. 그러나 블록의 타임스탬프를 업데이트하고 경과 시간을 계산하여 쉽게 해결할 수 있습니다. 타임 스탬프는 블록 헤드의 일부이기 때문에 광부들이 다른 난수로 다시 트래버스할 수 있게 해 줍니다. 하지만 광산 하드웨어의 속도가 4GH/s 에 이르면 난수 값이 1 초 만에 소진되기 때문에 이 방법이 점점 어려워지고 있다. ASIC 광산기가 나타나 TH/s 의 해시 속도에 빠르게 도달한 후 광산 소프트웨어를 발굴하여 유효한 블록을 찾으려면 임의 값을 저장하기 위해 더 많은 공간이 필요합니다. 타임스탬프를 조금 연기할 수는 있지만 앞으로 너무 멀리 이동하면 블록이 무효화될 수 있습니다.
블록 헤더에는 새로운 임의 값의 소스가 필요합니다. 해결책은 2 ~ 100 바이트의 데이터를 저장할 수 있기 때문에, 광부들은 이 공간을 추가 난수의 원천으로 사용하여 훨씬 더 큰 블록 헤더 값 범위를 탐색하여 유효한 블록을 찾을 수 있도록 하는 것입니다. 이 통화 거래는 메르켈 트리에도 포함되어 있는데, 이는 모든 통화 스크립트의 변화가 메르켈 뿌리의 변화로 이어질 수 있다는 것을 의미한다. (윌리엄 셰익스피어, 윈스턴, 통화, 통화, 통화, 통화, 통화, 통화) 8 바이트의 추가 난수와 4 바이트의 "표준" 난수를 더하면 광부들이 타임스탬프를 수정하지 않고도 초당 296(8 뒤에 28 0 개) 의 가능성을 시도할 수 있습니다. 만약 미래의 광부들이 위의 모든 가능성을 다 써버리면, 그들은 타임스탬프를 수정하여 해결할 수 있다. 마찬가지로, 미래의 난수 확장을 준비할 수 있는 창작스크립트에도 더 많은 공간이 있습니다.
이 치열한 경쟁 환경에서 개별 광부 독립 작업 (즉, 솔로 광산) 은 기회가 전혀 없다. 그들은 전기 및 하드웨어 비용을 상쇄할 수 있는 블록을 찾아서 도박이나 복권을 살 가능성이 매우 적다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 스포츠명언) 가장 빠른 소비형 ASIC 광산기조차도 거대한 기계실에 수만 개의 칩을 가지고 수력 발전소 근처의 상업용 광산과 경쟁할 수 없다. 현재 광부들은 수천 명의 참가자들의 계산력을 모아 인센티브를 나누기 위해 함께 광산을 구성하고 있다. 광산에 참가하여 광부들은 전체 보상의 극히 일부만을 받을 수 있지만 거의 매일 받을 수 있어 불확실성을 줄였다. (윌리엄 셰익스피어, 광부, 광부, 광부, 광부, 광부, 광부, 광부, 광부)
구체적인 예를 살펴 보겠습니다. 광부가 총 14,000GH/S 또는 14TH/s 의 장비를 구입했다고 가정해 봅시다. 2017 년에는 약 2500 달러의 가치가 있었습니다. 이 장비는 1375W(1.3kW), 하루 32 도, 전기 가격이 비교적 낮은 경우 일일 비용이 1 달러 또는 2 달러입니다. 현재의 비트코인의 난이도로, 이 광부는 독립적으로 광산을 파는 방식으로 한 블록을 파내는 데 평균 4 년이 걸린다. 만약 이 광부가 이 시한 내에 12.5 개의 비트코인을 발굴하고, 비트코인당 가격이 약 1000 달러라면, 그는 12,500 달러의 수입을 얻을 수 있다. 이는 전체 하드웨어 투입과 전체 기간의 전력 소비까지 포괄할 수 없으며, 순손실은 약 1000 달러이다. 게다가, 4 년 동안 블록을 파낼 수 있을지는 광부의 운에 달려 있다. 그는 4 년 동안 두 개의 덩어리를 얻어 매우 큰 이윤을 거둘 가능성이 있다. 아니면 5 년 동안 블록을 찾을 수 없어 경제적 손실을 입게 될 수도 있다. 설상가상으로 비트코인의 업무량은 알고리즘의 난이도가 이 기간 동안 현저히 상승할 수 있다는 것을 증명한다. 현재 산력 증가 속도에 따라 광부들은 설비가 시대에 뒤떨어져서 다음 세대보다 효율적인 광산기로 대체되기 전까지 최대 1 년 동안 성과를 내야 한다는 것을 의미한다. 만약 이 광부가 4 년 안에 한 번 발생할 수 있는 폭리를 기다리는 대신 광산에 가입한다면, 그는 매주 50 ~ 60 달러를 벌 수 있다. 광산지의 정규 수입은 그가 시간이 지남에 따라 하드웨어와 전기의 비용을 상각하는 데 도움이 되며, 큰 위험을 감수할 필요가 없다.1 ~ 2 년 후에도 하드웨어는 여전히 구식이 되고 위험은 여전히 높지만, 이 기간 동안의 수익은 최소한 정기적이고 믿을 만하다. 재무 데이터 분석에서 이는 매우 낮은 전력 비용 (킬로와트당 1 센트 미만) 으로 규모가 매우 클 때만 의미가 있습니다.
광산지는 전용 광산 발굴 협의를 통해 수백 명의 광부들을 조정했다. 개인 광부들은 광산지 계정을 설정한 후 광산기를 설치해 광산지 서버에 연결했다. 그들의 광산 채굴 설비는 광산을 파는 동안 광산지 서버와의 연결을 유지하고 다른 광부들과 각자의 일을 동기화한다. 이런 식으로, 광산 연못의 광부들은 광산 발굴 임무를 공유한 후 상을 나눈다. (윌리엄 셰익스피어, 광부, 광부, 광부, 광부, 광부, 광부)
성공적인 보상은 단일 광부가 아닌 광산 연못의 비트코인 주소로 지급됩니다오피스타공식 입구 방법은 어떻게 찾나요. 보상이 특정 임계값에 도달하면 광산 풀 서버는 광부의 비트코인 주소로 정기적으로 보상을 지급합니다. 일반적으로 광산 풀 서버는 광산 풀 서비스를 제공하기 위해 일정 비율의 비용을 부과합니다.
광산에 참가한 광부들은 후보 지역을 수색하는 작업량을 나누어 광산을 파는 공헌에 따라’ 몫’ 을 벌었다. 광산지는’ 공유’ 를 벌기 위해 높은 목표값 (난이도 낮음) 을 설정했는데, 보통 비트코인 네트워크보다 1000 배 이상 어렵다. 광산지 중 누군가가 성공적으로 한 블록을 파냈을 때, 광산지는 상을 받았고, 광부들이 계산력 공헌의 비중에 따라 그들에게 상을 분배했다.
광산지는 크기, 전공, 아마추어 등 어떤 광부에게도 개방된다. 한 광산지 참가자 중 한 명은 작은 광산기가 한 대밖에 없었고, 어떤 사람들은 차고 고급 광산 하드웨어를 가지고 있었다. 어떤 사람은 수십 도의 전기로만 광산을 파거나, 어떤 사람은 데이터 센터를 이용하여 메가와트급 전기를 소모한다. 광산지는 어떻게 모든 사람의 공헌을 측정하여 상을 공평하게 분배하고 부정행위의 가능성을 피할 수 있습니까? 대답은 비트코인의 업무량 증명 알고리즘을 사용하여 각 광산 광부의 기여도를 측정하지만, 설치가 어려워서 광산에서 가장 작은 광부조차도 종종 보상을 받을 수 있다는 것이다. 이는 그들이 광산에 기여하도록 동기를 부여하기에 충분하다. 낮은 몫의 난이도를 설정함으로써 광산지는 각 광부가 완성한 작업량을 측정할 수 있다. 광부들이 광산 못의 난이도보다 작은 블록 헤드 해시를 발견할 때마다, 그것은 자신에게 할당된 검색 결과에 필요한 해시를 완료했다는 것을 증명한다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 광부명언) 더 중요한 것은, 공유 기여도를 얻기 위한 이러한 작업은 비트코인 네트워크의 목표보다 낮은 해시 값을 찾아 통계적으로 측정할 수 있다는 것입니다. 낮은 해시 값을 찾으려고 하는 수천 명의 광부들은 결국 비트코인 네트워크의 난이도 목표를 만족시킬 수 있는 결과를 찾을 것이다.
주사위 게임의 비유로 돌아가 봅시다. 주사위 플레이어의 목표가 주사위 결과가 모두 4 보다 작다면 (전체 네트워크 난이도), 광산지는 더 쉬운 목표를 설정할 수 있으며, 몇 번이나 연못에 있는 플레이어가 던진 결과가 8 보다 작은지 집계할 수 있다. 연못에 있는 플레이어가 던진 결과가 8 (광산 공유 목표) 미만이면 몫을 받지만, 게임 목표 (4 미만) 를 완성하지 못했기 때문에 게임에서 이기지 못했다. 하지만 연못에 있는 게이머들은 더 쉬운 광산 공유 목표를 달성하고, 더 어려운 경기 승리 목표를 달성하지는 못했지만, 규칙적으로 몫을 벌곤 한다. 때때로 연못의 한 구성원이 4 보다 작은 결과를 던져서 광산이 이길 수 있다. 그런 다음 풀에서 플레이어가 얻은 몫을 기준으로 수익을 분배할 수 있습니다. 목표를 8 이하로 설정해도 게임에서 이기지 못하지만, 이는 선수들이 던지는 점의 수를 측정하는 공평한 방법이며, 간혹 4 보다 작은 결과를 낳는다.
마찬가지로, 광산 수영장도 (더 높고 쉬운) 광산 풀 난이도 목표를 설정하여 개별 광부가 광산 풀 난이도 목표보다 작은 블록 헤드 해시 값을 자주 찾아 몫을 얻을 수 있도록 합니다. 어떤 시도에서는 비트코인 네트워크의 난이도 목표 값에 맞는 블록 헤드 해시 값을 생성하고, 유효한 블록을 생성하고, 전체 광산 풀이 승리하는 경우가 종종 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언)
1, 신탁 통치 수영장
대부분의 광산은’ 호스팅’ 되어 있는데, 이는 한 회사나 개인이 광산 서버를 운영한다는 뜻이다. 광산지 서버의 소유자는 광산지 관리인이라고 불리며, 동시에 그는 광부의 수입에서 일정 퍼센트의 비용을 받는다.
광산지 서버는 전문 소프트웨어를 실행하고 연못에서 광부들의 활동을 조율하는 광산지 채굴 협정을 운영한다. 광산 풀 서버는 또한 하나 이상의 비트코인 전체 노드에 연결되어 블록 체인 데이터베이스의 전체 복사본에 직접 액세스합니다. 이를 통해 광산 서버가 광산 풀의 광부 검증 블록과 거래를 대신하여 전체 노드를 운영하는 부담을 줄일 수 있습니다. 전체 노드 요구 사항은 최소 100~150GB 의 영구 저장 공간 (디스크) 과 최소 2 ~ 4GB 의 메모리 (RAM) 를 갖춘 전용 컴퓨터이기 때문에 광부에게 중요한 고려 사항입니다. 또한 전체 노드 비트코인 소프트웨어를 실행하려면 모니터링, 유지 관리 및 빈번한 업그레이드가 필요합니다. 유지 관리 또는 자원 부족으로 인한 다운타임은 광부의 이익에 해를 끼칠 수 있습니다. 많은 광부들에게는 전체 노드를 실행하지 않고도 광산을 채굴할 수 있으며, 또한 호스팅 광산에 가입하는 것의 큰 이점이기도 하다. (윌리엄 셰익스피어, 윈스턴, 광부, 광부, 광부, 광부, 광부)
광부들은 Stratum(STM) 또는 GBT (Getblocktemplate) 와 같은 광산 프로토콜을 사용하기 위해 광산 서버에 연결합니다. 낡은 표준인 GWK 는 2012 년 말부터 거의 구식이다. 계산력이 4GH/s 를 넘을 때 광산을 파는 것을 지원하지 않기 때문이다. STM 프로토콜과 GBT 프로토콜은 모두 후보 블록 헤더 템플릿이 포함된 블록 템플릿을 생성합니다. 광산 풀 서버는 거래를 패키지화하고, 창작거래 (및 추가 난수 공간) 를 추가하고, 메르켈 뿌리를 계산하고, 상위 블록 해시에 링크하여 후보 블록을 설정합니다. 이 후보 블록의 머리는 각 광부에게 템플릿으로 배포됩니다. 광부들은 비트코인 네트워크보다 난이도가 높은 (더 쉬운) 목표를 목표로 이 블록 템플릿을 사용하여 채굴을 하고 성공적인 결과를 광산 풀 서버에 보내 몫을 얻습니다.
2, P2P 수영장 (P2Pool)
광산 풀을 호스팅할 경우 관리자가 부정행위를 할 가능성이 있으며, 관리자는 광산 풀을 이용하여 이중 지불을 하거나 블록을 무효화할 수 있습니다. 또한 중앙 집중식 광산 풀 서버는 단일 장애 지점을 나타냅니다. 서비스 거부 공격으로 인해 서버가 다운되거나 반응이 느려지면 풀의 모든 광부가 채굴할 수 없습니다. 2011 년에는 중심화로 인한 이러한 문제를 해결하기 위해 새로운 광산 채굴 방법인 P2Pool 을 제안하고 구현했습니다. P2POOL 은 중앙 관리자가 없는 지점 간 광산 풀입니다.
P2Pool 은 광산 풀 서버의 기능을 중앙 집중화하여 공유 체인 (share chain) 이라는 병렬 클래스 블록 체인 시스템을 구현합니다. 공유 체인은 비트코인 블록체인보다 난이도가 낮은 블록체인 시스템입니다. 공유 체인은 수영장의 광부들이 중앙 집중식 풀에서 협력하여 30 초마다 공유 블록당 속도로 공유 체인에서 채굴하여 몫을 얻을 수 있게 해 줍니다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 공유 체인, 공유 체인) 공유 체인의 블록은 작업에 기여한 광부의 몫을 기록하고 이전 공유 블록의 공유 기록을 상속합니다. 공유 블록 중 하나가 비트코인 네트워크의 난이도 목표에 도달하면 비트코인의 블록 체인에 브로드캐스팅되고 포함되며, 이미 공유 체인 블록에서 몫을 얻은 모든 풀 광부에게 보상을 제공합니다. 본질적으로, 공유 체인은 광부의 점유율과 보상을 기록하기 위해 광산 풀 서버를 사용하는 것보다 모든 광부들이 비트코인 블록체인 시스템과 같은 중앙 집중식 컨센서스 메커니즘을 통해 모든 점유율을 추적할 수 있도록 합니다.
P2P 광산지 채굴 방식은 중앙 광산지에서 채굴하는 것보다 훨씬 복잡하다. 광부들이 비트코인의 전체 노드와 P2P 광산지 노드 소프트웨어를 지원하기 위해 공간, 메모리, 대역폭이 충분한 전용 컴퓨터를 필요로 하기 때문이다. P2P 광산 광부들은 광산 하드웨어를 현지 P2P 광산 풀 노드에 연결하고, 노드는 블록 템플릿을 광산기로 전송하여 광산 풀 서버의 기능을 시뮬레이션합니다. P2P 광산에서 개별 광부는 자체 후보 블록을 만들고 거래를 포장하며 독립 광부와 매우 비슷하지만 공유 체인에서 함께 채굴합니다. 단독으로 광산을 파는 것보다 P2P 광산지는 혼합방식이며, 더욱 유연한 수입 우세를 가지고 있지만, 광산지처럼 관리인에게 너무 많은 권력을 주지는 않는다.
P2P 광산이 광산지 운영자의 중심화를 줄이더라도 공유체인 자체의 51% 공격에 취약할 수 있다. 반면 다양한 광산 발굴 생태계의 일환으로 P2P 광산지는 비트코인 전체를 더욱 강력하게 만들었다.
적어도 이론적으로 비트코인의 공감대 메커니즘은 광부 (또는 광산지) 가 자신의 계산력을 이용해 사기 파괴를 시도하여 공격하기 쉽다. 앞서 말씀드린 바와 같이 비트코인의 공감대 메커니즘은 대부분의 광부들이 자신의 이익 극대화를 위해 정직하게 광산을 캐서 비트코인 시스템 전체를 유지한다는 전제하에 의존하고 있습니다. (윌리엄 셰익스피어, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인) 그러나 한 명 또는 한 무리의 광부들이 시스템 전체에서 대량의 계산력을 갖게 되면 비트코인의 공감대 메커니즘을 공격하여 비트코인 네트워크의 안전과 신뢰성을 파괴하는 목적을 달성할 수 있다.
공감대 공격은 전체 블록체인의 미래 공감대에만 영향을 미치거나 가장 가까운 블록의 공감대 (지난 수십 개 블록에 최대 영향을 미침) 에 영향을 미칠 수 있다는 점에 유의해야 한다. 그리고 시간이 지남에 따라 비트코인 블록체인 전체가 변조될 가능성이 점점 낮아지고 있다. 이론적으로, 블록 체인 분기점은 임의의 깊이가 될 수 있지만, 실제로 특정 깊이의 블록 체인 분기를 달성하는 데 필요한 계산력은 매우 커서 이전 블록은 거의 변경할 수 없습니다. 또한 합의 공격은 사용자의 개인 키와 서명 알고리즘 (ECDSA) 에도 영향을 주지 않습니다. 공감대 공격도 다른 지갑에서 비트코인을 훔치거나, 비트코인을 서명 없이 지불하거나, 비트코인을 재분배하거나, 과거 거래를 변경하거나, 비트코인 보유 기록을 바꿀 수 없다. 컨센서스 공격은 최근 블록에만 영향을 줄 수 있으며 서비스 거부를 통해 미래 블록의 생성을 파괴한다.
공감대 공격의 전형적인 장면은’ 51% 공격’ 이다. 한 무리의 광부들이 비트코인 네트워크의 51% 를 통제하는 장면을 상상해 보십시오. 그들은 연합하여 비트코인 시스템 전체를 공격할 계획입니다. 광부들은 대부분의 블록을 생성 할 수 있기 때문에 의도적으로 블록 체인 분기를 만들어 "이중 지불" 을 달성하거나 서비스를 거부하여 특정 거래를 차단하거나 특정 지갑 주소를 공격 할 수 있습니다. 블록 체인 분기/이중 지불 공격은 공격자가 지정된 블록 앞의 블록부터 분기하여 이후 확인된 블록을 무효화한 다음 대체 블록 체인으로 다시 수렴하는 것을 의미합니다. 충분한 계산력을 보장함으로써 공격자는 최근 6 개 이상의 청크를 한 번에 변조할 수 있어 변조할 수 없는 트랜잭션이 포함된 것을 무효로 만들 수 있습니다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 전쟁명언) 이중 지불은 공격자가 소유한 지갑에서 발생한 거래에서만 수행할 수 있다는 점에 유의해야 한다. 지갑 소유자만이 이중 지불 거래에 대한 합법적인 서명을 생성할 수 있기 때문이다. 공격자는 자신의 거래에서 이중 지불 공격을 하는데, 거래를 무효로 만들어 돌이킬 수 없고 지불하지 않는 구매 행위를 실현할 수 있다면 수익성이 있다.
"51% 공격" 의 실제 사례를 살펴 보겠습니다. 앨리스와 밥 사이에 비트코인을 이용해 커피 한 잔 거래를 마쳤다. 카페 주인 Bob 은 Alice 가 자신의 이체거래를 확인하지 않았을 때 커피를 제공하기를 원한다. 이는 고객이 쇼핑하는 즉시성, 편리성보다 커피 한 잔의 이중 소비 위험이 낮기 때문이다. 이는 대부분의 커피숍이 25 달러 미만의 신용카드 소비에 시간을 들이지 않고 고객에게 서명을 요구하는 것과 같다. 신용카드 환불의 위험보다 사용자에게 신용카드 서명을 요청하는 비용이 더 많이 들기 때문이다. 이에 비해 비트코인으로 지급되는 대형 거래가 이중으로 지급될 위험이 훨씬 높다. 구매자 (공격자) 가 실제 거래의 UTXO 와 같은 위조거래를 전망에 방송함으로써 실제 거래를 취소할 수 있기 때문이다. 이중 지불에는 두 가지 방법이 있습니다. 즉, 거래가 확인되기 전이나 공격자가 블록 체인 분기를 통해 여러 블록을 취소할 수 있습니다. 51% 공격을 하는 사람은 기존 체인의 거래 기록을 취소하고 새 분기망에 같은 금액의 거래를 다시 생성하여 이중 지불을 실현할 수 있다.
또 다른 예로, 공격자 Mallory 는 Carol 의 갤러리에서 중본총을 프로메테우스로 묘사한 삼중 그림 (The Great Fire) 을 구입했고, Mallory 는 25 만 달러 상당의 비트코인을 이체하여 Carol 과 거래했다. Carol 은 6 개의 거래가 아닌 1 개의 거래가 확인될 때까지 기다렸다가 이 그림을 싸서 Mallory 에게 건네주었다. 이때, Mallory 의 한 동료, 계산력이 많은 광산을 가진 사람 Paul 은 이 거래가 블록체인에 기록될 때 51% 의 공격을 시작했다. 첫째, Paul 은 광산에 동일한 블록 높이를 사용하여 이 거래가 포함된 블록을 다시 발굴하고, 새 블록에서 원래 거래를 Mallory 에 지불한 또 다른 거래로 교체하여 이중 지불을 실현하도록 지시했다. 이 이중 지불 거래는 기존 거래와 일치하는 UTXO 를 사용했지만 수취인은 Carol 대신 Mallory 의 지갑 주소로 바뀌었고, 실제로는 Mallory 가 자신의 비트코인을 계속 보유하고 있다. 그런 다음 Paul 은 광산 풀이 위조 블록을 기반으로 업데이트된 블록을 계산하여 이 이중 지불 트랜잭션을 포함하는 블록 체인이 원래 블록 체인보다 한 블록 위에 있도록 지시했습니다 (Mallory 트랜잭션을 포함하기 전의 블록부터 분기가 시작됨). 이로써 높이가 높은 분기점 블록 체인이 기존 블록 체인을 대체하고 이중 지불 거래가 원래 캐롤에게 주어진 거래를 대신했습니다.캐롤은 25 만 달러 상당의 비트코인을 받지 못했고, 원래 가지고 있던 세 폭의 값진 그림도 말리가 헛되이 가져갔다. 전체 과정에서 Paul 광산 연못의 다른 광부들은 이 이중 지불 거래의 이색을 처음부터 끝까지 알아차리지 못했을 수 있다. 왜냐하면 광산 발굴 절차가 자동으로 운영되고 있고, 매 블록마다 모든 거래를 감시하지 않기 때문이다.
이런 공격을 피하기 위해 대종 상품을 판매하는 상가는 거래가 전망의 6 개 확인을 받은 후 상품을 납품해야 한다. 또는 상인은 제 3 자의 다방면으로 서명한 계좌를 이용해 거래를 해야 하며, 거래계좌가 전체 인터넷 복수 확인을 받을 때까지 기다린 후 상품을 납품해야 한다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 거래명언) 한 거래의 확인 수가 많을수록 공격자가 51% 공격을 통해 변조하기가 더 어려워진다. 대종 상품 거래의 경우, 결제한 지 24 시간 후에 다시 발송해도 매매 양측에게 비트텔레그램의 홈페이지를 이용한 다운로드 사이트 통화 지불도 편리하고 효율적이다. 24 시간 후, 이 거래에 대한 전망 확인 수는 최소 144 개에 이를 것으로 예상된다 (51% 공격의 가능성을 효과적으로 낮출 수 있다).
공감대 공격에서’ 이중 지불’ 공격 외에도 특정 참가자 (특정 비트코인 주소) 에 대한 서비스 제공을 거부하는 공격 장면이 있다. 시스템에서 대부분의 계산력을 가진 공격자는 특정 거래를 쉽게 무시할 수 있습니다. 거래가 다른 광부에 의해 생성 된 블록에 존재 하는 경우 공격자는 의도적으로 분할 하 고 블록을 재생성 하 고이 블록에서 무시 하 고 싶은 거래를 제거할 수 있습니다. 이 공격의 결과는 공격자가 시스템의 대부분의 계산력을 가지고 있는 한, 특정 지갑 주소나 특정 지갑 주소로 인해 발생하는 모든 거래에 지속적으로 개입할 수 있다는 것입니다. 이를 통해 이러한 주소에 대한 서비스를 거부할 수 있습니다.
51% 공격은 명명한 것처럼 공격자가 최소한 51% 의 계산력을 필요로 하는 것은 아니라는 점에 유의해야 한다. 실제로 51% 미만의 시스템 계산력이 있더라도 이런 공격을 시도할 수 있다. 51% 공격이라고 명명한 이유는 공격자의 계산력이 이 임계값의 51% 에 도달하면 시작된 공격 시도가 거의 성공할 수 있기 때문이다. 본질적으로 합의 공격은 다음 블록을 겨냥한 줄다리기 경기와 같다. 강건한 팀이 이길 가능성이 가장 높다. 산력이 떨어지면서 성공 가능성이 낮아졌다. 다른 광부들은’ 성실한’ 광산 발굴 능력으로 일부 블록의 발생을 통제하고 있기 때문이다. 또 다른 관점에서 공격자가 더 많은 계산력을 가질수록 의도적으로 만든 분기점 체인이 길어질 수 있으며 변조될 수 있는 가장 가까운 블록이나 그에 의해 제어되는 미래 블록이 많아질 수 있습니다. 일부 안전연구단체들은 통계모델을 이용해 전망의 30% 에 달하는 계산력이 51% 공격을 개시하기에 충분하다는 결론을 내렸다.
전망 계산력의 급격한 증가로 비트코인 시스템은 더 이상 어떤 광부에게 공격당할 수 없게 되었다. 독립 광부들은 작은 일부분이라도 마지막 힘을 통제할 수 없다. 그러나 중앙에서 통제하는 광산지는 광산지 운영자가 이익을 위해 공격을 실시할 위험을 가져왔다. 광산 풀 운영자는 후보 블록의 생성을 제어하고 새로 생성된 블록에 배치할 거래도 제어합니다. 이에 따라 광산지 운영자는 특정 거래나 이중 지불을 제거할 수 있는 권한을 갖게 됐다. 만약 이런 권력이 광산 운영자에 의해 미묘하고 절제된 방식으로 남용된다면, 광산 운영자는 알 수 없는 상황에서 공감대 공격을 개시하고 이익을 얻을 수 있다.
그러나 모든 공격자가 이익을 위한 것은 아니다. 한 가지 가능한 시나리오는 공격자가 단지 비트코인 시스템 전체를 파괴하기 위한 것이지 이익을 위한 것이 아니라는 것이다. 비트코인 시스템을 파괴하려는 공격자는 엄청난 투자와 세심한 계획이 필요하다. 마찬가지로, 자금이 충분한 공격자들도 광산기를 구입하고, 광산을 운영하고, 다른 광산에 대한 서비스 거부 등 공감대 공격을 가할 수 있다. 하지만 비트코인 네트워크의 계산력이 기하급수적으로 증가함에 따라 이러한 이론상 실행 가능한 공격 장면은 점점 더 어려워지고 있다. (윌리엄 셰익스피어, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인)
심각한 공감대 공격 사건이 비트코인 시스템에 대한 신뢰를 떨어뜨려 비트코인 가격의 다이빙을 초래할 수 있다는 데는 의심의 여지가 없다. 하지만 비트코인 시스템과 관련 소프트웨어도 지속적으로 개선되고 있기 때문에 비트코인 커뮤니티도 어떤 합의공격에도 신속하게 대응하여 전체 비트코인 시스템을 이전보다 더 견고하고 안정적으로 만들 수 있습니다.
합의 규칙은 거래와 블록의 유효성을 결정합니다. 이러한 규칙은 모든 비트코인 노드 간의 협업을 위한 기초이며 네트워크 전체에서 서로 다른 모든 역할에 대한 로컬 관점을 일관된 블록 체인으로 통합하는 역할을 담당합니다.
합의 규칙은 단기간에 변하지 않고 모든 노드 간에 일치해야 하지만 장기적으로는 변하지 않는 것은 아닙니다. 비트코인 시스템을 발전시키고 개발하려면 새로운 기능을 수용하거나 오류를 개선하거나 수정하기 위해 규칙을 수시로 변경해야 합니다. 그러나 기존 소프트웨어 개발과 달리 컨센서스 시스템을 업그레이드하는 것은 훨씬 어렵고 모든 참가자 간의 조정이 필요합니다.
"블록 체인 분기" 섹션에서는 비트코인 네트워크가 잠시 갈라지는 방법을 살펴보았습니다. 네트워크의 두 부분은 짧은 시간 내에 블록 체인의 두 가지 다른 분기에 있습니다. 우리는 이 과정이 어떻게 자연적으로 발생하는지, 네트워크의 정상적인 운행의 일환으로, 그리고 어떻게 하나 이상의 블록이 발굴된 후, 네트워크가 하나의 통일된 블록체인에서 다시 수렴하는 것을 보았다.
또 다른 경우, 네트워크도 두 개의 체인으로 갈라질 수 있는데, 이는 합의 규칙의 변화 때문이다. 이 분기를 하드 분기점이라고 합니다. 이 분기가 끝나면 네트워크가 단일 블록 체인으로 다시 수렴되지 않기 때문입니다. 반대로, 이 두 블록체인은 독립적으로 발전한다. 비트코인 네트워크의 일부 노드가 네트워크의 나머지 노드와 다른 합의 규칙에 따라 실행될 때 하드 분기점이 발생합니다. 이는 실수나 고의적인 합의 규칙의 변화로 인한 것일 수 있다.
하드 분기점은 합의 규칙을 변경하는 데 사용할 수 있지만 시스템의 모든 참가자 간에 조정이 필요합니다. 새로운 합의 규칙으로 업그레이드되지 않은 노드는 합의 메커니즘에 참여할 수 없으며 하드 분기점의 개별 블록 체인에 강제로 유지됩니다. 따라서 하드 분기점에 도입된 변화는 업그레이드되지 않은 시스템은 더 이상 새로운 합의 규칙을 처리할 수 없기 때문에’ 전방 호환성’ 이 아닌 것으로 간주될 수 있습니다.
특정 예를 통해 딱딱한 분기점의 메커니즘을 살펴봅시다.
다음 그림은 블록 체인에 두 개의 분기점이 나타나는 것을 보여줍니다. 블록 높이 4 에서 단일 블록 분기점이 발생합니다. 이것은 "블록 체인 분기" 섹션에서 볼 수 있는 자발적인 분기점의 유형입니다. 블록 5 의 발굴을 거쳐 네트워크가 한 체인에서 다시 수렴되고 분기점이 해결됩니다.
그러나 나중에 블록 높이 6 에서 하드 분기점이 발생했습니다. 그 이유는 새로운 합의 규칙의 변화로 인해 새로운 클라이언트 버전이 등장했기 때문이라고 가정합니다. 블록 높이 7 부터 광부들은 새로운 버전을 실행하고 새로운 유형의 디지털 서명을 받아야 합니다. 이를 "Smores" 서명이라고 합니다. ECDSA 기반 서명이 아닙니다. 그런 다음 새 버전을 실행하는 노드가 Smores 서명이 포함된 거래를 만들었습니다. 소프트웨어를 업데이트한 광부가 이 거래가 포함된 청크 7b 를 파냈습니다.
검증 Smores 서명 소프트웨어를 업그레이드하지 않은 노드 또는 광부는 이제 블록 7b 를 처리할 수 없습니다. 이들의 관점에서 볼 때 Smores 서명이 포함된 거래와 해당 트랜잭션이 포함된 청크 7b 는 기존 합의 규칙에 따라 평가되기 때문에 유효하지 않습니다. 이러한 노드는 트랜잭션과 블록을 거부하고 전달하지 않습니다. 이전 규칙을 사용 중인 광부는 청크 7b 를 받아들이지 않으며 상위 청크 6 의 후보 청크를 계속 발굴합니다. 사실, 이전 규칙을 따르는 광부들이 연결하는 모든 노드가 이전 규칙을 따른다면 블록 7b 를 받지 못할 수도 있으므로 이 블록을 전파하지 않을 수도 있습니다. 결국, 그들은 Smores 서명을 사용하는 어떤 거래도 포함하지 않는 구 규칙에서는 유효한 블록 7a 를 채굴할 것이다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 성공명언)
이 두 체인은 이 점에서 계속 분열한다. B’ 체인의 광부들은 Smores 서명이 포함된 거래를 계속 받아들이고 채굴할 것이며,’ A’ 체인의 광부들은 계속해서 이러한 거래를 무시할 것이다. 블록 8b 에 Smores 가 서명한 거래가 포함되어 있지 않더라도’ A’ 체인의 광부는 처리할 수 없습니다. 상위 블록 "7b" 가 유효한 블록으로 인식되지 않기 때문에 고립된 블록인 것 같습니다.
소프트웨어 개발자에게’ 분기’ 라는 용어는 또 다른 의미를 가지며’ 하드 분기’ 라는 단어에 혼란을 더했다. 오픈 소스 소프트웨어에서는 개발자 그룹이 서로 다른 소프트웨어 로드맵을 따르고 오픈 소스 프로젝트의 경쟁 구현을 시작할 때 분기점이 발생합니다. 우리는 단단한 분기점으로 이어지는 두 가지 상황에 대해 논의했습니다.
합의 규칙의 오류
합의 규칙의 고의적 개정
의도적으로 합의 규칙을 바꾸는 경우, 소프트웨어 분기점이 하드 분기보다 먼저 발생한다. 그러나 이러한 유형의 하드 분기점의 경우 새로운 합의 규칙은 새로운 소프트웨어의 개발, 채택 및 시작을 통해 구현되어야 합니다.
합의 규칙을 바꾸려는 소프트웨어 분기점의 예로는 Bitcoin XT, Bitcoin Classic 및 최근 BitcoinUnlimited 가 있습니다. 그러나 이러한 소프트웨어 분기점 중 어느 것도 하드 분기점을 생성하지 않습니다. 소프트웨어 분기점은 필수 전제 조건이지만, 그 자체로는 딱딱한 분기점이 발생하기에 충분하지 않다. 하드 분기점은 서로 경쟁하는 시행 방안을 채택하고 광부, 지갑, 중간 노드에 의해 규칙이 활성화되어야 하기 때문에 발생해야 합니다. 반면 비트코인 커널에 대한 대안이 많고, 소프트웨어 분기까지 있는데, 이는 합의규칙을 바꾸지 않고, 오류만 제거하고, 인터넷에서 공존하고 상호 운용할 수 있으며, 결국 딱딱한 분기점을 초래하지 않는다.
합의 규칙은 거래 또는 블록의 검증에서 명확하고 명확한 차이를 나타냅니다. 예를 들어, 비트코인 스크립트나 디지털 서명과 같은 암호화 원어 (예: 디지털 서명) 에 적용되는 합의 규칙은 미묘한 방식으로 표현될 수 있습니다. 마지막으로, 합의 규칙의 차이는 시스템 제한 또는 세부 사항 구현으로 인한 암시적 합의 제약 사항과 같은 예상치 못한 방식으로 인해 발생할 수 있습니다. Bitcoin Core 0.7 을 0.8 로 업그레이드할 때 블록 저장에 사용되는 Berkley DB 구현의 제한으로 인해 예상치 못한 하드 분기점에서 후자의 예를 볼 수 있습니다.
개념적으로, 우리는 단단한 분기를 네 단계로 볼 수 있습니다.
소프트웨어 분기
네트워크 분기
광산을 파다
블록 체인 분기
이 프로세스는 컨센서스 규칙을 수정한 개발자가 만든 클라이언트에서 시작됩니다.
이 새 버전의 클라이언트가 네트워크에 배포되면 광부, 지갑 사용자 및 중간 노드의 일정 비율이 해당 버전의 클라이언트를 사용하고 실행할 수 있습니다. 결과 분기점은 새로운 합의 규칙이 블록, 거래 또는 시스템의 다른 측면에 적용되는지 여부에 따라 달라집니다. 새로운 합의 규칙이 거래와 관련이 있는 경우, 새 규칙에 따라 거래의 지갑을 만들면 네트워크 분기점이 발생할 수 있으며, 이후 거래가 블록으로 발굴될 때 하드 분기점이 발생할 수 있습니다. 새 규칙이 블록과 관련된 경우 블록이 새 규칙에 따라 발굴되면 하드 분기 프로세스가 시작됩니다.
첫 번째는 네트워크 분기점입니다. 이전 합의 규칙에 기반한 노드는 새 규칙에 따라 생성된 모든 거래 및 청크를 거부합니다. 또한 이전 합의 규칙을 따르는 노드는 이러한 유효하지 않은 거래 및 블록을 전송하는 노드와의 연결을 일시적으로 금지하고 끊습니다. 따라서 네트워크는 두 부분으로 나뉩니다. 이전 노드는 이전 노드에만 연결된 상태로 유지되며 새 노드는 새 노드에만 연결할 수 있습니다. 새로운 규칙을 기반으로 한 단일 거래 또는 청크가 네트워크를 통해 전파되어 네트워크가 두 개의 파티션으로 분할되었습니다.
일단 새로운 규칙을 사용하는 광부들이 한 블록을 채굴하면, 광산을 파는 능력과 블록체인도 갈라질 것이다. 새로운 광부들은 새로운 블록 위에서 발굴할 것이고, 오래된 광부들은 오래된 규칙에 따라 별도의 체인을 발굴할 것이다. 분열된 네트워크는 각 합의 규칙에 따라 운영되는 광부들이 별도의 두 네트워크에 연결되기 때문에 서로의 블록을 받지 못하게 한다.
분리된 광부들이 두 개의 다른 사슬을 채굴하기 시작하면서 사슬의 산력도 분열되었다. 두 체인 사이의 광산 발굴 능력은 임의의 비율로 나눌 수 있다. 새로운 규칙은 소수의 광부들만이 따를 수도 있고, 절대다수의 광부일 수도 있다.
예를 들어, 예를 들어, 80% 와 20% 의 비율로 나누면, 대부분의 광산 산산산력은 새로운 합의 규칙을 사용한다고 가정합시다. 또한 분기점이 대상 변경 직후에 나타난다고 가정합니다.
이 두 체인은 대상 변경 후 각자 자신의 난이도를 받아들일 것이다. 새로운 합의 규칙은 이전에 사용할 수 있었던 광산권 중 80% 부분의 약속을 받았다. 이 사슬의 관점에서 볼 때, 이전 주기에 비해 광산 발굴 능력이 갑자기 20% 감소했다. 블록은 평균 12 분마다 발견됩니다. 즉, 이 체인을 확장할 수 있는 광산 발굴 능력이 20% 감소했다는 뜻입니다. 이 블록의 발행 속도는 2016 번째 블록을 파는데 약 24,192 분 (블록당 12 분) 또는 16.8 일이 걸릴 때까지 (계산력을 바꾸는 요소가 나타나지 않는 한) 계속될 것이다. 16.8 일 후 이 체인의 계산력 감소에 따라 대상 변경이 다시 발생하고 난이도 조정 (20% 감소) 이 10 분마다 한 블록씩 생성됩니다.
소수의 사람들이 인정한 그 사슬은 낡은 규칙에 따라 계속 광산을 파는데, 지금은 겨우 20% 의 해시산력만으로 더욱 어려운 임무에 직면하게 될 것이다. 이 사슬에서는 평균 50 분마다 채굴한다. 이 난이도는 2016 블록 이전에 조정되지 않으며 100,800 분 또는 약 10 주가 소요됩니다. 블록당 고정 용량이 있다고 가정하면 트랜잭션 기록에 시간당 사용할 수 있는 청크가 크게 줄어들기 때문에 트랜잭션 용량도 5 배 줄어듭니다.
이것은 합의 된 소프트웨어 개발의 여명 이다. 오픈 소스 개발이 소프트웨어의 방법과 제품을 바꿔 새로운 방법론, 새로운 도구 및 새로운 커뮤니티를 창조한 것처럼, 소프트웨어 개발도 컴퓨터 과학의 새로운 개척지를 대표합니다. 비트코인 로드맵의 토론, 실험, 어려움 속에서 우리는 새로운 개발 도구, 실천, 방법 및 지역사회의 출현을 보게 될 것이다.
하드 분기점은 소수의 사람들이 업그레이드를 선택하거나 소수파 체인에 보관해야 하기 때문에 위험으로 간주됩니다. 전체 시스템을 두 개의 경쟁 시스템으로 나누는 것은 많은 사람들이 받아들일 수 없는 위험으로 여겨진다. 그 결과, 많은 개발자들은 전체 네트워크가 합의할 수 없는 한 하드 분기 메커니즘을 사용하여 합의 규칙을 업그레이드하기를 꺼립니다. 모든 사람이 지지하지 않는 딱딱한 분기점 건의도’ 논란’ 으로 간주되고, 그렇지 않으면 분열시스템의 위험이 있다.
하드 분기점 문제는 비트코인 개발 커뮤니티, 특히 블록 크기 제한을 제어하는 합의 규칙과 관련된 제안에서도 논란의 여지가 있다. 일부 개발자들은 어떤 형태의 딱딱한 분기점에 반대하며, 그것이 너무 위험하다고 생각한다. 또 어떤 사람들은 딱딱한 분기점 메커니즘이 공감대 규칙을 높이는 중요한 도구라고 생각하며’ 기술채무’ 를 피하고 과거와 깨끗하게 단절했다. 마지막으로, 일부 개발자는 하드 분기점이 거의 사용되지 않는 메커니즘으로 사용되어야 하며, 진지한 계획을 거쳐 거의 일치된 공감대 하에 사용을 권장해야 한다고 생각합니다.
그래서 딱딱한 갈래의 위험을 해결하기 위한 새로운 방법론이 등장했다. 다음 섹션에서는 소프트 분기점과 BIP-34 및 BIP-9 의 합의 수정에 대한 신호 및 활성화 방법을 살펴보겠습니다.
모든 합의 규칙의 변화가 딱딱한 분기점으로 이어지는 것은 아니다. 앞으로 호환되지 않는 합의 규칙의 변화만이 분기점으로 이어질 수 있다. 합의 규칙의 변경으로 수정되지 않은 클라이언트가 이전 규칙에 따라 거래나 블록을 계속 처리할 수 있다면 분기점 없이 합의 수정을 할 수 있습니다.
이것은 이전의 단단한 분기를 구별하는 데 사용되는 부드러운 분기점입니다. 사실 부드러운 분기점은 분기점이 아니다. 소프트 분기점은 합의 규칙의 전방 호환 업그레이드로 업그레이드되지 않은 클라이언트 프로그램이 새로운 합의 규칙 하에서 계속 작동할 수 있도록 합니다.
소프트 분기점의 한 가지 분명한 측면은 소프트 분기 업그레이드가 합의 규칙 제약 조건을 늘리는 데만 사용할 수 있고 확장할 수는 없다는 것입니다. 이전 버전과의 호환성을 위해 새 규칙에서 생성된 트랜잭션 및 블록도 이전 규칙에서 유효해야 하지만 그 반대의 경우도 마찬가지입니다. 새 규칙은 제약 조건만 추가할 수 있습니다. 제약 조건이 완화되면 새 규칙으로 생성된 블록 (또는 트랜잭션) 이 이전 규칙에서 유효하지 않을 수 있으며, 이는 하드 분기점을 트리거합니다.
소프트 분기점은 여러 가지 방법으로 구현될 수 있습니다全球排名第一오피스타공식 홈페이지 입구 홈페이지는 어떻게 찾나요. 소프트 분기란 특정 단일 방법을 지칭하는 것이 아니라 여러 가지 방법으로 모든 노드를 업그레이드하지 않거나 비업그레이드 노드를 강제로 합의에서 벗어나게 하는 공통점을 가지고 있습니다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 소프트 분기점, 소프트 분기점, 소프트 분기점)
1, 소프트 분기 재정의 NOP opcode
NOP Opcode 를 기반으로 한 재 해석, 비트코인의 부드러운 분기점이 실현됩니다. 비트코인 스크립트에는 향후 사용을 위해 10 개의 opcode 예약, NOP1 ~ NOP10 이 있습니다. 합의 규칙에 따르면 스크립트에서 이러한 opcode 의 존재는 작동하지 않는 연산자로 해석됩니다. 즉, 아무런 영향을 미치지 않습니다. NP Opcode 이후 계속 실행됩니다. 마치 존재하지 않는 것처럼 말이죠.
따라서 소프트 분기점은 NOP 코드의 의미를 수정하여 새로운 의미를 줄 수 있습니다. 예를 들어 BIP-65(CHECKLOC-KTIMEVERIFY) 는 NOP2 Opcode 를 다시 해석합니다. BIP-65 를 구현하는 클라이언트는 NOP2 를 OP_CHECKLOCKTIMEVERIFY 로 해석합니다. 이는 잠금 스크립트에 Opcode 가 포함된 UTXO 에 절대 잠금 시간을 추가해야 하는 새로운 합의 규칙입니다. 이러한 변화는 BIP-65 에서 유효한 거래가 구현되지 않은 (인식되지 않는) 클라이언트에서도 유효하기 때문에 소프트 분기점입니다. 이전 클라이언트의 경우 스크립트에 NOP 코드가 포함되어 있어 무시됩니다.
2, 다른 방법 소프트 분기 업그레이드
NP Opcode 의 재해석은 예상된 일이며, 공감대 업그레이드를 위한 명백한 메커니즘이기도 하다. 그러나 최근에는 NOP Opcode 에 의존하지 않고 특정 유형의 공감대를 변경하는 또 다른 소프트 분기 메커니즘이 도입되었습니다.
격리 증언은 트랜잭션 내에서 외부 데이터 구조로 잠금 해제 스크립트 (증거) 를 이동 (격리) 하는 트랜잭션 구조의 아키텍처 변경입니다. 격리 증언은 처음에 기본 구조 (거래) 를 수정했기 때문에 하드 분기 업그레이드로 간주되었다. 2015 년 11 월 비트코인의 핵심 업무에 종사하는 한 개발자는 격리 증언을 부드러운 분기점으로 도입할 수 있는 메커니즘을 제시했다. 이 메커니즘은 업그레이드되지 않은 클라이언트가 잠금 스크립트를 잠금 해제 스크립트를 사용할 수 있는 것으로 간주하도록 격리 증거 규칙 하에서 UTXO 잠금 스크립트를 수정하는 것입니다. 따라서 각 노드를 업그레이드하거나 체인에서 분리하지 않고도 격리 증거를 도입할 수 있습니다. 이것이 소프트 분기점입니다.
아직 발견되지 않은 다른 메커니즘이 있을 수 있는데, 이 메커니즘은 앞으로 호환 가능한 방식으로 소프트 분기로 업그레이드할 수 있습니다.
NOP opcode 에 기반한 소프트 분기점은 비교적 논란의 여지가 없다. NOP Opcode 는 비트코인 스크립트에 배치되며, 업그레이드의 혼란을 줄이는 것이 분명한 목표입니다.
그러나 많은 개발자들은 소프트 분기 업그레이드를 위한 다른 방법이 용납할 수 없는 절충을 일으킬까 봐 우려하고 있습니다. 소프트 분기 변경에 대한 일반적인 비판은 다음과 같습니다.
기술 채무. 소프트 분기점은 기술적으로 하드 분기 업그레이드보다 더 복잡하기 때문에 기술 부채가 도입되었습니다. 이는 과거 설계 트레이드 오프로 인해 향후 코드 유지 관리 비용을 늘리는 것입니다. 코드 복잡성은 오류 및 보안 취약점의 가능성을 증가시킵니다.
검증이 완화되다. 수정되지 않은 클라이언트는 거래를 유효한 것으로 간주하고 변경된 합의 규칙에 따라 거래를 평가하지 않습니다. 실제로 수정되지 않은 클라이언트는 새 규칙을 무시하기 때문에 포괄적인 합의 규칙을 사용하여 검증하지 않습니다. 이는 NP 기반 업그레이드 및 기타 소프트 분기 업그레이드에 적용됩니다.
되돌릴 수 없는 업그레이드. 소프트 분기점은 추가적인 공감대 제약 거래를 일으키기 때문에 실제로는 되돌릴 수 없는 업그레이드가 된다. 소프트 분기 업그레이드가 활성화 후 롤백되는 경우 새 규칙에 따라 생성된 모든 거래로 인해 이전 규칙에 따른 자금 손실이 발생할 수 있습니다. 예를 들어, 기존 규칙에 따라 CLTV 트랜잭션을 평가하는 경우 시간 잠금 제약 조건이 없으며 언제든지 지출할 수 있습니다. 이에 따라 비판가들은 실수로 어쩔 수 없이 물러나야 하는 실패의 부드러운 분기점이 자금 유출로 이어질 가능성이 거의 없다고 보고 있다.
소프트 분기점은 수정되지 않은 고객이 합의 내에서 작동할 수 있도록 허용하기 때문에 소프트 분기점의’ 활성화’ 는 광부의 준비 신호에 기반을 두고 있다. 대부분의 광부들은 동의하고, 준비하고, 새로운 합의 규칙을 시행해야 한다. 그들의 행동을 조율하기 위해서, 합의 규칙의 변화에 대한 지지를 표현할 수 있는 신호 메커니즘이 있다. 이 메커니즘은 2013 년 3 월 BIP-34 활성화 이후 도입되었으며 2016 년 7 월 BIP-9 활성화로 대체되었습니다.
컨센서스 소프트웨어 개발이 계속 발전하면서 컨센서스 규칙을 바꾸는 각종 메커니즘에 대해 많은 논의가 이루어졌다. 본질적으로 비트코인은 조정과 공감대 변화 방면에서 매우 높은 벤치마킹을 세웠다. 탈 중심적인 시스템으로서 인터넷 참여자를 능가하는’ 권위’ 는 없다. 권력은 광부, 핵심 개발자, 지갑 개발자, 거래소, 상가, 최종 사용자 등 여러 지지자들 사이에 분산되어 있다. 이 지지자들은 일방적으로 결정을 내릴 수 없다.
예를 들어, 광부들은 이론적으로 과반수 (51%) 를 사용하여 규칙을 변경할 수 있지만, 다른 지지자들의 허락에 의해 제한된다. 만약 그들이 일방적으로 행동한다면, 다른 참가자들은 준수를 거부하고 경제 활동을 소수의 사슬에 유지할 수 있다. 경제활동 (거래, 상인, 지갑, 거래소) 이 없으면 광부들은 빈 블록으로 무가치한 화폐를 채굴할 것이다. 이런 권력의 확산은 모든 참가자가 협력해야 한다는 것을 의미한다. 그렇지 않으면 어떠한 변화도 실현될 수 없다. 이 시스템의 현상 유지는 안정적이며, 대부분의 사람들이 크게 합의한 경우에만 약간의 변화의 가능성이 있다. 부드러운 분기점의 95% 임계 값은 이러한 현실을 반영합니다.
공감대 발전에 대한 완벽한 해결책이 없다는 것을 깨닫는 것이 중요하다. 하드 분기점과 소프트 분기점 모두 트레이드 오프를 포함합니다. 소프트 분기점은 특정 유형의 변경에 더 좋은 선택이 될 수 있습니다. 또 다른 경우에는 딱딱한 분기점이 더 좋은 선택일 수 있다. 완벽한 선택이 없고, 그것들은 모두 위험을 가지고 있다. 공감대 소프트웨어 개발의 변하지 않는 특징 중 하나는 변화가 어렵고 합의가 타협에 기여했다는 것이다.
어떤 사람들은 이것이 합의 제도의 약점이라고 생각한다. 어느 날, 당신은 저처럼 그것을 이 시스템의 가장 큰 장점으로 여길 것입니다.
비트코인의 안전을 보장하는 것은 도전적이다. 비트코인은 은행 계좌의 대차대조표와 같은 추상적인 가치 참조가 아니기 때문이다. 비트코인 자체는 디지털 현금이나 금과 매우 비슷하다. "소유권은 법의 10 분의 9 를 차지한다" 는 표현을 들어보셨을 겁니다. " 음, 비트코인에서는 소유권이 규칙의 전부다. 비트코인의 키를 잠금 해제할 수 있는 소유권은 현금이나 귀금속 한 덩어리를 소유하는 것과 같다. 너는 그것을 잃어버리거나, 잘못 놓아두거나, 도둑맞거나, 실수로 다른 사람에게 부정확한 금액을 넘겨줄 수 있다. 이 모든 경우에, 사용자들은 마치 공공 보도에서 돈을 잃은 것처럼 되찾을 방법이 없다.
하지만 비트코인은 현금, 금, 은행 계좌가 가지고 있지 않은 능력을 가지고 있다. 너의 키가 들어 있는 비트코인 지갑은 어떤 파일처럼 백업될 수 있다. 여러 개의 복사본을 가질 수 있으며 하드 복사본으로 용지에 인쇄할 수도 있습니다. 현금, 금 또는 은행 계좌를 "백업" 할 방법이 없습니다. 비트코인은 이전의 어떤 것과도 다르다. 우리는 비트코인의 안전에 대해 새로운 방식으로 생각해야 한다.
비트코인의 핵심 원칙은 중심화인데, 이는 안전에 중요한 영향을 미친다. 전통적인 은행이나 지불 네트워크와 같은 중앙 집중식 모델은 액세스 제어 및 승인에 의존하여 나쁜 사람을 시스템 밖으로 막는다. 반면 비트코인과 같은 센터화 시스템은 이런 책임과 통제를 사용자에게 떠넘겼다. 네트워크의 보안은 액세스 제어가 아닌 작업 로드 증명을 기반으로 하기 때문에 네트워크는 개방될 수 있으며 비트코인 전송은 암호화가 필요하지 않습니다.
신용 카드 시스템과 같은 전통적인 지불 네트워크에서 지불은 사용자의 개인 ID (신용 카드 번호) 를 포함하므로 단말기에서 개방됩니다. 최초 지불 후 해당 로고에 액세스할 수 있는 사람은 소유자로부터 반복적으로 자금을 "추출" 할 수 있습니다. 이러한 방식으로 지불 네트워크는 암호화를 통해 종단간 보안을 유지해야 하며, 전송 중이든 저장 후 (휴식 시간) 에 관계없이 도청자나 중개인이 지급 통신을 위태롭게 할 수 있는지 확인해야 합니다. 나쁜 사람이 시스템 액세스 권한을 얻으면 현재 거래와 지불 토큰을 위험에 빠뜨리고 이를 사용하여 새 거래를 만들 수 있습니다. 설상가상으로, 고객 데이터가 유출되고 고객의 개인 신분 정보가 신분 도둑에게 노출되면 도난 계정이 사기에 사용되는 것을 막기 위한 조치가 필요합니다.
비트코인은 완전히 다릅니다. 비트코인 거래는 특정 값만을 특정 수신자에게 허가할 뿐 위조되거나 수정될 수 없습니다. 당사자 신분과 같은 개인 정보를 공개하지 않으며 추가 지불을 승인하는 데 사용할 수 없습니다. 따라서 비트코인 지불 네트워크는 암호화되거나 도청을 막을 필요가 없습니다. 사실, 보안성을 떨어뜨리지 않고 개방 공공 채널 (예: 안전하지 않은 WiFi 또는 Bluetooth) 을 통해 비트코인 거래를 방송할 수 있습니다.
비트코인의 센터화 보안 모델은 큰 권력을 사용자들에게 넘겼다. 권력과 함께 오는 것은 보안 키를 잘 보관할 책임이다. 대부분의 사용자에게는 쉽지 않다. 특히 인터넷에 항상 연결할 수 있는 스마트폰이나 노트북이라는 범용 컴퓨팅 장치를 사용하는 경우에는 더욱 그렇다. 비트코인의 센터화 모델은 흔히 볼 수 있는 신용카드 도용 문제를 피했지만, 많은 사용자들이 그들의 키를 안전하게 보관하지 못하고 해커에 의해 연이어 해킹당했다.
비트코인 개발자의 가장 중요한 원칙은 중심화를 없애는 것이다. 대부분의 개발자는 중앙 집중식 보안 모델에 익숙하며 비트코인 응용 프로그램에 이러한 모델을 적용하려고 할 수 있으므로 큰 결과를 초래할 수 있습니다.
비트코인의 안전은 키를 통한 중앙 집중식 통제와 광부로부터의 독립 거래 검증에 달려 있다. 비트코인의 보안을 이용하려면 항상 비트코인의 보안 모델에 있어야 합니다. 간단히 말해서, 사용자로부터 키에 대한 통제를 가져가지 말고, 거래를 체인 아래에 두지 마라.
예를 들어, 많은 초기 비트코인 거래소는 모든 사용자 자금을 하나의’ 핫’ 지갑에 넣었는데, 그 키는 단일 포인트 서버에 보관되어 있습니다. 이러한 설계는 사용자의 통제권을 빼앗고 단일 시스템에 키 제어를 집중시킵니다. 이러한 시스템 중 상당수가 해킹되어 고객에게 막대한 결과를 가져왔습니다.
또 다른 일반적인 오류는’ 체인 이탈’ 거래를 받아들이는 것이다. 이는 거래 비용을 줄이거나 거래 처리 속도를 높이기 위한 잘못된 지침에서 나온 것이다. 체인 이탈 거래 시스템은 내부 중앙화 장부에 거래를 기록한 다음 가끔 비트코인 블록체인에 동기화합니다. (윌리엄 셰익스피어, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인, 비트코인) 다시 한 번 강조하지만, 이 방법은 중앙 집중화되지 않은 비트코인 보안 모델을 독점적이고 중심적인 방식으로 대체했습니다. 거래가’ 사슬 이탈’ 일 때, 부적절한 보호 중심 장부는 눈에 띄지 않고 위조되고, 자금을 이체하고, 예비비를 소비할 수 있다.
운영 보안, 다중 계층 액세스 제어 및 감사에 막대한 투자를 할 준비가 되어 있지 않은 한 (전통적인 은행처럼), 비트코인의 중앙 집중식 환경에서 자금을 빼내기 전에 신중하게 고려해야 합니다. 강력한 보안 모델을 실현할 수 있는 충분한 자금과 기회가 있다 해도, 이 디자인은 신분 도용, 부패, 횡령에 시달리고 있는 전통적인 금융 네트워크의 취약한 모델일 뿐이다. 비트코인의 고유한 중앙 집중식 보안 모델을 이용하기 위해서는 친숙한 중앙 집중식 아키텍처를 사용하는 유혹에 저항해야 합니다. 왜냐하면 비트코인의 보안을 뒤엎기 때문입니다.
기존의 보안 아키텍처는 전체 시스템 또는 애플리케이션 보안의 기반이 되는 신뢰할 수 있는 핵심인 신뢰 루트를 기반으로 합니다. 보안 아키텍처는 신뢰의 뿌리를 둘러싸고 일련의 동심원을 형성하며, 양파의 계층처럼 신뢰를 중심에서 바깥쪽으로 확장한다. (존 F. 케네디, 믿음명언) 각 계층은 액세스 제어, 디지털 서명, 암호화 및 기타 보안 기반을 사용하여 더욱 신뢰할 수 있는 내부 계층을 기반으로 구축됩니다. 소프트웨어 시스템이 더욱 복잡해짐에 따라 결함이 더 취약하고 보안 위협에 취약해질 가능성이 더 높습니다. 소프트웨어 시스템이 복잡할수록 안전을 보장하기가 더 어렵습니다.
신뢰 루트의 개념은 가장 큰 신뢰가 시스템의 가장 간단하면서도 가장 견고한 부분에 놓이도록 보장하며, 더 복잡한 시스템은 그 위에 쌓여 있다. (존 F. 케네디, 믿음명언) 보안 아키텍처는 다양한 규모로 반복됩니다. 먼저 단일 시스템의 하드웨어에 트러스트 루트를 설정한 다음 운영 체제를 통해 상위 수준의 시스템 서비스로 확장되고, 결국 동심원으로 레이어링하지만 신뢰가 감소하는 많은 서버에 도달합니다.
비트코인의 보안 아키텍처는 다르다. 비트코인에서 합의시스템은 완전히 중심화된 신뢰할 수 있는 공공 장부를 만들었다. 올바르게 검증된 블록 체인은 창조 블록을 신뢰 루트로 사용하여 현재 블록까지 신뢰 체인을 구축합니다. 비트코인 시스템은 블록체인을 신뢰의 뿌리로 사용할 수도 있고 사용해야 한다. 서로 다른 시스템에서 실행되는 여러 서비스를 포함하는 복잡한 블록 체인 응용 프로그램을 설계할 때는 보안 아키텍처를 자세히 검사하여 신뢰할 수 있는 위치를 결정해야 합니다. 궁극적으로 명확하게 신뢰해야 할 유일한 것은 완전히 검증된 블록 체인입니다. 응용 프로그램이 블록 연결 이외의 것에 대한 신뢰를 명시적으로 또는 암시적으로 부여한다면, 이는 허점을 가져올 수 있기 때문에 주의를 기울여야 합니다.
응용 프로그램 보안 아키텍처를 평가하는 좋은 방법은 각 모듈을 별도로 고려하고, 악의적인 행위자의 통제 하에 완전히 함락된 가설적인 시나리오를 평가하는 것입니다. 당신이 적용하는 각 모듈을 차례로 살펴보고, 모듈이 위태로울 때 전반적인 안전에 미치는 영향을 평가하세요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 도전명언) 모듈이 위태로울 때 응용 프로그램이 더 이상 안전하지 않다면, 그 모듈에 신뢰를 잘못 넣었다는 뜻이다. (존 F. 케네디, 믿음명언) 빈틈이 없는 비트코인 앱은 비트코인 공감대가 손상된 경우에만 허점이 발생해야 합니다. 즉, 비트코인 보안 아키텍처의 가장 강력한 부분에 신뢰뿌리가 있다는 뜻입니다.
해커가 침입한 비트코인 거래소의 수많은 예는 가장 우연한 심사에서도 보안 아키텍처와 디자인이 실패하기 때문에 이를 강조하는 데 도움이 된다. 이러한 중심화의 실현은 비트코인 블록체인 외부의 많은 모듈에 대한 신뢰를 명시적으로 투자하는데, 예를 들면 핫지갑, 중앙화 장부 데이터베이스, 공격에 취약한 암호화 키 및 기타 유사한 방안 등이 있다.
인류가 물리적 안전 통제를 사용한 지 이미 수천 년이 되었다. 대조적으로, 디지털 보안을 사용한 우리의 경험은 50 년도 채 되지 않았다. 현대 범용 운영 체제는 그다지 안전하지 않으며, 디지털 통화를 보존하기 위해 특별히 적합하지도 않다. 우리 컴퓨터는 항상 온라인 인터넷 연결을 통해 항상 외부 위협에 처해 있다. 이들은 수백 명의 저자로부터 수천 개의 소프트웨어 모듈을 실행하며, 일반적으로 사용자 파일에 대한 무선 액세스를 제공합니다. 컴퓨터에 설치된 수천 개의 소프트웨어 중 건달 소프트웨어만 있으면 키보드와 파일을 함락시키고 지갑 앱에 저장된 모든 비트코인을 훔칠 수 있다. 컴퓨터 바이러스도 없고 목마도 없는 컴퓨터를 유지하는 데 필요한 기술 수준은 극소수의 컴퓨터 사용자를 제외한 모든 사람의 기술 수준을 능가한다.
정보 보안은 수십 년 동안 연구되고 발전해 왔지만 디지털 자산은 완고한 적들에게 여전히 취약합니다. 최고 수준의 보호와 제한을 받는 시스템 (예: 금융 서비스 회사, 정보기관, 국방청부업자) 도 종종 함락된다. 비트코인은 내재적인 가치를 지닌 디지털 자산을 만들어 도둑맞을 수 있으며, 즉각 취소불능으로 새로운 소유자에게 이전할 수 있다. 이것은 해커에게 큰 인센티브를 만들어 주었다. 지금까지 해커는 침입 후에도 신분 정보 또는 계좌 토큰 (예: 신용 카드 및 은행 계좌 번호) 을 가치로 변환해야 했습니다. 금융 정보를 보호하고 청소하는 것은 어려웠지만 절도 사건이 날로 증가하고 있다는 것을 알게 되었습니다. 비트코인은 포위되거나 청소될 필요가 없기 때문에 이 문제를 악화시켰다. 디지털 자산의 본질적인 가치입니다.
다행히도 비트코인도 컴퓨터 보안을 향상시키는 동기를 만들어 냈습니다. 이전에 컴퓨터 침입의 위험은 모호하고 간접적이었으며 비트코인은 이러한 위험을 분명히 했다. 한 대의 컴퓨터에 비트코인을 보관하면 사용자의 주의를 컴퓨터 보안 향상에 집중할 수 있다. 비트코인과 기타 디지털 통화의 급증과 사용의 직접적인 결과로 해커 기술과 보안 솔루션의 업그레이드를 동시에 보았습니다. 간단히 말해서, 해커들은 이제 매우 유수 있는 목표를 가지고 있고, 사용자들은 자신을 보호하기 위한 명확한 동기를 가지고 있다.
지난 3 년 동안 비트코인 사용의 직접적인 결과로 하드웨어 암호화, 키 스토리지 및 하드웨어 지갑, 다중 서명 기술, 디지털 호스팅 등 정보 보안 분야에서 엄청난 혁신을 보았습니다.
대부분의 사용자는 정보 보안보다 물리적 보안에 더 적합하기 때문에 비트코인을 보호하는 매우 효과적인 방법은 이를 물리적 형태로 변환하는 것입니다. 비트코인 키는 일련의 숫자일 뿐이다. 즉, 종이에 인쇄하거나 금속 동전에 에칭하는 것과 같은 물리적 형태로 저장할 수 있습니다. 이렇게 하면 키 보안을 보호하는 것이 단순히 인쇄된 비트코인 키를 물리적으로 보호하는 것이 됩니다.
종이에 인쇄된 비트코인 키 세트를 "종이 지갑" 이라고 하며, 이를 만드는 데 사용할 수 있는 많은 무료 도구가 있습니다. 저는 개인적으로 대부분의 비트코인 (99% 이상) 을 종이 지갑에 보관하고 BIP-38 암호화로 안전한 곳에 여러 개의 자물쇠를 복사했습니다. 비트코인을 오프라인으로 보관하는 것을 콜드 스토리지라고 하며, 가장 효과적인 보안 기술 중 하나이다. 콜드 스토리지 시스템은 오프라인 시스템 (네트워크로 연결되지 않은 시스템) 에서 키를 생성하여 종이나 USB 메모리 스틱과 같은 디지털 미디어에 오프라인으로 저장합니다.
장기적으로 비트코인 보안은 점점 더 하드웨어 변조 방지 지갑의 형태를 취하고 있다. 스마트폰이나 데스크탑과는 달리 비트코인 하드웨어 지갑은 비트코인을 안전하게 보관하는 목적이 하나뿐입니다. 범용 소프트웨어가 없고 인터페이스가 제한되어 있기 때문에 하드웨어 지갑은 비전문가를 위한 거의 완벽한 보안 수준을 제공합니다. 나는 하드웨어 지갑이 비트코인 저장의 주요 방법이 되기를 기대한다. 이러한 하드웨어 지갑의 예는 Trezor( https://trezor.io/) 를 참조하십시오.
대부분의 사용자는 비트코인 도난에 대해 올바른 관심을 가지고 있지만, 더 큰 위험이 있습니다. 데이터 파일이 계속 손실되고 있습니다. 분실된 파일에 비트코인이 포함되어 있으면 손실이 더욱 심각해질 수 있다. 비트코인 지갑의 안전을 보장하기 위해 사용자는 지나치게 보호하지 않도록 매우 조심해야 하며, 결국 비트코인을 잃어버려야 한다. 2011 년 7 월, 유명한 비트코인 홍보 및 교육 프로그램이 거의 7000 개의 비트코인을 잃었다. 도난을 방지하기 위해 소지자들은 일련의 복잡한 암호화 백업을 실시했다. 결국 그들은 실수로 암호화 키를 잃어버렸고, 백업이 무가치하고 막대한 부를 잃었다. 마치 사막에 돈을 숨긴 것 같다. 비트코인을 보호하는 방식이 너무 지나치면 더 이상 찾을 수 없을 것이다. (존 F. 케네디, 돈명언)
너는 너의 모든 재산을 현금으로 너의 지갑에 넣을 수 있니? 대부분의 사람들은 이것이 무모하다고 생각하지만, 비트코인 사용자는 종종 모든 비트코인을 하나의 지갑에 넣는다. 대신 사용자는 다양한 비트코인 지갑에 위험을 분산시켜야 한다. 신중한 사용자는 비트코인 (5% 미만) 의 일부만 온라인 또는 모바일 지갑에’ 잔돈’ 으로 넣는다. 나머지는 데스크톱 지갑과 오프라인 지갑 (콜드 지갑) 과 같은 여러 가지 저장 메커니즘으로 나누어 보관해야 합니다.
회사나 개인이 대량의 비트코인을 저장할 때마다 다중 서명된 비트코인 주소를 사용하는 것을 고려해야 합니다. 복수 서명 주소는 지불 시 두 개 이상의 서명을 요구하여 자금을 보호합니다. 서명 키는 다른 사람이 제어하는 여러 다른 위치에 저장해야 합니다. 예를 들어 회사 환경에서는 아무도 자금을 손상시킬 수 없도록 여러 회사 경영진이 키를 독립적으로 생성하고 보관해야 합니다. 다중 서명 주소는 중복성을 제공할 수도 있습니다. 즉, 한 사람이 다른 위치에 저장된 여러 키를 가질 수 있습니다.
간과되는 한 가지 보안 고려 사항은 가용성입니다. 특히 키 보유자가 행동 능력이나 사망이 없는 경우에는 더욱 그렇습니다. 비트코인 사용자는 복잡한 비밀번호를 사용하고 그들의 키가 안전하고 은밀하며 누구와도 공유되지 않는다는 말을 들었다. 불행히도, 이 사용자가 잠금을 해제할 수 없을 때, 이 방법은 또한 사용자의 가정이 어떠한 자금도 회복하는 것을 거의 불가능하게 한다. 사실, 대부분의 경우 비트코인 사용자의 가족들은 비트코인 자금의 존재를 전혀 모를 수 있습니다.
비트코인이 많다면 믿을 수 있는 친척이나 변호사와 방문 세부 사항을 공유하는 것을 고려해야 한다. 디지털 자산 집행자’ 로 전담하는 변호사나 다중 서명 액세스와 유산 계획을 통해 더 복잡한 비트코인 생존 능력 방안을 마련할 수도 있다.
이제 비트코인을 앱 플랫폼으로 삼는 시각에서 더 깊이 이해합시다. 많은 사람들이 비트코인 디자인 원칙을 공유하는 모든 애플리케이션 플랫폼을 나타내기 위해’ 블록 체인’ 이라는 단어를 사용합니다. 이 용어는 종종 남용되며 비트코인 블록체인의 주요 기능이 제공하지 못하는 많은 것에 적용된다.
이 장에서는 Bitcoin 블록 체인을 응용 프로그램 플랫폼에서 제공하는 기능 telegram 다운로드 위치로 소개합니다. 어플리케이션 구축 요소, 즉 블록 체인 어플리케이션의 기본 모듈을 고려합니다. 염색 통화, 지불 (상태) 채널, 라우팅 지불 채널 (번개 네트워크) 등 이러한 구성 요소를 사용하는 몇 가지 주요 어플리케이션을 살펴보겠습니다.
비트코인 시스템은 분산된 통화 및 지불 시스템으로 설계되었다. 그러나, 그것의 기능의 대부분은 더 넓은 응용 프로그램에서 사용할 수 있는 더 낮은 계층 구조에서 비롯된다. 비트코인은 계좌, 사용자, 잔액 및 지불과 같은 구성 요소로 만들어지지 않습니다. 대신 암호화 기능이 있는 기본 트랜잭션 스크립팅 언어를 사용합니다. 계좌, 잔액 및 지불의 상위 수준 개념이 기본 요소에서 파생될 수 있는 것처럼, 다른 많은 복잡한 응용 프로그램에서도 마찬가지입니다. 따라서 비트코인 블록 체인은 디지털 통화 및 지불의 원래 목적보다 훨씬 더 신뢰할 수 있는 서비스를 제공하는 어플리케이션 플랫폼 (예: 스마트 계약 등) 이 될 수 있습니다.
어플리케이션이 정상적이고 장기적으로 실행될 수 있도록 비트코인 시스템은 기본 모듈로 응용 프로그램을 만들 수 있는 일련의 보증을 제공합니다. 여기에는 다음이 포함됩니다.
이중 지출을 근절하다. 비트코인 분산 합의 알고리즘의 가장 기본적인 보증은 UTXO 가 두 번 걸리지 않도록 보장하는 것이다.
변조 불가능. 트랜잭션이 청크에 기록되고 나중에 충분한 청크가 추가되면 트랜잭션 데이터는 변조할 수 없게 됩니다. 변조 불가능성은 계산력에 의해 보증된다. 블록 체인을 다시 쓰려면 많은 계산력이 필요하기 때문이다. 필요한 계산력과 이로 인한 가변성의 정도는 거래가 포함된 블록 이후 제출된 블록 수에 따라 증가합니다.
중립. 중앙화된 비트코인 네트워크는 이러한 거래의 출처나 내용에 관계없이 효과적인 거래를 전파한다. 즉, 누구나 효과적인 거래를 만들기에 충분한 비용을 지불하고 언제든지 거래를 전송하여 블록 체인에 포함할 수 있다는 확신을 가질 수 있습니다.
보안 타임스탬프입니다. 합의 규칙은 타임스탬프가 현재 너무 먼 블록 (과거와 미래) 을 거부합니다. 이렇게 하면 블록의 타임스탬프를 신뢰할 수 있습니다. 블록의 타임스탬프는 모든 트랜잭션에 포함된 입력이 사용되지 않음을 의미합니다.
허가. 디지털 서명은 중앙 집중식 네트워크를 통해 인증을 받은 후 인증 보증을 제공할 수 있습니다. 디지털 서명 요구 사항을 포함하는 잠금 스크립트는 스크립트에 암시적 개인 키 보유자의 허가 없이 실행할 수 없습니다.
감사성. 모든 거래는 공개되어 감사될 수 있다. 모든 거래와 블록들은 끊임없는 블록체인으로 창조 블록에 연결되어 있다.
계산할 수 있습니다. Coinbase 거래를 제외한 모든 거래에서 입력된 금액은 출력된 금액에 거래 비용을 더한 것과 같습니다. 거래에서 비트코인을 만들거나 파기하는 것은 불가능하다. 출력은 입력을 초과할 수 없습니다.
영원히 만료되지 않는다. 유효한 거래가 만료되지 않습니다. 오늘이 유효하다면, 입력이 여전히 지출되지 않고 합의 규칙이 변경되지 않는 한, 그것은 가까운 미래에도 여전히 유효할 것이다.
공평성. SIGHASH_ALL 에 의해 서명되거나 SIGHASH 유형에 의해 부분적으로 서명된 비트코인 거래는 서명이 아직 유효한 경우 수정할 수 없으므로 거래 자체가 무효화됩니다.
원자성을 거래하다. 비트코인 거래는 원자적이다. 그것들은 유효하고 확인되었거나 (포장되어 광산을 파낸 적이 있음) 아니면 그렇지 않다. 거래 확인의 일부가 없고, 거래도 중간 상태가 없다. 어느 시점에서든, 거래는 포장되어 광산을 파거나, 포장되어 광산을 파지 않았다.
액면가가 고정됩니다 (분할불가). 거래 출력은 고정 액면가와 분할할 수 없는 가치 단위입니다. 그것들은 전체적으로 비용이 들거나, 전체적으로 비용이 들지 않고, 분할되거나 부분적으로 지출될 수 없다.
정족수. 스크립트의 복수 서명은 승인된 정족수 (예정된 모든 것을 유효하게 하는 최소 참가자 수) 가 스키마에서 미리 정의되도록 강제합니다. 합의 규칙은 M-of-N 이 이렇게 집행되어야 한다고 요구한다.
시간 잠금/성숙. 상대 또는 절대 시간 잠금이 포함된 스크립트 문은 지정된 시간이 경과한 후에만 실행할 수 있습니다.
복제성. 블록 체인의 중앙 집중식 스토리지를 통해 일부 네트워크의 정전, 데이터 손실 등에 영향을 받지 않고 전체 네트워크에 복사되어 영구 스토리지로 전환될 수 있습니다 (광부가 블록 체인으로 포장됨).
위조 방지 보호. 트랜잭션당 기존의 검증된 출력만 쓸 수 있습니다. 비트코인을 허공에서 만들거나 위조하는 것은 불가능하다.
일관성. 광부의 분기점이 없는 경우 블록의 깊이가 깊어질수록 블록 체인에 기록된 블록이 다시 분리되거나 인식되지 않을 가능성이 기하급수적으로 떨어질 수 있습니다. 일단 심층에 기록되면, 변화에 필요한 산력과 에너지는 불가능할 정도로 커질 것이다.
외부 상태를 기록할 수 있습니다. 각 거래는 OP_RETURN 을 통해 외부 시스템의 상태 변경을 나타내는 데이터를 제출할 수 있습니다.
발행량을 예측할 수 있다. 총 2100 만 비트코인은 예측 가능한 속도로 발행될 것이다.
위의 기본 모듈 목록은 완전하지 않으며 비트코인에 새로운 기능이 추가됩니다.
비트코인이 제공하는 기본 모듈은 다양한 어플리케이션을 구성하는 데 사용할 수 있는 신뢰할 수 있는 플랫폼의 일부입니다. 다음은 오늘 사용 중인 응용 프로그램과 사용 중인 기본 모듈의 몇 가지 예입니다.
디지털 공증-proof-of-existence (디지털 노트). 변조 불가능+타임스탬프+지속성 디지털 지문은 아카이브 시간 동안 파일이 존재한다는 것을 증명하기 위해 트랜잭션을 통해 블록 체인에 제출할 수 있습니다 (보안 타임스탬프). 디지털 지문은 나중에 수정할 수 없으며 (변조 불가능), 증거는 영구적으로 저장 (지속성) 됩니다.
크라우드 소싱-킥스타터 (lighthouse). 일관성+원자+공정성. 크라우드 워드 캠페인을 시작한 거래에 입력과 출력 (공정성) 을 서명하면 다른 사람들이 크라우드 소싱에 참여할 수 있지만 목표 (출력 값) 가 완료되기 전에 (일관성) 돈을 쓸 수 없습니다 (원자).
지불 통로. 정족수+시간잠금+이중지출 제거+만료되지 않음+감사성+허가. 시간잠금 (Timelock) 이 있는 정족수가 2-2 인 (Quorum) 복수 서명은 지급 통로로 사용되는’ 결제’ 거래로 사용될 경우 보유 (Nonexpiration) 하거나 언제든지 어느 한 당사자가 승인할 수 있습니다 (Authorization) 그런 다음 양측은 더 짧은 시간 잠금 (Timelock) 에 이중 지출 (No Double-Spend) 결제에 대한 확인 거래를 만들 수 있습니다.
우리가 논의 할 첫 번째 블록 체인 응용 프로그램은 컬러 코인 (Colored Coins) 입니다.
염색화폐는 비트코인 거래를 이용하여 비트코인 이외의 외부 자산과 외부 자산의 생성, 소유권 확인 및 양도를 기록하는 기술이다.
이른바’ 외부 자산’ 이란 비트코인 블록에 직접 저장되지 않고 비트코인 자체와는 달리 비트코인 자체가 블록체인의 고유 자산이기 때문이다.
염색 화폐는 제 3 자가 보유한 디지털 자산과 물리적 자산을 추적하고 염색 화폐 소유권 증명서를 통해 거래를 하는 데 사용됩니다. 디지털 자산의 염색 화폐는 주식증서, 허가증, 가상재산 (게임장비) 또는 대부분의 형태의 재권 지적재산권 (상표, 저작권 등) 과 같은 무형자산을 나타낼 수 있다. 유형 자산의 염색 화폐는 상품 (금, 은, 석유), 토지, 자동차, 선박, 비행기 등의 소유권을 나타낼 수 있다.
이 용어는 "음영 처리" 또는 특정 액면가를 표시하는 비트코인의 생각에서 유래한 것입니다. 예를 들어 1 총각은 비트코인의 가치 자체를 나타내는 데 사용됩니다. 예를 들어, 우리는 1 달러 지폐에 "이것은 ACME 의 주식증서" 또는 "이 지폐는 1 온스의 은을 환전할 수 있다" 는 메시지를 표시한 다음, 이 1 달러 지폐를 다른 자산 권익 증명서로 사용하여 거래한다.
염색 통화의 첫 번째 구현은 "주문 기반 고급 채우기 음영 처리 (enhanced padded-order-based coloring)" 또는 "EPOBC" 라고 하며 외부 자산을 1 콩 출력에 표시합니다. 이렇게 하면 각 자산이 1 콩 출력의 속성 (색상) 으로 추가되어 진정한’ 염색 화폐’ 가 됩니다.
염색 통화의 최신 구현은 OP_RETURN 스크립트 opcode 를 사용하여 메타 데이터를 트랜잭션에 저장하고 저장된 메타 데이터를 특정 자산과 연관된 외부 데이터와 함께 사용합니다.
오늘날 염색화폐의 가장 큰 두 가지 구현은 오픈자산 (http://www.openassets.org/) 과 쿨루 (http://coloredcoins.org) 의 구현입니다 이 두 시스템은 서로 다른 프로토콜을 사용하여 염색을 하며 호환되지 않는다. 한 시스템에서 만든 염색 화폐는 다른 시스템에서 인식하거나 사용할 수 없습니다.
염색 통화 프로토콜 메타데이터를 이해할 수 있는 특수 지갑을 사용하여 염색 통화를 확인, 생성 또는 전송해야 합니다. 일반 지갑은 메타데이터를 손상시킬 수 있으므로 일반 비트코인 지갑에서 염색화 관련 키를 사용하지 않도록 각별히 주의해야 합니다. 마찬가지로, 염색 화폐도 일반 지갑이 관리하는 주소로 보내서는 안 되며, 염색 화폐가 인식할 수 있는 지갑 관리 주소로만 보낼 수 있습니다.
Colu 와 Open Assets 두 시스템 모두 특수 염색화폐 주소를 사용하여 이러한 위험을 줄이고 염색화폐가 염색화폐를 인식하지 못하는 지갑으로 전송되지 않도록 합니다.
염색 화폐는 대부분의 일반적인 블록 체인 브라우저에도 보이지 않는다. 대신 염색 통화 브라우저를 사용하여 염색 통화 거래의 메타데이터를 설명해야 합니다.
Open Assets 호환 지갑 응용 프로그램 및 블록 체인 브라우저는 https://www.coinprism.info 에서 찾을 수 있습니다.
Colu 염색 통화 호환 지갑 응용 프로그램 및 블록 체인 브라우저는 http://coloredcoins.org/explorer/에서 찾을 수 있습니다.
Copay 지갑 플러그인은 http://coloredcoins.org/colored-coins-copay-addon/에서 찾을 수 있습니다.
각 염색 화폐의 구현은 서로 다른 방법으로 염색 화폐를 만들지만, 모두 비슷한 기능을 제공한다. 염색 화폐 자산을 만드는 과정을 발행이라고 합니다. 초기 거래로 발행 거래는 자산을 비트코인 블록 체인에 등록하고 자산을 참조하는 자산 ID 를 만듭니다. 일단 발행되면 자산은 이체 거래를 사용하여 주소 간에 이관할 수 있습니다.
염색 화폐로 발행된 자산에는 여러 가지 속성이 있을 수 있습니다. 분할가능 또는 분할불가일 수 있습니다. 즉, 이체의 자산 양은 정수 (예: 5) 또는 소수 세분화 (예: 4.321) 일 수 있습니다. 자산은 또한 "고정 발행" 될 수 있습니다. 즉, 일정 수의 자산을 한 번만 발행할 수 있거나 다시 발행할 수 있습니다. 즉, 원본 발행인이 최초 발행 후 새 자산 단위를 발행할 수 있음을 의미합니다.
마지막으로 일부 염색 화폐는 배당금을 활성화합니다. 즉, 소유권에 따라 비트코인을 염색 자산의 소유자에게 비례적으로 할당할 수 있습니다.
계약통화 (Counterparty) 는 비트코인 위에 세워진 계약층이다. 염색 통화와 유사한 계약 통화 계약은 가상 자산과 토큰을 만들고 거래할 수 있는 기능을 제공합니다. 게다가, 계약화폐는 센터화되지 않은 자산 교환을 제공한다. 계약금은 또한 Ethereum 가상 머신 (EVM) 기반 지능형 계약을 체결했습니다.
염색 통화 프로토콜과 마찬가지로 계약 통화는 OP_RETURN Opcode 또는 1-N 다중 서명의 공개 키 주소를 사용하여 비트코인 거래에 메타데이터를 포함합니다. 이러한 메커니즘을 사용하여 계약 통화는 비트코인 거래 코드 위에 있는 프로토콜 계층을 구현합니다. 추가 프로토콜 계층은 해당 지갑 및 블록 체인 브라우저 또는 계약 통화 라이브러리를 사용하여 작성된 모든 응용 프로그램과 같이 계약 통화를 이해할 수 있는 응용 프로그램에서 해석할 수 있습니다.
계약 통화는 다른 응용 프로그램 및 서비스의 플랫폼으로 사용될 수 있습니다. 예를 들어 Tokenly 는 컨텐츠 제작자, 아티스트 및 회사가 디지털 소유권을 나타내는 토큰을 발행하고 컨텐츠, 제품 및 서비스를 임대, 액세스, 거래 또는 구매할 수 있는 계약 통화를 기반으로 하는 플랫폼입니다. 계약 통화를 이용하는 다른 애플리케이션으로는 게임 (Spells of Genesis) 과 그리드 컴퓨팅 항목 (Folding Coin) 이 있습니다.
계약통화에 대한 자세한 내용은 https://counterparty.io/ 를 참조하십시오. 오픈 소스 프로젝트는 https://github.com/counterparty xcp 에서 찾을 수 있습니다.
지불 채널은 비트코인 블록체인 외부의 쌍방 간에 교환되는 비트코인 거래의 상호 신뢰가 필요 없는 메커니즘이다. 이러한 거래가 비트코인 블록체인에서 결제되는 경우 유효하지만, 티켓 형식으로 최종 대량 결제를 기다리고 있습니다. 거래는 포장 체인이 필요하지 않기 때문에 일반적인 결제 대기 없이 교환할 수 있으므로 매우 높은 트랜잭션 처리량과 짧은 대기 시간 (AMS) 및 높은 미세 조정 (Satoshi 레벨) 을 충족할 수 있습니다.
사실 "채널" 이라는 단어는 비유입니다. 상태 채널은 블록 체인 외부의 상호 교환 상태로 표현되는 가상 구조입니다. 실제 "채널" 은 없으며 기본 데이터 전송 메커니즘은 채널이 아닙니다. 우리는 통로라는 용어를 사용하여 체인 밖 양측 간의 관계와 공유 상태를 나타낸다.
이 개념을 더 자세히 설명하기 위해 TCP 흐름에 대해 생각해 보세요. 고위급 프로토콜의 관점에서 볼 때 인터넷을 통해 두 응용 프로그램을 연결하는 "소켓" 입니다. 그러나 네트워크 트래픽을 보면 TCP 스트림은 IP 패킷 위의 가상 채널일 뿐입니다. TCP 스트림의 각 끝점은 IP 패킷을 정렬하고 조립하여 바이트 스트림의 착각을 일으킵니다. 실제로 배후에는 모든 패킷이 분리되어 있습니다. 마찬가지로, 지불 통로도 일련의 거래일 뿐이다. 적절히 정렬하고 연결하면 채널의 다른 쪽 (정렬된 연결 후 거래) 을 신뢰하지 않아도 신뢰할 수 있는 거래를 만들 수 있습니다.
이 섹션에서는 다양한 형태의 지불 채널을 소개합니다. 먼저 대량의 소액 결제 서비스 (예: 스트리밍 비디오) 를 지원하는 단일 (단방향) 지불 채널의 메커니즘을 살펴봅니다. 그런 다음, 우리는 이 메커니즘을 확대하고 양방향 지불 채널을 도입할 것이다. 마지막으로, 먼저’ 번개 네트워크’ 에서 제시한 바와 같이 라우팅 네트워크에서 양방향 채널을 종단 간 링크로 연결하여 멀티 홉 채널을 형성하는 방법을 살펴보겠습니다.
지불 채널은 상태 채널의 확장 개념 중 하나로 체인 외 상태의 변화를 나타내며 블록 체인의 최종 결제를 통해 보장됩니다. 지불 채널은 상태 채널입니다. 여기서 변경된 상태는 telegram 의 중국어 버전으로 다운로드된 웹 사이트의 잔액입니다.
한 트랜잭션이 블록 체인에서 잠긴 공유 상태를 통해 당사자 간에 상태 채널이 설정됩니다. 이를 자금 거래 또는 앵커 거래라고 합니다. 이 거래는 반드시 네트워크로 전달되어야 하고, 광산에 의해 확인되어 통로를 세워야 한다. 지불 채널의 예에서 잠금 상태는 채널의 초기 잔액 (통화) 입니다.
뒤이어 쌍방이 서명된 거래를 교환했는데, 이를 약속거래라고 합니다. 이러한 약속 거래는 초기 잠금 상태를 변경합니다. 이들 거래는 모두 유효하다. 어느 쪽이든 결제를 블록체인에 제출할 수 있지만 통로가 닫힐 때까지 기다렸다가 결제를 할 수 있기 때문이다. 채널 상태는 어느 한쪽이 상대방에게 거래를 생성, 서명 및 전송할 때 즉시 업데이트됩니다. 즉, 실제로 초당 수천 건의 거래를 수행할 수 있습니다.
약속 거래를 교환할 때 양측은 이전 상태를 동시에 폐지하여 최신 약속 거래가 항상 환전할 수 있는 유일한 약속 거래이다. 이렇게 하면 어느 한쪽이 채널의 이전 상태가 최신 상태보다 자기측에 더 유리할 때 일방적으로 채널을 폐쇄하여 이익을 얻지 못하게 됩니다. 이 장의 나머지 부분에서는 이전 상태를 무효화하는 데 사용할 수 있는 다양한 메커니즘을 살펴봅니다.
마지막으로 채널을 공동으로 폐쇄하거나, 최종 결제 거래를 블록 체인에 제출하거나, 최종 약속 거래를 블록 체인에 일방적으로 제출할 수 있습니다. 일방적으로 채널을 끌 수 있는 옵션이 필요합니다. 거래 중 한 쪽이 실수로 연결이 끊어지지 않도록 해야 합니다. 결제 거래는 채널의 최종 상태를 나타내며 블록 체인으로 결제됩니다.
채널의 전체 수명 주기 동안 두 개의 거래만 블록 체인에 제출하여 광산을 파야 합니다. 즉, 자금 거래와 결제 거래입니다. 이 두 상태 간에 쌍방은 다른 사람의 증거나 블록 체인에 제출할 필요가 없는 어떠한 수의 약속된 거래도 교환할 수 있습니다.
그림 12-4 는 Bob 과 Alice 사이의 지불 채널을 보여 주며 자금, 약속 및 결제 거래를 보여 줍니다.
상태 채널을 설명하기 위해서, 우리는 매우 간단한 예시로 시작해야 한다. 여기서 단방향 채널을 보여 주는 것은 가치가 한 방향으로만 흐른다는 것을 의미한다. 설명하기 쉽도록, 우리는 아무도 다른 사람을 속이려 하지 않는다고 가정하는 순진한 가정으로 시작한다. 일단 기본적인 채널 개념을 설명하면, 지불 채널이 상호 신뢰를 필요로 하지 않도록 하는 것이 무엇인지 살펴보고, 교역 쌍방이 부정행위를 시도해도 성공할 수 없도록 할 것이다. (윌리엄 셰익스피어, 오셀로, 믿음명언)
이 경우 Emma 와 Fabian 이라는 두 명의 참가자가 있다고 가정합니다. Fabian 은 마이크로지불 채널에서 초 단위의 요금을 지원하는 비디오 스트리밍 서비스를 제공합니다. Fabian 의 비디오는 초당 0.01 밀리비 (millibits)(0.00001 BTC) 로 시간당 36 밀리비 (0.036 BTC) 가 필요합니다. Emma 는 Fabian 으로부터 초 단위의 지불 채널을 사용하여 스트리밍 비디오 서비스를 구매하는 사용자입니다.
아래 그림은 Emma 가 결제 채널을 사용하여 Fabian 에서 비디오 스트리밍 서비스를 구매하는 모습을 보여줍니다.
이 예에서 Fabian 과 Emma 는 지불 채널과 비디오 스트림을 전문적으로 처리하는 소프트웨어를 사용하고 있습니다. Emma 는 브라우저에서 소프트웨어를 실행하고 Fabian 은 서버측에서 소프트웨어를 실행합니다. 이 소프트웨어에는 비트코인 거래를 만들고 서명할 수 있는 기본적인 비트코인 지갑 기능이 포함되어 있습니다. "지불 채널" 의 개념과 용어는 사용자에게 전혀 보이지 않습니다. 그들이 보는 것은 초 단위로 지불하는 비디오일 뿐이다.
지불 채널을 설정하기 위해 Emma 와 Fabian 은 각각 키를 보유하는 2-2 의 다중 서명 주소를 구축했습니다. Emma 의 관점에서 볼 때, 그녀의 브라우저에 있는 소프트웨어는 P2SH 주소가 있는 큐알(QR)코드 (‘3′ 으로 시작) 를 제공하고 1 시간 비디오의’ 보증금’ 을 제출하라고 요구했다. 따라서 주소는 Emma 의 자본 주입을 받았습니다. 여러 주소로 지급되는 Emma 거래는 지불 채널의 자금 거래 또는 앵커 거래입니다.
이 경우 Emma 가 채널에 36 밀리비 (0.036 BTC) 를 지불했다고 가정합니다. 이를 통해 Emma 는 최대 1 시간의 스트리밍 비디오를 소비할 수 있습니다. 이 자금 거래는 이 채널에서 보낼 수 있는 최대 금액, 즉 채널 용량을 설정합니다.
자금 거래는 Emma 지갑에서 하나 이상의 입력을 소비하여 자금을 통합합니다. Emma 와 Fabian 간에 공동으로 제어되는 다중 서명 2-2 주소로 36ms 의 출력을 생성합니다. 또 다른 0 에서 Emma 지갑으로 출력될 수도 있습니다.
자금 거래가 확인되면 Emma 는 동영상 시청을 시작할 수 있습니다. Emma 의 소프트웨어는 약속 거래를 생성 및 서명하고, 채널 잔액을 변경하고, 0.01 밀리를 Fabian 주소로 분류하고, Emma 의 35.99 밀리를 반환합니다. Emma 가 서명한 거래는 자금 거래로 생성된 36 밀리비 출력을 소비하고 두 가지 출력을 만들었습니다. 하나는 거스름돈을 위한 것이고, 다른 하나는 Fabian 지불을 위한 것입니다. 이 시점에서 거래는 부분적으로 서명되었으며 두 개의 서명 (2-2) 이 필요하지만 Emma 의 서명만 필요합니다. Fabian 의 서버가 이 거래를 수신하면 2-2 입력용 두 번째 서명을 추가하여 Emma 에 1 초 길이의 비디오와 함께 반환합니다. 현재 양측 모두 누구나 환전할 수 있는 완전히 서명된 약속거래가 있는데, 이 약속거래는 통로의 최신의 정확한 잔액을 대표한다. 이 시점에서 양 당사자는 이 거래를 네트워크에 브로드캐스트하지 않습니다.
다음 라운드에서 Emma 의 소프트웨어는 자금 거래에서 동일한 2-2 출력을 소비하는 또 다른 약속 거래 (약속 2 호) 를 만들고 서명합니다. 2 번 약속 거래는 0.2mby 의 출력을 Fabian 의 주소로 할당하고, 또 다른 출력은 35.98mby 로 0 을 찾아 Emma 로 반환하는 주소이다. 이 새로운 교환은 2 초 연속 동영상 콘텐츠를 지불하기 쉽다. Fabian 의 소프트웨어는 두 번째 약속 거래와 비디오의 또 다른 초 콘텐츠를 서명하고 반환합니다.
이러한 방법을 통해 Emma 의 소프트웨어는 스트리밍 비디오와 교환하기 위해 Fabian 의 서버에 약속 거래를 계속 보냅니다. Emma 가 더 많은 시간 (초) 의 비디오를 시청했기 때문에, 채널의 Fabian 에 속한 돈이 점점 더 쌓이고 있다. Emma 가 600 초 (10 분) 의 비디오를 보고 600 건의 약속 거래를 만들고 서명한다고 가정해 보겠습니다. 마지막 약속 거래 (# 600) 에는 채널 잔액을 두 부분으로 나누는 두 개의 출력이 있습니다. 각각 6 밀리비는 Fabian 에 속하고 30 밀리비는 Emma 에 속합니다.
마지막으로 Emma 는 "중지" 를 클릭하여 스트리밍 비디오를 중지합니다. Fabian 또는 Emma 는 이제 결제를 위해 최종 상태 거래를 보낼 수 있습니다. 마지막 거래는 결제 거래이며, 모든 Emma 비디오 시청 비용을 Fabian 에게 지불하고, Emma 에 자금 거래의 나머지 자금을 환불하는 것입니다.
다음 그림은 Emma 와 Fabian 사이의 채널과 채널 잔액을 갱신하는 약속 거래를 보여 줍니다.
마지막으로, 두 개의 거래만 블록에 기록됩니다. 즉, 채널을 설정하는 자금 거래와 두 참가자 사이에 최종 잔액을 올바르게 분배하는 결제 거래입니다.
본질적으로, 상태 채널은 체인 외 시스템을 통해 여러 단편적인 거래를 캐시하고, 시작과 끝의 두 개의 체인에서 비트코인 거래만 보존하며, 비트코인 네트워크의 트랜잭션 처리 병목 현상과 합의 보안 문제를 완벽하게 해결합니다.
우리가 방금 묘사한 통로는 쌍방이 합작할 때만, 어떠한 거래 실패나 부정행위 시도 없이 일한다. 이 통로를 파괴하는 몇 가지 상황을 살펴보고, 이런 문제를 해결하기 위해 무엇이 필요한지 살펴봅시다.
일단 자금 거래가 발생하면, Emma 는 Fabian 의 서명이 있어야만 자신에게 거스름돈을 받을 수 있다. 만약 Fabian 이 사라지면, Emma 의 자금은 2-2 에 잠겨 완전히 손실될 것이다. 이 통로가 구축되면 쌍방이 하나 이상의 약속거래에 공동으로 서명하기 전에 어느 한 쪽이 끊기면 자금 손실이 발생할 수 있다.
채널이 실행 중일 때 Emma 는 Fabian 이 서명한 모든 약속 거래를 활용하여 체인에 반송할 수 있습니다. 예를 들어, 그녀는 약속 거래 # 1, 1 초만 지불하는 동영상을 보낼 수 있는데, 왜 600 초의 비디오 비용을 지불해야 합니까? 채널 실패는 Emma 가 방송으로 그녀에게 유리한 이전의 약속을 통해 부정행위를 할 수 있기 때문이다.
이 두 가지 문제는 모두 시간 잠금으로 해결할 수 있다. 거래 수준 시간 잠금 (nLocktime) 사용 방법을 살펴보겠습니다.
Emma 가 제로 환불을 보증할 수 없는 한, 그녀는 위험을 무릅쓰고 2-2 서명을 할 수 없다. 이 문제를 해결하기 위해 Emma 는 자금과 환불 거래를 동시에 설립했다. 그녀는 자금 거래에 서명했지만 누구에게도 전달하지 않았다. Emma 는 환불 거래만 Fabian 에게 전달하고 서명을 받습니다.
환불 거래는 첫 번째 약속 거래로 시간 잠금으로 통로 생명의 상한선을 확립했다. 이 경우 Emma 는 nLocktime 을 30 일 또는 향후 4320 번째 청크로 설정할 수 있습니다. 모든 후속 약정 거래에는 환불 거래 전에 교환할 수 있도록 짧은 시간 잠금이 있어야 합니다.
현재 Emma 는 완전히 서명된 환불 거래를 보유하고 있으며, Fabian 이 사라지더라도 서명된 자금 거래를 자신있게 보낼 수 있습니다. 왜냐하면 그녀는 결국 시간이 만료된 후에 환불 거래를 교환할 수 있다는 것을 알고 있기 때문입니다.
통로의 생명에서 쌍방이 교환한 모든 약속 거래는 시간에 의해 미래의 시점으로 잠길 것이다. 그러나 새로 생성된 각 약속 거래에 대해서는 잠금 시간이 조금 짧아지므로 이전 약속에 의해 폐지되기 전에 최신 약속을 교환할 수 있습니다. NLocktime 으로 인해 어느 쪽이든 시간 잠금이 만료될 때까지 약속 거래를 성공적으로 전파할 수 없습니다. 만약 모든 것이 순조롭다면, 그들은 합작하여 결제 거래를 통해 합리적으로 통로를 폐쇄할 것이다. 이렇게 하면 중간 약속거래를 보낼 필요가 없다. 본질적으로, 약속 거래는 한쪽이 단절되고 다른 쪽은 어쩔 수 없이 통로를 닫을 때만 사용된다.
예를 들어, 약속 거래 #1 이 향후 4320 번째 블록에 잠겨 있는 경우 약속 거래 #2 는 향후 4319 번째 블록에 잠겨 있습니다. 약속 거래 # 600 은 약속 거래 #1 이 유효하기 전에 600 개의 블록을 교환할 수 있습니다.
다음 다이어그램은 후속 약속 거래 설정이 짧은 시간 잠금을 보여 주며 이전 약속이 유효하기 전에 비용이 들 수 있도록 합니다.
각 후속 약속 거래에는 이전 및 환불 거래 전에 방송할 수 있도록 짧은 시간 잠금이 있어야 합니다. 약속 거래를 조기에 방송할 수 있는 능력은 약속 거래가 자금 출력을 쓸 수 있도록 보장하고 다른 약속 거래가 환전 자금 수출을 통해 지출되는 것을 방지합니다. 비트코인 블록 체인 기술은 이중 지출 및 집행 시간 잠금 방지, 각 후속 약속 거래가 전임자 약속 거래를 무효화할 수 있도록 보장해 줍니다.
상태 채널은 시간 잠금을 사용하여 시간 차원이 있는 지능형 계약을 수행합니다. 이 예에서, 우리는 시간 차원이 어떻게 최근의 약속 거래가 이전 약속이 발효되기 전에 유효해질 수 있는지 확인합니다. 따라서 최근의 약속 거래는 전송, 소비 입력, 이전의 약속 거래를 무효로 만들 수 있다. 절대 시간 잠금 스마트 계약의 실행은 어느 한쪽이 부정행위를 하는 것을 막을 수 있다. 이 구현에는 트랜잭션 수준의 절대 시간 잠금 (nLocktime) 만 필요합니다.
다음으로 스크립트 레벨 시간 잠금 CHECKLOCKTIMEVERIFY 및 CHECKSEQU-ENCEVERIFY 를 사용하여 보다 유연하고 유용하며 복잡한 상태 채널을 구축하는 방법을 살펴보겠습니다.
2015 년 아르헨티나 개발자 팀이 시연한 비디오 스트리밍 앱 demo 에서 처음으로 단방향 결제 채널이 등장했다. 여전히 streamsium.io 에서 볼 수 있습니다.
시간잠금만이 이전의 약속 거래를 무효로 만드는 유일한 방법은 아니다. 다음 섹션에서는 취소 키를 사용하여 동일한 결과를 얻는 방법을 볼 수 있습니다. 시간 잠금은 유효하지만 두 가지 명백한 단점이 있습니다.
첫 번째 문제는 채널이 처음 열릴 때 최대 시간 잠금을 설정하여 채널의 수명을 제한한다는 것입니다. 설상가상으로, 그들은 채널 실현이 둘 사이에 균형을 이루도록 강요하고, 장기적으로 존재하는 채널을 허용하고, 채널이 미리 종료된 경우 참가자 중 한 명이 환불을 받기 위해 오랜 시간을 기다리도록 강요한다. 예를 들어, 채널을 30 일 동안 개방할 수 있도록 허용하면 환불 시간 잠금을 30 일로 설정하고 한 쪽이 즉시 사라지면 상대방은 30 일을 기다려야 환불할 수 있습니다. 채널 시효가 멀리 설정될수록 환불 시간이 길어집니다.
두 번째 문제는 각 후속 약정 거래가 시간 잠금을 줄여야 하기 때문에 양 당사자 간에 교환할 수 있는 약속 거래 수에 대한 명확한 제한이 있다는 것입니다. 예를 들어, 향후 4320 번째 블록에 시간 잠금이 설정된 30 일 채널은 4320 개의 중간 약정 거래만 수용할 수 있으며 그 이후에는 폐쇄해야 합니다. 약속 거래 시간 잠금 간격을 1 블록으로 설정하는 것은 위험합니다. 채널 개발자는 약속 거래 사이의 시간 잠금 간격을 1 블록으로 설정함으로써 채널 참가자에게 큰 부담을 안겨주므로 참가자는 항상 경계해야 하며, 온라인 상태를 유지하고 실시간으로 모니터링하며, 정확한 약속 거래를 전달할 준비가 되어 있어야 합니다.
이제 시간 잠금을 사용하여 이전 약속을 무효화하는 방법을 알고 있습니다. 협력 폐쇄 채널과 방송을 통한 거래 일방적 폐쇄 채널의 차이점을 확인할 수 있습니다. 모든 약속 거래는 시간이 잠겨 있기 때문에 방송 약속 거래는 항상 시간이 만료될 때까지 기다려야 한다. 그러나 양측이 최종 잔액에 합의하고 그들이 보유한 약속 거래가 최종적으로 이 균형을 이룰 수 있다는 것을 알고 있다면, 시간 잠금 없이 같은 잔액을 나타내는 결제 거래를 만들 수 있다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 시간명언)
협력 폐쇄에서 어느 쪽이든 가장 최근의 약속 거래를 인출하고 모든 면에서 똑같은 결제 거래를 만들 수 있습니다. 유일한 차이점은 결제 거래가 시간 잠금을 생략했다는 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 쌍방이 모두 이 결제거래에 서명할 수 있습니다. 부정행위를 통해 더 많은 잔액을 얻을 수 없다는 것을 알고 있기 때문입니다. 공동 서명과 결제 거래 발송을 통해 통로를 즉시 닫고 잔액을 환전할 수 있습니다. 최악의 경우, 당사자 중 한 명은 비열한 소인일 수도 있고, 협력을 거부하고, 상대방에게 최근 약속한 거래를 일방적으로 폐쇄하도록 강요할 수도 있다. 그러나 만약 그들이 그렇게 한다면, 그들은 또한 자금을 잠금 해제하기 위해 기다려야 한다.
이전 약속 상태를 처리하는 더 좋은 방법은 명시적으로 철회하는 것이다. 그러나 이것은 달성하기 쉽지 않다. 비트코인의 주요 특징 중 하나는 거래가 유효하면 항상 유효하며 만료되지 않는다는 것입니다. 거래를 취소하는 유일한 방법은 거래가 발굴되기 전에 다른 거래로 그 입력을 이중으로 지출하는 것이다. 이것이 바로 위에서 설명한 간단한 지불 채널 예제에서 시간 잠금을 사용하여 이전 약속이 발효되기 전에 최신 약속 거래가 지출될 수 있도록 하는 이유입니다. 그러나 약속을 시간순으로 정렬하면 많은 제한이 발생하여 지불 채널을 사용하기가 어려워졌다.
거래는 취소할 수 없지만 더 이상 사용할 수 없는 모습으로 구성할 수 있다. 우리가 그것을 실현하는 방법은 각 당사자에게 취소 키를 주어 상대방이 속이려고 하면 상대방을 처벌하는 데 사용할 수 있다. 이전에 약속한 거래를 취소할 수 있는 이 메커니즘은 먼저 번개 네트워크의 일부로 제기됐다.
취소 가능한 키를 설명하기 위해 Hitesh 와 Irene 이 운영하는 두 거래소 사이에 보다 복잡한 지불 채널을 구축할 예정입니다. Hitesh 와 Irene 은 각각 인도와 미국에서 비트코인 거래소를 운영한다. Hitesh 의 인도 거래소 고객은 종종 Irene 의 미국 거래소 고객에게 비트코인을 보내고, 그 반대의 경우도 마찬가지입니다. 현재 이러한 거래는 비트코인 블록체인에서 발생하지만, 이는 수속 비용을 지불하고 거래 확인을 위해 몇 개의 블록을 기다려야 한다는 것을 의미합니다. 거래소 간에 지불 채널을 설정하면 비용이 크게 절감되고 거래 프로세스가 빨라집니다.
Hitesh 와 Irene 은 합작으로 자금 거래를 구축함으로써 채널을 가동하고, 1 인당 5 개의 비트코인을 채널에 투입한다. 초기 잔액은 Hitesh 에 5 개의 비트코인이 있고, Irene 에도 5 개의 비트코인이 있다. 자금 거래는 단순 채널의 경우처럼 채널 상태를 2-2 다중 서명으로 잠급니다.
자금 거래에는 Hitesh (총 5 개의 비트코인 이상) 와 Irene (총 5 개의 비트코인 이상) 의 입력이 하나 이상 있을 수 있습니다. 입력은 거래 비용을 충당하기에 채널 용량을 약간 초과해야 합니다. 이 거래에는 총 10 개의 비트코인을 Hitesh 와 Irene 이 제어하는 2-2 다중 주소에 잠그는 출력이 있습니다. 그들의 입력이 기여해야 할 수치를 초과하면 자금 거래에도 하나 이상의 출력이 Hitesh 와 Irene 에게 0 을 반환할 수 있습니다. 쌍방이 제공하고 서명한 여러 입력으로 이뤄진 단일 거래다. 보내기 전에, 그것은 반드시 합작으로 구축되어야 하며, 각 당사자가 서명해야 한다.
이제 양측이 각 약속 거래에 서명하는 것과는 달리 (간단한 통로에서 이렇게 작동함) Hitesh 와 Irene 은 두 개의 비대칭 약속 거래를 만들었습니다.
Hitesh 에는 두 개의 출력이 있는 약속 거래가 있다. 첫 번째 출력은 Irene 의 비트코인 5 개를 즉시 지불한다. 두 번째 출력은 Hitesh 자체의 비트코인 5 개를 지불하지만, 1000 개 블록의 시간 잠금장치가 있다. 거래 결과는 다음과 같습니다.
Input: 2-of-2 funding output, signed by Irene output 0 < 5 bit coin >: < Irene’s public key > checksig output 1
Irene 은 두 개의 출력이 있는 서로 다른 약속 거래를 가지고 있다. 첫 번째 출력은 Hitesh 가 그에게 빚진 5 개의 비트코인을 지불했다. 두 번째 출력은 Irene 에게 지불된 5 개의 비트코인이지만, 역시 1000 개의 블록이 있는 시간잠금이다. 아이린이 보유한 약속 거래 (Irene sh 가 서명) 는 다음과 같습니다.
Input: 2-of-2 funding output, signed by hite sh output 0 < 5 bit coin >: < hite sh’s public key > checksig output
이렇게 되면 쌍방이 각각 약속한 거래가 있어 2-2 의 자금 수출을 할 수 있다. 그 약속 거래의 입력은 상대방이 서명한 것이다. 언제든지 약속 거래를 보유한 당사자는 거래에 서명 (2-2 서명 완료) 하고 방송할 수 있습니다. 그러나, 만약 그들이 약속 거래를 방송한다면, 약속 거래는 즉시 상대방에게 지불될 것이며, 그들 자신은 반드시 시간 잠금이 만료될 때까지 기다려야 한다. 이러한 출력 중 하나에 시간 잠금을 적용함으로써 모든 당사자가 일방적으로 약속 거래를 방송할 때 약간의 불이익을 받을 수 있습니다. 그러나 시간 지연만으로는 공정한 행동을 장려하기에 충분하지 않다.
다음 그림은 소유자의 지연 지급을 약속한 두 개의 비대칭 약정 거래를 보여 줍니다.
이제 이 방안의 마지막 요소인 취소 키를 소개하고 사기당한 쪽이 통로의 모든 잔액을 점유하여 사기꾼을 처벌할 수 있도록 허용한다.
각 약속 거래에는 "지연" 출력이 있습니다. 이 출력의 변환 스크립트를 통해 한 쪽은 1000 블록 후에 이를 교환할 수 있으며, 다른 쪽은 취소 키를 가지고 있을 경우 이를 교환할 수 있습니다. 그래서 Hitesh 가 Irene 을 위한 약속 거래에 서명할 때, 그는 두 번째 출력을 1000 원 이후 수출이 가능한 것으로 정의하거나 취소 키를 제시할 수 있는 모든 사람을 정의한다. Hitesh 는 이 거래를 구축하고 그가 비밀리에 보관하는 취소 키를 만들었다. 그가 새로운 채널 상태로 이전할 준비가 되어 있고 이 약속을 취소하고자 할 때, 그는 Irene 에게 취소 키를 공개할 것이다. 두 번째 출력 스크립트는 다음과 같습니다.
Irene 은 이 거래에 자신있게 서명할 수 있다. 왜냐하면 일단 발송되면 그녀가 빚진 빚을 즉시 지불할 것이기 때문이다. Hitesh 는 거래를 보유하고 있지만, 만약 그가 일방적으로 통로를 폐쇄하고 거래를 보내면, 그는 어쩔 수 없이 1000 개의 블록이 지불될 때까지 기다려야 한다는 것을 알고 있다.
채널이 다음 상태로 들어가면 Hitesh 는 Irene 이 다음 약속 거래에 서명하기로 동의하기 전에 이 약속 거래를 취소해야 합니다. 이를 위해 그가 해야 할 일은 취소 키를 Irene 에게 보내는 것이다. 일단 Irene 이 이 약속 거래에 대한 취소 키를 갖게 되면, 그녀는 자신있게 다음 약속에 서명할 수 있다. 그녀는 Hitesh 가 이전의 약속 거래를 발표하여 부정행위를 하려고 하면 취소 키를 사용하여 Hitesh 의 지연 출력을 교환할 수 있다는 것을 알고 있다. 만약 Hitesh 가 부정행위를 하면, Irene 은 모든 (쌍방) 출력을 얻을 수 있다.
해지 협정은 쌍방이다. 즉, 각 라운드에서 채널 상태가 더욱 발전함에 따라 양측은 새로운 약속을 교환하고, 이전 약속에 대한 취소 키를 교환하며, 서로의 약속 거래에 서명한다는 뜻이다. 그들이 새로운 상태를 받아들일 때, 그들은 상대방에게 필요한 취소 키를 주어 어떤 부정행위도 처벌하여 이전 상태를 더 이상 사용할 수 없게 한다.
어떻게 작동하는지 예를 들어 보겠습니다. Irene 의 고객 중 한 명은 Hitesh 의 고객에게 2 비트코인을 보내기를 원합니다. 채널을 통해 2 비트코인을 전송하려면 Hitesh 와 Irene 은 채널 상태를 업데이트하여 새로운 잔액을 반영해야 합니다. 그들은 새로운 상태 (상태 번호 2) 를 약속하고, 채널의 비트코인 10 개를 두 부분으로 나누고, 비트코인 7 개는 Hitesh 에 속하고, 비트코인 3 개는 Irene 에 속한다. 채널의 상태를 업데이트하기 위해 그들은 각각 새 채널 잔액을 반영하는 새로운 약속 거래를 만들 것이다.
앞서 언급한 바와 같이, 이러한 약속된 거래는 비대칭이므로, 각 당사자가 보유한 약속된 거래는 그들이 환전하려면 반드시 기다려야 한다. 새로운 약속 거래에 서명하기 전에 먼저 취소 키를 교환하여 이전 약속을 무효화하는 것이 중요합니다. 이 경우 Hitesh 의 이익은 채널의 실제 상태와 일치하므로 이전 상태를 방송할 이유가 없습니다. 그러나 Irene 의 경우, 상태 번호 1 에 남아 있는 잔액은 상태 번호 2 보다 더 높다. Irene 이 Hitesh 에게 이전의 약속 거래 (상태 번호 1) 취소 키를 주었을 때, 그녀는 실제로 채널 상태를 이전 상태로 롤백할 수 있는 능력을 폐지했다.
취소 키로 인해 Hitesh 는 이전에 약속한 거래의 두 가지 출력을 지체 없이 교환할 수 있습니다. 즉, Irene 이 이전 상태를 브로드캐스트하면 Hitesh 는 모든 출력을 차지할 권리를 행사할 수 있습니다.
중요한 것은 취소가 자동으로 발생하지 않는다는 것이다. Hitesh 는 Irene 의 부정행위를 처벌할 능력이 있지만 블록 체인에서 부정행위의 징후를 부지런히 관찰해야 한다. 만약 그가 이전에 약속한 거래 방송을 본다면, 그는 1000 개의 블록 시간을 가지고 행동을 취하고, 취소 키를 사용하여 Irene 의 사기 행위를 막고, 모든 잔액을 차지하는 것은 10 비트코인으로 처벌한다.
상대 시간 잠금 (CSV) 이 있는 비대칭 취소 가능 약속은 지불 채널을 실현하는 더 좋은 방법이자 블록 체인 기술의 중요한 혁신입니다. 이러한 구조를 통해 채널은 무기한으로 개방될 수 있으며 수십억 개의 중간 약정 거래를 할 수 있습니다. 번개 네트워크의 프로토타입 구현에서는 약속 상태가 48 비트 인덱스로 인식되어 단일 채널에서 281 조 (2.8×1014) 개 이상의 상태 전환이 가능합니다!
지불 채널은 가입자가 교환 가능한 만료 시간이 있는 키 (secret) 에 자금을 사용할 수 있도록 특수한 유형의 지능형 계약을 통해 추가로 확장할 수 있습니다. 이 기능을 해시 시간 잠금 계약 (HTLC) 이라고 하며 양방향 지불 채널과 라우팅 지불 채널에 사용됩니다.
먼저 HTLC 의 "해시" 부분을 설명하겠습니다. HTLC 를 만들려면 예상 수취인이 먼저 키 (secret)R 을 만듭니다. 그런 다음이 r 의 해시 값 h 를 계산하십시오.
이 단계는 출력의 잠금 스크립트에 포함할 수 있는 해시 값 H 를 생성합니다. 키를 아는 사람은 누구나 그것으로 출력을 교환할 수 있다. 키 r 은 해시 함수의 "이전 이미지" 라고도 합니다. 앞의 이미지는 해시 함수의 입력으로 사용되는 데이터입니다.
HTLC 의 두 번째 부분은 시간 잠금 모듈입니다. 만약 아무도 키를 가지고 환전하지 않는다면, HTLC 의 지급인은 일정 기간 후에’ 환불’ 을 받을 수 있다. 이는 절대 시간 잠금 (CHECKLOCKTIMEVERIFY) 을 사용하여 수행됩니다.
HTLC 를 구현하는 스크립트는 다음과 같습니다.
해시 값을 H 와 같게 할 수 있는 해당 키 R 을 아는 사람은 IF 문의 첫 번째 절을 실행하여 출력을 변환할 수 있습니다.
아무도 키를 가지고 교환하지 않으면 HTLC 에 명시된 바와 같이, 일정 수의 블록이 지나면 수취인은 IF 문의 두 번째 절을 사용하여 환불을 신청할 수 있습니다.
이것은 HTLC 의 기본 구현입니다. 키 R 을 소유한 사람은 누구나 이런 유형의 HTLC 를 교환할 수 있다. 스크립트를 미세 조정하여 HTLC 를 여러 가지 다른 형식으로 변경할 수 있습니다. 예를 들어, 첫 번째 절에 CHECKSIG 연산자와 공개 키를 추가하여 해시 값을 지정된 수취인으로 변환하는 것을 제한하고 키 R 을 알아야 합니다.
번개 네트워크는 양방향 지불 채널로 연결된 완벽한 라우팅 가능 네트워크입니다. 이러한 네트워크를 통해 모든 참가자는 브로커를 신뢰하지 않고도 한 채널에서 다른 채널로 지불을 전송할 수 있습니다. Joseph Poon 과 Thadeus Dryja 는 다른 많은 사람들이 제시하고 서술한 지불 채널 개념을 바탕으로 2015 년 2 월 처음으로 번개 네트워크를 제시했다.
번개 네트워크는 라우팅 결제 채널 네트워크의 특정 설계를 의미하며, 현재 최소 5 개의 서로 다른 오픈 소스 팀이 구현하고 있습니다. 이러한 독립 구현은 BOLT (번개 기술 기반) 논문 (http://bit.ly/2rBHeoL) 에 설명된 상호 운용성 표준 세트에 따라 조정됩니다.
번개 네트워크는 라우팅 가능한 지불 채널을 구현하는 가능한 방법입니다. Teechan 및 Tumblebit 과 같이 유사한 목표를 달성하기 위해 설계된 몇 가지 다른 디자인이 있습니다.
그것이 어떻게 작동하는지 봅시다.
이 예에서는 앨리스, 밥, 캐롤, 다이아나, 에릭이라는 다섯 명의 참가자가 있습니다. 이 다섯 명의 참가자들은 이미 서로 지불 통로를 개설했다. Alice 와 Bob 은 지불 채널이 있습니다. Bob 연결 Carol, Carol 연결 Diana, Diana 연결 Eric. 간단히 하기 위해 각 채널의 각 참가자가 2 개의 비트코인 자금을 투입하고 각 채널의 총 용량은 4 개의 비트코인이라고 가정합니다.
다음 그림은 Alice 에서 Eric 으로의 지급을 지원하기 위해 양방향 지불 채널을 통해 연결된 일련의 번개 네트워크를 보여줍니다. 번개 네트워크의 5 명의 참가자가 양방향 지불 채널을 통해 연결되어 Alice 에서 Eric 으로 지불 할 수 있음을 보여줍니다.
앨리스는 에릭에게 비트코인 1 개를 지불하고 싶어한다. 그러나 Alice 는 지불 채널을 통해 Eric 에 직접 연결되지 않았습니다. 지불 채널을 만들려면 자금 거래가 필요하며, 이 거래는 먼저 비트코인 블록체인에 제출해야 합니다. Alice 는 새로운 지불 채널을 열고 더 많은 자금을 지출하고 싶지 않다. 에릭에게 간접적으로 지불할 수 있는 방법이 있나요?
아래 그림은 각 참가자를 연결하는 지불 채널에서 일련의 HTLC 약속을 통해 Alice 에서 Eric 으로 지급을 라우팅하는 과정을 보여줍니다.
Alice 는 Bob 에 대한 유료 채널을 추적하고 지불 채널 간 경로를 찾는 번개 네트워크 (LN) 노드를 실행하고 있습니다. 또한 Eric 의 LN 노드는 인터넷을 통해 에릭의 LN 노드에 직접 연결할 수 있습니다. 에릭의 LN 노드는 난수 생성기를 사용하여 키 r 을 만듭니다. 에릭의 노드는 누구에게도 이 비밀을 누설하지 않았다. 반면 에릭의 노드는 키 R 에 해당하는 해시 H 를 계산하고 이 해시 값을 Alice 의 노드로 보냅니다 (1 단계).
이제 Alice 의 LN 노드는 Alice 의 LN 노드와 Eric 의 LN 노드 간 라우팅을 구축했습니다. 사용된 라우팅 알고리즘은 나중에 자세히 설명하지만, 이제 Alice 노드가 효율적인 경로를 찾을 수 있다고 가정합니다.
그런 다음 Alice 의 노드는 HTLC 를 구성하여 해시 H 에 지불하고 (현재 블록 +10) 환불을 위한 10 개의 블록 시간 잠금 장치 (1.003 비트코인 (2 단계) 를 제공합니다. 추가 0.003 비트코인은 이 지불 라우팅에 참여하는 중간 노드를 보상하는 데 사용됩니다. Alice 는 이 HTLC 를 Bob 에 제공하고, Bob 와의 채널 잔액에서 1.003 비트코인을 공제하여 HTLC 에 제출합니다. HTLC 는 "Bob 이 키를 알면 Alice 는 채널 잔액의 1.003 비트코인을 Bob 에 지급하거나 10 블록 시간이 넘으면 Alice 의 계정으로 환불한다" 는 의미를 가지고 있습니다. Alice 와 Bob 사이의 채널 잔액은 이제 약속된 거래로 표시됩니다. 그 중 3 가지 출력, 즉 Bob 의 2 비트코인 잔액, Alice 의 0.997 비트코인 잔액, Alice 의 HTLC 에서 약속한 1.003 비트코인입니다. 거래를 약속하고 Alice 의 잔액에서 HTLC 의 금액을 뺍니다.
Bob 은 현재 다음 10 블록 생산 시간 내에 키 R 을 받을 수 있다면 Alice 잠금 1.003 을 받을 수 있는 약속 거래를 하고 있습니다. 이러한 약속을 통해 Bob 의 노드는 Carol 과의 지불 채널에 HTLC 를 구축했습니다. Bob 의 HTLC 는 HTLC(1.002 비트코인에서 해시 H 및 9 블록 시간 잠금 장치) 를 제출하고 캐롤이 키 R 을 가지고 있다면 HTLC 를 교환할 수 있습니다 (단계 3). Bob 은 Carol 이 그의 HTLC 를 얻으려면 키 R 을 제시해야 한다는 것을 알고 있다. Bob 이 9 개 블록 시간 내에 R 을 가지고 있다면, 그는 그것을 사용하여 Alice 의 HTLC 를 환전할 수 있다. 자신의 통로 잔고 9 개 블록을 약속한 시간을 통해 그도 0.001 비트코인을 벌었다. Carol 이 그의 HTLC 를 얻을 수 없고 Alice 의 HTLC 를 얻을 수 없다면, 모든 것이 이전 채널 잔액으로 돌아가고 아무도 손해를 보지 않을 것이다. Bob 과 Carol 사이의 채널 잔액은 현재: 2 비트코인은 Carol 에게, 0.998 비트코인은 Bob 에게, 1.002 비트코인은 Bob 가 HTLC 에 약속했다.
Carol 은 이제 향후 9 블록 시간 내에 R 을 받으면 Bob 의 잠금 1.002 비트코인을 받을 수 있다는 약속을 하고 있습니다. 이제 그녀는 Diana 와의 통로에 HTLC 약속을 만들 수 있다. 그녀는 1.001 비트코인 HTLC(1.001 비트코인-해시 H 및 8 블록 시간 잠금 장치) 를 제출했고, 다이아나가 키 R 을 가지고 있으면 환전할 수 있다 (단계 4). 캐롤의 관점에서 볼 때, 만약 실현될 수 있다면, 그녀는 0.001 비트코인을 얻을 수 있고, 그렇지 않으면 아무것도 잃지 않을 것이다. 그녀는 Diana 의 HTLC 에 제출했는데, R 이 알려진 경우에만 가능합니다. 그때까지 그녀는 Bob 로부터 HTLC 를 받을 수 있습니다. Carol 과 Diana 사이의 채널 잔액은 현재 2 비트코인은 Diana, 0.999 비트코인은 Carol, 1.001 비트코인은 Carol 이 HTLC 에 약속했다.
마지막으로 Diana 는 에릭에게 Eric 1 개, 비트코인 1 개 ~ 해시 H 및 블록 시간 잠금 7 개 (5 단계) 를 제공할 수 있습니다. 다이아나와 에릭 사이의 채널 잔액은 현재 2 비트코인은 에릭에게, 1 비트코인은 다이아나에게, 1 비트코인은 다이아나가 Eric 에 약속했다.
그러나 이 노드에서 에릭은 Diana 에서 제공하는 HTLC 를 얻을 수 있는 키 R 을 가지고 있습니다. 그는 Diana 에 R 을 보내고 1 비트코인을 받아 채널 잔액에 추가했다 (6 단계). 채널 잔액은 현재 1 비트코인은 다이아나, 3 비트코인은 에릭입니다.
이제 Diana 는 키 R 을 가지고 있으므로 Carol 에서 HTLC 를 얻을 수 있습니다. Diana 는 Carol 에게 R 을 보내고 1.001 비트코인을 채널 잔액에 추가합니다 (7 단계). 현재 캐롤과 다이아나 사이의 채널 잔액은 0.999 비트코인은 캐롤에게, 3.001 비트코인은 다이아나에게 준다. Diana 는 이미 이 지불 경로 0.001 비트코인에’ 적립’ 했습니다.
키 R 을 사용하면 라우팅 반환을 통해 각 참가자가 완료되지 않은 HTLC 를 얻을 수 있습니다. Carol 은 Bob 으로부터 1.002 개의 비트코인을 받아서 채널 잔액을 0.998 비트코인을 Bob 에게, 3.002 비트코인을 캐롤에게 준다 (8 단계). 마지막으로 Bob 은 Alice 의 HTLC 를 가져옵니다 (9 단계). 그들의 채널 잔액은 0.997 비트코인은 Alice, 3.003 비트코인은 Bob 으로 업데이트되었습니다.
에릭에게 지불 채널을 열지 않은 상태에서 앨리스는 이미 에릭 1 비트코인에게 지급했다. 지불 경로 중의 중간측은 서로 믿을 필요가 없다. 채널 내에서 짧은 자금 약속을 하면 약간의 비용을 벌 수 있습니다. 유일한 위험은 채널이 닫히거나 라우팅에 실패하면 환불에 짧은 지연 시간이 있다는 것입니다.
LN 노드 간의 모든 통신은 지점 간 암호화됩니다. 또한 노드에는 식별자로 사용되고 서로를 인증하는 장기 공개 키가 있습니다 (http://bit.ly/2r5TACm).
노드가 다른 노드에 지불을 보내려고 할 때마다 먼저 용량이 충분한 지불 채널을 연결하여 네트워크를 통한 경로를 구축해야 합니다. 노드는 이미 열려 있는 채널, 채널당 얼마나 많은 용량, 얼마나 많은 라우팅 비용을 청구하는지 등 라우팅 정보를 홍보합니다. 라우팅 정보는 다양한 방식으로 공유할 수 있으며 번개 네트워크 기술이 발전함에 따라 다른 라우팅 프로토콜이 나타날 수 있습니다. 일부 번개 네트워크 구현은 IRC 프로토콜을 노드로 사용하여 라우팅 정보를 선언하는 편리한 메커니즘을 구현합니다. 라우팅 발견의 또 다른 구현 방법은 비트코인이 거래를 전파하는 방법과 유사한 "플러드" 모델을 사용하여 채널 공고를 다른 노드에 전달하는 P2P 모델을 사용하는 것입니다. 향후 계획에는 로컬 노드’ 이웃’ 과 긴 거리의 신호 노드가 있는 혼합 라우팅 모델인 Flare( http://bit.ly/2r5TACm) 라는 제안이 포함될 예정입니다.
앞의 예에서 Eric 의 노드는 이러한 라우팅 검색 메커니즘 중 하나를 사용하여 해당 노드를 에릭에 연결하는 노드에 대한 하나 이상의 경로를 찾습니다. Alice 의 노드가 경로를 구축하면 네트워크를 통해 경로를 초기화하고 일련의 암호화 및 중첩 명령을 전파하여 인접한 각 지불 채널을 연결합니다.
중요한 것은 이 경로가 Alice 의 노드에서만 알 수 있다는 것이다. 지불 경로의 다른 모든 참가자는 인접한 노드만 볼 수 있습니다. Carol 의 관점에서 볼 때, 이것은 Bob 에서 Diana 로의 지불처럼 보인다. 캐롤은 밥이 실제로 릴레이 포워딩 Alice 의 송금이라는 것을 몰랐다. 그녀는 Diana 가 Eric 중계로 지불을 전달할 것이라는 것도 몰랐다.
이는 번개 네트워크의 중요한 특징입니다. 결제의 프라이버시를 보장하고 모니터링, 검토 및 블랙리스트 메커니즘을 적용하기가 어렵기 때문입니다. 하지만 Alice 는 중간 노드에 아무것도 공개하지 않고 어떻게 이런 지급 경로를 만들 수 있습니까?
번개 네트워크는 Sphinx( http://bit.ly/2q6ZDrP) 체계를 기반으로 한 양파 라우팅 프로토콜을 구현합니다. 이 라우팅 프로토콜은 지불 발신자가 번개 네트워크를 통해 통신 경로를 구축하고 통신할 수 있도록 하여 다음과 같은 이점을 제공합니다.
중간 노드는 일부 라우팅 정보를 확인 및 해독하고 다음 홉을 찾을 수 있습니다.
이전 홉 및 다음 홉을 제외하고 경로에서 다른 노드를 가져올 수 없습니다.
그들은 지불 경로의 길이나 그 경로에서의 자신의 위치를 인식하지 못한다.
경로의 각 부분은 암호화되어 네트워크 수준 공격자가 경로의 다른 부분에서 패킷을 서로 연결할 수 없습니다.
Tor (인터넷상의 양파 라우팅 익명 프로토콜) 과는 달리 모니터링할 수 있는’ 종료 노드’ 가 없습니다. 지불은 비트코인 블록 체인으로 전송할 필요가 없으며 노드는 채널 잔액만 업데이트합니다.
이 양파 라우팅 프로토콜을 사용하여 Alice 는 경로의 각 노드 정보를 암호화 계층에 캡슐화하여 끝에서 거꾸로 계산합니다. 그녀는 에릭의 공개 키로 에릭의 메시지를 암호화했다. 이 메시지는 Diana 로 암호화된 메시지에 캡슐화되어 에릭을 다음 수신자로 식별합니다. Diana 에게 보낸 메시지는 Carol 의 공개 키로 암호화된 메시지에 캡슐화되어 Diana 를 다음 수신자로 인식합니다. Carol 에 대한 메시지는 Bob 의 키로 암호화됩니다. 그 결과, Alice 는 암호화된 다층’ 양파’ 메시지를 구축했다. 그녀는 Bob 에게 보냈고, 그는 단지 외층을 해독하고 풀 수 밖에 없었다. 안에서 밥은 캐롤에게 보낸 메시지를 발견했는데, 그는 캐롤에게 전달할 수는 있지만 스스로 해독할 수는 없었다. 경로에 따라 메시지가 전달, 암호 해독, 전달 등이 에릭에게 전달됩니다. 각 참가자는 해당 점프의 이전 노드와 다음 노드만 알고 있습니다.
경로의 각 노드에는 HTLC 가 다음 홉으로 확장해야 하는 정보, HTLC 에서 전송할 수 있는 수, 포함할 비용 및 CLTV 잠금 만료 시간 (블록) 이 포함되어 있습니다. 라우팅 정보가 전파됨에 따라 노드는 HTLC 약속을 다음 홉으로 전달합니다.
이 시점에서 노드가 경로의 길이와 경로에서의 위치를 모르는 방법을 알고 싶을 수 있습니다. 결국, 그들은 메시지를 받아 다음 홉으로 전달한다. 경로를 단축하지 않거나 경로 길이와 위치를 추론할 수 있습니까? 이를 방지하기 위해 경로는 항상 20 홉에 고정되고 임의 데이터로 채워집니다. 각 노드는 다음 홉과 전달할 고정 길이의 암호화된 메시지를 볼 수 있습니다. 최종 수신자만 다음 점프가 없는 것을 볼 수 있다. 다른 사람들에게는 항상 20 여 개의 점프가 가는 것 같다.
번개 네트워크는 레이어 2 라우팅 기술입니다. 다중 서명 트랜잭션, 시간 잠금 및 기본 인텔리전트 계약과 같은 몇 가지 기본 기능을 지원하는 모든 블록 체인에 적용할 수 있습니다.
번개인터넷이 비트코인 네트워크를 기반으로 구축되면 비트코인 네트워크는 무중개기구의 불신 조작 원칙을 희생하지 않고 거래 용량, 프라이버시, 세분성 및 속도를 크게 높인다.
프라이버시. 번개인터넷을 통한 지불은 비트코인 블록체인을 통한 지불보다 더 사적입니다. 공개되지 않기 때문입니다. 라우팅의 참가자는 채널을 통해 전달되는 지불을 볼 수 있지만 보낸 사람 또는 수신자를 알지 못합니다.
유동성. 번개 네트워크는 비트코인에 감시와 블랙리스트를 적용하는 것을 더욱 어렵게 만들어 화폐의 유동성을 높인다.
속도. 번개 네트워크를 사용하는 비트코인 거래는 분 대신 밀리초 단위로 진행됩니다. HTLC 는 거래를 블록에 제출하지 않고 결제되기 때문입니다.
입도. 번개 네트워크는 적어도 비트코인의 먼지 (dust) 제한만큼 작거나 작게 지불할 수 있습니다. 일부 제안은 하위사토시 인크레멘츠 (subsatoshi increments) 를 허용한다.
용량. 번개 네트워크는 비트코인 시스템의 용량을 몇 단계 높였다. 초당 번개 네트워크를 통해 라우팅할 수 있는 유료 수량은 노드당 용량과 속도에 따라 달라지기 때문에 구체적인 제한이 없습니다.
신뢰할 필요가 없습니다. 번개 네트워크를 사용하면 피어 노드가 상호 신뢰 없이 비트코인 거래를 사용할 수 있습니다. 따라서 번개 네트워크는 비트코인 시스템의 원리를 유지하면서 운영 매개변수를 크게 확대했습니다.
물론 앞서 언급했듯이 번개 네트워크 프로토콜이 라우팅 결제 채널을 구현하는 유일한 방법은 아닙니다. 제안 된 다른 시스템에는 Tumblebit 과 Teechan 이 포함됩니다. 여러 팀이 이미 LN 구현을 개발하기 위해 경쟁하고 있으며, BOLT 라는 공통 상호 작용 표준을 향해 노력하고 있습니다.
비트코인 블록 체인을 신뢰 플랫폼으로 사용할 수 있는 몇 가지 새로운 어플리케이션만 살펴보았습니다. 이러한 어플리케이션은 비트코인의 범위를 결제 및 금융 수단을 넘어 많은 신뢰가 중요한 어플리케이션으로 확대했습니다. 중립적인 신뢰 기반을 제거함으로써 다양한 업종이 비트코인 블록 체인 플랫폼에 더 혁신적인 응용을 할 것이다.