Delegating Address to Super Staker
Btcbam Offline Staking allows the address for a non-staking wallet (capable of making the delegation assignment transaction) to be delegated to a Super Staker. Offline Staking is non-custodial: the delegation user keeps full control of their coins and private keys. The address delegation is made via a smart contract transaction from the delegation user’s wallet which identifies the delegator’s address, the Super Staker address, and the fee the delegator agrees to pay. If the Super Staker accepts this fee, it will begin staking the delegated address UTXOs.
The normal rules for staking UTXOs apply to delegated UTXOs:
- UTXOs may only be used for staking after they mature (300 confirmations)
- The Super Staker will set a minimum size of UTXOs to stake, defaulting to 100 BTCBAM. Delegated UTXOs below this amount will be ignored.
- It is best practice (for optimum returns) to break UTXOs up into sizes of 100 to 200 BTCBAM each. For users of the BTCBAM Core wallet, this can be easily accomplished with the command line version of
splitutxosforaddress
, described below.
To make the delegation assignment from the BTCBAM Core wallet, select Stake — Delegations, the Add delegation “+” button in the upper right corner, enter the Staker name (for local reference only), Staker address, Fee you agree to pay, and your Address to be delegated. Leave the default Gas settings alone unless you understand how to set these. The delegation transaction will require at least 0.9 BTCBAM in fees and any excess will be refunded.
Delegating Address Operations
The Delegate Address transaction is sent to a smart contract which keeps the delegation assignments and will be picked up by the Super Staker there. You can see Delegated Address block reward transactions in the wallet and also with the explorer https://explorer.btcbam.com/.
If the wallet is holding BTCBAM on multiple addresses, the delegation must be made separately for each address (and the transaction fee paid for each address) so it may make sense to consolidate the UTXOs to a single address before splitting UTXOs and delegating. In this case, use coin selection to select and consolidate the addresses. Alternatively, the sendmanywithdupes
command could be used to send the entire wallet balance to a new address with appropriately-sized UTXOs.
If the Super Staker accepts a delegation for a particular fee, and then the Super Staker reduces that fee (accepts assignments for a lower fee), to take advantage of that lower fee the user must delegate their address again with the lower fee set.
Delegations from a wallet may be checked on the Stake — Delegations page or with the getdelegationinfoforaddress
command.
Backup your wallet to save a copy of the wallet.dat file.
Super Staker Configuration
The BTCBAM Core wallet provides online Proof of Stake and can be launched and configured to operate as a Super Staker and receive address delegations.
To configure the Qtum-Qt wallet for a Super Staker, select Stake — Super Staking and the “+” button to add a new Super Staker. Enter the Staker name (for local reference only, here using the first part of the address and “10” to denote a 10% fee) and select the Staker address using the dropdown.
To operate as a Super Staker, the wallet must be able to check arbitrary addresses (address index), have logs enabled for smart contract operations(log events), be enabled for staking and the single parameter -superstaking=true
sets these three parameters. The first time launching with -superstaking=true
the wallet will rescan the blockchain to rebuild the database to add the address index and log events.
Next, the wallet will prompt to be restarted as a Super Staker using Settings — Options — Enable super staking and OK to restart the wallet.
On startup, the wallet will confirm that you want to scan and rebuild the database.
The wallet will show “Reindexing blocks on disk…” and “Syncing Headers” while it rebuilds the database, this may take several tens of minutes depending on your computer.
After launching, go back to the Stake — Super Staking page and select the “Configure super staker” button (the gear symbol will now be visible) to compete the Super Staker configuration. Click the Custom box to see the default recommendations (shown below) or customize the setup. Click OK to complete the setup.
The configuration settings are:
- Minimum fee — the minimum fee offered by delegators that the Staker will accept.
- Minimum UTXO size — this sets the minimum-sized UTXO that will be evaluated for Proof of Stake consensus by the Staker. Over time, the delegated address should accumulate many small block reward UTXOs and it is inefficient to manage all these small amounts (which should be recombined by the delegator).
- Delegation list type:
- Accept all — accept any delegation with the minimum fee or more.
- Allow list — only accept delegations from specific addresses. Use this mode if operating a Super Staker only for specific addresses, such as for your coins.
- Exclude list — addresses to exclude from being accepted for staking.
Next, split the UTXOs to valid amounts for committing stakes by the Super Staker. The UTXOs must be a minimum amount of 100 BTCBAM. On the Super staker page select the split coins button (trident icon) and use the default values or make adjustments, but no UTXOs under 100 BTCBAM will be used for staking.
You can also split UTXOs with the splitutxosforaddress
command, which can be used for delegated addresses as well. To split the UTXOs between a minimum and maximum value, enter the command:
splitutxosforaddress "address" minValue maxValue ( maxOutputs )
For example, if a wallet held UTXOs of 40, 50, 60, 70, and 800 BTCBAM, to split these into UTXOs of a minimum 100 and maximum 200 would use the command:
```splitutxosforaddress “BekrBFXdZ9FbX6N3kNdBCj8AjjSGcsEkzr” 100 200
{ “txid”: “197a199c3ac9dd8df574ca77da15c5da31db3f7101e2108638a3b2f94248b9f7”, “selected”: “1020.00”, “splited”: “1020.00” } ```
For this example, the total input was 1,020 BTCBAM, and the split was 9 UTXOs of 100.0 and one of 119.99566, the wallet sending a “transaction to self” and paying a fee of 0.00434 BTCBAM.
Larger wallets may need to adjust the “Maximum outputs” number for splitting. In the example above with the “Maximum outputs” field set to the default value of 100, the split operation will split giving 100 BTCBAM (minimum size) x 100 (Maximum outputs) = 10,000 of UTXO value. For addresses holding more value the “Maximum output” field could be set higher, to 500, or 1000. With the “Maximum outputs” field set to 1000 it can split up to 100,000 in UTXO value. Even bigger addresses could just repeat this split command set for 1000 Maximum outputs until the Split operation reports back that it has selected and split 0 coins.
Previously you could use the sendmanywithdupes
command but that took significant formatting and operationally you would want to send to a new address. Of course, after either of these commands, the UTXOs must mature for 300 confirmations before they can be used for staking.
Restore
Normally delegation and Super Staker configuration are stored in the wallet.dat file. If there are problems with the wallet.dat file the delegation information and super staker information may be recovered using the Restore button on the delegation and Super Staker pages. In this case, the wallet will rescan the “state” contract memory for offline staking transactions for the appropriate addresses.