consensus-shipyard / ipc-actors

Rust implementation of the IPC actors for FVM
MIT License
6 stars 3 forks source link

Checkpoints: Initial fund allocation for validators in child-subnet #103

Closed adlrocha closed 1 year ago

adlrocha commented 1 year ago

Background

In order to remove the chicken-and-egg problem described in https://github.com/consensus-shipyard/ipc-actors/pull/96 we send some initial funds to the initial validators in a subnet. The issue is that if we spawn a subnet with just one validator, and we join from another validator, the second validator won't have any funds to submit top-down checkpoints, and as a super-majority is required to commit the checkpoint, there won't be any way for the joining validator to inject funds in the subnet to submit top-down checkpoints, stalling the checkpoint submission of top-down checkpoints for the subnet.

Initial Proposal

This PR was an attempt to introduce a work-around where some initial funds are also sent to joining validators when the number of validators is below 3, to prevent joining validators from not being able to submit a checkpoint for lack of funds. A more robust solution should be considered like using https://github.com/consensus-shipyard/ipc-actors/issues/91 or some kind of checkpoint submission subsidising system, because the above mentioned PR would lead to a simple attack where a validator could drain all the funds from the gateway.

Update

This would be solved by https://github.com/consensus-shipyard/ipc-actors/issues/104