새 노드가 Spacemesh 네트워크에 합류하면 먼저 나머지 피어와 속도를 맞춰야 합니다. 이 프로세스를 "동기화"라고 하며 전체 노드 또는 스메싱 노드를 실행하기 위한 전제 조건입니다. 역사적으로, 동기화 프로세스에 시간이 많이 걸리기 때문에 스메셔가 노드를 성공적으로 동기화하는 것은 어려웠습니다. 기본적으로 동기화에는 모든 블록, 트랜잭션, ATX 및 기타 데이터를 다운로드하고 독립적으로 확인하며 현재 상태를 처음부터 재구성하는 작업이 포함됩니다. 당연히 일반 스메셔에게는 많은 시간이 걸렸습니다. 따라서 새로운 노드를 동기화하는 것이 점점 어려워지는 것에 대응하여 동기화 프로세스 속도를 높일 수 있는 방법을 준비했습니다. 퀵싱크를 소개합니다.
Quicksync를 사용하면 위에서 설명한 대로 모든 동기화 작업을 수행하고 처음부터 네트워크 상태를 계산하는 대신 Spacemesh 개발 팀이나 다른 노드와 같은 신뢰할 수 있는 피어에서 현재 상태를 다운로드하면 됩니다. 이는 "신뢰하지 말고 확인하세요"라는 web3 철학에 어긋나는 것이지만, 동기화에 문제가 발생할 확률이 높다는 점을 고려하면 일부 스메셔가 관심을 가질 수 있는 선택일 수 있다고 믿습니다. 게다가 스메셔가 다운로드된 후 백그라운드에서 이 상태를 확인하는 것을 방해하는 것은 없습니다.
다운로드되는 상태(아카이브라고도 함)는 state.sql 파일 형식이며 Smapp을 사용하여 자동으로 다운로드하거나 quicksync-rs
유틸리티를 사용하여 수동으로 다운로드할 수 있습니다.
최신 상태를 다운로드하기 위해 quicksync-rs
사용하는 방법은 다음과 같습니다. 최신 버전의 Smapp을 사용하는 경우 자동으로 QuickSync를 사용하여 최신 상태를 가져오도록 제안합니다.
quicksync-windows-vX.XXzip
릴리스를 다운로드하세요.quicksync.exe
추출합니다.quicksync.exe
spacemesh
폴더로 이동합니다. 기본적으로 이 폴더는 C:Users{USERNAME}spacemesh
에 있습니다.spacemesh
디렉터리 내부에 있고 기본적으로 node-data
라는 이름)에 state.sql
파일이 있으면 삭제하세요. 그렇지 않으면 5단계로 진행하세요.quicksync.exe
파일이 있는 spacemesh
디렉터리에서 Windows Powershell 터미널을 엽니다. "Shift" 키를 누른 채 마우스 오른쪽 버튼을 클릭하고 "여기에서 Powershell 열기" 옵션을 선택하면 됩니다..quicksync.exe --help
입력하고 Enter 키를 누릅니다. 사용 가능한 옵션이 표시됩니다..quicksync.exe download --node-data .node-data
입력하세요. 여기서 .node-data
는 노드 데이터 폴더의 경로입니다.quicksync-rs
유틸리티는 다운로드된 상태를 다운로드하고 압축을 풀고 확인합니다.state.sql
파일이 있어야 합니다. quicksync-linux-vX.XXzip
릴리스를 다운로드하세요.quicksync
파일을 추출합니다.chmod +x quicksync
를 사용하여 quicksync
파일을 실행 가능하게 만듭니다. 이제 quicksync
실행 파일이 생겼습니다.quicksync
실행 파일을 spacemesh
디렉터리(기본적으로 ~/spacemesh
에 있음)로 이동합니다.spacemesh
디렉터리 내부에 있고 기본적으로 node-data
라는 이름)에 state.sql
파일이 있으면 삭제하세요. 그렇지 않으면 6단계를 계속합니다.quicksync
실행 파일이 있는 spacemesh
디렉터리에서 터미널을 열고 다음 명령을 실행합니다: ./quicksync download --node-data ./node-data
. 여기서 ./node-data
는 노드 데이터 폴더의 경로입니다.quicksync-rs
유틸리티는 다운로드된 상태를 다운로드하고 압축을 풀고 확인합니다.state.sql
파일이 있어야 합니다. quicksync-macos-vX.XXzip
(또는 M 시리즈 Mac이 있는 경우 quicksync-macos-arm64-vX.XXzip
)을 다운로드하세요.quicksync
파일을 추출합니다.chmod +x quicksync
를 사용하여 quicksync
파일을 실행 가능하게 만듭니다. 이제 quicksync
실행 파일이 생겼습니다.quicksync
실행 파일을 spacemesh
디렉터리로 이동합니다. (기본적으로 ~/spacemesh
에 위치)spacemesh
디렉터리 내부에 있고 기본적으로 node-data
라는 이름)에 state.sql
파일이 있으면 삭제하세요. 그렇지 않으면 6단계를 계속합니다.quicksync
실행 파일이 있는 spacemesh
디렉터리에서 터미널을 열고 다음 명령을 실행합니다: ./quicksync download --node-data ./node-data
. 여기서 ./node-data
는 노드 데이터 폴더의 경로입니다.quicksync-rs
유틸리티는 다운로드된 상태를 다운로드하고 압축을 풀고 확인합니다.state.sql
파일이 있어야 합니다. 종료 코드와 그 의미는 다음과 같습니다.
0
- 모두 양호합니다.1
- 최대 재시도 횟수 내에 아카이브를 다운로드하지 못했습니다(어떤 이유로든).2
- 아카이브의 압축을 풀 수 없습니다. 디스크 공간이 부족합니다.3
- 아카이브의 압축을 풀 수 없습니다: 기타 이유.4
- 다운로드한 state.sql
의 체크섬이 잘못되었습니다.5
- 어떤 이유로 체크섬을 확인할 수 없습니다.6
- 백업 파일을 생성할 수 없습니다.7
- 아카이브의 체크섬이 잘못되었습니다.8
- 아카이브 체크섬을 확인할 수 없습니다. 델타 기반의 퀵싱크를 다운로드하여 적용하는 것도 가능합니다. state.sql
이 이미 존재한다고 가정하면 그 위에 델타만 적용하는 것을 고려해 볼 가치가 있습니다. 전체 빠른 동기화를 사용하면 큰 부분을 동기화하는 것이 더 빠르지만, 이미 동기화했고 최신 상태만 따라잡아야 하는 경우에는 증분 빠른 동기화를 사용하는 것이 좋습니다.
증분 Quicksync는 데이터베이스에서 최근에 확인된 레이어를 확인한 다음 작은 파일(보통 약 50MB~최대 200MB)을 다운로드하고 이를 기존 state.sql
위에 적용하는 방식으로 작동합니다. 각 배치는 중단될 수 있습니다.
동일한 배치를 두 번 복원하는 것은 무작동으로 간주되며 데이터베이스에 영향을 주지 않습니다.
quicksync
유틸리티에 사용 가능한 명령 목록은 다음과 같습니다. 이 명령은 Linux용입니다. 간단하게 Windows 명령의 경우 ./quicksync
.quicksync.exe
로 변경합니다.
./quicksync download
: 최신 state.sql
파일을 다운로드합니다../quicksync check
: 현재 state.sql
이 최신인지 확인합니다../quicksync help
: quicksync
수행할 수 있는 모든 작업을 표시합니다../quicksync incremental
: 델타 기반 Quicksync 작업을 허용합니다../quicksync --version
: Quicksync 버전을 표시합니다.cargo run -- help
: 패키지 실행에 유용한 명령을 표시합니다. 개발자에게 적합합니다.