대중 과학: Ethereum 2.0 비콘 체인의 상태 전환
편집자 주: 이 기사의 출처는이더리움 애호가(ID: ethfans)편집자 주: 이 기사의 출처는
이더리움 애호가(ID: ethfans)
, 저자: Sly Gryphon, 번역자 및 교정자: IAN LIU & A Jian, 승인을 받아 Odaily에서 복제.
비콘 체인은 블록과 진행 상태로 구성되며, 블록은 생성, 서명, 네트워크 전반에 전파된 다음 상태를 업데이트하는 데 사용됩니다. 다음 그림은 주요 상호 관계를 보여줍니다.
이미지 설명
- 실선은 집계 관계를 나타내고 점선은 종속 관계를 나타냅니다. 즉, 화살표를 방출하는 부분은 화살표가 가리키는 부분에 따라 집계/종속됩니다.
이 다이어그램은 Ethereum 2.0 사양의 버전 0.10.1을 기반으로 합니다. 새로 출시된 0.11.0 버전과 비교하여 위 그림에서 기술한 내용은 도메인을 계산하는 부분에서 약간 다르지만 전체적인 관계는 이전 버전과 일치합니다.
새 블록 생성
블록을 생성하려면 현재 블록체인의 맨 위에서 시작합니다.
현재 짧은 포크 체인이 있는 경우(예: 블록 전파 속도가 너무 느려 타임 슬롯을 건너뛰어 다른 검증자가 얻은 최신 블록에 차이가 있음), 포크 선택 알고리즘은 " 가장 적합한"(획득한 검증자의 증인 메시지의 가중치가 클수록 더 "적합한") 블록체인 헤드.
또한 일부 슬롯을 건너뛰어도(블록이 생성되지 않음) 상태는 여전히 진행 중입니다(아무것도 하지 않음).
BeaconBlockBody("비콘 체인 블록 본체")에는 수행해야 하는 모든 작업(채권 예금, 증명 메시지, 유효성 검사기 종료 등)이 포함됩니다. 이러한 작업은 상태를 변경하고 새로운 BeaconState("비콘 체인 상태")를 생성하는 데 사용됩니다.
시간 슬롯, 상위 블록 루트 및 작업의 루트 해시(본문 루트, 블록 본문 루트)는 BeaconBlockHeader("비콘 체인 블록 헤더")의 구성 요소로 상태에 추가됩니다. BeaconBlockHeader의 구성 요소 중 하나의 상태 루트는 0(0x000...)입니다. 상태는 자체 해시를 재귀적으로 포함할 수 없기 때문입니다. 그렇지 않으면 무한 루프가 발생합니다.
최종 상태의 루트 해시(위의 0x000... 값을 갖는 상태)를 계산하여 블록에 추가한 다음 블록 해시는 블록 루트("블록 루트")를 가져와서 도메인의 도메인과 합칩니다. 체인이 네트워크에 퍼집니다. 도메인의 의미는 블록이 충돌로 인해 다른 메인넷이나 테스트넷으로 전파되는 것을 방지하는 것입니다.
실행 상태 전환
노드가 SignedBeaconBlock("서명된 비콘 체인 블록")을 수신한 후 서명의 유효성 확인 및 상위 블록에 해당하는 상태가 있는지 여부를 포함하여 몇 가지 검증을 수행해야 합니다(부모 블록은 부모 뿌리 "부모 블록") 뿌리 괴경” 지적).
BeaconBlockHeader*
상태 슬롯을 블록의 슬롯(건너뛴 슬롯일 수 있음)으로 진행한 다음 BeaconBlockBody에 포함된 작업(예: 예치금, 증인 메시지, 유효성 검사기 종료 등)을 수행하여 상태를 업데이트할 수 있습니다.
스킵 타임 슬롯이 발생하면 새로운 내부 상태도 생성되고 현재 상태가 다음 타임 슬롯으로 진행된다는 점에 유의해야 합니다.차이점은 다른 부수적인 실행 동작이 없다는 것입니다.
결과 상태는 블록 생산자가 얻은 상태와 동일해야 하므로 새로운 BeaconState(0x000... 포함)의 해시 값을 계산하여 수신된 블록에 기록된 상태 루트로 확인할 수 있습니다.
비콘 체인 상태에는 블록의 네 가지 기본 구성 요소 중 세 가지인 시간 슬롯, 상위 블록의 루트 해시 및 BeaconBlockBody의 루트 해시(즉, 수행할 작업)가 포함됩니다.
내부 상태를 계산할 때 마지막 블록 시간 슬롯은 최신 상태 시간 슬롯과 달라야 합니다. 건너뛴 시간 슬롯이 있으면 최신 블록 시간 슬롯과 상태 시간 슬롯이 일치하지 않기 때문입니다. 예를 들어 슬롯 7을 건너뛰면 슬롯 6이 최신 블록으로 유지되고 부모 블록 루트와 블록 본문 루트 해시는 여전히 슬롯 6의 블록을 가리킵니다.
이러한 요소는 BeaconBlockHeader와 동일한 구조를 사용하여 클러스터로 작동하지만 상태가 자체 해시를 재귀적으로 포함할 수 없기 때문에 사용되는 블록 루트 상태는 항상 0(0x000...)입니다.
이것의 장점은 블록 루트의 상태를 쉽게 계산할 수 있다는 것입니다. 상태의 루트 해시를 계산한 다음 블록 헤더의 복사본을 만들고 올바른 루트 상태를 삽입하고 마지막으로 전체 블록의 해시를 계산함으로써 헤더(이 값은 수신된 블록의 해시와 동일합니다).
연결된 블록은 신뢰를 높입니다.
블록체인의 중요한 특징은 개인(상대방 또는 제3자) 간의 원래 신뢰를 체계적 신뢰(대부분의 프로세서가 알고리즘을 통해 도달)로 대체한다는 것입니다.
체계적 신뢰는 다음과 같은 특성으로 설명할 수 있습니다.
많은 수의 프로세서(예: 퍼블릭 체인) - 이러한 프로세서가 분산될수록 더 신뢰할 수 있습니다.
클라이언트의 다양성(예: 개발 팀) - 선택할 클라이언트가 여러 개인 경우 알고리즘의 중앙 집중식 제어를 더 많이 피할 수 있습니다.
오픈 소스 - 알고리즘의 공개 검사와 포크(대부분이 시스템의 방향을 변경하려는 경우)를 모두 허용합니다.
블록을 함께 연결하면 시스템에 대한 신뢰도 높아집니다. 블록이 일찍 생성될수록 더 많은 가중치를 갖기 때문입니다. 일반적인 분산 원장/분산 데이터베이스에서는 체계적인 신뢰가 필요하지 않으므로 이러한 링크가 필요하지 않습니다.
최신 블록에 대한 51% 공격만 성공할 수 있지만 100 타임슬롯 전에 블록을 변경하려는 경우 공격자는 해당 100 타임슬롯 동안 압도적 다수를 제어하는 프로세서가 있어야 합니다(매우 어려움).


