There is an on going work for making sure all vats must either be upgradable or replaceable safely. In this PR we are focusing on feeDistributor for that. As per #8730, we also want to have tests for feeDistributor that checks it works properly after a vat-timer is upgraded.
Security Considerations
I can' think of any threats that can come out of feeDistributor to cause any system level harm. As it's only job is to collect fees from vaultFactory and send it to reserve.
Scaling Considerations
Making sure the old feeDistributor is not collecting fees from the vaultFactory is important but I believe to free resources we need to terminate the old instance.
Documentation Considerations
None.
Testing Considerations
Here's the testing scenario implemented;
Write a proposal code where collectionInterval is parameterized
Have two scripts originating from the proposal created above. One for testing and one for staging
Test script’s collectionInterval = 5 seconds
Staging script’s collectionInterval = 1 hour
Staging script is placed in upgrade.go
Testing script is built as a submission in p:upgrade-19
In TEST phase of p:upgrade-19, this script will override whatever already exists in the bootstrap environment.
When testing new feeDistributer
Open a few vaults
Use syncTools to wait until reserve balance increases
Note
In the original test plan, there was this sentence: "Get the new instance’s terms from zoe and make sure its collectionInterval is correct"
Which I ended up not implementing because it's not possible to get zoe in a3p and trying to test this using a core-eval seemed like an anti-pattern.
closes: #10393 refs: https://github.com/Agoric/agoric-sdk/issues/8730
Description
There is an on going work for making sure all vats must either be upgradable or replaceable safely. In this PR we are focusing on
feeDistributor
for that. As per #8730, we also want to have tests forfeeDistributor
that checks it works properly after avat-timer
is upgraded.Security Considerations
I can' think of any threats that can come out of
feeDistributor
to cause any system level harm. As it's only job is to collect fees fromvaultFactory
and send it toreserve
.Scaling Considerations
Making sure the old
feeDistributor
is not collecting fees from thevaultFactory
is important but I believe to free resources we need to terminate the old instance.Documentation Considerations
None.
Testing Considerations
Here's the testing scenario implemented;
collectionInterval
is parameterizedupgrade.go
p:upgrade-19
TEST
phase ofp:upgrade-19
, this script will override whatever already exists in the bootstrap environment. When testing newfeeDistributer
reserve
balance increasesNote
In the original test plan, there was this sentence: "Get the new instance’s terms from zoe and make sure its
collectionInterval
is correct"Which I ended up not implementing because it's not possible to get
zoe
ina3p
and trying to test this using a core-eval seemed like an anti-pattern.cc @Chris-Hibbert
Upgrade Considerations
feeDistributor
is not upgradable. There are plans to make it upgradable in the future. See https://github.com/Agoric/agoric-sdk/issues/8729.