Skip to content

Commit ad1e9d4

Browse files
author
Wenhua Zhang
committed
feat(jsonrpc): modify input as raw_data.contract[0].parameter.value.data
1 parent 4186b8f commit ad1e9d4

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

framework/src/main/java/org/tron/core/services/jsonrpc/types/TransactionResult.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.tron.protos.Protocol;
1616
import org.tron.protos.Protocol.Transaction;
1717
import org.tron.protos.Protocol.Transaction.Contract;
18+
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
19+
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
1820

1921
@JsonPropertyOrder(alphabetic = true)
2022
@ToString
@@ -75,6 +77,28 @@ private void parseSignature(Transaction tx) {
7577
s = ByteArray.toJsonHex(sByte);
7678
}
7779

80+
private String parseInput(Transaction tx) {
81+
String data;
82+
if (tx.getRawData().getContractCount() == 0) {
83+
data = "0x";
84+
} else {
85+
Contract contract = tx.getRawData().getContract(0);
86+
if (contract.getType() == ContractType.TriggerSmartContract) {
87+
try {
88+
TriggerSmartContract triggerSmartContract = contract.getParameter()
89+
.unpack(TriggerSmartContract.class);
90+
data = ByteArray.toJsonHex(triggerSmartContract.getData().toByteArray());
91+
} catch (Exception e) {
92+
data = "0x";
93+
}
94+
} else {
95+
data = "0x";
96+
}
97+
}
98+
99+
return data;
100+
}
101+
78102
public TransactionResult(BlockCapsule blockCapsule, int index, Protocol.Transaction tx,
79103
long energyUsageTotal, long energyFee, Wallet wallet) {
80104
byte[] txId = new TransactionCapsule(tx).getTransactionId().getBytes();
@@ -105,7 +129,7 @@ public TransactionResult(BlockCapsule blockCapsule, int index, Protocol.Transact
105129

106130
gas = ByteArray.toJsonHex(energyUsageTotal);
107131
gasPrice = ByteArray.toJsonHex(energyFee);
108-
input = ByteArray.toJsonHex(tx.getRawData().getData().toByteArray());
132+
input = parseInput(tx);
109133

110134
parseSignature(tx);
111135
}
@@ -133,7 +157,7 @@ public TransactionResult(Transaction tx, Wallet wallet) {
133157

134158
gas = "0x0";
135159
gasPrice = "0x";
136-
input = ByteArray.toJsonHex(tx.getRawData().getData().toByteArray());
160+
input = parseInput(tx);
137161

138162
parseSignature(tx);
139163
}

0 commit comments

Comments
 (0)