Skip to content

Commit 54342dc

Browse files
authored
fix(actuator): remove actuator whitelist to avoid fork (#6723)
1 parent da6dddb commit 54342dc

10 files changed

Lines changed: 9 additions & 73 deletions

File tree

actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.protobuf.Any;
44
import com.google.protobuf.GeneratedMessageV3;
5+
import lombok.Getter;
56
import org.tron.common.math.Maths;
67
import org.tron.common.utils.Commons;
78
import org.tron.common.utils.ForkController;
@@ -16,48 +17,36 @@
1617

1718
public abstract class AbstractActuator implements Actuator {
1819

20+
@Getter
1921
protected Any any;
22+
@Getter
2023
protected ChainBaseManager chainBaseManager;
24+
@Getter
2125
protected Contract contract;
26+
@Getter
2227
protected TransactionCapsule tx;
2328
protected ForkController forkController;
2429

2530
public AbstractActuator(ContractType type, Class<? extends GeneratedMessageV3> clazz) {
2631
TransactionFactory.register(type, getClass(), clazz);
2732
}
2833

29-
public Any getAny() {
30-
return any;
31-
}
32-
3334
public AbstractActuator setAny(Any any) {
3435
this.any = any;
3536
return this;
3637
}
3738

38-
public ChainBaseManager getChainBaseManager() {
39-
return chainBaseManager;
40-
}
41-
4239
public AbstractActuator setChainBaseManager(ChainBaseManager chainBaseManager) {
4340
this.chainBaseManager = chainBaseManager;
4441
return this;
4542
}
4643

47-
public Contract getContract() {
48-
return contract;
49-
}
50-
5144
public AbstractActuator setContract(Contract contract) {
5245
this.contract = contract;
5346
this.any = contract.getParameter();
5447
return this;
5548
}
5649

57-
public TransactionCapsule getTx() {
58-
return tx;
59-
}
60-
6150
public AbstractActuator setTx(TransactionCapsule tx) {
6251
this.tx = tx;
6352
return this;

chainbase/src/main/java/org/tron/core/actuator/TransactionFactory.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@
22

33
import com.google.protobuf.GeneratedMessageV3;
44
import java.util.Map;
5-
import java.util.Set;
65
import java.util.concurrent.ConcurrentHashMap;
7-
import org.tron.common.parameter.CommonParameter;
86
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
97
import org.tron.protos.contract.SmartContractOuterClass.CreateSmartContract;
108
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
119

1210
public class TransactionFactory {
1311

14-
private static Map<ContractType, Class<? extends Actuator>> actuatorMap = new ConcurrentHashMap<>();
15-
private static Map<ContractType, Class<? extends GeneratedMessageV3>> contractMap = new ConcurrentHashMap<>();
12+
private static final Map<ContractType, Class<? extends Actuator>> actuatorMap = new ConcurrentHashMap<>();
13+
private static final Map<ContractType, Class<? extends GeneratedMessageV3>> contractMap = new ConcurrentHashMap<>();
1614

1715
static {
1816
register(ContractType.CreateSmartContract, null, CreateSmartContract.class);
@@ -21,12 +19,6 @@ public class TransactionFactory {
2119

2220
public static void register(ContractType type, Class<? extends Actuator> actuatorClass,
2321
Class<? extends GeneratedMessageV3> clazz) {
24-
Set<String> actuatorSet = CommonParameter.getInstance().getActuatorSet();
25-
if (actuatorClass != null && !actuatorSet.isEmpty() && !actuatorSet
26-
.contains(actuatorClass.getSimpleName())) {
27-
return;
28-
}
29-
3022
if (type != null && actuatorClass != null) {
3123
actuatorMap.put(type, actuatorClass);
3224
}
@@ -42,12 +34,4 @@ public static Class<? extends Actuator> getActuator(ContractType type) {
4234
public static Class<? extends GeneratedMessageV3> getContract(ContractType type) {
4335
return contractMap.get(type);
4436
}
45-
46-
public static Map<ContractType, Class<? extends Actuator>> getActuatorMap() {
47-
return actuatorMap;
48-
}
49-
50-
public static Map<ContractType, Class<? extends GeneratedMessageV3>> getContractMap() {
51-
return contractMap;
52-
}
5337
}

common/src/main/java/org/tron/common/parameter/CommonParameter.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import java.net.InetSocketAddress;
66
import java.util.ArrayList;
77
import java.util.List;
8-
import java.util.Set;
98
import lombok.Getter;
109
import lombok.Setter;
1110
import org.slf4j.bridge.SLF4JBridgeHandler;
@@ -392,9 +391,6 @@ public class CommonParameter {
392391
public long changedDelegation;
393392
@Getter
394393
@Setter
395-
public Set<String> actuatorSet;
396-
@Getter
397-
@Setter
398394
public RateLimiterInitialization rateLimiterInitialization;
399395
@Getter
400396
@Setter

common/src/main/java/org/tron/core/config/args/MiscConfig.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package org.tron.core.config.args;
22

33
import com.typesafe.config.Config;
4-
import com.typesafe.config.ConfigFactory;
54
import java.util.ArrayList;
6-
import java.util.Collections;
7-
import java.util.HashSet;
85
import java.util.List;
9-
import java.util.Set;
106
import lombok.Getter;
117
import lombok.extern.slf4j.Slf4j;
128
import org.tron.core.Constant;
139

1410
/**
1511
* Miscellaneous small config domains that don't warrant their own bean class.
16-
* Covers: storage (partial), trx, energy, crypto, seed, actuator.
12+
* Covers: storage (partial), trx, energy, crypto, seed.
1713
*
1814
* <p>These use manual reads because they span multiple unrelated config.conf
1915
* top-level sections and some have non-standard key naming (e.g. "enery" typo).
@@ -29,7 +25,6 @@ public class MiscConfig {
2925
private long blockNumForEnergyLimit = 4727890L;
3026
private String cryptoEngine = Constant.ECKey_ENGINE;
3127
private List<String> seedNodeIpList = new ArrayList<>();
32-
private Set<String> actuatorWhitelist = Collections.emptySet();
3328

3429
public static MiscConfig fromConfig(Config config) {
3530
MiscConfig mc = new MiscConfig();
@@ -61,10 +56,6 @@ public static MiscConfig fromConfig(Config config) {
6156
mc.seedNodeIpList = config.hasPath("seed.node.ip.list")
6257
? config.getStringList("seed.node.ip.list") : new ArrayList<>();
6358

64-
// actuator
65-
mc.actuatorWhitelist = config.hasPath("actuator.whitelist")
66-
? new HashSet<>(config.getStringList("actuator.whitelist")) : Collections.emptySet();
67-
6859
return mc;
6960
}
7061
}

common/src/main/resources/reference.conf

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@ crypto {
166166
# Energy limit block number (config key has typo "enery" preserved for backward compatibility)
167167
enery.limit.block.num = 4727890
168168

169-
# Actuator whitelist — empty means all actuators allowed
170-
actuator {
171-
whitelist = []
172-
}
173-
174169
node.metrics = {
175170
prometheus {
176171
enable = false

common/src/test/java/org/tron/core/config/args/MiscConfigTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public void testDefaults() {
3232
assertEquals("eckey", mc.getCryptoEngine());
3333
// reference.conf has seed.node.ip.list with actual IPs
3434
assertFalse(mc.getSeedNodeIpList().isEmpty());
35-
assertTrue(mc.getActuatorWhitelist().isEmpty());
3635
}
3736

3837
@Test
@@ -42,15 +41,12 @@ public void testFromConfig() {
4241
+ " balance { history { lookup = true } } }\n"
4342
+ "trx { reference { block = head } }\n"
4443
+ "crypto { engine = sm2 }\n"
45-
+ "seed.node { ip.list = [\"1.2.3.4:18888\"] }\n"
46-
+ "actuator { whitelist = [\"CreateSmartContract\"] }");
44+
+ "seed.node { ip.list = [\"1.2.3.4:18888\"] }");
4745
MiscConfig mc = MiscConfig.fromConfig(config);
4846
assertFalse(mc.isNeedToUpdateAsset());
4947
assertTrue(mc.isHistoryBalanceLookup());
5048
assertEquals("head", mc.getTrxReferenceBlock());
5149
assertEquals("sm2", mc.getCryptoEngine());
5250
assertEquals(1, mc.getSeedNodeIpList().size());
53-
assertEquals(1, mc.getActuatorWhitelist().size());
54-
assertTrue(mc.getActuatorWhitelist().contains("CreateSmartContract"));
5551
}
5652
}

framework/src/main/java/org/tron/common/runtime/RuntimeImpl.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import java.util.List;
44
import java.util.Objects;
5-
import java.util.Set;
65
import lombok.Getter;
76
import lombok.extern.slf4j.Slf4j;
87
import org.apache.commons.lang3.StringUtils;
9-
import org.tron.common.parameter.CommonParameter;
108
import org.tron.core.actuator.Actuator;
119
import org.tron.core.actuator.Actuator2;
1210
import org.tron.core.actuator.ActuatorCreator;
@@ -46,10 +44,6 @@ public void execute(TransactionContext context)
4644
switch (contractType.getNumber()) {
4745
case ContractType.TriggerSmartContract_VALUE:
4846
case ContractType.CreateSmartContract_VALUE:
49-
Set<String> actuatorSet = CommonParameter.getInstance().getActuatorSet();
50-
if (!actuatorSet.isEmpty() && !actuatorSet.contains(VMActuator.class.getSimpleName())) {
51-
throw new ContractValidateException("not exist contract " + "SmartContract");
52-
}
5347
actuator2 = new VMActuator(context.isStatic());
5448
break;
5549
default:

framework/src/main/java/org/tron/core/config/args/Args.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.Arrays;
3333
import java.util.Collections;
3434
import java.util.HashMap;
35-
import java.util.HashSet;
3635
import java.util.LinkedHashMap;
3736
import java.util.List;
3837
import java.util.Locale;
@@ -327,8 +326,6 @@ private static void applyMiscConfig(MiscConfig mc) {
327326
PARAMETER.trxReferenceBlock = mc.getTrxReferenceBlock();
328327
PARAMETER.trxExpirationTimeInMilliseconds = mc.getTrxExpirationTimeInMilliseconds();
329328
PARAMETER.blockNumForEnergyLimit = mc.getBlockNumForEnergyLimit();
330-
PARAMETER.actuatorSet = mc.getActuatorWhitelist();
331-
332329
// seed.node — top-level config section, not under "node"
333330
// Config structure is arguably misplaced but preserved for backward compatibility
334331
PARAMETER.seedNode = new SeedNode();
@@ -789,8 +786,6 @@ public static void applyConfigParams(
789786
// Node backup: from NodeConfig bean
790787
applyNodeBackupConfig(nodeConfig);
791788

792-
// actuatorSet already set in applyMiscConfig
793-
794789
// Metrics config: bind from config.conf "node.metrics" section
795790
metricsConfig = MetricsConfig.fromConfig(config);
796791
applyMetricsConfig(metricsConfig);

framework/src/test/java/org/tron/common/ParameterTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ public void testCommonParameter() {
218218
assertEquals(1, parameter.getShieldedTransInPendingMaxCounts());
219219
parameter.setChangedDelegation(1);
220220
assertEquals(1, parameter.getChangedDelegation());
221-
parameter.setActuatorSet(new HashSet<>());
222-
assertTrue(CollectionUtils.isEmpty(parameter.getActuatorSet()));
223221
parameter.setRateLimiterInitialization(new RateLimiterInitialization());
224222
assertNotNull(parameter.getRateLimiterInitialization());
225223
parameter.setRateLimiterGlobalQps(1000);

framework/src/test/java/org/tron/core/utils/TransactionRegisterTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import java.util.Arrays;
1111
import java.util.Collections;
12-
import java.util.HashSet;
1312
import java.util.LinkedHashSet;
1413
import java.util.concurrent.ExecutionException;
1514
import java.util.concurrent.ExecutorService;
@@ -36,7 +35,6 @@ public class TransactionRegisterTest {
3635

3736
@Before
3837
public void init() {
39-
Args.getInstance().setActuatorSet(new HashSet<>());
4038
TransactionRegister.resetForTesting();
4139
}
4240

0 commit comments

Comments
 (0)