add ability to suspend deal-making until CE is stable.
This commit is contained in:
parent
fa4bcc6054
commit
58f348cb7f
@ -62,7 +62,10 @@ func runTestCCUpgrade(t *testing.T, upgradeHeight abi.ChainEpoch) {
|
||||
require.NoError(t, err)
|
||||
|
||||
dh := kit.NewDealHarness(t, client, miner)
|
||||
deal, res, inPath := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6})
|
||||
deal, res, inPath := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{
|
||||
Rseed: 6,
|
||||
SuspendUntilCryptoeconStable: true,
|
||||
})
|
||||
outPath := dh.PerformRetrieval(context.Background(), deal, res.Root, false)
|
||||
kit.AssertFilesEqual(t, inPath, outPath)
|
||||
|
||||
|
@ -35,6 +35,30 @@ type MakeFullDealParams struct {
|
||||
Rseed int
|
||||
FastRet bool
|
||||
StartEpoch abi.ChainEpoch
|
||||
|
||||
// SuspendUntilCryptoeconStable suspends deal-making, until cryptoecon
|
||||
// parameters are stabilised. This affects projected collateral, and tests
|
||||
// will fail in network version 13 and higher if deals are started too soon
|
||||
// after network birth.
|
||||
//
|
||||
// The reason is that the formula for collateral calculation takes
|
||||
// circulating supply into account:
|
||||
//
|
||||
// [portion of power this deal will be] * [~1% of tokens].
|
||||
//
|
||||
// In the first epochs after genesis, the total circulating supply is
|
||||
// changing dramatically in percentual terms. Therefore, if the deal is
|
||||
// proposed too soon, by the time it gets published on chain, the quoted
|
||||
// provider collateral will no longer be valid.
|
||||
//
|
||||
// The observation is that deals fail with:
|
||||
//
|
||||
// GasEstimateMessageGas error: estimating gas used: message execution
|
||||
// failed: exit 16, reason: Provider collateral out of bounds. (RetCode=16)
|
||||
//
|
||||
// Enabling this will suspend deal-making until the network has reached a
|
||||
// height of 150.
|
||||
SuspendUntilCryptoeconStable bool
|
||||
}
|
||||
|
||||
// NewDealHarness creates a test harness that contains testing utilities for deals.
|
||||
@ -56,6 +80,12 @@ func (dh *DealHarness) MakeOnlineDeal(ctx context.Context, params MakeFullDealPa
|
||||
|
||||
dh.t.Logf("FILE CID: %s", res.Root)
|
||||
|
||||
if params.SuspendUntilCryptoeconStable {
|
||||
dh.t.Logf("deal-making suspending until cryptecon parameters have stabilised")
|
||||
ts := dh.client.WaitTillChain(ctx, HeightAtLeast(150))
|
||||
dh.t.Logf("deal-making continuing; current height is %d", ts.Height())
|
||||
}
|
||||
|
||||
deal = dh.StartDeal(ctx, res.Root, params.FastRet, params.StartEpoch)
|
||||
|
||||
// TODO: this sleep is only necessary because deals don't immediately get logged in the dealstore, we should fix this
|
||||
|
Loading…
Reference in New Issue
Block a user