Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ext {
webankJavaCryptoVersion = "1.0.3"
junitVersion = '4.13.2'
commonsCollections4Version = "4.4"
bcosSdkJniVersion = "3.6.0-SNAPSHOT"
bcosSdkJniVersion = "3.6.0-DEV-SNAPSHOT"
slf4jApiVerison = '1.7.36'
mockitoVersion = '4.8.0'
gsonVersion = '2.10.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
import org.fisco.bcos.sdk.jni.utilities.tx.Transaction;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionBuilderJniObj;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionBuilderV2JniObj;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionData;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionDataV2;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionStructBuilderJniObj;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionStructBuilderV2JniObj;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionV2;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionVersion;
import org.fisco.bcos.sdk.v3.client.exceptions.ClientException;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
Expand Down Expand Up @@ -383,52 +383,59 @@ public byte[] encodeTransactionData() throws IOException {

public static JsonTransactionResponse decodeTransactionV1(String hexString)
throws JniException {
TransactionV2 transactionV2 =
TransactionStructBuilderV2JniObj.decodeTransactionStructV2(hexString);
Transaction transactionV2 =
TransactionStructBuilderJniObj.decodeTransactionStructV2(hexString);
TransactionData transactionData = transactionV2.getTransactionData();
JsonTransactionResponse jsonTransactionResponse = new JsonTransactionResponse();
jsonTransactionResponse.setVersion(transactionV2.getTransactionData().getVersion());
jsonTransactionResponse.setHash(Hex.toHexString(transactionV2.getDataHash().getBuffer()));
jsonTransactionResponse.setNonce(transactionV2.getTransactionData().getNonce());
jsonTransactionResponse.setBlockLimit(transactionV2.getTransactionData().getBlockLimit());
jsonTransactionResponse.setTo(transactionV2.getTransactionData().getTo());
// jsonTransactionResponse.setFrom(Hex.toHexString(transactionV2.getSender().getBuffer()));
jsonTransactionResponse.setAbi(transactionV2.getTransactionData().getAbi());
jsonTransactionResponse.setVersion(transactionData.getVersion());
jsonTransactionResponse.setHash(
Hex.toHexStringMaybeNullData(transactionV2.getDataHash(), ""));
jsonTransactionResponse.setNonce(transactionData.getNonce());
jsonTransactionResponse.setBlockLimit(transactionData.getBlockLimit());
jsonTransactionResponse.setTo(transactionData.getTo());
jsonTransactionResponse.setFrom(
Hex.toHexStringMaybeNullData(transactionV2.getSender(), ""));
jsonTransactionResponse.setAbi(transactionData.getAbi());
jsonTransactionResponse.setInput(
Hex.toHexString(transactionV2.getTransactionData().getInput().getBuffer()));
jsonTransactionResponse.setChainID(transactionV2.getTransactionData().getChainId());
jsonTransactionResponse.setGroupID(transactionV2.getTransactionData().getGroupId());
Hex.toHexStringMaybeNullData(transactionData.getInput(), ""));
jsonTransactionResponse.setChainID(transactionData.getChainId());
jsonTransactionResponse.setGroupID(transactionData.getGroupId());
jsonTransactionResponse.setExtraData(transactionV2.getExtraData());
jsonTransactionResponse.setSignature(
Hex.toHexString(transactionV2.getSignature().getBuffer()));
Hex.toHexStringMaybeNullData(transactionV2.getSignature(), ""));
jsonTransactionResponse.setImportTime(transactionV2.getImportTime());

jsonTransactionResponse.setValue(transactionV2.getTransactionData().getValue());
jsonTransactionResponse.setGasPrice(transactionV2.getTransactionData().getGasPrice());
jsonTransactionResponse.setGasLimit(transactionV2.getTransactionData().getGasLimit());
jsonTransactionResponse.setMaxFeePerGas(
transactionV2.getTransactionData().getMaxFeePerGas());
jsonTransactionResponse.setMaxPriorityFeePerGas(
transactionV2.getTransactionData().getMaxPriorityFeePerGas());
if (transactionData instanceof TransactionDataV2
&& transactionData.getVersion() == TransactionVersion.V1.getValue()) {
TransactionDataV2 transactionDataV2 = (TransactionDataV2) transactionData;
jsonTransactionResponse.setValue(transactionDataV2.getValue());
jsonTransactionResponse.setGasPrice(transactionDataV2.getGasPrice());
jsonTransactionResponse.setGasLimit(transactionDataV2.getGasLimit());
jsonTransactionResponse.setMaxFeePerGas(transactionDataV2.getMaxFeePerGas());
jsonTransactionResponse.setMaxPriorityFeePerGas(
transactionDataV2.getMaxPriorityFeePerGas());
}
return jsonTransactionResponse;
}

