|
52 | 52 | import org.tron.common.utils.BIUtil; |
53 | 53 | import org.tron.common.utils.ByteArray; |
54 | 54 | import org.tron.common.utils.ByteUtil; |
| 55 | +import org.tron.common.utils.ForkController; |
55 | 56 | import org.tron.common.utils.Sha256Hash; |
56 | 57 | import org.tron.common.zksnark.JLibrustzcash; |
57 | 58 | import org.tron.common.zksnark.LibrustzcashParam; |
58 | 59 | import org.tron.core.capsule.AccountCapsule; |
59 | 60 | import org.tron.core.capsule.TransactionCapsule; |
60 | 61 | import org.tron.core.capsule.WitnessCapsule; |
| 62 | +import org.tron.core.config.Parameter; |
61 | 63 | import org.tron.core.db.TransactionTrace; |
62 | 64 | import org.tron.core.exception.ZksnarkException; |
63 | 65 | import org.tron.core.vm.config.VMConfig; |
@@ -944,10 +946,14 @@ public Pair<Boolean, byte[]> execute(byte[] rawData) { |
944 | 946 | long totalWeight = 0L; |
945 | 947 | List<byte[]> executedSignList = new ArrayList<>(); |
946 | 948 | 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 | + } |
947 | 954 | if (ByteArray.matrixContains(executedSignList, sign)) { |
948 | 955 | continue; |
949 | 956 | } |
950 | | - byte[] recoveredAddr = recoverAddrBySign(sign, hash); |
951 | 957 | long weight = TransactionCapsule.getWeight(permission, recoveredAddr); |
952 | 958 | if (weight == 0) { |
953 | 959 | //incorrect sign |
|
0 commit comments