Skip to content

Commit e1a3eae

Browse files
authored
<fix>(transaction): fix transaction version not set bug. (#900)
1 parent 3fc15f5 commit e1a3eae

File tree

13 files changed

+88
-20
lines changed

13 files changed

+88
-20
lines changed

src/integration-test/java/org/fisco/bcos/sdk/v3/test/transaction/manager/TransactionManagerPayableTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ private boolean checkSkip() throws ContractException {
168168
balanceService.getBalance(client.getCryptoSuite().getCryptoKeyPair().getAddress());
169169
if (balance.compareTo(BigInteger.valueOf(100000)) < 0) {
170170
System.out.println("balance is not enough");
171+
return true;
171172
}
172173
return false;
173174
}

src/main/java/org/fisco/bcos/sdk/v3/client/protocol/model/JsonTransactionResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,9 @@ public String toString() {
550550
+ ", maxPriorityFeePerGas='"
551551
+ maxPriorityFeePerGas
552552
+ '\''
553+
+ ", extension='"
554+
+ (extension == null ? "null" : Hex.toHexString(extension))
555+
+ '\''
553556
+ '}';
554557
}
555558
}

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/AssembleTransactionService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public TransactionResponse sendTransaction(BasicRequest request)
102102
}
103103
AbiEncodedRequest abiEncodedRequest = new AbiEncodedRequest(request);
104104
abiEncodedRequest.setEncodedData(encodeMethod);
105+
abiEncodedRequest.setVersion(request.getVersion());
105106

106107
TransactionReceipt receipt = transactionManager.sendTransaction(abiEncodedRequest);
107108
if (Objects.nonNull(receipt)
@@ -152,6 +153,7 @@ public TransactionResponse deployContract(BasicDeployRequest request)
152153
}
153154
AbiEncodedRequest abiEncodedRequest = new AbiEncodedRequest(request);
154155
abiEncodedRequest.setEncodedData(encodeConstructor);
156+
abiEncodedRequest.setVersion(request.getVersion());
155157
abiEncodedRequest.setCreate(true);
156158
TransactionReceipt receipt = transactionManager.sendTransaction(abiEncodedRequest);
157159
if (Objects.nonNull(receipt)
@@ -201,6 +203,7 @@ public String asyncSendTransaction(BasicRequest request, TransactionCallback cal
201203
throw new ContractCodecException("Request type error, please check.");
202204
}
203205
AbiEncodedRequest abiEncodedRequest = new AbiEncodedRequest(request);
206+
abiEncodedRequest.setVersion(request.getVersion());
204207
abiEncodedRequest.setEncodedData(encodeMethod);
205208
return transactionManager.asyncSendTransaction(abiEncodedRequest, callback);
206209
}
@@ -246,6 +249,7 @@ public String asyncDeployContract(BasicDeployRequest request, TransactionCallbac
246249
}
247250
AbiEncodedRequest abiEncodedRequest = new AbiEncodedRequest(request);
248251
abiEncodedRequest.setEncodedData(encodeConstructor);
252+
abiEncodedRequest.setVersion(request.getVersion());
249253
abiEncodedRequest.setCreate(true);
250254
return transactionManager.asyncSendTransaction(abiEncodedRequest, callback);
251255
}

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/DefaultTransactionManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ public TxPair createSignedTransaction(AbiEncodedRequest request) throws JniExcep
158158

159159
TransactionData transactionData =
160160
new TransactionData()
161+
.buildVersion(request.getVersion().getValue())
161162
.buildGroupId(client.getGroup())
162163
.buildChainId(client.getChainId())
163164
.buildTo(request.getTo())

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/ProxySignTransactionManager.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionData;
1010
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionDataV1;
1111
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionDataV2;
12-
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionStructBuilderJniObj;
1312
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
1413
import org.fisco.bcos.sdk.jni.utilities.tx.TxPair;
1514
import org.fisco.bcos.sdk.v3.client.Client;
@@ -178,6 +177,7 @@ public TxPair createSignedTransaction(AbiEncodedRequest request) throws JniExcep
178177

179178
TransactionData transactionData =
180179
new TransactionData()
180+
.buildVersion(request.getVersion().getValue())
181181
.buildGroupId(client.getGroup())
182182
.buildChainId(client.getChainId())
183183
.buildTo(request.getTo())
@@ -208,9 +208,7 @@ public TxPair createSignedTransaction(AbiEncodedRequest request) throws JniExcep
208208
new TransactionDataV2((TransactionDataV1) transactionData)
209209
.buildExtension(request.getExtension());
210210
}
211-
String dataHash =
212-
TransactionStructBuilderJniObj.calcTransactionDataStructHash(
213-
cryptoType, transactionData);
211+
String dataHash = transactionData.calculateHash(cryptoType);
214212

215213
CompletableFuture<SignatureResult> signFuture = new CompletableFuture<>();
216214
SignatureResult signatureResult;
@@ -230,12 +228,13 @@ public TxPair createSignedTransaction(AbiEncodedRequest request) throws JniExcep
230228
throw new JniException("Sign transaction failed, error message: " + e.getMessage());
231229
}
232230
String signedTransactionWithSignature =
233-
TransactionStructBuilderJniObj.createEncodedTransaction(
234-
transactionData,
235-
Hex.toHexString(signatureResult.encode()),
236-
dataHash,
237-
transactionAttribute,
238-
client.getExtraData());
231+
new org.fisco.bcos.sdk.jni.utilities.tx.Transaction()
232+
.buildTransactionData(transactionData)
233+
.buildDataHash(Hex.decode(dataHash))
234+
.buildAttribute(transactionAttribute)
235+
.buildSignature(signatureResult.encode())
236+
.buildExtraData(client.getExtraData())
237+
.encode();
239238
return new TxPair(dataHash, signedTransactionWithSignature);
240239
}
241240

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/dto/AbiEncodedRequest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.dto;
22