public static JsonTransactionResponse decodeTransaction(String hexString) throws JniException {
Transaction transaction = TransactionStructBuilderJniObj.decodeTransactionStruct(hexString);
JsonTransactionResponse jsonTransactionResponse = new JsonTransactionResponse();
jsonTransactionResponse.setVersion(transaction.getTransactionData().getVersion());
jsonTransactionResponse.setHash(Hex.toHexString(transaction.getDataHash().getBuffer()));
jsonTransactionResponse.setHash(
Hex.toHexStringMaybeNullData(transaction.getDataHash(), ""));
jsonTransactionResponse.setNonce(transaction.getTransactionData().getNonce());
jsonTransactionResponse.setBlockLimit(transaction.getTransactionData().getBlockLimit());
jsonTransactionResponse.setTo(transaction.getTransactionData().getTo());
// jsonTransactionResponse.setFrom(Hex.toHexString(transactionV2.getSender().getBuffer()));
jsonTransactionResponse.setFrom(Hex.toHexStringMaybeNullData(transaction.getSender(), ""));
jsonTransactionResponse.setAbi(transaction.getTransactionData().getAbi());
jsonTransactionResponse.setInput(
Hex.toHexString(transaction.getTransactionData().getInput().getBuffer()));
Hex.toHexStringMaybeNullData(transaction.getTransactionData().getInput(), ""));
jsonTransactionResponse.setChainID(transaction.getTransactionData().getChainId());
jsonTransactionResponse.setGroupID(transaction.getTransactionData().getGroupId());
jsonTransactionResponse.setExtraData(transaction.getExtraData());
jsonTransactionResponse.setSignature(
Hex.toHexString(transaction.getSignature().getBuffer()));
Hex.toHexStringMaybeNullData(transaction.getSignature(), ""));
jsonTransactionResponse.setImportTime(transaction.getImportTime());

return jsonTransactionResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ public ProxySignTransactionManager(Client client) {
asyncTxSigner = new TransactionJniSignerService(client.getCryptoSuite().getCryptoKeyPair());
}

public ProxySignTransactionManager(
Client client, AsyncTransactionSignercInterface asyncTxSigner) {
this(client);
this.asyncTxSigner = asyncTxSigner;
}

@Override
public ContractGasProvider getGasProvider() {
return contractGasProvider;
Expand All @@ -75,12 +81,6 @@ public void setNonceProvider(NonceAndBlockLimitProvider nonceProvider) {
this.nonceProvider = nonceProvider;
}

public ProxySignTransactionManager(
Client client, AsyncTransactionSignercInterface asyncTxSigner) {
super(client);
this.asyncTxSigner = asyncTxSigner;
}

public void setAsyncTransactionSigner(AsyncTransactionSignercInterface asyncTxSigner) {
this.asyncTxSigner = asyncTxSigner;
}
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/org/fisco/bcos/sdk/v3/utils/Hex.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ public static String toHexStringWithPrefix(byte[] data) {
return addPrefix(toHexString(data, 0, data.length));
}

public static String toHexStringMaybeNullData(byte[] data, String defaultValue) {
if (Objects.isNull(data)) {
return defaultValue;
}
return toHexString(data, 0, data.length);
}

public static String toHexString(byte[] data) {
return toHexString(data, 0, data.length);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.fisco.bcos.sdk.jni.common.JniException;
import org.fisco.bcos.sdk.jni.utilities.tx.Transaction;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionDataV2;
import org.fisco.bcos.sdk.jni.utilities.tx.TransactionStructBuilderJniObj;
import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse;
import org.fisco.bcos.sdk.v3.client.protocol.response.BcosTransactionReceipt;
import org.fisco.bcos.sdk.v3.codec.FunctionReturnDecoderInterface;
import org.fisco.bcos.sdk.v3.codec.Utils;
Expand Down Expand Up @@ -135,4 +140,26 @@ public void parseTransactionReceiptTest() throws ContractException {
});
Assert.assertEquals(-255, retCode2.getCode());
}

@Test
public void testDeocde () throws JniException {
String txV0 = "0x1a1c2606636861696e30360667726f7570304101fd562831343230303535313832363235373935303133363132373836353832393033393938343232343237662a3078303130326538623666633863646639363236666464633163336561386331653739623366636539347d0000644ed3885e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000474657374000000000000000000000000000000000000000000000000000000000b2d00002082b0283ac2793fb68be2f2f79056251664093500a57313e3adad74d852cb32e53d000041cb1d9cc1e3b87ec4afa9ccf680ce11cad980056b63a58641dff78c84a6e7c6a41f3480b0cfa1a9a5107f4a0bf2ccffabeb1a550d66a1a754e9aba6b266cde7da00";
String txV1 = "0x1a10012606636861696e30360667726f7570304101fb56203731646430333435623135373437353738643531376661366164623330393461662a3078333165643532333362383163373964356164646465656639393166353331613962626332616430317d0000644ed3885e000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000047465730a000000000000000000000000000000000000000000000000000000009603307830a6033078300b2d0000205bb1fa7f6b420cbc5d99f075edf4e2f340d003f76c35cc95d83ce3d6f790a4823d0000418f72ab9782925d323e759aa6d1bfc492160d84176030712395530dc42bdf973b0c4dcb64e20fcbd922e417f04010ed4cbd3e86c073da00292e49b301a4e2554c015001";

{
JsonTransactionResponse transactionV0 = JsonTransactionResponse.decodeTransaction(txV0);
JsonTransactionResponse transactionV1 =
JsonTransactionResponse.decodeTransactionV1(txV1);

System.out.println(transactionV0);
System.out.println(transactionV1);
}

{
// TransactionDataV2 transactionDataV2 = new TransactionDataV2();
// transactionDataV2.setInput(new byte[1]);
// String s = TransactionStructBuilderJniObj.encodeTransactionDataStruct(transactionDataV2);
// System.out.println(s);
}
}
}