121 lines
5.1 KiB
Batchfile
121 lines
5.1 KiB
Batchfile
@echo off
|
|
REM Copyright 2024 The Hush Developers
|
|
REM Copyright 2024 The DragonX Developers
|
|
REM Released under the GPLv3
|
|
REM
|
|
REM Download and apply a DRAGONX blockchain bootstrap.
|
|
REM Safely preserves wallet.dat and configuration files.
|
|
|
|
setlocal EnableDelayedExpansion
|
|
|
|
set "BOOTSTRAP_BASE_URL=https://bootstrap.dragonx.is"
|
|
set "BOOTSTRAP_FILE=DRAGONX.zip"
|
|
set "CHAIN_NAME=DRAGONX"
|
|
set "DATADIR=%APPDATA%\Hush\%CHAIN_NAME%"
|
|
set "CLI=dragonx-cli.bat"
|
|
|
|
echo ============================================
|
|
echo DragonX Bootstrap Installer (Windows)
|
|
echo ============================================
|
|
echo.
|
|
echo [INFO] Data directory: %DATADIR%
|
|
echo.
|
|
|
|
REM Step 1: Stop daemon if running
|
|
echo [INFO] Checking if DragonX daemon is running...
|
|
%CLI% getinfo >nul 2>&1
|
|
if %ERRORLEVEL% EQU 0 (
|
|
echo [INFO] Stopping DragonX daemon...
|
|
%CLI% stop >nul 2>&1
|
|
echo [INFO] Waiting for daemon to stop...
|
|
set /a tries=0
|
|
:wait_loop
|
|
timeout /t 2 /nobreak >nul
|
|
%CLI% getinfo >nul 2>&1
|
|
if %ERRORLEVEL% EQU 0 (
|
|
set /a tries+=1
|
|
if !tries! LSS 60 goto wait_loop
|
|
echo [ERROR] Daemon did not stop after 120 seconds.
|
|
echo [ERROR] Please stop it manually and retry.
|
|
goto :eof
|
|
)
|
|
echo [INFO] Daemon stopped.
|
|
) else (
|
|
echo [INFO] Daemon is not running.
|
|
)
|
|
|
|
REM Step 2: Clean blockchain data (preserve wallet.dat and config)
|
|
echo [INFO] Cleaning blockchain data...
|
|
if exist "%DATADIR%\blocks" rmdir /s /q "%DATADIR%\blocks"
|
|
if exist "%DATADIR%\chainstate" rmdir /s /q "%DATADIR%\chainstate"
|
|
if exist "%DATADIR%\notarizations" rmdir /s /q "%DATADIR%\notarizations"
|
|
if exist "%DATADIR%\komodo" rmdir /s /q "%DATADIR%\komodo"
|
|
if exist "%DATADIR%\db.log" del /f /q "%DATADIR%\db.log"
|
|
if exist "%DATADIR%\debug.log" del /f /q "%DATADIR%\debug.log"
|
|
if exist "%DATADIR%\fee_estimates.dat" del /f /q "%DATADIR%\fee_estimates.dat"
|
|
if exist "%DATADIR%\banlist.dat" del /f /q "%DATADIR%\banlist.dat"
|
|
echo [INFO] Blockchain data cleaned.
|
|
|
|
REM Step 3: Download bootstrap and checksums
|
|
if not exist "%DATADIR%" mkdir "%DATADIR%"
|
|
set "ARCHIVE=%DATADIR%\%BOOTSTRAP_FILE%"
|
|
set "MD5FILE=%DATADIR%\%BOOTSTRAP_FILE%.md5"
|
|
set "SHA256FILE=%DATADIR%\%BOOTSTRAP_FILE%.sha256"
|
|
|
|
echo [INFO] Downloading bootstrap from %BOOTSTRAP_BASE_URL% ...
|
|
echo [INFO] This may take a while depending on your connection speed.
|
|
|
|
REM Download bootstrap zip
|
|
powershell -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $ProgressPreference = 'Continue'; Invoke-WebRequest -Uri '%BOOTSTRAP_BASE_URL%/%BOOTSTRAP_FILE%' -OutFile '%ARCHIVE%' }"
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo [ERROR] Download failed. Please check your internet connection.
|
|
goto :eof
|
|
)
|
|
echo [INFO] Bootstrap download complete.
|
|
|
|
REM Download checksums
|
|
echo [INFO] Downloading checksums...
|
|
powershell -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%BOOTSTRAP_BASE_URL%/%BOOTSTRAP_FILE%.md5' -OutFile '%MD5FILE%' }"
|
|
powershell -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%BOOTSTRAP_BASE_URL%/%BOOTSTRAP_FILE%.sha256' -OutFile '%SHA256FILE%' }"
|
|
|
|
REM Verify checksums
|
|
echo [INFO] Verifying checksums...
|
|
powershell -Command "& { $expected = (Get-Content '%MD5FILE%').Split(' ')[0]; $actual = (Get-FileHash '%ARCHIVE%' -Algorithm MD5).Hash.ToLower(); if ($actual -ne $expected) { Write-Host '[ERROR] MD5 checksum verification failed!'; exit 1 } else { Write-Host '[INFO] MD5 checksum verified.' } }"
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo [ERROR] The download may be corrupted. Please try again.
|
|
goto :done
|
|
)
|
|
powershell -Command "& { $expected = (Get-Content '%SHA256FILE%').Split(' ')[0]; $actual = (Get-FileHash '%ARCHIVE%' -Algorithm SHA256).Hash.ToLower(); if ($actual -ne $expected) { Write-Host '[ERROR] SHA256 checksum verification failed!'; exit 1 } else { Write-Host '[INFO] SHA256 checksum verified.' } }"
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo [ERROR] The download may be corrupted. Please try again.
|
|
goto :done
|
|
)
|
|
|
|
REM Clean up checksum files
|
|
del /f /q "%MD5FILE%" 2>nul
|
|
del /f /q "%SHA256FILE%" 2>nul
|
|
|
|
REM Step 4: Extract bootstrap
|
|
echo [INFO] Extracting bootstrap...
|
|
cd /d "%DATADIR%"
|
|
|
|
REM Use PowerShell to extract zip, excluding wallet.dat
|
|
powershell -Command "& { Add-Type -AssemblyName System.IO.Compression; $zip = [System.IO.Compression.ZipFile]::OpenRead('%ARCHIVE%'); foreach ($entry in $zip.Entries) { if ($entry.Name -eq 'wallet.dat' -or $entry.Name -like '*.conf') { continue }; $destPath = Join-Path '%DATADIR%' $entry.FullName; $destDir = Split-Path $destPath -Parent; if (!(Test-Path $destDir)) { New-Item -ItemType Directory -Path $destDir -Force | Out-Null }; if ($entry.Name) { [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $destPath, $true) } }; $zip.Dispose() }"
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo [ERROR] Extraction failed.
|
|
echo [ERROR] Archive location: %ARCHIVE%
|
|
goto :done
|
|
)
|
|
echo [INFO] Bootstrap extracted successfully.
|
|
|
|
REM Remove archive
|
|
del /f /q "%ARCHIVE%" 2>nul
|
|
echo [INFO] Removed downloaded archive.
|
|
|
|
echo.
|
|
:done
|
|
echo [INFO] Bootstrap installation complete!
|
|
echo [INFO] You can now start DragonX with: dragonxd.bat
|
|
echo.
|
|
pause
|