@@ -961,15 +961,28 @@ func (ln *localNetwork) addPermissionlessDelegators(
961
961
}
962
962
platformCli := platformvm .NewClient (clientURI )
963
963
// wallet needs txs for all previously created subnets
964
- preloadTXs := make ([]ids.ID , len (delegatorSpecs ))
964
+ subnetIDs := make ([]ids.ID , len (delegatorSpecs ))
965
965
for i , delegatorSpec := range delegatorSpecs {
966
966
subnetID , err := ids .FromString (delegatorSpec .SubnetID )
967
967
if err != nil {
968
968
return err
969
969
}
970
- preloadTXs [i ] = subnetID
970
+ subnetIDs [i ] = subnetID
971
971
}
972
- w , err := newWallet (ctx , clientURI , preloadTXs )
972
+ // check for all subnets to be permissionless
973
+ for _ , subnetID := range subnetIDs {
974
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
975
+ if err != nil {
976
+ return err
977
+ }
978
+ if ! b {
979
+ msg := fmt .Sprintf ("subnet %s is not permissionless" , subnetID )
980
+ ln .log .Info (logging .Red .Wrap (msg ))
981
+ return errors .New (msg )
982
+ }
983
+ }
984
+ // wallet needs txs for all existent subnets
985
+ w , err := newWallet (ctx , clientURI , subnetIDs )
973
986
if err != nil {
974
987
return err
975
988
}
@@ -1049,16 +1062,28 @@ func (ln *localNetwork) addPermissionlessValidators(
1049
1062
return err
1050
1063
}
1051
1064
platformCli := platformvm .NewClient (clientURI )
1052
- // wallet needs txs for all previously created subnets
1053
- preloadTXs := make ([]ids.ID , len (validatorSpecs ))
1065
+ subnetIDs := make ([]ids.ID , len (validatorSpecs ))
1054
1066
for i , validatorSpec := range validatorSpecs {
1055
1067
subnetID , err := ids .FromString (validatorSpec .SubnetID )
1056
1068
if err != nil {
1057
1069
return err
1058
1070
}
1059
- preloadTXs [i ] = subnetID
1071
+ subnetIDs [i ] = subnetID
1060
1072
}
1061
- w , err := newWallet (ctx , clientURI , preloadTXs )
1073
+ // check for all subnets to be permissionless
1074
+ for _ , subnetID := range subnetIDs {
1075
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
1076
+ if err != nil {
1077
+ return err
1078
+ }
1079
+ if ! b {
1080
+ msg := fmt .Sprintf ("subnet %s is not permissionless" , subnetID )
1081
+ ln .log .Info (logging .Red .Wrap (msg ))
1082
+ return errors .New (msg )
1083
+ }
1084
+ }
1085
+ // wallet needs txs for all existent subnets
1086
+ w , err := newWallet (ctx , clientURI , subnetIDs )
1062
1087
if err != nil {
1063
1088
return err
1064
1089
}
@@ -1170,20 +1195,32 @@ func (ln *localNetwork) transformToElasticSubnets(
1170
1195
if err != nil {
1171
1196
return nil , nil , err
1172
1197
}
1173
- // wallet needs txs for all previously created subnets
1174
- var preloadTXs []ids.ID
1175
- for _ , elasticSubnetSpec := range elasticSubnetSpecs {
1198
+ platformCli := platformvm . NewClient ( clientURI )
1199
+ subnetIDs := make ( []ids.ID , len ( elasticSubnetSpecs ))
1200
+ for i , elasticSubnetSpec := range elasticSubnetSpecs {
1176
1201
if elasticSubnetSpec .SubnetID == nil {
1177
1202
return nil , nil , errors .New ("elastic subnet spec has no subnet ID" )
1178
- } else {
1179
- subnetID , err := ids .FromString (* elasticSubnetSpec .SubnetID )
1180
- if err != nil {
1181
- return nil , nil , err
1182
- }
1183
- preloadTXs = append (preloadTXs , subnetID )
1184
1203
}
1204
+ subnetID , err := ids .FromString (* elasticSubnetSpec .SubnetID )
1205
+ if err != nil {
1206
+ return nil , nil , err
1207
+ }
1208
+ subnetIDs [i ] = subnetID
1185
1209
}
1186
- w , err := newWallet (ctx , clientURI , preloadTXs )
1210
+ // check for all subnets to be not permissionless
1211
+ for _ , subnetID := range subnetIDs {
1212
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
1213
+ if err != nil {
1214
+ return nil , nil , err
1215
+ }
1216
+ if b {
1217
+ msg := fmt .Sprintf ("subnet %s is already permissionless" , subnetID )
1218
+ ln .log .Info (logging .Red .Wrap (msg ))
1219
+ return nil , nil , errors .New (msg )
1220
+ }
1221
+ }
1222
+ // wallet needs txs for all existent subnets
1223
+ w , err := newWallet (ctx , clientURI , subnetIDs )
1187
1224
if err != nil {
1188
1225
return nil , nil , err
1189
1226
}
@@ -1634,3 +1671,17 @@ func createDefaultCtx(ctx context.Context) (context.Context, context.CancelFunc)
1634
1671
}
1635
1672
return context .WithTimeout (ctx , defaultTimeout )
1636
1673
}
1674
+
1675
+ func subnetIsPermissionless (
1676
+ ctx context.Context ,
1677
+ platformCli platformvm.Client ,
1678
+ subnetID ids.ID ,
1679
+ ) (bool , error ) {
1680
+ if _ , _ , err := platformCli .GetCurrentSupply (ctx , subnetID ); err != nil {
1681
+ if strings .Contains (err .Error (), "fetching current supply failed: not found" ) {
1682
+ return false , nil
1683
+ }
1684
+ return false , fmt .Errorf ("failure checking if subnet %s is permissionles: %w" , subnetID , err )
1685
+ }
1686
+ return true , nil
1687
+ }
0 commit comments