Self Recharging Wallets
Types of Wallets
There are several types of wallets in the SKALE Network. These include:
- Wallets Controlled by the validator, supernode operator, and SKALE Chain owner. These wallets may be software or hardware wallets.
- Self-Recharging wallets can be for validators and for the SKALE Chain owner.
Node Transactions & Reimbursement
The following table explores what supernode transactions are reimbursed and by who.
Transaction | Reimbursed By | Description of Transaction |
---|---|---|
getBounty() | Validator | Called every month by each supernode to request bounty. |
nodeExit() | Validator | To remove a supernode from the network due to hardware failure or unmet MSR. |
complaint() | Validator | Performed in DKG failure mode when a supernode lodges a general DKG complaint against a malicious supernode who may have failed to send data. |
complaintBadData() | Validator | Performed in DKG failure mode when a supernode discovers that malicious data has been sent and requires verification data to validate. |
preResponse() | Validator | Performed in DKG failure mode, when a supernode sends a verification vector and secret key shares ahead of the final response() result. |
response() | Validator | Performed in DKG failure mode when a supernode sends a response to a complaint() to prove it’s not malicious based on the data it sends in preResponse() . |
broadcast() | SKALE Chain Owner | Performed during SKALE Chain creation when distributed key generation process begins. Supernodes broadcast their secret key contributions to all other supernodes. |
alright() | SKALE Chain Owner | Performed during SKALE Chain creation when distributed key generation is in-process. Supernodes send receipts of secret key contributions. |
Replenishment
Self-recharging validator wallets can be replenished in ETH by anyone with the wallet’s contract address and the ValidatorId
or sChainId
. This functionality allows anyone to ensure the continued ETH funding and operation of validator supernodes and SKALE Chains.
If the self-recharging…
- validator balance runs out of ETH, then the supernodes’ wallets are first spent until transactions revert.
- SKALE Chain Owner balance runs out of ETH, then transactions will revert.
Node wallets connected to the self-recharging validator wallet are replenished automatically at the end of each transaction based on the best estimate of the gas consumed in the transaction.
Using a Self-Recharging Wallet
When a new validator is registered, a self-recharging wallet is automatically deployed. The validator’s private key has withdraw access to this wallet. Validators can use this private key to close the self-recharging wallet should the validator leave the network.
As a validator links supernodes to their validator ID, these linked supernodes will automatically request reimbursement from the validator’s self-recharging wallet for those transactions. If a supernode is unlinked from the validator, this supernode will no longer request reimbursement from the validator’s self-recharging wallet.
Existing validators will automatically be added to the Wallet contract and will start using them once this feature is deployed to mainnet.
Interacting with the Self-Recharging Wallet (SRW)
Validators can use the CLI to recharge, withdraw funds from, or check the self-recharging wallet’s balance. Anyone can recharge or check the balance by interacting with the Wallet contract on Ethereum.
For the CLI
For Wallets Contract
See https://github.com/skalenetwork/skale-manager/blob/develop/contracts/Wallets.sol