Skip to content

Commit 662959d

Browse files
committed
feature(tvm): optimize signatures
1 parent 7b90c6b commit 662959d

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,14 @@
5252
import org.tron.common.utils.BIUtil;
5353
import org.tron.common.utils.ByteArray;
5454
import org.tron.common.utils.ByteUtil;
55+
import org.tron.common.utils.ForkController;
5556
import org.tron.common.utils.Sha256Hash;
5657
import org.tron.common.zksnark.JLibrustzcash;
5758
import org.tron.common.zksnark.LibrustzcashParam;
5859
import org.tron.core.capsule.AccountCapsule;
5960
import org.tron.core.capsule.TransactionCapsule;
6061
import org.tron.core.capsule.WitnessCapsule;
62+
import org.tron.core.config.Parameter;
6163
import org.tron.core.db.TransactionTrace;
6264
import org.tron.core.exception.ZksnarkException;
6365
import org.tron.core.vm.config.VMConfig;
@@ -944,10 +946,14 @@ public Pair<Boolean, byte[]> execute(byte[] rawData) {
944946
long totalWeight = 0L;
945947
List<byte[]> executedSignList = new ArrayList<>();
946948
for (byte[] sign : signatures) {
949+
byte[] recoveredAddr = recoverAddrBySign(sign, hash);
950+
951+
if (ForkController.instance().pass(Parameter.ForkBlockVersionEnum.VERSION_4_7_1)) {
952+
sign = recoveredAddr;
953+
}
947954
if (ByteArray.matrixContains(executedSignList, sign)) {
948955
continue;
949956
}
950-
byte[] recoveredAddr = recoverAddrBySign(sign, hash);
951957
long weight = TransactionCapsule.getWeight(permission, recoveredAddr);
952958
if (weight == 0) {
953959
//incorrect sign

0 commit comments

Comments
 (0)