Abstract
This CIP proposes to replace the elected SV delegate mechanism, to improve fault tolerance and more fully automate decentralized operations.
In the current approach, the Decentralized Synchronizer Operations (DSO) party, which represents the consensus of the Super Validators, delegates actions to a single Super Validator (SV) party known as the delegate. The delegate then submits those actions to the ledger.
In the proposed approach, the DSO party authorizes all the SV parties to submit the designated actions. The automation component of the SV application on each Super Validator node then automatically attempts to submit these delegated actions. Each application applies a random delay, tuned to minimize contention.
Specification
Daml
In the new implementation, all current choices on the DsoRules template having dsoDelegate as controller will introduce
a new optional argument named sv to be used instead. This allows all SVs to exercise the choice by specifying their own party.
Daml will reject, with an authorization error, any transaction where the SV application tries to specify any party other than its own.
SV Application
The SV application is modified such that all SVs attempt to submit the commands currently only being submitted by the delegate.
This introduces some potential for conflict: if multiple SV applications submit the same transaction at the same time-- for example, if all attempt to advance the mining rounds at the same time--only one of them will succeed, and the others will fail; that is, they will contend with each other. Importantly, this is not a correctness issue: The Daml code already handles this case; for example, it can successfully manage if the delegate crashes during a submission and tries to resubmit the same command. But the failed transactions would introduce unnecessary load on the network.