Skip to content

Commit 146a8fc

Browse files
authored
Merge branch 'main' into add-subnet-validator-new
2 parents ea9ec2a + a8b6471 commit 146a8fc

File tree

5 files changed

+71
-23
lines changed

5 files changed

+71
-23
lines changed

docs/examples.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ The network-runner supports avalanchego node configuration at different levels.
1313
"public-ip":"127.0.0.1",
1414
"health-check-frequency":"2s",
1515
"api-admin-enabled":true,
16-
"api-ipcs-enabled":true,
1716
"index-enabled":true
1817
}
1918
```
@@ -496,7 +495,7 @@ To remove a node as a permissioned validator from a Subnet:
496495
curl -X POST -k http://localhost:8081/v1/control/removesubnetvalidator -d '[{"subnetId": "'$SUBNET_ID'", "nodeNames":["node1"]}]'
497496

498497
# or
499-
avalanche-network-runner control remove-subnet-validator '[{"subnetId": "'$SUBNET_ID'", "nodeNames":["node1"]}]'
498+
avalanche-network-runner control remove-subnet-validator '[{"subnet_id": "'$SUBNET_ID'", "node_names":["node1"]}]'
500499
```
501500

502501
To delegate stake in a permissionless validator in an Elastic Subnet:

docs/reference.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ avalanche-network-runner control remove-subnet-validator removeValidatorSpec [op
584584
cli
585585
586586
```sh
587-
avalanche-network-runner control remove-subnet-validator '[{"subnetId": "p433wpuXyJiDhyazPYyZMJeaoPSW76CBZ2x7wrVPLgvokotXz", "nodeNames":["node1"]}]'
587+
avalanche-network-runner control remove-subnet-validator '[{"subnet_id": "p433wpuXyJiDhyazPYyZMJeaoPSW76CBZ2x7wrVPLgvokotXz", "node_names":["node1"]}]'
588588
```
589589
590590
curl

local/blockchain.go

+68-17
Original file line numberDiff line numberDiff line change
@@ -1053,15 +1053,28 @@ func (ln *localNetwork) addPermissionlessDelegators(
10531053
}
10541054
platformCli := platformvm.NewClient(clientURI)
10551055
// wallet needs txs for all previously created subnets
1056-
preloadTXs := make([]ids.ID, len(delegatorSpecs))
1056+
subnetIDs := make([]ids.ID, len(delegatorSpecs))
10571057
for i, delegatorSpec := range delegatorSpecs {
10581058
subnetID, err := ids.FromString(delegatorSpec.SubnetID)
10591059
if err != nil {
10601060
return err
10611061
}
1062-
preloadTXs[i] = subnetID
1062+
subnetIDs[i] = subnetID
10631063
}
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)
10651078
if err != nil {
10661079
return err
10671080
}
@@ -1141,16 +1154,28 @@ func (ln *localNetwork) addPermissionlessValidators(
11411154
return err
11421155
}
11431156
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))
11461158
for i, validatorSpec := range validatorSpecs {
11471159
subnetID, err := ids.FromString(validatorSpec.SubnetID)
11481160
if err != nil {
11491161
return err
11501162
}
1151-
preloadTXs[i] = subnetID
1163+
subnetIDs[i] = subnetID
11521164
}
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)
11541179
if err != nil {
11551180
return err
11561181
}
@@ -1262,20 +1287,32 @@ func (ln *localNetwork) transformToElasticSubnets(
12621287
if err != nil {
12631288
return nil, nil, err
12641289
}
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 {
12681293
if elasticSubnetSpec.SubnetID == nil {
12691294
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)
12761295
}
1296+
subnetID, err := ids.FromString(*elasticSubnetSpec.SubnetID)
1297+
if err != nil {
1298+
return nil, nil, err
1299+
}
1300+
subnetIDs[i] = subnetID
12771301
}
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)
12791316
if err != nil {
12801317
return nil, nil, err
12811318
}
@@ -1726,3 +1763,17 @@ func createDefaultCtx(ctx context.Context) (context.Context, context.CancelFunc)
17261763
}
17271764
return context.WithTimeout(ctx, defaultTimeout)
17281765
}
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+
}

local/default/flags.json

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"public-ip":"127.0.0.1",
55
"health-check-frequency":"2s",
66
"api-admin-enabled":true,
7-
"api-ipcs-enabled":true,
87
"index-enabled":true,
98
"log-display-level":"ERROR",
109
"log-level": "DEBUG"

utils/json_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ func TestSetJSONKey(t *testing.T) {
1717
"public-ip":"127.0.0.1",
1818
"health-check-frequency":"2s",
1919
"api-admin-enabled":true,
20-
"api-ipcs-enabled":true,
2120
"index-enabled":true,
2221
"log-display-level":"INFO",
2322
"log-level":"INFO",
@@ -34,7 +33,7 @@ func TestSetJSONKey(t *testing.T) {
3433
err = json.Unmarshal([]byte(s), &m)
3534
require.NoError(t, err)
3635
// check if one-liner also works
37-
bb := `{"api-admin-enabled":true,"api-ipcs-enabled":true,"db-dir":"/tmp/network-runner-root-data3856302950/node5/db-dir","health-check-frequency":"2s","index-enabled":true,"log-dir":"/tmp/network-runner-root-data3856302950/node5/log","log-display-level":"INFO","log-level":"INFO","network-max-reconnect-delay":"1s","network-peer-list-gossip-frequency":"250ms","plugin-dir":"/home/fabio/go/src/github.com/ava-labs/avalanchego/build/plugins","public-ip":"127.0.0.1","track-subnets":""}`
36+
bb := `{"api-admin-enabled":true,"db-dir":"/tmp/network-runner-root-data3856302950/node5/db-dir","health-check-frequency":"2s","index-enabled":true,"log-dir":"/tmp/network-runner-root-data3856302950/node5/log","log-display-level":"INFO","log-level":"INFO","network-max-reconnect-delay":"1s","network-peer-list-gossip-frequency":"250ms","plugin-dir":"/home/fabio/go/src/github.com/ava-labs/avalanchego/build/plugins","public-ip":"127.0.0.1","track-subnets":""}`
3837
ss, err := SetJSONKey(bb, "track-subnets", "d,e,f")
3938
require.NoError(t, err)
4039
require.Contains(t, s, `"track-subnets":"d,e,f"`)

0 commit comments

Comments
 (0)