-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8941 from filecoin-project/gstuart/actors-cids-ol…
…der-versions Feat: api: Api call to get actor cids works for versions < 16
- Loading branch information
Showing
17 changed files
with
386 additions
and
635 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,328 @@ | ||
package actors | ||
|
||
import ( | ||
"github.com/ipfs/go-cid" | ||
"golang.org/x/xerrors" | ||
|
||
builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" | ||
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" | ||
builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" | ||
builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" | ||
builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" | ||
builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" | ||
builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" | ||
) | ||
|
||
// GetActorCodeID looks up a builtin actor's code CID by actor version and canonical actor name. | ||
func GetActorCodeID(av Version, name string) (cid.Cid, bool) { | ||
|
||
// Actors V8 and above | ||
if av >= Version8 { | ||
if cids, ok := GetActorCodeIDsFromManifest(av); ok { | ||
c, ok := cids[name] | ||
return c, ok | ||
} | ||
} | ||
|
||
// Actors V7 and lower | ||
switch name { | ||
|
||
case AccountKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.AccountActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.AccountActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.AccountActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.AccountActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.AccountActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.AccountActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.AccountActorCodeID, true | ||
} | ||
|
||
case CronKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.CronActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.CronActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.CronActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.CronActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.CronActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.CronActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.CronActorCodeID, true | ||
} | ||
|
||
case InitKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.InitActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.InitActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.InitActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.InitActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.InitActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.InitActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.InitActorCodeID, true | ||
} | ||
|
||
case MarketKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.StorageMarketActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.StorageMarketActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.StorageMarketActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.StorageMarketActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.StorageMarketActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.StorageMarketActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.StorageMarketActorCodeID, true | ||
} | ||
|
||
case MinerKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.StorageMinerActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.StorageMinerActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.StorageMinerActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.StorageMinerActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.StorageMinerActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.StorageMinerActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.StorageMinerActorCodeID, true | ||
} | ||
|
||
case MultisigKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.MultisigActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.MultisigActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.MultisigActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.MultisigActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.MultisigActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.MultisigActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.MultisigActorCodeID, true | ||
} | ||
|
||
case PaychKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.PaymentChannelActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.PaymentChannelActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.PaymentChannelActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.PaymentChannelActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.PaymentChannelActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.PaymentChannelActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.PaymentChannelActorCodeID, true | ||
} | ||
|
||
case PowerKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.StoragePowerActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.StoragePowerActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.StoragePowerActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.StoragePowerActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.StoragePowerActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.StoragePowerActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.StoragePowerActorCodeID, true | ||
} | ||
|
||
case RewardKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.RewardActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.RewardActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.RewardActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.RewardActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.RewardActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.RewardActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.RewardActorCodeID, true | ||
} | ||
|
||
case SystemKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.SystemActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.SystemActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.SystemActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.SystemActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.SystemActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.SystemActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.SystemActorCodeID, true | ||
} | ||
|
||
case VerifregKey: | ||
switch av { | ||
|
||
case Version0: | ||
return builtin0.VerifiedRegistryActorCodeID, true | ||
|
||
case Version2: | ||
return builtin2.VerifiedRegistryActorCodeID, true | ||
|
||
case Version3: | ||
return builtin3.VerifiedRegistryActorCodeID, true | ||
|
||
case Version4: | ||
return builtin4.VerifiedRegistryActorCodeID, true | ||
|
||
case Version5: | ||
return builtin5.VerifiedRegistryActorCodeID, true | ||
|
||
case Version6: | ||
return builtin6.VerifiedRegistryActorCodeID, true | ||
|
||
case Version7: | ||
return builtin7.VerifiedRegistryActorCodeID, true | ||
} | ||
} | ||
|
||
return cid.Undef, false | ||
} | ||
|
||
// GetActorCodeIDs looks up all builtin actor's code CIDs by actor version. | ||
func GetActorCodeIDs(av Version) (map[string]cid.Cid, error) { | ||
cids, ok := GetActorCodeIDsFromManifest(av) | ||
if ok { | ||
return cids, nil | ||
} | ||
|
||
actorsKeys := GetBuiltinActorsKeys() | ||
synthCids := make(map[string]cid.Cid) | ||
|
||
for _, key := range actorsKeys { | ||
c, ok := GetActorCodeID(av, key) | ||
if !ok { | ||
return nil, xerrors.Errorf("could not find builtin actor cids for Actors version %d", av) | ||
} | ||
synthCids[key] = c | ||
} | ||
|
||
return synthCids, nil | ||
} |
Oops, something went wrong.