Self Recharging Wallets
Types of Wallets
There are several types of wallets in the SKALE Network. These include:
- Wallets Controlled by the validator, node 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 node transactions are reimbursed and by who.
Transaction | Reimbursed By | Description of Transaction |
---|---|---|
getBounty() | Validator | Called every month by each node to request bounty. |
nodeExit() | Validator | To remove a node from the network due to hardware failure or unmet MSR. |
complaint() | Validator | Performed in DKG failure mode when a node lodges a general DKG complaint against a malicious node who may have failed to send data. |
complaintBadData() | Validator | Performed in DKG failure mode when a node discovers that malicious data has been sent and requires verification data to validate. |
preResponse() | Validator | Performed in DKG failure mode, when a node sends a verification vector and secret key shares ahead of the final response() result. |
response() | Validator | Performed in DKG failure mode when a node 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. Nodes broadcast their secret key contributions to all other nodes. |
alright() | SKALE Chain Owner | Performed during SKALE Chain creation when distributed key generation is in-process. Nodes 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 nodes and SKALE Chains.
If the self-recharging…
- validator balance runs out of ETH, then the nodes’ 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 nodes to their validator ID, these linked nodes will automatically request reimbursement from the validator’s self-recharging wallet for those transactions. If a node is unlinked from the validator, this node 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