Grants Splitter
The
DelegationsManager
can split the funds in its balance among all Delegations attached to it (and therefore attached to the Organization).When a Delegation newly attaches itself to the
DelegationsManager
, a dedicated treasuryManager
is cloned from the model address stored in the DelegationsManager
and dedicated to the Delegation.The implication here is that if the Delegation is attached to multiple Organizations, it will have a dedicated
treasuryManager
for each.The DelegationsManager, via the
split
function, splits an organization's funds (stored in the DelegationsManager
) and distributes them to attached Delegations. The split can be performed every time the DelegationsManager has an amount of ETH greater than zero.Anyone can call
split
, and receive a reward (which serves as an economic incentive) for doing so.function split(address executorRewardReceiver) external;
As input, the function takes the address of the receiver (who can be specified as different from the caller) of the
executorReward
. The executorReward
amount is calculated as (the amount to be split across the Delegations * executorReward percentage)
.The
split
function internally calls the getSplit
function to calculate how much of the funds will be sent to each Delegations' treasury, and the funds are sent accordingly immediately afterwards.(address[] memory receivers, uint256[] memory values) = getSplit(executorRewardReceiver);
The amount received from a Delegation is calculated as the percentage of governance tokens staked with respect to the total amount of tokens staked by all delegations associated with that specific organization.
For example:
Governance token supported by the Organization: $VTB
Delegations linked to an Organization: 3
ETH amount in the Delegations Manager to be split: 10 ETH
Tot. amount of $VTB staked by the three Delegations: 1000
Amounts staked by the three Delegations:
-Delegation 1: 200
-Delegation 2: 500
-Delegation 3: 300
ETH amount received by the three Delegations:
-Delegation 1: 2 ETH
-Delegation 2: 5 ETH
-Delegation 3: 3 ETH
Any remaining amount is automatically sent to the flusher. It can be a specific Component set at the time of Delegations Manager initialization (
bytes32
flusherKey
) or the Organization Treasury Manager if flusherKey
was set as bytes32(0)
.Last modified 1yr ago