@@ -1053,15 +1053,28 @@ func (ln *localNetwork) addPermissionlessDelegators(
1053
1053
}
1054
1054
platformCli := platformvm .NewClient (clientURI )
1055
1055
// wallet needs txs for all previously created subnets
1056
- preloadTXs := make ([]ids.ID , len (delegatorSpecs ))
1056
+ subnetIDs := make ([]ids.ID , len (delegatorSpecs ))
1057
1057
for i , delegatorSpec := range delegatorSpecs {
1058
1058
subnetID , err := ids .FromString (delegatorSpec .SubnetID )
1059
1059
if err != nil {
1060
1060
return err
1061
1061
}
1062
- preloadTXs [i ] = subnetID
1062
+ subnetIDs [i ] = subnetID
1063
1063
}
1064
- w , err := newWallet (ctx , clientURI , preloadTXs )
1064
+ // check for all subnets to be permissionless
1065
+ for _ , subnetID := range subnetIDs {
1066
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
1067
+ if err != nil {
1068
+ return err
1069
+ }
1070
+ if ! b {
1071
+ msg := fmt .Sprintf ("subnet %s is not permissionless" , subnetID )
1072
+ ln .log .Info (logging .Red .Wrap (msg ))
1073
+ return errors .New (msg )
1074
+ }
1075
+ }
1076
+ // wallet needs txs for all existent subnets
1077
+ w , err := newWallet (ctx , clientURI , subnetIDs )
1065
1078
if err != nil {
1066
1079
return err
1067
1080
}
@@ -1141,16 +1154,28 @@ func (ln *localNetwork) addPermissionlessValidators(
1141
1154
return err
1142
1155
}
1143
1156
platformCli := platformvm .NewClient (clientURI )
1144
- // wallet needs txs for all previously created subnets
1145
- preloadTXs := make ([]ids.ID , len (validatorSpecs ))
1157
+ subnetIDs := make ([]ids.ID , len (validatorSpecs ))
1146
1158
for i , validatorSpec := range validatorSpecs {
1147
1159
subnetID , err := ids .FromString (validatorSpec .SubnetID )
1148
1160
if err != nil {
1149
1161
return err
1150
1162
}
1151
- preloadTXs [i ] = subnetID
1163
+ subnetIDs [i ] = subnetID
1152
1164
}
1153
- w , err := newWallet (ctx , clientURI , preloadTXs )
1165
+ // check for all subnets to be permissionless
1166
+ for _ , subnetID := range subnetIDs {
1167
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
1168
+ if err != nil {
1169
+ return err
1170
+ }
1171
+ if ! b {
1172
+ msg := fmt .Sprintf ("subnet %s is not permissionless" , subnetID )
1173
+ ln .log .Info (logging .Red .Wrap (msg ))
1174
+ return errors .New (msg )
1175
+ }
1176
+ }
1177
+ // wallet needs txs for all existent subnets
1178
+ w , err := newWallet (ctx , clientURI , subnetIDs )
1154
1179
if err != nil {
1155
1180
return err
1156
1181
}
@@ -1262,20 +1287,32 @@ func (ln *localNetwork) transformToElasticSubnets(
1262
1287
if err != nil {
1263
1288
return nil , nil , err
1264
1289
}
1265
- // wallet needs txs for all previously created subnets
1266
- var preloadTXs []ids.ID
1267
- for _ , elasticSubnetSpec := range elasticSubnetSpecs {
1290
+ platformCli := platformvm . NewClient ( clientURI )
1291
+ subnetIDs := make ( []ids.ID , len ( elasticSubnetSpecs ))
1292
+ for i , elasticSubnetSpec := range elasticSubnetSpecs {
1268
1293
if elasticSubnetSpec .SubnetID == nil {
1269
1294
return nil , nil , errors .New ("elastic subnet spec has no subnet ID" )
1270
- } else {
1271
- subnetID , err := ids .FromString (* elasticSubnetSpec .SubnetID )
1272
- if err != nil {
1273
- return nil , nil , err
1274
- }
1275
- preloadTXs = append (preloadTXs , subnetID )
1276
1295
}
1296
+ subnetID , err := ids .FromString (* elasticSubnetSpec .SubnetID )
1297
+ if err != nil {
1298
+ return nil , nil , err
1299
+ }
1300
+ subnetIDs [i ] = subnetID
1277
1301
}
1278
- w , err := newWallet (ctx , clientURI , preloadTXs )
1302
+ // check for all subnets to be not permissionless
1303
+ for _ , subnetID := range subnetIDs {
1304
+ b , err := subnetIsPermissionless (ctx , platformCli , subnetID )
1305
+ if err != nil {
1306
+ return nil , nil , err
1307
+ }
1308
+ if b {
1309
+ msg := fmt .Sprintf ("subnet %s is already permissionless" , subnetID )
1310
+ ln .log .Info (logging .Red .Wrap (msg ))
1311
+ return nil , nil , errors .New (msg )
1312
+ }
1313
+ }
1314
+ // wallet needs txs for all existent subnets
1315
+ w , err := newWallet (ctx , clientURI , subnetIDs )
1279
1316
if err != nil {
1280
1317
return nil , nil , err
1281
1318
}
@@ -1726,3 +1763,17 @@ func createDefaultCtx(ctx context.Context) (context.Context, context.CancelFunc)
1726
1763
}
1727
1764
return context .WithTimeout (ctx , defaultTimeout )
1728
1765
}
1766
+
1767
+ func subnetIsPermissionless (
1768
+ ctx context.Context ,
1769
+ platformCli platformvm.Client ,
1770
+ subnetID ids.ID ,
1771
+ ) (bool , error ) {
1772
+ if _ , _ , err := platformCli .GetCurrentSupply (ctx , subnetID ); err != nil {
1773
+ if strings .Contains (err .Error (), "fetching current supply failed: not found" ) {
1774
+ return false , nil
1775
+ }
1776
+ return false , fmt .Errorf ("failure checking if subnet %s is permissionles: %w" , subnetID , err )
1777
+ }
1778
+ return true , nil
1779
+ }
0 commit comments