Rakurai Activation Program
A multisig-based Solana smart contract for enabling or disabling the Rakurai scheduler. It also governs the commission on block rewards for both the block builder (i.e., Rakurai) and the validator.
Note: The remaining block rewards after deducting the two commissions are distributed to stakers via the RewardDistributionProgram
.
➤ For more details, refer to the IDL File.
Purpose
Each validator must create a Rakurai Activation Account (RAA) — a PDA jointly controlled by both the validator and Rakurai.
This account governs:
- Whether the validator is actively using the Rakurai Scheduler to schedule their blocks or not.
- The commission percentage the validator wants to retain from total block rewards.
- Rakurai's commission from total block rewards (set during initialization, read from global config (Rakurai Activation Config Account)).
Multisig Control
This program implements a 2-party asynchronous multisig:
Enabling Rakurai Scheduler → Requires 2/2 multisig approval
One party (Validator or Rakurai) proposes, the other approves.Disabling Scheduler → Can be done unilaterally (1/2 multisig)
Either party can act independently to disable.
Unlike traditional multisig, both parties do not sign the same transaction. Instead, actions are proposed and approved via separate transactions.
RakuraiActivationAccount Account Creation
- The validator initializes their RakuraiActivationAccount PDA using:
- Their identity pubkey.
- A seed constant.
- During creation, the validator specifies:
validator_commission_bps
(0–10000) — validator wants to retain from total block rewards.- Rakurai's commission is fetched from a global config account (Rakurai Activation Config Account), a PDA under the same program.
Once created, this account:
- Authorizes Rakurai reward logic on-chain.
- Enables the validator to use Rakurai's scheduler for enhanced performance and MEV rewards.
Commission Updates
- The validator may update their commission percentage at any time.
- The updated commission applies either:
- From the current epoch, if no
RewardCollectionAccount
has been initialized yet. - Or from the next epoch, if already initialized.
- From the current epoch, if no
Activation Flow
Enabling Rakurai:
- The validator submits a
update_rakurai_activation_approval
transaction. - In response to that transaction, Rakurai submits a transaction to approve and activate the Rakurai scheduler.
- The validator submits a
Disabling Rakurai:
- Either party (Rakurai or Validator) can unilaterally disable the Rakurai scheduler.
Re-enabling:
- Requires both validator and Rakurai to propose -> approve via new transactions.
Activation status is respected in reward distribution and scheduling logic across Rakurai-integrated programs.
CLI Tool
A CLI tool is available for operators to:
- Initialize their RakuraiActivationAccount.
- Update commission settings.
- Enable/disable the Rakurai scheduler.