Windows Setup (Outdated)
As covered in the previous pages (which you must read prior to beginning this guide), to continue on this path to becoming a provider you:
ScPrime UI & Daemon Downloads
At this time the UI includes an older version of the core ScPrime software called the daemon (spd), which we will later manually update with the newer 1.6.2 version that was just downloaded.
Extract the UI download, and run the executable. It should begin installing, and if prompted you should use your admin user privileges to allow the program to run. This first startup will open the UI and create some of the folders necessary for running. After the UI has opened, you can quickly close it by opening the task tray in the lower right of the taskbar, right clicking, and quitting the application.
With the application closed (may take a few moments), open file explorer, and navigate to the folder “C:\Users\your_username\AppData\Local\ScPrime”
Note: to find the AppData folder you may need to go to the “View” tab in the top of file explorer, and tick the “File name extensions” and “Hidden items” boxes.
Enabling file extensions and hidden items in file explorer
Verify this folder exists and has folders such as these (it is ok if it doesn’t have all of them).
This folder is the metadata folder, and is critical for ScPrime’s function. This important folder keeps the files relating to your specific provider instance, your wallet state files, a full copy of the blockchain and more.
Now find the folder that the UI loads the core daemon software from, which is usually found in “C:\Users\your_username\AppData\Local\Programs\ScPrime-UI\resources\bin” and should look something like the following.
Consider right clicking the “bin” folder and pinning to quick access to make it easier to reach this directory again.
The copy of spd.exe and spc.exe within this “bin” folder is what will be replaced with the newer updated version downloaded earlier. Unzip the daemon download (perhaps just to your downloads folder), and then copy-paste the new spd.exe and spc.exe to replace the versions in the “AppData\Local\Programs\ScPrime-UI\resources\bin” path.
Note: Some antivirus software will flag spd.exe and spc.exe as 'harmful'. You may need to add exclusions for each of those files or specify them as trusted applications in your antivirus software.
Now right click the blank space and create a new text document. Rename it to “start.bat” replacing the default “.txt” file extension.
Right click the new “start.bat” and click “Edit,” which should open a blank Notepad session. This is where the spd startup command will be placed. It should look like this:
spd.exe -d C:\Users\your_username\AppData\Local\ScPrime -M gctwh
Note: If this is not the first provider on your network, you must manually specify alternative ports to use. The defaults are 4282 and 4283, but no two providers on the same network can utilize the same port range. Consider an offset range, such as below.
spd.exe -d C:\Users\your_username\AppData\Local\ScPrime -M gctwh --host-addr :4382 --host-api-addr :4383
This command invokes spd, provides it with the existing metadata folder, and specifies to only load the modules necessary to providing (gateway, consensus, transactionpool, wallet, host).
Save and exit the notepad, and double-click the new “start.bat” to start up spd. If this works, a new terminal window should be opened that’ll look like the following.
Important to note here is the Daemon v1.6.0, which indicates the older spd was successfully overwritten, and that there are only 5 modules being loaded.
Leaving this terminal window open (though perhaps minimized) it is now possible to open ScPrime-UI, which should automatically detect and connect to this running instance of spd just created.
The UI should open, and the blockchain will be syncing in the background. This initial blockchain sync will likely take some time, as your instance is catching up to 3+ years of blocks. Any future syncs should only have to continue where the previous left off (and thus much shorter). You can follow the status of the sync by hovering over the “Syncing” in the top right corner and compare it to the current block height on ScPrime.info
Now a wallet must be set up or loaded. Assuming you don’t already have one to use (each provider must have their own unique wallet, and cannot be shared), create a new one.
The software will generate a new seed on the spot for you. The seed represents your ability to spend tokens on the blockchain, and must be protected securely. Write it down somewhere you will not lose it (and no one else may gain access to), and then manually count to make sure you have all 28-29 words of the seed. The UI will also challenge your seed before continuing.
Coming out the other side of seed setup, one can begin preparing their wallet for provider setup. The first thing one should do next is follow the guide to enable Drive compression on the intended storage disk(s), which allows you to skip the undesirable “zeroing” process spd must otherwise perform on the space made available to it for storage.
You should also consider making a folder for every 2 TB or so of space on each disk. For example, a 12 TB disk would have 6 folders on it (named disk1_1 through disk1_6 perhaps). Breaking large volumes down in to smaller folders makes it more manageable should you ever migrate off-disk, and can help quarantine a corrupted folder.
With this drive compression enabled and potentially several folders per disk, head over to the “Host” tab on the left and click “Add a folder.” It is here that one would select each folder on each disk and allocate it a size. Take care not to over-allocate the space on a disk, as this will lead to corruption of data later on (an enormous headache). If a 12 TB drive shows up in file explorer as only 10.8 TB for example, allocate up to 10.7 TB of it, leaving a 50-100 GB buffer. This would be 5x 2 TB folders, and one 700 GB folder.
Again, take great care not to over-allocate your space, and ensure your math is correct. You can always resize to become larger later, but if you’ve overallocated and corruption has taken place it will be too late.
Now it is time to enter provider settings. Recommended values will change often, and you should be mindful that you will have to regularly check to make sure your provider is within the recommended ranges here. Read through this page and understand what each setting represents. Collateral is often expressed as a factor of storage price, and 1x would mean collateral is the same price as storage.
Click update in the top right to save these settings.
Your provider is now nearly ready for use, but it requires some funding first as covered in the Collateral section. Return to the Wallet tab, go to the Receive heading, and generate an address. Each wallet can generate endless addresses that are all equally valid, and in practice your provider will regularly generate and utilize new ones. Only your seed loaded in to a wallet can know your true balance, as on the blockchain it will be spread across many addresses.
Send some SCP to the address generated, but know your balance won’t reflect until the blockchain sync has finished.
While waiting for the sync to complete, you can proceed to performing the port forward for your provider. There is a detailed guide covered on this page. If this is the first provider on your network, only ports 4282 and 4283 must be forwarded to your provider device. If this is not the first provider on your network, the ports you forward must match the ones specified during the start command of spd. Ensure the ports return open in a port check tool before continuing. Do not under any circumstances forward port 4280, as this is the internal RPC port that executes commands with the daemon (and could be used to steal your funds if left exposed).
For your provider to fully function spd must be running, utilizing the existing metadata folder, and the wallet must be unlocked (else it would be unable to perform contract transactions). This process will be automated prior to announcing, because uptime will begin to be tracked once you announce, thus figuring these aspects out after announcing is not ideal.
To begin this automation, copy the “start.bat” file created earlier, and paste in the same folder to create a duplicate (likely named “start - Copy.bat”). Edit the original “start.bat” to include the line setting the SCPRIME_WALLET_PASSWORD variable to the 28-29 word seed generated earlier, and providing the full path to
spd.exein the filesystem.
Note that there is not a space after the equals on the first line.
Now, opening Windows Task Scheduler, create a task where the daemon will restart upon reboot. Open up Task Scheduler and click on ‘Create Task’.
Name the task something related to spd and select ‘Run whether user is logged on or not’ and also tick the box next to ‘Run with highest privileges’. Then click on the ‘Triggers’ tab.
In the Triggers tab, click on ‘New’ and then select ‘At startup’ from the drop down menu. Also be sure to have the box next to ‘Enable’ checked and then click OK.
Now click on the ‘Actions’ tab and the click on ‘New’.
Select ‘Start a program’ as an action and then create a path to the “start.bat” batch file. Following the locations of the guide, it would be “C:\Users\your_username\AppData\Local\Programs\ScPrime-UI\resources\bin”. Click OK and then OK again. Your task is created.
It’s also a good idea to check the task’s ‘Settings’ menu to ensure the ‘Stop the task if it runs longer than:’ setting is unchecked. Windows may default to this being checked, which will kill the spd daemon after it reaches the time specified.
It is now time to test if this works. Save and close any work you might have open, and restart your computer. When you log back in, try opening ScPrime-UI and seeing if it is indeed auto-unlocked (it would ask you for a seed/password otherwise). You should not see a terminal window for spd appear like when it was manually run earlier.
At this point, your provider should:
- Some balance sent to your provider’s wallet
- spd auto-start and wallet unlock working
- Settings in line with the recommended ranges
If everything up to here looks good, but your node is still not quite synced, you will need to wait for it to finish before continuing. Once again you can check its progress in the top right of the UI and compare it to the block explorer.
Once the sync has completed, and a balance shows up, it is time to “announce” your provider to the world. Head to the UI’s terminal window here.
In the terminal it is time to announce the provider. The basic command for this is “host announce” but the more complete “host announce address:port” should be used if you’re using a DDNS, you’re using the non-default ports, or trying the basic announce returned a warning about being unable to announce using a local IP address. For the full announce command, the address should either be the DDNS you’re hoping to use or (more likely) your IPv4, which can be found on a website such as WhatIsMyIP. The port in the command should be 4282 if announcing your first provider, or the host-addr port specified during spd startup if not.
Which should ideally yield:
The informational message regarding accepting contracts can be ignored; it is only instructing how to stop accepting new contracts should you ever wish to decommission your provider.
Feel free to use the command “host” or “host -v” (the verbose flag) to return information about your provider. The Host tab of the UI often mistakenly reports the status of the provider. Verify the status using the host or host -v commands in the terminal.
Note: part of the
host -vreturn a message will include RPC Stats. Do not be concerned by Error or Unrecognized Calls as these are normal when running a provider without the renter module (which was intentionally omitted for resource efficiency and long term stability).
The provider should now be fully functioning and able to accept contracts. You can close the UI (perhaps using the task tray method from earlier), and spd should remain running in the background. If you ever need to close spd, use the task manager to locate and end it. You should leave the UI closed when you don’t need it.