33
import java.math.BigInteger;
4+
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
45
import org.fisco.bcos.sdk.v3.transaction.gasProvider.EIP1559Struct;
56

67
public class AbiEncodedRequest extends BasicRequest {
@@ -9,6 +10,7 @@ public class AbiEncodedRequest extends BasicRequest {
910
protected boolean isCreate = false;
1011

1112
public AbiEncodedRequest(
13+
TransactionVersion version,
1214
String abi,
1315
String to,
1416
BigInteger blockLimit,
@@ -18,11 +20,23 @@ public AbiEncodedRequest(
1820
BigInteger gasLimit,
1921
EIP1559Struct eip1559Struct,
2022
byte[] extension) {
21-
super(abi, "", to, blockLimit, nonce, value, gasPrice, gasLimit, eip1559Struct, extension);
23+
super(
24+
version,
25+
abi,
26+
"",
27+
to,
28+
blockLimit,
29+
nonce,
30+
value,
31+
gasPrice,
32+
gasLimit,
33+
eip1559Struct,
34+
extension);
2235
}
2336

2437
public AbiEncodedRequest(BasicRequest request) {
2538
super(
39+
request.getVersion(),
2640
request.getAbi(),
2741
"",
2842
request.getTo(),

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/dto/BasicDeployRequest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.dto;
22

33
import java.math.BigInteger;
4+
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
45
import org.fisco.bcos.sdk.v3.transaction.gasProvider.EIP1559Struct;
56

67
public class BasicDeployRequest extends BasicRequest {
@@ -18,6 +19,7 @@ public BasicDeployRequest(
1819
}
1920

2021
public BasicDeployRequest(
22+
TransactionVersion version,
2123
String abi,
2224
String bin,
2325
BigInteger blockLimit,
@@ -27,7 +29,18 @@ public BasicDeployRequest(
2729
BigInteger gasLimit,
2830
EIP1559Struct eip1559Struct,
2931
byte[] extension) {
30-
super(abi, "", "", blockLimit, nonce, value, gasPrice, gasLimit, eip1559Struct, extension);
32+
super(
33+
version,
34+
abi,
35+
"",
36+
"",
37+
blockLimit,
38+
nonce,
39+
value,
40+
gasPrice,
41+
gasLimit,
42+
eip1559Struct,
43+
extension);
3144
this.bin = bin;
3245
}
3346

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/dto/BasicRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
public class BasicRequest {
88

9-
protected TransactionVersion version = TransactionVersion.V0;
9+
protected TransactionVersion version = TransactionVersion.V1;
1010
protected String abi;
1111
protected String method;
1212
protected BigInteger blockLimit;
@@ -38,6 +38,7 @@ public BasicRequest(
3838
}
3939

4040
public BasicRequest(
41+
TransactionVersion version,
4142
String abi,
4243
String method,
4344
String to,
@@ -48,6 +49,7 @@ public BasicRequest(
4849
BigInteger gasLimit,
4950
EIP1559Struct eip1559Struct,
5051
byte[] extension) {
52+
this.version = version;
5153
this.abi = abi;
5254
this.method = method;
5355
this.blockLimit = blockLimit;

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/dto/DeployTransactionRequest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.math.BigInteger;
44
import java.util.List;
5+
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
56
import org.fisco.bcos.sdk.v3.transaction.gasProvider.EIP1559Struct;
67

78
public class DeployTransactionRequest extends BasicDeployRequest {
@@ -19,6 +20,7 @@ public DeployTransactionRequest(
1920
}
2021

2122
public DeployTransactionRequest(
23+
TransactionVersion version,
2224
String abi,
2325
String bin,
2426
BigInteger blockLimit,
@@ -28,7 +30,17 @@ public DeployTransactionRequest(
2830
BigInteger gasLimit,
2931
EIP1559Struct eip1559Struct,
3032
byte[] extension) {
31-
super(abi, bin, blockLimit, nonce, value, gasPrice, gasLimit, eip1559Struct, extension);
33+
super(
34+
version,
35+
abi,
36+
bin,
37+
blockLimit,
38+
nonce,
39+
value,
40+
gasPrice,
41+
gasLimit,
42+
eip1559Struct,
43+
extension);
3244
}
3345

3446
public void setParams(List<Object> params) {

src/main/java/org/fisco/bcos/sdk/v3/transaction/manager/transactionv1/dto/DeployTransactionRequestWithStringParams.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.math.BigInteger;
44
import java.util.List;
5+
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
56
import org.fisco.bcos.sdk.v3.transaction.gasProvider.EIP1559Struct;
67

78
public class DeployTransactionRequestWithStringParams extends BasicDeployRequest {
@@ -19,6 +20,7 @@ public DeployTransactionRequestWithStringParams(
1920
}
2021

2122
public DeployTransactionRequestWithStringParams(
23+
TransactionVersion version,
2224
String abi,
2325
String bin,
2426
BigInteger blockLimit,
@@ -28,7 +30,17 @@ public DeployTransactionRequestWithStringParams(
2830
BigInteger gasLimit,
2931
EIP1559Struct eip1559Struct,
3032
byte[] extension) {
31-
super(abi, bin, blockLimit, nonce, value, gasPrice, gasLimit, eip1559Struct, extension);
33+
super(
34+
version,
35+
abi,
36+
bin,
37+
blockLimit,
38+
nonce,
39+
value,
40+
gasPrice,
41+
gasLimit,
42+
eip1559Struct,
43+
extension);
3244
}
3345

3446
public void setStringParams(List<String> params) {

0 commit comments

Comments
 (0)