2021년 4월 29일, 파일코인 네트워크는 버전 12로 업데이트되었다. 이 업그레이드는 파일코인 프로토콜의 규칙을 지정하는 기본 제공 액터 집한인 스펙 액터(specs-actors) 구현 버전 4를 도입했다. 새로운 버전의 스펙 액터(specs-actors) 는 더 성능이 뛰어나도록 설계되어 블록 검증 시간을 단축시켰다. 파일코인 핵심 개발자 로투스, 비너스, 그리고 포레스트가 모여 단지 몇 주 만에 해당 업그레이드를 구현하고 제공했으며 노드 운영자는 전체 네트워크에 이러한 성능 향상을 신속하게 제공하기 위해 대응하는 업그레이드 시간을 시연했다.
동기
모든 블록체인 프로젝트는 블록을 검증하는 시간이 블록이 생산되는 빈도보다 적은지 확인하는 것이 중요하다. 파일코인 네트워크에서 매 30초마다 블록이 생성되며 블록 유효성 검사 시간이 30초 미만이 걸리는 것이 중요하다. 블록 검증은 노드의 하드웨어 사양, 체인 데이터베이스의 크기, 노드에서 실행 중인 다른 프로세스 등 다양한 요소에 의해 변화된다.
v12업그레이드 이전, 중간 품질 노드는 블록 검증 시간을 30초 미만으로 유지하며 원활하게 작동되었다. 하지만, 느린 노드와 전체 체인 히스토리를 보존하는 노드(큰 데이터베이스 존재)는 유효성 검증 시간이 더 길어 속도가 느려지면 동기화되지 않을 위험이 있다. 비록 빠른 하드웨어와 작은 체인 데이터베이스를 가진 다수의 마이너들은 영향받지 않지만, 교환 및 보관 노드를 포함한 생태계에 중요한 일부 구성원은 속도 저하 및 동기화 문제를 겪기 시작하며 전반적으로 네트워크 상태에 부정적으로 영향을 미치기 시작했다.
느린 동기화 현상의 원인은 새로 생성된 마이너들를 처리하는 액터 코드의 비효율성 때문이다. 지난 몇 달 동안, 네트워크는 체인에 마이너를 생성하는 스팸 메시지를 경험하여 빈 마이너 항목을 과도하게 생성했다. 이는 빈 마이너를 처리하는데 소요되는 시간을 줄이며 블록 유효성 검사 시간을 크게 단축할 수 있어 상당한 성능 향상을 위한 쉬운 기회를 제공한다. v12 네트워크 업그레이드에서 이러한 개선 사항을 적용함으로써 향후 크레이트 마이너(CreateMiner) 스팸이 더 느린 노드에 대한 공격 벡터로 전환되는 것을 사전 예방한다.
성능 향상
버전 12에 도입된 성능 향상을 이해하기 위해 우리는 시스템의 세부사항을 이해해야한다. 주소 f03에 있는 파일코인 cron 액터는 매 에폭마다 네트워크 액터에 의해 실행된다. 파일코인 네트워크를 원활하고 정확하게 실행하는 상태 변환을 실행하기 위해 존재한다. Cron 액터 프로세싱 마이너는 매 60 에폭마다(30분) 마이너 액터를 처리하며 마이너가 검사 할 섹터의 일부에 대한 스토리지를 올바르게 입증했는지 확인한다. Cron 액터의 처리를 통해 파일코인 프로토콜이 중앙 보증을 보장 할 수 있다. 네트워크 전체가 24시간마다 파일코인의 전체 스토리지를 확인하고 손실되거나 손상된 데이터를 자동으로 감지하고 처벌한다.
네트워크 버전 12까지 cron 액터는 매번 한 마이너 액터마다 이 처리를 수행한다. 파일코인 버전 12 마이너 액터가 필요할 때만 이와 같은 처리를 할 것이다. 마이너 액터는 스토리지를 증명하는 중이라면 크론 작업이 필요하다. 특히, 이러한 기준 중 하나는 60에폭마다 크론 작업이 필요하다. 1) 활성 프리 커밋 2) 활성 섹터 3) 베스팅 테이블에 고정 된 베스팅 보상이 있다. 마이너 행위자가 이 기준에 적합하지 않으면 크론 작업이 불필요하고 안전하게 뛰어넘을 수 있다. 또한 새로 생성된 마이너는 크론 작업을 즉시 요청하지 않고 처음 네트워크에 스토리지를 약속하기 시작할 때만 하나를 얻는다.
이 최적화가 시작된 후, 파일코인 네트워크는 60에폭마다 약 375,000명의 마이너를 처리하던 것에서 2,000을 조금 넘게 처리했다. 그 결과 평균 블록 동기화 시간이 약 2배 빠르며 일일 상태 스냅 샷 크기가 20GB 이상 감소하여 거의 2배 향상되었다. 노드 운영자는 평균 및 최대 블록 동기화 시간이 크게 감소하고 대규모 아카이브 노드가 동기화되지 않는 인스턴스를 거의 완전히 제거했다.
v12 업그레이드 후 동기화 시간 단축:
v12 업그레이드 후 동기화되지 않는 인스턴스 검소(에폭 단위로 측정):
업그레이드 롤아웃(Rolling out)
네트워크 v12 업그레이드는 로투스 v1.8.0 및 비너스 v0.9.5에 출시되었다. 로투스팀은 네트워크 업그레이드를 약 48시간의 짧은 시간내에 출시했으며, 이는 모든 노드 운양자가 업그레이드해야 하는 귀한 역할을 한다. 파일코인 커뮤니티가 추후 짧은 기간내에 보안 문제들을 해결해야 되기 때문에 빠르게 성능을 향상시키는 것은 중요하다. 이러한 상황을 대비하기 위해 네트워크는 메인넷 출시 직전인 2020년 9월 스페이스 레이스 대회에서 다양한 "전쟁 게임" 시나리오를 거쳤다.
커뮤니티는 48시간 동안 어려움 없이 v12로 업그레이드하여 향후 필요할 경우 빠른 업그레이드를 채택 할 수 있는 능력을 지속적으로 입증했다. 이와 같은 빠른 처리는 파일코인 프로토콜을 구현하는 팀과 스토리지 마이너, 스토리지 클라이언트 및 거래소를 포함한 다양한 노드 운영자간의 효율적인 커뮤니케이션 채널에 의존한다. 모든 사람을 계속 유지하기 위해 파일코인 커큐니티 엔지니어는 업그레이드 하이라이트, 업그레이드 시기 및 커뮤니티 포럼에서 구현 출시 타임라인에 대한 링크를 포함한 업그레이드 세부 정보를 발표하고 구독 가능한 알림으로 파일코인 네트워크 상태 페이지를 업데이트 했다. 이 후, 개발팀은 모든 사람이 포럼, 슬랙(Slack) 채널 및 기타를 포함한 여러 지원 채널에서 적시에 원활하게 노드를 지원할 수 있도록 제공한다.
짧은 시간내에 이런 변화를 도입하는 것은 엄격한 테스트와 출시 절차가 요구된다. 로투스팀은 지난 몇달 동안 개발한 새로운 출시 체크리스트를 이용해 이를 수행했다. 추가적으로, 커뮤니티 피드팩을 통해 로투스팀은 테스트하지 않은 추가적인 기능들을 필수 출시일 전에 도입하지 않도록 조심했다. 대신 네트워크 업그레이드 변경 사항은 가장 최근의 안정적이고 잘 테스트된 로투스 버전인 로투스 v16.0 위에 제공되었다. 최신 기능을 원하는 모험적인 사용자를 위해 새로운 기능과 함께 네트워크 업그레이드 변경 사항을 통합한 출시 후보인 로투스 v1.9.0-rc1이 제공되었다.
보다 다양한 정보 및 방송관련 소식은
공식 SNS채널을 통해 확인 가능합니다.