위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
Vitalik Buterin: Ethereum 상태 비저장 클라이언트 솔루션을 어떻게 개선할 수 있습니까?
Winkrypto
特邀专栏作者
2021-07-01 09:51
이 기사는 약 1908자로, 전체를 읽는 데 약 3분이 소요됩니다
각 주소에 32바이트 "epoch 접두사"를 추가하면 시간이 지남에 따라 주소 공간이 기하급수적으로 압축되는 문제를 해결할 수 있습니다.

원래 제목: "또 다른 국가 친화적인 바운드 주소 체계"
작성자: Vitalik Buterin, Ethereum 공동 설립자
보조 제목

검토: 상태 크기 관리 기술

이더리움의 상태 용량이 끝없이 확장되는 것을 방지하려면 네트워크에 참여하는 노드가 더 이상 이전 상태를 저장할 필요가 없도록 이전 상태를 "비활성화"하는 방법을 사용해야 합니다. 대부분의 클라이언트가 상태 비저장 상태가 되더라도 결국에는 네트워크가 모든 상태를 항상 사용할 수 있다고 보장할 수 없는 지점까지 시스템이 확장될 것이라고 합리적으로 예측할 수 있습니다. 이전 상태를 비활성화하는 두 가지 방법이 있습니다.

  • 직접 삭제한 다음 다른 Merkle 트리로 이동하여 상태 개체에 관심이 있는 사람이 해당 Merkle 분기를 가져와 향후 어느 시점에서 상태를 활성화하는 데 사용할 수 있습니다.

  • 개체는 트리 구조 밖으로 이동되지 않고 대신 트리의 해당 지점에서 "비활성화됨"으로 표시되어 노드가 저장하지 않습니다(프로토콜에서 저장하지 않아도 됨). 비활성화된 개체는 상태에 액세스하기 위해 Merkle 증명(예: 증인 데이터)을 제공하는 트랜잭션을 전송하여 다시 액세스할 수 있습니다.

접근 방식 (1)은 "고전적인 스토리지 임대 체계"에 해당하고 접근 방식 (2)는 기존 상태를 잊을 수 있는 모델인 전통적인 "무상태 클라이언트"의 가장 단순한 확장에 해당합니다. 이 두 가지 접근 방식을 통해 특정 상태 개체에 관심이 있는 개인은 Merkle 분기를 추적할 수 있으므로 비활성화된 상태 개체를 활성화하는 데 사용할 수 있습니다. 그러나 이 두 가지 접근 방식에는 분명한 문제가 있습니다.

방법 (1)은 만료된 컨트랙트와 동일한 주소에 컨트랙트를 다시 생성해야 하는 경우가 있습니다. 즉, 주소 A에서 계약이 생성된 후 만료되면 주소 A에서 계약을 생성한 트랜잭션이 다시 실행되어 주소 A에 새 개체가 생성되어 원래 개체 활성화에 영향을 미칩니다. 또 다른 상황은 객체가 주소 A에서 생성된 다음 비활성화되고 활성화되고 수정되고(예: 계약의 자금을 다른 계정으로 전송) 다시 비활성화한 다음 첫 번째 비활성화를 사용하는 경우입니다. Merkle 분기가 활성화됩니다. . 이것은 예약 규칙을 위반하고 발행에 사용될 수 있습니다; 계약이 활성화를 시도하는 다른 특정 상태에 의해 활성화되지 않았음을 증명하기 위해 추가 Merkle 증명을 추가해야 합니다.

보조 제목

제안

위의 문제를 해결할 수 있는 방법(2)의 변형을 제안한다. 방법 (2)의 많은 제안된 구현에서 제시된 것처럼 계정에는 "활성" 및 "비활성"의 두 가지 상태가 있으며 비활성 계정은 1년 이상 액세스하지 않은 계정입니다. 비활성화된 계정에 액세스하려면 증인 데이터를 제공해야 합니다. 비활성화된 계정에 액세스하면 계정이 자동으로 비활성화됩니다(아무 계정이나 터치하면 1년 비활성화 기간 계산이 재설정됨). 수정 사항은 다음과 같습니다.

각 주소에 32바이트 "epoch 접두사"(정수로 해석됨)를 추가합니다. 예를 들어 에포크 접두사가 9인 주소는 다음과 같습니다.

Merkle 경로는 현재 사용되는 merkle_path_key = hash(address) 대신 해시(따라서 merkle_path_key = address[:4] + hash(address[4:]))가 아닌 epoch의 접두사에 직접 의존합니다. 이렇게 하면 "미사용"이 보장됩니다. " 주소 공간이 연속적입니다.

에포크 접두사가 블록체인이 실행된 연수보다 작거나 같지 않으면 주소를 사용할 수 없습니다.

epoch 접두사를 인수로 사용하고 해당 epoch 접두사가 있는 주소에서 계약을 생성하는 CREATE3 opcode가 추가되었습니다.

여전히 접근 가능한 최신 epoch 접두사가 있는 전체 상태가 분명히 있기 때문에 사용자와 계약은 항상 가능한 가장 최근의 epoch 접두사를 사용하여 계정을 생성하는 것이 좋습니다. 또한 "반사실적 주소"(즉, 계약 코드가 릴리스되기 전에 사용자가 온체인[예: ETH 또는 ERC20 토큰 전송] 또는 오프체인[채널에서 상호작용]과 상호 작용하는 주소)을 보존하기 위해 여전히 이전 epoch 접두사로 계약을 생성할 수 있습니다. 그러나 반사실 주소를 생성하려는 사용자의 경우 오랫동안 저장하지 않으면 계정에 대한 이전 상태의 포크를 저장할 책임이 있습니다.

수년간의 운영 후에는 활성 상태가 두 부분으로 구성될 것으로 예상됩니다.

소스 링크:

소스 링크:ethresear.ch

Vitalik
개발자
Odaily 공식 커뮤니티에 가입하세요