feat: chain: light-weight patch to fix calibrationnet again by removing move_partitions from built-in actors (#11409)
* upgrade calibnet by removing move_partitions from miner actor in actor v12 * cids for buggy bundles * revert changes to v12 tar * upgrade system actor state * update based on manifest * nit: clean up some comments * chore: rename param to oldBuggyMinerCID * refactor, ensure both buggy bundles are loaded * update to actors v12.0.0-rc.3 * fix: load second buggy bundle for UpgradeWatermelonFixHeight * add calibration fix2 upgrade epcoh * update mainnet upgrade epoch --------- Co-authored-by: Aayush <arajasek94@gmail.com> Co-authored-by: jennijuju <jiayingw703@gmail.com>
This commit is contained in:
parent
22e0291fe8
commit
808a6e9226
Binary file not shown.
@ -44,9 +44,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The following code cid existed temporarily on the calibnet testnet, as a "buggy" storage miner actor implementation.
|
// The following code cid existed temporarily on the calibnet testnet, as a "buggy" storage miner actor implementation.
|
||||||
// We include it in our builtin bundle, but intentionally omit from metadata.
|
// We include them in our builtin bundle, but intentionally omit from metadata.
|
||||||
if NetworkBundle == "calibrationnet" {
|
if NetworkBundle == "calibrationnet" {
|
||||||
actors.AddActorMeta("storageminer", cid.MustParse("bafk2bzacecnh2ouohmonvebq7uughh4h3ppmg4cjsk74dzxlbbtlcij4xbzxq"), actorstypes.Version12)
|
actors.AddActorMeta("storageminer", cid.MustParse("bafk2bzacecnh2ouohmonvebq7uughh4h3ppmg4cjsk74dzxlbbtlcij4xbzxq"), actorstypes.Version12)
|
||||||
|
actors.AddActorMeta("storageminer", cid.MustParse("bafk2bzaced7emkbbnrewv5uvrokxpf5tlm4jslu2jsv77ofw2yqdglg657uie"), actorstypes.Version12)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,9 +191,10 @@ func readEmbeddedBuiltinActorsMetadata(bundle string) ([]*BuiltinActorsMetadata,
|
|||||||
return nil, xerrors.Errorf("error loading builtin actors bundle: %w", err)
|
return nil, xerrors.Errorf("error loading builtin actors bundle: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following manifest cid existed temporarily on the calibnet testnet
|
// The following manifest cids existed temporarily on the calibnet testnet
|
||||||
// We include it in our builtin bundle, but intentionally omit from metadata
|
// We include them in our builtin bundle, but intentionally omit from metadata
|
||||||
if root == cid.MustParse("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs") {
|
if root == cid.MustParse("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs") ||
|
||||||
|
root == cid.MustParse("bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
bundles = append(bundles, &BuiltinActorsMetadata{
|
bundles = append(bundles, &BuiltinActorsMetadata{
|
||||||
|
@ -97,8 +97,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "butterflynet",
|
Network: "butterflynet",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzaceabeegs5mhrxwqodyt7u2ulxr2jg6eh5g3545ganqzkncnxzserue"),
|
ManifestCid: MustParseCid("bafy2bzacectxvbk77ntedhztd6sszp2btrtvsmy7lp2ypnrk6yl74zb34t2cq"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacebp7anjdtg2sohyt6lromx4xs7nujtwdfcsffnptphaayabx7ysxs"),
|
"account": MustParseCid("bafk2bzacebp7anjdtg2sohyt6lromx4xs7nujtwdfcsffnptphaayabx7ysxs"),
|
||||||
"cron": MustParseCid("bafk2bzacecu2y3awtemmglpkroiglulc2fj3gpdn6eazdqr6avcautiaighrg"),
|
"cron": MustParseCid("bafk2bzacecu2y3awtemmglpkroiglulc2fj3gpdn6eazdqr6avcautiaighrg"),
|
||||||
@ -112,7 +112,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzacedebvitdsztwebi44t5es4ls3p3hor252igzawr3s6uznmbvzh2ou"),
|
"reward": MustParseCid("bafk2bzacedebvitdsztwebi44t5es4ls3p3hor252igzawr3s6uznmbvzh2ou"),
|
||||||
"storagemarket": MustParseCid("bafk2bzaceb2tdeqtt2eqpzeb3gezuchb7g7uzbd52bgvcdt6bg3ckq7oisb74"),
|
"storagemarket": MustParseCid("bafk2bzaceb2tdeqtt2eqpzeb3gezuchb7g7uzbd52bgvcdt6bg3ckq7oisb74"),
|
||||||
"storageminer": MustParseCid("bafk2bzacea2jzzulmz6ktj6vndjheybz2io3vznnhsb32zberpaqeo7s7xa56"),
|
"storageminer": MustParseCid("bafk2bzaceb62clldtod2jimnri5k2koxttf6vqtlsvkjhnwduzs7sgsoakglw"),
|
||||||
"storagepower": MustParseCid("bafk2bzacedxvlj5xmhytdjrjqyonz37duvxb2ioyzk75c27yypkqalxuh3xh6"),
|
"storagepower": MustParseCid("bafk2bzacedxvlj5xmhytdjrjqyonz37duvxb2ioyzk75c27yypkqalxuh3xh6"),
|
||||||
"system": MustParseCid("bafk2bzacec3vwj2chzaram3iqupkbfiein5h2l5qiltlrngbju2vg5umelclm"),
|
"system": MustParseCid("bafk2bzacec3vwj2chzaram3iqupkbfiein5h2l5qiltlrngbju2vg5umelclm"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzacedv2irkql7nil3w5v3ohqq3e54w62pxeoppjmaktzokolaaoh5ksu"),
|
"verifiedregistry": MustParseCid("bafk2bzacedv2irkql7nil3w5v3ohqq3e54w62pxeoppjmaktzokolaaoh5ksu"),
|
||||||
@ -203,8 +203,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "calibrationnet",
|
Network: "calibrationnet",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru"),
|
ManifestCid: MustParseCid("bafy2bzacednzb3pkrfnbfhmoqtb3bc6dgvxszpqklf3qcc7qzcage4ewzxsca"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacechwwxdqvggkdylm37zldjsra2ivkdzwp7fee56bzxbzs544wv6u6"),
|
"account": MustParseCid("bafk2bzacechwwxdqvggkdylm37zldjsra2ivkdzwp7fee56bzxbzs544wv6u6"),
|
||||||
"cron": MustParseCid("bafk2bzacec4gdxxkqwxqqodsv6ug5dmdbqdfqwyqfek3yhxc2wweh5psxaeq6"),
|
"cron": MustParseCid("bafk2bzacec4gdxxkqwxqqodsv6ug5dmdbqdfqwyqfek3yhxc2wweh5psxaeq6"),
|
||||||
@ -218,7 +218,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzacedra77pcglf7vdca2itcaa4vd6xrxynxmgfgdjdxqxfwqyhtoxehy"),
|
"reward": MustParseCid("bafk2bzacedra77pcglf7vdca2itcaa4vd6xrxynxmgfgdjdxqxfwqyhtoxehy"),
|
||||||
"storagemarket": MustParseCid("bafk2bzacea7g46y7xxu2zjq2h75x6mmx3utz2uxnlvnwi6tzpsvulna3bmiva"),
|
"storagemarket": MustParseCid("bafk2bzacea7g46y7xxu2zjq2h75x6mmx3utz2uxnlvnwi6tzpsvulna3bmiva"),
|
||||||
"storageminer": MustParseCid("bafk2bzaced7emkbbnrewv5uvrokxpf5tlm4jslu2jsv77ofw2yqdglg657uie"),
|
"storageminer": MustParseCid("bafk2bzaceb7qzqsi5uyxe4o5iuasi47l2hnznvmqr2eu4pl3qscvarjqlnuxo"),
|
||||||
"storagepower": MustParseCid("bafk2bzacedd3ka44k7d46ckbinjhv3diyuu2epgbyvhqqyjkc64qlrg3wlgzi"),
|
"storagepower": MustParseCid("bafk2bzacedd3ka44k7d46ckbinjhv3diyuu2epgbyvhqqyjkc64qlrg3wlgzi"),
|
||||||
"system": MustParseCid("bafk2bzacecioupndtcnyw6iq2hbrxag3aufvczlv5nobnfbkbywqzcyfaa376"),
|
"system": MustParseCid("bafk2bzacecioupndtcnyw6iq2hbrxag3aufvczlv5nobnfbkbywqzcyfaa376"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzaceavldupmf7bimeeacs67z5xdfdlfca6p7sn6bev3mt5ggepfqvhqo"),
|
"verifiedregistry": MustParseCid("bafk2bzaceavldupmf7bimeeacs67z5xdfdlfca6p7sn6bev3mt5ggepfqvhqo"),
|
||||||
@ -318,8 +318,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "caterpillarnet",
|
Network: "caterpillarnet",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzacechvmc3iy6qrsbb6xwjhjibqpznqnkajowjsdmrq42ie5hysqemqa"),
|
ManifestCid: MustParseCid("bafy2bzacebxiub6qsy67asvl5cx33x5vjbuqinalmf3xtnbmokxmmklzdkvei"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacecereuhejfvodut5357cai4lmhsyr7uenhcxvmw6jpmhe6auuly32"),
|
"account": MustParseCid("bafk2bzacecereuhejfvodut5357cai4lmhsyr7uenhcxvmw6jpmhe6auuly32"),
|
||||||
"cron": MustParseCid("bafk2bzacebo2whgy6jla4jsf5j4ovlqm2e4eepedlpw5wadas33yxmunis4b4"),
|
"cron": MustParseCid("bafk2bzacebo2whgy6jla4jsf5j4ovlqm2e4eepedlpw5wadas33yxmunis4b4"),
|
||||||
@ -333,7 +333,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzaceb2x5zgkrho373l3ippp6krs7brugssg6hj2tib22xmqjzdm2o25a"),
|
"reward": MustParseCid("bafk2bzaceb2x5zgkrho373l3ippp6krs7brugssg6hj2tib22xmqjzdm2o25a"),
|
||||||
"storagemarket": MustParseCid("bafk2bzaced5j6drzmsebpxbf2dtptrc5tyidlbftdljqxavxqb57s2qpbvdek"),
|
"storagemarket": MustParseCid("bafk2bzaced5j6drzmsebpxbf2dtptrc5tyidlbftdljqxavxqb57s2qpbvdek"),
|
||||||
"storageminer": MustParseCid("bafk2bzacec7al5izu3ynnb7wg6fxxck3hebtkvlgynufjwcio57jd3n4ke2ue"),
|
"storageminer": MustParseCid("bafk2bzaceckgusfenkczxolfczvnygnuhxbou5to2skwwngbkihla7hgdv4yy"),
|
||||||
"storagepower": MustParseCid("bafk2bzaceagp6ilkltsltwii66nz6a4zen4qtfk7rdkvdv3gzq7fbv4ivox3u"),
|
"storagepower": MustParseCid("bafk2bzaceagp6ilkltsltwii66nz6a4zen4qtfk7rdkvdv3gzq7fbv4ivox3u"),
|
||||||
"system": MustParseCid("bafk2bzacedye5j5uxox7knb6zlnhseaadztyav76mjbyk5qslhhbpiy5cdtt2"),
|
"system": MustParseCid("bafk2bzacedye5j5uxox7knb6zlnhseaadztyav76mjbyk5qslhhbpiy5cdtt2"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzacecduww5pirr7dvaijjijw4gf6ygf7vipgxh4scvv6vseo46gueb46"),
|
"verifiedregistry": MustParseCid("bafk2bzacecduww5pirr7dvaijjijw4gf6ygf7vipgxh4scvv6vseo46gueb46"),
|
||||||
@ -424,8 +424,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "devnet",
|
Network: "devnet",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzaceau5i7eanhvss22z5ixmyrihilfniqn22tvkecjj56akz4xj7fvku"),
|
ManifestCid: MustParseCid("bafy2bzaceasjdukhhyjbegpli247vbf5h64f7uvxhhebdihuqsj2mwisdwa6o"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacedki4apynvdxxuoigmqkgaktgy2erjftoxqxqaklnelgveyaqknfu"),
|
"account": MustParseCid("bafk2bzacedki4apynvdxxuoigmqkgaktgy2erjftoxqxqaklnelgveyaqknfu"),
|
||||||
"cron": MustParseCid("bafk2bzacebjpczf7qtcisy3zdp3sqoohxe75tgupmdo5dr26vh7orzrsjn3b2"),
|
"cron": MustParseCid("bafk2bzacebjpczf7qtcisy3zdp3sqoohxe75tgupmdo5dr26vh7orzrsjn3b2"),
|
||||||
@ -439,7 +439,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzacebzso6xkjxdscbpncw7el2d4hap6lfkgwqzrbc76lzp33vkwk6obc"),
|
"reward": MustParseCid("bafk2bzacebzso6xkjxdscbpncw7el2d4hap6lfkgwqzrbc76lzp33vkwk6obc"),
|
||||||
"storagemarket": MustParseCid("bafk2bzacebzg74vyk3gzbhnz4zviwvxblyar574mtd6ayognmsvlkriejmunu"),
|
"storagemarket": MustParseCid("bafk2bzacebzg74vyk3gzbhnz4zviwvxblyar574mtd6ayognmsvlkriejmunu"),
|
||||||
"storageminer": MustParseCid("bafk2bzaceckqrzomdnfb35byrhabrmmapxplj66cv3efw7u62qswjaqsuxah4"),
|
"storageminer": MustParseCid("bafk2bzacecs262232b3awcrilyzpdketeayyqzzwgoavtxilgjvayrz55ovk4"),
|
||||||
"storagepower": MustParseCid("bafk2bzacebbtj2m2ajawfuzxqz5nmdep7xevjo2qfjqa5tx3vr5m6qojolya4"),
|
"storagepower": MustParseCid("bafk2bzacebbtj2m2ajawfuzxqz5nmdep7xevjo2qfjqa5tx3vr5m6qojolya4"),
|
||||||
"system": MustParseCid("bafk2bzacecnau5wddulbsvwn75tc3w75jrlvkybgrlxs4ngonqab6xq3eowvg"),
|
"system": MustParseCid("bafk2bzacecnau5wddulbsvwn75tc3w75jrlvkybgrlxs4ngonqab6xq3eowvg"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzacec37mddea65nvh4htsagtryfa3sq6i67utcupslyhzbhjhoy6hopa"),
|
"verifiedregistry": MustParseCid("bafk2bzacec37mddea65nvh4htsagtryfa3sq6i67utcupslyhzbhjhoy6hopa"),
|
||||||
@ -553,8 +553,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "mainnet",
|
Network: "mainnet",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzacecooh5cjxkmraawn7wvmrx7k5hwdmbvqdteujr33mnaeclsazyb6a"),
|
ManifestCid: MustParseCid("bafy2bzaceapkgfggvxyllnmuogtwasmsv5qi2qzhc2aybockd6kag2g5lzaio"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa"),
|
"account": MustParseCid("bafk2bzaceboftg75mdiba7xbo2i3uvgtca4brhnr3u5ptihonixgpnrvhpxoa"),
|
||||||
"cron": MustParseCid("bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls"),
|
"cron": MustParseCid("bafk2bzacechxjkfe2cehx4s7skj3wzfpzf7zolds64khrrrs66bhazsemktls"),
|
||||||
@ -568,7 +568,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u"),
|
"reward": MustParseCid("bafk2bzacealqnxn5lwzwexd6reav4dppypquklx2ujlnvaxiqk2tzstyvkp5u"),
|
||||||
"storagemarket": MustParseCid("bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4"),
|
"storagemarket": MustParseCid("bafk2bzacedylkg5am446lcuih4voyzdn4yjeqfsxfzh5b6mcuhx4mok5ph5c4"),
|
||||||
"storageminer": MustParseCid("bafk2bzacedio7wfaqutc4w6gl2dwqkgpcatz2r223ms74zxiovbjrfxmzeiou"),
|
"storageminer": MustParseCid("bafk2bzacedo75pabe4i2l3hvhtsjmijrcytd2y76xwe573uku25fi7sugqld6"),
|
||||||
"storagepower": MustParseCid("bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6"),
|
"storagepower": MustParseCid("bafk2bzacecsij5tpfzjpfuckxvccv2p3bdqjklkrfyyoei6lx5dyj5j4fvjm6"),
|
||||||
"system": MustParseCid("bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu"),
|
"system": MustParseCid("bafk2bzacebfqrja2hip7esf4eafxjmu6xcogoqu5xxtgdg7xa5szgvvdguchu"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q"),
|
"verifiedregistry": MustParseCid("bafk2bzacedudgflxc75c77c6zkmfyq4u2xuk7k6xw6dfdccarjrvxx453b77q"),
|
||||||
@ -659,8 +659,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "testing",
|
Network: "testing",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzacec7artlmtdmfuhurd2i7dgturiveblruub5xh3yizjtp5qzye3dly"),
|
ManifestCid: MustParseCid("bafy2bzaceaaxd6ytavsek5bi5soqo7qamezuqfyfjy42es2clpbzu3pwzcmye"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"),
|
"account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"),
|
||||||
"cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"),
|
"cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"),
|
||||||
@ -674,7 +674,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"),
|
"reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"),
|
||||||
"storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"),
|
"storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"),
|
||||||
"storageminer": MustParseCid("bafk2bzaceclcbtu6edh73cn7ga7kzkmxcfnjt7jnxolkc5id6l6f7sztevm24"),
|
"storageminer": MustParseCid("bafk2bzacecvkbsjhufq2zr2dojohukdnql3gkqzdkmtp2hxvn5kczxp3tu6ko"),
|
||||||
"storagepower": MustParseCid("bafk2bzacedexrf5qplrrl5xzijfrthjdqwodfs5e6zj5kpztc7qnywbqdyiii"),
|
"storagepower": MustParseCid("bafk2bzacedexrf5qplrrl5xzijfrthjdqwodfs5e6zj5kpztc7qnywbqdyiii"),
|
||||||
"system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"),
|
"system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"),
|
"verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"),
|
||||||
@ -765,8 +765,8 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
}, {
|
}, {
|
||||||
Network: "testing-fake-proofs",
|
Network: "testing-fake-proofs",
|
||||||
Version: 12,
|
Version: 12,
|
||||||
BundleGitTag: "v12.0.0-rc.2",
|
BundleGitTag: "v12.0.0-rc.3",
|
||||||
ManifestCid: MustParseCid("bafy2bzaceand7owcb3omq7zjwir2q3lqapprl2eyiwpzv6oqs5bok4vzzqjbu"),
|
ManifestCid: MustParseCid("bafy2bzacecver4l5d6jiuzubhrtcxjjfdx6jnxbmyp4bselol2atgkhz3e3um"),
|
||||||
Actors: map[string]cid.Cid{
|
Actors: map[string]cid.Cid{
|
||||||
"account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"),
|
"account": MustParseCid("bafk2bzacea74qqkfvacykmq5emzqblh4f4nmxdkiyixxpzs7kkcfnbfa7cb6m"),
|
||||||
"cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"),
|
"cron": MustParseCid("bafk2bzacecotbu7k6awdzfzakf7g5iaas6gswtunjnnb2xm2klqoshjgb4imy"),
|
||||||
@ -780,7 +780,7 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet
|
|||||||
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
"placeholder": MustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"),
|
||||||
"reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"),
|
"reward": MustParseCid("bafk2bzaceaajyncjxcrl7wbb6ukzkueyqz4uyekxpmtn4mpndkf7ksmggopzq"),
|
||||||
"storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"),
|
"storagemarket": MustParseCid("bafk2bzaced6cexdcinwjhtfvuxgkxukiejp3goylaxtvhqfd24rs5z7g2z7dm"),
|
||||||
"storageminer": MustParseCid("bafk2bzacebbusvtnyhi7mimbnx2tw2uyvrr3fbmncbf6frx6e4kvjvoqllu36"),
|
"storageminer": MustParseCid("bafk2bzacedapzgrbc2rsmuqex76ftt2b62q6opi56gh2dr2oyyzuwin62rweg"),
|
||||||
"storagepower": MustParseCid("bafk2bzacecdwijcbbryinjtm27pdinqqkyzoskri24pwsvsadwcq2alkkjpnc"),
|
"storagepower": MustParseCid("bafk2bzacecdwijcbbryinjtm27pdinqqkyzoskri24pwsvsadwcq2alkkjpnc"),
|
||||||
"system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"),
|
"system": MustParseCid("bafk2bzacecp4roanbxq3bflftlkipsoqqxio5etjjnzxus5pcu7lq43fnxb34"),
|
||||||
"verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"),
|
"verifiedregistry": MustParseCid("bafk2bzaceandytrgcnuvizfi47sijbqh6c243vjtzlzumexm6kjv7s7hye45g"),
|
||||||
|
@ -70,6 +70,9 @@ var UpgradeWatermelonHeight = abi.ChainEpoch(200)
|
|||||||
// This fix upgrade only ran on calibrationnet
|
// This fix upgrade only ran on calibrationnet
|
||||||
const UpgradeWatermelonFixHeight = -100
|
const UpgradeWatermelonFixHeight = -100
|
||||||
|
|
||||||
|
// This fix upgrade only ran on calibrationnet
|
||||||
|
const UpgradeWatermelonFix2Height = -101
|
||||||
|
|
||||||
var DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
var DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
||||||
0: DrandMainnet,
|
0: DrandMainnet,
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,9 @@ const UpgradeWatermelonHeight = 400
|
|||||||
// This fix upgrade only ran on calibrationnet
|
// This fix upgrade only ran on calibrationnet
|
||||||
const UpgradeWatermelonFixHeight = -100
|
const UpgradeWatermelonFixHeight = -100
|
||||||
|
|
||||||
|
// This fix upgrade only ran on calibrationnet
|
||||||
|
const UpgradeWatermelonFix2Height = -101
|
||||||
|
|
||||||
var SupportedProofTypes = []abi.RegisteredSealProof{
|
var SupportedProofTypes = []abi.RegisteredSealProof{
|
||||||
abi.RegisteredSealProof_StackedDrg512MiBV1,
|
abi.RegisteredSealProof_StackedDrg512MiBV1,
|
||||||
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
||||||
|
@ -85,6 +85,9 @@ const UpgradeWatermelonHeight = 1013134
|
|||||||
// 2023-11-07T13:00:00Z
|
// 2023-11-07T13:00:00Z
|
||||||
const UpgradeWatermelonFixHeight = 1070494
|
const UpgradeWatermelonFixHeight = 1070494
|
||||||
|
|
||||||
|
// 2023-11-21T13:00:00Z
|
||||||
|
const UpgradeWatermelonFix2Height = 1108174
|
||||||
|
|
||||||
var SupportedProofTypes = []abi.RegisteredSealProof{
|
var SupportedProofTypes = []abi.RegisteredSealProof{
|
||||||
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
||||||
abi.RegisteredSealProof_StackedDrg64GiBV1,
|
abi.RegisteredSealProof_StackedDrg64GiBV1,
|
||||||
|
@ -59,6 +59,9 @@ const UpgradeWatermelonHeight = 50
|
|||||||
// This fix upgrade only ran on calibrationnet
|
// This fix upgrade only ran on calibrationnet
|
||||||
const UpgradeWatermelonFixHeight = -1
|
const UpgradeWatermelonFixHeight = -1
|
||||||
|
|
||||||
|
// This fix upgrade only ran on calibrationnet
|
||||||
|
const UpgradeWatermelonFix2Height = -2
|
||||||
|
|
||||||
var DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
var DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
||||||
0: DrandMainnet,
|
0: DrandMainnet,
|
||||||
}
|
}
|
||||||
|
@ -95,12 +95,15 @@ const UpgradeLightningHeight = 2809800
|
|||||||
// 2023-05-18T13:00:00Z
|
// 2023-05-18T13:00:00Z
|
||||||
const UpgradeThunderHeight = UpgradeLightningHeight + 2880*21
|
const UpgradeThunderHeight = UpgradeLightningHeight + 2880*21
|
||||||
|
|
||||||
// 2023-11-29T13:30:00Z
|
// 2023-12-12T13:30:00Z
|
||||||
var UpgradeWatermelonHeight = abi.ChainEpoch(3431940)
|
var UpgradeWatermelonHeight = abi.ChainEpoch(3469380)
|
||||||
|
|
||||||
// This fix upgrade only ran on calibrationnet
|
// This fix upgrade only ran on calibrationnet
|
||||||
const UpgradeWatermelonFixHeight = -1
|
const UpgradeWatermelonFixHeight = -1
|
||||||
|
|
||||||
|
// This fix upgrade only ran on calibrationnet
|
||||||
|
const UpgradeWatermelonFix2Height = -2
|
||||||
|
|
||||||
var SupportedProofTypes = []abi.RegisteredSealProof{
|
var SupportedProofTypes = []abi.RegisteredSealProof{
|
||||||
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
abi.RegisteredSealProof_StackedDrg32GiBV1,
|
||||||
abi.RegisteredSealProof_StackedDrg64GiBV1,
|
abi.RegisteredSealProof_StackedDrg64GiBV1,
|
||||||
|
@ -87,30 +87,31 @@ var (
|
|||||||
UpgradeBreezeHeight abi.ChainEpoch = -1
|
UpgradeBreezeHeight abi.ChainEpoch = -1
|
||||||
BreezeGasTampingDuration abi.ChainEpoch = 0
|
BreezeGasTampingDuration abi.ChainEpoch = 0
|
||||||
|
|
||||||
UpgradeSmokeHeight abi.ChainEpoch = -1
|
UpgradeSmokeHeight abi.ChainEpoch = -1
|
||||||
UpgradeIgnitionHeight abi.ChainEpoch = -2
|
UpgradeIgnitionHeight abi.ChainEpoch = -2
|
||||||
UpgradeRefuelHeight abi.ChainEpoch = -3
|
UpgradeRefuelHeight abi.ChainEpoch = -3
|
||||||
UpgradeTapeHeight abi.ChainEpoch = -4
|
UpgradeTapeHeight abi.ChainEpoch = -4
|
||||||
UpgradeAssemblyHeight abi.ChainEpoch = 10
|
UpgradeAssemblyHeight abi.ChainEpoch = 10
|
||||||
UpgradeLiftoffHeight abi.ChainEpoch = -5
|
UpgradeLiftoffHeight abi.ChainEpoch = -5
|
||||||
UpgradeKumquatHeight abi.ChainEpoch = -6
|
UpgradeKumquatHeight abi.ChainEpoch = -6
|
||||||
UpgradeCalicoHeight abi.ChainEpoch = -8
|
UpgradeCalicoHeight abi.ChainEpoch = -8
|
||||||
UpgradePersianHeight abi.ChainEpoch = -9
|
UpgradePersianHeight abi.ChainEpoch = -9
|
||||||
UpgradeOrangeHeight abi.ChainEpoch = -10
|
UpgradeOrangeHeight abi.ChainEpoch = -10
|
||||||
UpgradeClausHeight abi.ChainEpoch = -11
|
UpgradeClausHeight abi.ChainEpoch = -11
|
||||||
UpgradeTrustHeight abi.ChainEpoch = -12
|
UpgradeTrustHeight abi.ChainEpoch = -12
|
||||||
UpgradeNorwegianHeight abi.ChainEpoch = -13
|
UpgradeNorwegianHeight abi.ChainEpoch = -13
|
||||||
UpgradeTurboHeight abi.ChainEpoch = -14
|
UpgradeTurboHeight abi.ChainEpoch = -14
|
||||||
UpgradeHyperdriveHeight abi.ChainEpoch = -15
|
UpgradeHyperdriveHeight abi.ChainEpoch = -15
|
||||||
UpgradeChocolateHeight abi.ChainEpoch = -16
|
UpgradeChocolateHeight abi.ChainEpoch = -16
|
||||||
UpgradeOhSnapHeight abi.ChainEpoch = -17
|
UpgradeOhSnapHeight abi.ChainEpoch = -17
|
||||||
UpgradeSkyrHeight abi.ChainEpoch = -18
|
UpgradeSkyrHeight abi.ChainEpoch = -18
|
||||||
UpgradeSharkHeight abi.ChainEpoch = -19
|
UpgradeSharkHeight abi.ChainEpoch = -19
|
||||||
UpgradeHyggeHeight abi.ChainEpoch = -20
|
UpgradeHyggeHeight abi.ChainEpoch = -20
|
||||||
UpgradeLightningHeight abi.ChainEpoch = -21
|
UpgradeLightningHeight abi.ChainEpoch = -21
|
||||||
UpgradeThunderHeight abi.ChainEpoch = -22
|
UpgradeThunderHeight abi.ChainEpoch = -22
|
||||||
UpgradeWatermelonHeight abi.ChainEpoch = -23
|
UpgradeWatermelonHeight abi.ChainEpoch = -23
|
||||||
UpgradeWatermelonFixHeight abi.ChainEpoch = -24
|
UpgradeWatermelonFixHeight abi.ChainEpoch = -24
|
||||||
|
UpgradeWatermelonFix2Height abi.ChainEpoch = -25
|
||||||
|
|
||||||
DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
DrandSchedule = map[abi.ChainEpoch]DrandEnum{
|
||||||
0: DrandMainnet,
|
0: DrandMainnet,
|
||||||
|
@ -279,8 +279,13 @@ func DefaultUpgradeSchedule() stmgr.UpgradeSchedule {
|
|||||||
}, {
|
}, {
|
||||||
Height: build.UpgradeWatermelonFixHeight,
|
Height: build.UpgradeWatermelonFixHeight,
|
||||||
Network: network.Version21,
|
Network: network.Version21,
|
||||||
Migration: upgradeActorsV12Fix,
|
Migration: buildUpgradeActorsV12MinerFix(calibnetv12BuggyMinerCID1, calibnetv12BuggyManifestCID2),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Height: build.UpgradeWatermelonFix2Height,
|
||||||
|
Network: network.Version21,
|
||||||
|
Migration: buildUpgradeActorsV12MinerFix(calibnetv12BuggyMinerCID2, calibnetv12CorrectManifestCID1),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, u := range updates {
|
for _, u := range updates {
|
||||||
@ -1876,7 +1881,17 @@ func UpgradeActorsV12(ctx context.Context, sm *stmgr.StateManager, cache stmgr.M
|
|||||||
return newRoot, nil
|
return newRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var calibnetv12BuggyBundle = cid.MustParse("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs")
|
var (
|
||||||
|
calibnetv12BuggyMinerCID1 = cid.MustParse("bafk2bzacecnh2ouohmonvebq7uughh4h3ppmg4cjsk74dzxlbbtlcij4xbzxq")
|
||||||
|
calibnetv12BuggyMinerCID2 = cid.MustParse("bafk2bzaced7emkbbnrewv5uvrokxpf5tlm4jslu2jsv77ofw2yqdglg657uie")
|
||||||
|
|
||||||
|
calibnetv12BuggyBundleSuffix1 = "calibrationnet-12-rc1"
|
||||||
|
calibnetv12BuggyBundleSuffix2 = "calibrationnet-12-rc2"
|
||||||
|
|
||||||
|
calibnetv12BuggyManifestCID1 = cid.MustParse("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs")
|
||||||
|
calibnetv12BuggyManifestCID2 = cid.MustParse("bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru")
|
||||||
|
calibnetv12CorrectManifestCID1 = cid.MustParse("bafy2bzacednzb3pkrfnbfhmoqtb3bc6dgvxszpqklf3qcc7qzcage4ewzxsca")
|
||||||
|
)
|
||||||
|
|
||||||
func upgradeActorsV12Common(
|
func upgradeActorsV12Common(
|
||||||
ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache,
|
ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache,
|
||||||
@ -1923,7 +1938,7 @@ func upgradeActorsV12Common(
|
|||||||
|
|
||||||
var manifestCid cid.Cid
|
var manifestCid cid.Cid
|
||||||
if initState.NetworkName == "calibrationnet" {
|
if initState.NetworkName == "calibrationnet" {
|
||||||
embedded, ok := build.GetEmbeddedBuiltinActorsBundle(actorstypes.Version12, "calibrationnet-buggy")
|
embedded, ok := build.GetEmbeddedBuiltinActorsBundle(actorstypes.Version12, calibnetv12BuggyBundleSuffix1)
|
||||||
if !ok {
|
if !ok {
|
||||||
return cid.Undef, xerrors.Errorf("didn't find buggy calibrationnet bundle")
|
return cid.Undef, xerrors.Errorf("didn't find buggy calibrationnet bundle")
|
||||||
}
|
}
|
||||||
@ -1934,8 +1949,8 @@ func upgradeActorsV12Common(
|
|||||||
return cid.Undef, xerrors.Errorf("failed to load buggy calibnet bundle: %w", err)
|
return cid.Undef, xerrors.Errorf("failed to load buggy calibnet bundle: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if manifestCid != calibnetv12BuggyBundle {
|
if manifestCid != calibnetv12BuggyManifestCID1 {
|
||||||
return cid.Undef, xerrors.Errorf("didn't find expected buggy calibnet bundle manifest: %s != %s", manifestCid, calibnetv12BuggyBundle)
|
return cid.Undef, xerrors.Errorf("didn't find expected buggy calibnet bundle manifest: %s != %s", manifestCid, calibnetv12BuggyManifestCID1)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ok := false
|
ok := false
|
||||||
@ -1974,148 +1989,161 @@ func upgradeActorsV12Common(
|
|||||||
return newRoot, nil
|
return newRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////
|
// ////////////////////
|
||||||
|
func buildUpgradeActorsV12MinerFix(oldBuggyMinerCID, newManifestCID cid.Cid) func(ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, cb stmgr.ExecMonitor, root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet) (cid.Cid, error) {
|
||||||
|
return func(ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, cb stmgr.ExecMonitor, root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet) (cid.Cid, error) {
|
||||||
|
stateStore := sm.ChainStore().StateBlockstore()
|
||||||
|
adtStore := store.ActorStore(ctx, stateStore)
|
||||||
|
|
||||||
var calibnetv12BuggyMinerCID = cid.MustParse("bafk2bzacecnh2ouohmonvebq7uughh4h3ppmg4cjsk74dzxlbbtlcij4xbzxq")
|
// ensure that the manifest is loaded in the blockstore
|
||||||
|
|
||||||
func upgradeActorsV12Fix(ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, cb stmgr.ExecMonitor,
|
// this loads the "correct" bundle for UpgradeWatermelonFix2Height
|
||||||
root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet) (cid.Cid, error) {
|
if err := bundle.LoadBundles(ctx, stateStore, actorstypes.Version12); err != nil {
|
||||||
stateStore := sm.ChainStore().StateBlockstore()
|
return cid.Undef, xerrors.Errorf("failed to load manifest bundle: %w", err)
|
||||||
adtStore := store.ActorStore(ctx, stateStore)
|
|
||||||
|
|
||||||
// ensure that the manifest is loaded in the blockstore
|
|
||||||
if err := bundle.LoadBundles(ctx, stateStore, actorstypes.Version12); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to load manifest bundle: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load input state tree
|
|
||||||
actorsIn, err := state.LoadStateTree(adtStore, root)
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("loading state tree: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// load old manifest data
|
|
||||||
systemActor, err := actorsIn.GetActor(builtin.SystemActorAddr)
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to get system actor: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var systemState system11.State
|
|
||||||
if err := adtStore.Get(ctx, systemActor.Head, &systemState); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to get system actor state: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var oldManifestData manifest.ManifestData
|
|
||||||
if err := adtStore.Get(ctx, systemState.BuiltinActors, &oldManifestData); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to get old manifest data: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
newManifestCID, ok := actors.GetManifest(actorstypes.Version12)
|
|
||||||
if !ok {
|
|
||||||
return cid.Undef, xerrors.Errorf("no manifest CID for v12 upgrade")
|
|
||||||
}
|
|
||||||
|
|
||||||
// load new manifest
|
|
||||||
var newManifest manifest.Manifest
|
|
||||||
if err := adtStore.Get(ctx, newManifestCID, &newManifest); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("error reading actor manifest: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := newManifest.Load(ctx, adtStore); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("error loading actor manifest: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// build the CID mapping
|
|
||||||
codeMapping := make(map[cid.Cid]cid.Cid, len(oldManifestData.Entries))
|
|
||||||
for _, oldEntry := range oldManifestData.Entries {
|
|
||||||
newCID, ok := newManifest.Get(oldEntry.Name)
|
|
||||||
if !ok {
|
|
||||||
return cid.Undef, xerrors.Errorf("missing manifest entry for %s", oldEntry.Name)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: we expect newCID to be the same as oldEntry.Code for all actors except the miner actor
|
// this loads the second buggy bundle, for UpgradeWatermelonFixHeight
|
||||||
codeMapping[oldEntry.Code] = newCID
|
embedded, ok := build.GetEmbeddedBuiltinActorsBundle(actorstypes.Version12, calibnetv12BuggyBundleSuffix2)
|
||||||
}
|
|
||||||
|
|
||||||
// Create empty actorsOut
|
|
||||||
|
|
||||||
actorsOut, err := state.NewStateTree(adtStore, actorsIn.Version())
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to create new tree: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform the migration
|
|
||||||
err = actorsIn.ForEach(func(a address.Address, actor *types.Actor) error {
|
|
||||||
newCid, ok := codeMapping[actor.Code]
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return xerrors.Errorf("didn't find mapping for %s", actor.Code)
|
return cid.Undef, xerrors.Errorf("didn't find buggy calibrationnet bundle")
|
||||||
}
|
}
|
||||||
|
|
||||||
return actorsOut.SetActor(a, &types.ActorV5{
|
_, err := bundle.LoadBundle(ctx, stateStore, bytes.NewReader(embedded))
|
||||||
Code: newCid,
|
|
||||||
Head: actor.Head,
|
|
||||||
Nonce: actor.Nonce,
|
|
||||||
Balance: actor.Balance,
|
|
||||||
Address: actor.Address,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to perform migration: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
systemState.BuiltinActors = newManifest.Data
|
|
||||||
newSystemHead, err := adtStore.Put(ctx, &systemState)
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to put new system state: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
systemActor.Head = newSystemHead
|
|
||||||
if err = actorsOut.SetActor(builtin.SystemActorAddr, systemActor); err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to put new system actor: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity checking
|
|
||||||
|
|
||||||
err = actorsIn.ForEach(func(a address.Address, inActor *types.Actor) error {
|
|
||||||
outActor, err := actorsOut.GetActor(a)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("failed to get actor in outTree: %w", err)
|
return cid.Undef, xerrors.Errorf("failed to load buggy calibnet bundle: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if inActor.Nonce != outActor.Nonce {
|
// now confirm we have the one we're migrating to
|
||||||
return xerrors.Errorf("mismatched nonce for actor %s", a)
|
if haveManifest, err := stateStore.Has(ctx, newManifestCID); err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("blockstore error when loading manifest %s: %w", newManifestCID, err)
|
||||||
|
} else if !haveManifest {
|
||||||
|
return cid.Undef, xerrors.Errorf("missing new manifest %s in blockstore", newManifestCID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !inActor.Balance.Equals(outActor.Balance) {
|
// Load input state tree
|
||||||
return xerrors.Errorf("mismatched balance for actor %s: %d != %d", a, inActor.Balance, outActor.Balance)
|
actorsIn, err := state.LoadStateTree(adtStore, root)
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("loading state tree: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if inActor.Address != outActor.Address && inActor.Address.String() != outActor.Address.String() {
|
// load old manifest data
|
||||||
return xerrors.Errorf("mismatched address for actor %s: %s != %s", a, inActor.Address, outActor.Address)
|
systemActor, err := actorsIn.GetActor(builtin.SystemActorAddr)
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to get system actor: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if inActor.Head != outActor.Head && a != builtin.SystemActorAddr {
|
var systemState system11.State
|
||||||
return xerrors.Errorf("mismatched head for actor %s", a)
|
if err := adtStore.Get(ctx, systemActor.Head, &systemState); err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to get system actor state: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is the hard-coded "buggy" miner actor Code ID
|
var oldManifestData manifest.ManifestData
|
||||||
if inActor.Code != calibnetv12BuggyMinerCID && inActor.Code != outActor.Code {
|
if err := adtStore.Get(ctx, systemState.BuiltinActors, &oldManifestData); err != nil {
|
||||||
return xerrors.Errorf("unexpected change in code for actor %s", a)
|
return cid.Undef, xerrors.Errorf("failed to get old manifest data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
// load new manifest
|
||||||
})
|
var newManifest manifest.Manifest
|
||||||
if err != nil {
|
if err := adtStore.Get(ctx, newManifestCID, &newManifest); err != nil {
|
||||||
return cid.Undef, xerrors.Errorf("failed to sanity check migration: %w", err)
|
return cid.Undef, xerrors.Errorf("error reading actor manifest: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := newManifest.Load(ctx, adtStore); err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("error loading actor manifest: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// build the CID mapping
|
||||||
|
codeMapping := make(map[cid.Cid]cid.Cid, len(oldManifestData.Entries))
|
||||||
|
for _, oldEntry := range oldManifestData.Entries {
|
||||||
|
newCID, ok := newManifest.Get(oldEntry.Name)
|
||||||
|
if !ok {
|
||||||
|
return cid.Undef, xerrors.Errorf("missing manifest entry for %s", oldEntry.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: we expect newCID to be the same as oldEntry.Code for all actors except the miner actor
|
||||||
|
codeMapping[oldEntry.Code] = newCID
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create empty actorsOut
|
||||||
|
|
||||||
|
actorsOut, err := state.NewStateTree(adtStore, actorsIn.Version())
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to create new tree: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform the migration
|
||||||
|
err = actorsIn.ForEach(func(a address.Address, actor *types.Actor) error {
|
||||||
|
newCid, ok := codeMapping[actor.Code]
|
||||||
|
if !ok {
|
||||||
|
return xerrors.Errorf("didn't find mapping for %s", actor.Code)
|
||||||
|
}
|
||||||
|
|
||||||
|
return actorsOut.SetActor(a, &types.ActorV5{
|
||||||
|
Code: newCid,
|
||||||
|
Head: actor.Head,
|
||||||
|
Nonce: actor.Nonce,
|
||||||
|
Balance: actor.Balance,
|
||||||
|
Address: actor.Address,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to perform migration: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
systemState.BuiltinActors = newManifest.Data
|
||||||
|
newSystemHead, err := adtStore.Put(ctx, &systemState)
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to put new system state: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
systemActor.Head = newSystemHead
|
||||||
|
if err = actorsOut.SetActor(builtin.SystemActorAddr, systemActor); err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to put new system actor: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sanity checking
|
||||||
|
|
||||||
|
err = actorsIn.ForEach(func(a address.Address, inActor *types.Actor) error {
|
||||||
|
outActor, err := actorsOut.GetActor(a)
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("failed to get actor in outTree: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if inActor.Nonce != outActor.Nonce {
|
||||||
|
return xerrors.Errorf("mismatched nonce for actor %s", a)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !inActor.Balance.Equals(outActor.Balance) {
|
||||||
|
return xerrors.Errorf("mismatched balance for actor %s: %d != %d", a, inActor.Balance, outActor.Balance)
|
||||||
|
}
|
||||||
|
|
||||||
|
if inActor.Address != outActor.Address && inActor.Address.String() != outActor.Address.String() {
|
||||||
|
return xerrors.Errorf("mismatched address for actor %s: %s != %s", a, inActor.Address, outActor.Address)
|
||||||
|
}
|
||||||
|
|
||||||
|
if inActor.Head != outActor.Head && a != builtin.SystemActorAddr {
|
||||||
|
return xerrors.Errorf("mismatched head for actor %s", a)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actor Codes are only expected to change for the miner actor
|
||||||
|
if inActor.Code != oldBuggyMinerCID && inActor.Code != outActor.Code {
|
||||||
|
return xerrors.Errorf("unexpected change in code for actor %s", a)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to sanity check migration: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Persist the result.
|
||||||
|
newRoot, err := actorsOut.Flush(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to persist new state root: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return newRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist the result.
|
|
||||||
newRoot, err := actorsOut.Flush(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return cid.Undef, xerrors.Errorf("failed to persist new state root: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return newRoot, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user