From 87f9cea622a105db0fa78f8d741114f5c11e297e Mon Sep 17 00:00:00 2001 From: chaozhu Date: Mon, 14 Aug 2023 17:29:43 +0800 Subject: [PATCH 1/9] feat(mechanism): optimize new transaction address parsing --- .../capsule/TransactionLogTriggerCapsule.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index 8600cb6ef8c..58600f01d27 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -26,7 +26,14 @@ import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.Protocol.TransactionInfo; import org.tron.protos.contract.AssetIssueContractOuterClass.TransferAssetContract; +import org.tron.protos.contract.BalanceContract.CancelAllUnfreezeV2Contract; +import org.tron.protos.contract.BalanceContract.DelegateResourceContract; +import org.tron.protos.contract.BalanceContract.FreezeBalanceV2Contract; import org.tron.protos.contract.BalanceContract.TransferContract; +import org.tron.protos.contract.BalanceContract.UnDelegateResourceContract; +import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract; +import org.tron.protos.contract.BalanceContract.UnfreezeBalanceV2Contract; +import org.tron.protos.contract.BalanceContract.WithdrawExpireUnfreezeContract; import org.tron.protos.contract.SmartContractOuterClass.CreateSmartContract; import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract; @@ -156,6 +163,100 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule StringUtil.encode58Check(createSmartContract.getOwnerAddress().toByteArray())); } break; + case UnfreezeBalanceContract: + UnfreezeBalanceContract unfreezeBalanceContract = contractParameter + .unpack(UnfreezeBalanceContract.class); + + if (Objects.nonNull(unfreezeBalanceContract)) { + if (Objects.nonNull(unfreezeBalanceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(unfreezeBalanceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); + } + } + break; + case FreezeBalanceV2Contract: + FreezeBalanceV2Contract freezeBalanceV2Contract = contractParameter + .unpack(FreezeBalanceV2Contract.class); + + if (Objects.nonNull(freezeBalanceV2Contract)) { + if (Objects.nonNull(freezeBalanceV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(freezeBalanceV2Contract.getOwnerAddress().toByteArray())); + } + transactionLogTrigger.setAssetAmount(freezeBalanceV2Contract.getFrozenBalance()); + } + break; + case UnfreezeBalanceV2Contract: + UnfreezeBalanceV2Contract unfreezeBalanceV2Contract = contractParameter + .unpack(UnfreezeBalanceV2Contract.class); + + if (Objects.nonNull(unfreezeBalanceV2Contract)) { + if (Objects.nonNull(unfreezeBalanceV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceV2Contract.getOwnerAddress().toByteArray())); + } + transactionLogTrigger.setAssetAmount( + unfreezeBalanceV2Contract.getUnfreezeBalance()); + } + break; + case WithdrawExpireUnfreezeContract: + WithdrawExpireUnfreezeContract withdrawExpireUnfreezeContract = contractParameter + .unpack(WithdrawExpireUnfreezeContract.class); + + if (Objects.nonNull(withdrawExpireUnfreezeContract) + && Objects.nonNull(withdrawExpireUnfreezeContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil.encode58Check( + withdrawExpireUnfreezeContract.getOwnerAddress().toByteArray())); + } + break; + case DelegateResourceContract: + DelegateResourceContract delegateResourceContract = contractParameter + .unpack(DelegateResourceContract.class); + + if (Objects.nonNull(delegateResourceContract)) { + if (Objects.nonNull(delegateResourceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(delegateResourceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(delegateResourceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil + .encode58Check(delegateResourceContract.getReceiverAddress().toByteArray())); + } + transactionLogTrigger.setAssetAmount( + delegateResourceContract.getBalance()); + } + break; + case UnDelegateResourceContract: + UnDelegateResourceContract unDelegateResourceContract = contractParameter + .unpack(UnDelegateResourceContract.class); + + if (Objects.nonNull(unDelegateResourceContract)) { + if (Objects.nonNull(unDelegateResourceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unDelegateResourceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(unDelegateResourceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil.encode58Check( + unDelegateResourceContract.getReceiverAddress().toByteArray())); + } + transactionLogTrigger.setAssetAmount( + unDelegateResourceContract.getBalance()); + } + break; + case CancelAllUnfreezeV2Contract: + CancelAllUnfreezeV2Contract cancelAllUnfreezeV2Contract = contractParameter + .unpack(CancelAllUnfreezeV2Contract.class); + + if (Objects.nonNull(cancelAllUnfreezeV2Contract) + && Objects.nonNull(cancelAllUnfreezeV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); + } + break; default: break; } From e406639c7ded205d2dd43977e66ddd6696bf0acc Mon Sep 17 00:00:00 2001 From: chaozhu Date: Mon, 14 Aug 2023 17:29:43 +0800 Subject: [PATCH 2/9] feat(mechanism): optimize new transaction address parsing --- .../capsule/TransactionLogTriggerCapsule.java | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index 8600cb6ef8c..e76b6eb53a4 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -26,7 +26,14 @@ import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.Protocol.TransactionInfo; import org.tron.protos.contract.AssetIssueContractOuterClass.TransferAssetContract; +import org.tron.protos.contract.BalanceContract.CancelAllUnfreezeV2Contract; +import org.tron.protos.contract.BalanceContract.DelegateResourceContract; +import org.tron.protos.contract.BalanceContract.FreezeBalanceV2Contract; import org.tron.protos.contract.BalanceContract.TransferContract; +import org.tron.protos.contract.BalanceContract.UnDelegateResourceContract; +import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract; +import org.tron.protos.contract.BalanceContract.UnfreezeBalanceV2Contract; +import org.tron.protos.contract.BalanceContract.WithdrawExpireUnfreezeContract; import org.tron.protos.contract.SmartContractOuterClass.CreateSmartContract; import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract; @@ -156,6 +163,93 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule StringUtil.encode58Check(createSmartContract.getOwnerAddress().toByteArray())); } break; + case UnfreezeBalanceContract: + UnfreezeBalanceContract unfreezeBalanceContract = contractParameter + .unpack(UnfreezeBalanceContract.class); + + if (Objects.nonNull(unfreezeBalanceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(unfreezeBalanceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); + } + break; + case FreezeBalanceV2Contract: + FreezeBalanceV2Contract freezeBalanceV2Contract = contractParameter + .unpack(FreezeBalanceV2Contract.class); + + if (Objects.nonNull(freezeBalanceV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(freezeBalanceV2Contract.getOwnerAddress().toByteArray())); + } + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount(freezeBalanceV2Contract.getFrozenBalance()); + break; + case UnfreezeBalanceV2Contract: + UnfreezeBalanceV2Contract unfreezeBalanceV2Contract = contractParameter + .unpack(UnfreezeBalanceV2Contract.class); + + if (Objects.nonNull(unfreezeBalanceV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceV2Contract.getOwnerAddress().toByteArray())); + } + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + unfreezeBalanceV2Contract.getUnfreezeBalance()); + break; + case WithdrawExpireUnfreezeContract: + WithdrawExpireUnfreezeContract withdrawExpireUnfreezeContract = contractParameter + .unpack(WithdrawExpireUnfreezeContract.class); + + if (Objects.nonNull(withdrawExpireUnfreezeContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil.encode58Check( + withdrawExpireUnfreezeContract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setAssetAmount(transactionInfo.getWithdrawExpireAmount()); + } + break; + case DelegateResourceContract: + DelegateResourceContract delegateResourceContract = contractParameter + .unpack(DelegateResourceContract.class); + + if (Objects.nonNull(delegateResourceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(delegateResourceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(delegateResourceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil + .encode58Check(delegateResourceContract.getReceiverAddress().toByteArray())); + } + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + delegateResourceContract.getBalance()); + break; + case UnDelegateResourceContract: + UnDelegateResourceContract unDelegateResourceContract = contractParameter + .unpack(UnDelegateResourceContract.class); + + if (Objects.nonNull(unDelegateResourceContract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unDelegateResourceContract.getOwnerAddress().toByteArray())); + } + if (Objects.nonNull(unDelegateResourceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil.encode58Check( + unDelegateResourceContract.getReceiverAddress().toByteArray())); + } + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + unDelegateResourceContract.getBalance()); + break; + case CancelAllUnfreezeV2Contract: + CancelAllUnfreezeV2Contract cancelAllUnfreezeV2Contract = contractParameter + .unpack(CancelAllUnfreezeV2Contract.class); + + if (Objects.nonNull(cancelAllUnfreezeV2Contract.getOwnerAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); + } + break; default: break; } @@ -269,4 +363,5 @@ private List getInternalTransactionList( public void processTrigger() { EventPluginLoader.getInstance().postTransactionTrigger(transactionLogTrigger); } + } From 1f9da68db474b59bef08a9732c72d3975bcc8df4 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Wed, 23 Aug 2023 15:39:20 +0800 Subject: [PATCH 3/9] feat(mechanism): optimize new transaction address parsing --- .../capsule/TransactionLogTriggerCapsule.java | 49 +++++++++---------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index e76b6eb53a4..58aac8a2bef 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -167,43 +167,43 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule UnfreezeBalanceContract unfreezeBalanceContract = contractParameter .unpack(UnfreezeBalanceContract.class); - if (Objects.nonNull(unfreezeBalanceContract.getOwnerAddress())) { + if (Objects.nonNull(unfreezeBalanceContract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(unfreezeBalanceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(unfreezeBalanceContract.getReceiverAddress())) { - transactionLogTrigger.setToAddress(StringUtil - .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); + if (Objects.nonNull(unfreezeBalanceContract.getReceiverAddress())) { + transactionLogTrigger.setToAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); + } } break; case FreezeBalanceV2Contract: FreezeBalanceV2Contract freezeBalanceV2Contract = contractParameter .unpack(FreezeBalanceV2Contract.class); - if (Objects.nonNull(freezeBalanceV2Contract.getOwnerAddress())) { + if (Objects.nonNull(freezeBalanceV2Contract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(freezeBalanceV2Contract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount(freezeBalanceV2Contract.getFrozenBalance()); } - transactionLogTrigger.setAssetName("trx"); - transactionLogTrigger.setAssetAmount(freezeBalanceV2Contract.getFrozenBalance()); break; case UnfreezeBalanceV2Contract: UnfreezeBalanceV2Contract unfreezeBalanceV2Contract = contractParameter .unpack(UnfreezeBalanceV2Contract.class); - if (Objects.nonNull(unfreezeBalanceV2Contract.getOwnerAddress())) { + if (Objects.nonNull(unfreezeBalanceV2Contract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(unfreezeBalanceV2Contract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + unfreezeBalanceV2Contract.getUnfreezeBalance()); } - transactionLogTrigger.setAssetName("trx"); - transactionLogTrigger.setAssetAmount( - unfreezeBalanceV2Contract.getUnfreezeBalance()); break; case WithdrawExpireUnfreezeContract: WithdrawExpireUnfreezeContract withdrawExpireUnfreezeContract = contractParameter .unpack(WithdrawExpireUnfreezeContract.class); - if (Objects.nonNull(withdrawExpireUnfreezeContract.getOwnerAddress())) { + if (Objects.nonNull(withdrawExpireUnfreezeContract)) { transactionLogTrigger.setFromAddress(StringUtil.encode58Check( withdrawExpireUnfreezeContract.getOwnerAddress().toByteArray())); transactionLogTrigger.setAssetAmount(transactionInfo.getWithdrawExpireAmount()); @@ -213,39 +213,36 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule DelegateResourceContract delegateResourceContract = contractParameter .unpack(DelegateResourceContract.class); - if (Objects.nonNull(delegateResourceContract.getOwnerAddress())) { + if (Objects.nonNull(delegateResourceContract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(delegateResourceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(delegateResourceContract.getReceiverAddress())) { transactionLogTrigger.setToAddress(StringUtil .encode58Check(delegateResourceContract.getReceiverAddress().toByteArray())); + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + delegateResourceContract.getBalance()); } - transactionLogTrigger.setAssetName("trx"); - transactionLogTrigger.setAssetAmount( - delegateResourceContract.getBalance()); break; case UnDelegateResourceContract: UnDelegateResourceContract unDelegateResourceContract = contractParameter .unpack(UnDelegateResourceContract.class); - if (Objects.nonNull(unDelegateResourceContract.getOwnerAddress())) { + if (Objects.nonNull(unDelegateResourceContract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(unDelegateResourceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(unDelegateResourceContract.getReceiverAddress())) { transactionLogTrigger.setToAddress(StringUtil.encode58Check( unDelegateResourceContract.getReceiverAddress().toByteArray())); - } - transactionLogTrigger.setAssetName("trx"); - transactionLogTrigger.setAssetAmount( + + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( unDelegateResourceContract.getBalance()); + } break; case CancelAllUnfreezeV2Contract: CancelAllUnfreezeV2Contract cancelAllUnfreezeV2Contract = contractParameter .unpack(CancelAllUnfreezeV2Contract.class); - if (Objects.nonNull(cancelAllUnfreezeV2Contract.getOwnerAddress())) { + if (Objects.nonNull(cancelAllUnfreezeV2Contract)) { transactionLogTrigger.setFromAddress(StringUtil .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); } From 26e852a5bc03a1932e8c706cbe2286b415df5ba0 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Wed, 23 Aug 2023 15:39:20 +0800 Subject: [PATCH 4/9] feat(mechanism): optimize new transaction address parsing --- .../capsule/TransactionLogTriggerCapsule.java | 64 +++++++------------ 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index e76b6eb53a4..7760c2df4ae 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -167,23 +167,19 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule UnfreezeBalanceContract unfreezeBalanceContract = contractParameter .unpack(UnfreezeBalanceContract.class); - if (Objects.nonNull(unfreezeBalanceContract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(unfreezeBalanceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(unfreezeBalanceContract.getReceiverAddress())) { + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceContract.getOwnerAddress().toByteArray())); + if (!ByteString.EMPTY.equals(unfreezeBalanceContract.getReceiverAddress())) { transactionLogTrigger.setToAddress(StringUtil - .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); + .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); } break; case FreezeBalanceV2Contract: FreezeBalanceV2Contract freezeBalanceV2Contract = contractParameter .unpack(FreezeBalanceV2Contract.class); - if (Objects.nonNull(freezeBalanceV2Contract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(freezeBalanceV2Contract.getOwnerAddress().toByteArray())); - } + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(freezeBalanceV2Contract.getOwnerAddress().toByteArray())); transactionLogTrigger.setAssetName("trx"); transactionLogTrigger.setAssetAmount(freezeBalanceV2Contract.getFrozenBalance()); break; @@ -191,52 +187,42 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule UnfreezeBalanceV2Contract unfreezeBalanceV2Contract = contractParameter .unpack(UnfreezeBalanceV2Contract.class); - if (Objects.nonNull(unfreezeBalanceV2Contract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(unfreezeBalanceV2Contract.getOwnerAddress().toByteArray())); - } + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unfreezeBalanceV2Contract.getOwnerAddress().toByteArray())); transactionLogTrigger.setAssetName("trx"); transactionLogTrigger.setAssetAmount( - unfreezeBalanceV2Contract.getUnfreezeBalance()); + unfreezeBalanceV2Contract.getUnfreezeBalance()); break; case WithdrawExpireUnfreezeContract: WithdrawExpireUnfreezeContract withdrawExpireUnfreezeContract = contractParameter .unpack(WithdrawExpireUnfreezeContract.class); - if (Objects.nonNull(withdrawExpireUnfreezeContract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil.encode58Check( - withdrawExpireUnfreezeContract.getOwnerAddress().toByteArray())); - transactionLogTrigger.setAssetAmount(transactionInfo.getWithdrawExpireAmount()); - } + transactionLogTrigger.setFromAddress(StringUtil.encode58Check( + withdrawExpireUnfreezeContract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount(transactionInfo.getWithdrawExpireAmount()); break; case DelegateResourceContract: DelegateResourceContract delegateResourceContract = contractParameter .unpack(DelegateResourceContract.class); - if (Objects.nonNull(delegateResourceContract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(delegateResourceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(delegateResourceContract.getReceiverAddress())) { - transactionLogTrigger.setToAddress(StringUtil + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(delegateResourceContract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setToAddress(StringUtil .encode58Check(delegateResourceContract.getReceiverAddress().toByteArray())); - } transactionLogTrigger.setAssetName("trx"); transactionLogTrigger.setAssetAmount( - delegateResourceContract.getBalance()); + delegateResourceContract.getBalance()); break; case UnDelegateResourceContract: UnDelegateResourceContract unDelegateResourceContract = contractParameter .unpack(UnDelegateResourceContract.class); - if (Objects.nonNull(unDelegateResourceContract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(unDelegateResourceContract.getOwnerAddress().toByteArray())); - } - if (Objects.nonNull(unDelegateResourceContract.getReceiverAddress())) { - transactionLogTrigger.setToAddress(StringUtil.encode58Check( - unDelegateResourceContract.getReceiverAddress().toByteArray())); - } + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(unDelegateResourceContract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setToAddress(StringUtil.encode58Check( + unDelegateResourceContract.getReceiverAddress().toByteArray())); + transactionLogTrigger.setAssetName("trx"); transactionLogTrigger.setAssetAmount( unDelegateResourceContract.getBalance()); @@ -245,10 +231,8 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule CancelAllUnfreezeV2Contract cancelAllUnfreezeV2Contract = contractParameter .unpack(CancelAllUnfreezeV2Contract.class); - if (Objects.nonNull(cancelAllUnfreezeV2Contract.getOwnerAddress())) { - transactionLogTrigger.setFromAddress(StringUtil - .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); - } + transactionLogTrigger.setFromAddress(StringUtil + .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); break; default: break; From 3e3ebe91a44746e611588b31cfba37c2fcf27ff0 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Mon, 28 Aug 2023 17:31:08 +0800 Subject: [PATCH 5/9] feat(mechanism): add unit test for optimize of new transaction address parsing --- .../TransactionLogTriggerCapsuleTest.java | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 framework/src/test/java/org/tron/common/logsfilter/TransactionLogTriggerCapsuleTest.java diff --git a/framework/src/test/java/org/tron/common/logsfilter/TransactionLogTriggerCapsuleTest.java b/framework/src/test/java/org/tron/common/logsfilter/TransactionLogTriggerCapsuleTest.java new file mode 100644 index 00000000000..d8da2cc540d --- /dev/null +++ b/framework/src/test/java/org/tron/common/logsfilter/TransactionLogTriggerCapsuleTest.java @@ -0,0 +1,159 @@ +package org.tron.common.logsfilter; + +import static org.tron.core.config.Parameter.ChainConstant.TRX_PRECISION; + +import com.google.protobuf.ByteString; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.tron.common.logsfilter.capsule.TransactionLogTriggerCapsule; +import org.tron.common.utils.Sha256Hash; +import org.tron.core.capsule.BlockCapsule; +import org.tron.core.capsule.TransactionCapsule; +import org.tron.p2p.utils.ByteArray; +import org.tron.protos.Protocol; +import org.tron.protos.contract.BalanceContract; +import org.tron.protos.contract.Common; + +public class TransactionLogTriggerCapsuleTest { + + private static final String OWNER_ADDRESS = "41548794500882809695a8a687866e76d4271a1abc"; + private static final String RECEIVER_ADDRESS = "41abd4b9367799eaa3197fecb144eb71de1e049150"; + + public TransactionCapsule transactionCapsule; + public BlockCapsule blockCapsule; + + @Before + public void setup() { + blockCapsule = new BlockCapsule(1, Sha256Hash.ZERO_HASH, + System.currentTimeMillis(), Sha256Hash.ZERO_HASH.getByteString()); + } + + @Test + public void testConstructorWithUnfreezeBalanceTrxCapsule() { + BalanceContract.UnfreezeBalanceContract.Builder builder2 = + BalanceContract.UnfreezeBalanceContract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))) + .setReceiverAddress(ByteString.copyFrom(ByteArray.fromHexString(RECEIVER_ADDRESS))); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.UnfreezeBalanceContract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getToAddress()); + } + + + @Test + public void testConstructorWithFreezeBalanceV2TrxCapsule() { + BalanceContract.FreezeBalanceV2Contract.Builder builder2 = + BalanceContract.FreezeBalanceV2Contract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))) + .setFrozenBalance(TRX_PRECISION + 100000) + .setResource(Common.ResourceCode.BANDWIDTH); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.FreezeBalanceV2Contract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertEquals("trx", triggerCapsule.getTransactionLogTrigger().getAssetName()); + Assert.assertEquals(TRX_PRECISION + 100000, + triggerCapsule.getTransactionLogTrigger().getAssetAmount()); + } + + @Test + public void testConstructorWithUnfreezeBalanceV2TrxCapsule() { + BalanceContract.UnfreezeBalanceV2Contract.Builder builder2 = + BalanceContract.UnfreezeBalanceV2Contract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))) + .setUnfreezeBalance(TRX_PRECISION + 4000) + .setResource(Common.ResourceCode.BANDWIDTH); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.UnfreezeBalanceV2Contract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertEquals("trx", triggerCapsule.getTransactionLogTrigger().getAssetName()); + Assert.assertEquals(TRX_PRECISION + 4000, + triggerCapsule.getTransactionLogTrigger().getAssetAmount()); + } + + + @Test + public void testConstructorWithWithdrawExpireTrxCapsule() { + BalanceContract.WithdrawExpireUnfreezeContract.Builder builder2 = + BalanceContract.WithdrawExpireUnfreezeContract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.WithdrawExpireUnfreezeContract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertEquals("trx", triggerCapsule.getTransactionLogTrigger().getAssetName()); + Assert.assertEquals(0L, triggerCapsule.getTransactionLogTrigger().getAssetAmount()); + } + + + @Test + public void testConstructorWithDelegateResourceTrxCapsule() { + BalanceContract.DelegateResourceContract.Builder builder2 = + BalanceContract.DelegateResourceContract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))) + .setReceiverAddress(ByteString.copyFrom(ByteArray.fromHexString(RECEIVER_ADDRESS))) + .setBalance(TRX_PRECISION + 2000); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.DelegateResourceContract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getToAddress()); + Assert.assertEquals("trx", triggerCapsule.getTransactionLogTrigger().getAssetName()); + Assert.assertEquals(TRX_PRECISION + 2000, + triggerCapsule.getTransactionLogTrigger().getAssetAmount()); + } + + @Test + public void testConstructorWithUnDelegateResourceTrxCapsule() { + BalanceContract.UnDelegateResourceContract.Builder builder2 = + BalanceContract.UnDelegateResourceContract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))) + .setReceiverAddress(ByteString.copyFrom(ByteArray.fromHexString(RECEIVER_ADDRESS))) + .setBalance(TRX_PRECISION + 10000); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.UnDelegateResourceContract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getToAddress()); + Assert.assertEquals("trx", triggerCapsule.getTransactionLogTrigger().getAssetName()); + Assert.assertEquals(TRX_PRECISION + 10000, + triggerCapsule.getTransactionLogTrigger().getAssetAmount()); + } + + @Test + public void testConstructorWithCancelAllUnfreezeTrxCapsule() { + BalanceContract.CancelAllUnfreezeV2Contract.Builder builder2 = + BalanceContract.CancelAllUnfreezeV2Contract.newBuilder() + .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS))); + transactionCapsule = new TransactionCapsule(builder2.build(), + Protocol.Transaction.Contract.ContractType.CancelAllUnfreezeV2Contract); + + TransactionLogTriggerCapsule triggerCapsule = + new TransactionLogTriggerCapsule(transactionCapsule, blockCapsule); + + Assert.assertNotNull(triggerCapsule.getTransactionLogTrigger().getFromAddress()); + } + +} \ No newline at end of file From 737c36e142e8d6446243c5900405d80e0c216def Mon Sep 17 00:00:00 2001 From: chaozhu Date: Tue, 29 Aug 2023 11:29:08 +0800 Subject: [PATCH 6/9] feat(mechanism): add fields for optimize of new transaction address parsing --- .../logsfilter/capsule/TransactionLogTriggerCapsule.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index 7760c2df4ae..b3217634f2e 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -173,6 +173,9 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule transactionLogTrigger.setToAddress(StringUtil .encode58Check(unfreezeBalanceContract.getReceiverAddress().toByteArray())); } + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setAssetAmount( + transactionInfo.getUnfreezeAmount()); break; case FreezeBalanceV2Contract: FreezeBalanceV2Contract freezeBalanceV2Contract = contractParameter From 082abc72479168e73ead326d56152a42a3ea78b6 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Thu, 31 Aug 2023 15:47:18 +0800 Subject: [PATCH 7/9] feat(mechanism): add fields for optimize of new transaction address parsing --- .../logsfilter/capsule/TransactionLogTriggerCapsule.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index b3217634f2e..36d1cd79001 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -1,6 +1,7 @@ package org.tron.common.logsfilter.capsule; import static org.tron.protos.Protocol.Transaction.Contract.ContractType.CreateSmartContract; +import static org.tron.protos.contract.Common.ResourceCode.ENERGY; import com.google.protobuf.Any; import com.google.protobuf.ByteString; @@ -236,6 +237,9 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule transactionLogTrigger.setFromAddress(StringUtil .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); + transactionLogTrigger.setAssetName("energy"); + transactionLogTrigger.setAssetAmount( + transactionInfo.getCancelUnfreezeV2AmountMap().get(ENERGY.name())); break; default: break; From cd65c89ddd07cad6cd93827f93a265391090af26 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Fri, 1 Sep 2023 13:22:41 +0800 Subject: [PATCH 8/9] feat(mechanism): add fields for optimize of new transaction address parsing --- .../common/logsfilter/trigger/TransactionLogTrigger.java | 6 ++++++ .../logsfilter/capsule/TransactionLogTriggerCapsule.java | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java b/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java index dec4170efb8..6923c3a0422 100644 --- a/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java +++ b/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java @@ -1,6 +1,8 @@ package org.tron.common.logsfilter.trigger; import java.util.List; +import java.util.Map; + import lombok.Getter; import lombok.Setter; @@ -91,6 +93,10 @@ public class TransactionLogTrigger extends Trigger { @Setter private long energyUnitPrice; + @Getter + @Setter + private Map cancelUnfreezeV2AmountMap; + public TransactionLogTrigger() { setTriggerName(Trigger.TRANSACTION_TRIGGER_NAME); } diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index 36d1cd79001..2ae6f02e939 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -237,9 +237,8 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule transactionLogTrigger.setFromAddress(StringUtil .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); - transactionLogTrigger.setAssetName("energy"); - transactionLogTrigger.setAssetAmount( - transactionInfo.getCancelUnfreezeV2AmountMap().get(ENERGY.name())); + transactionLogTrigger.setAssetName("trx"); + transactionLogTrigger.setCancelUnfreezeV2AmountMap(transactionInfo.getCancelUnfreezeV2AmountMap()); break; default: break; From eaaa32305c57f062575b4e74b7cc3d78024511e1 Mon Sep 17 00:00:00 2001 From: chaozhu Date: Fri, 1 Sep 2023 13:26:09 +0800 Subject: [PATCH 9/9] feat(mechanism): add fields for optimize of new transaction address parsing --- .../tron/common/logsfilter/trigger/TransactionLogTrigger.java | 2 +- .../common/logsfilter/capsule/TransactionLogTriggerCapsule.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java b/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java index 6923c3a0422..a4fb1fddb79 100644 --- a/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java +++ b/common/src/main/java/org/tron/common/logsfilter/trigger/TransactionLogTrigger.java @@ -95,7 +95,7 @@ public class TransactionLogTrigger extends Trigger { @Getter @Setter - private Map cancelUnfreezeV2AmountMap; + private Map extMap; public TransactionLogTrigger() { setTriggerName(Trigger.TRANSACTION_TRIGGER_NAME); diff --git a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java index 2ae6f02e939..ab6ea018cf8 100644 --- a/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java +++ b/framework/src/main/java/org/tron/common/logsfilter/capsule/TransactionLogTriggerCapsule.java @@ -238,7 +238,7 @@ public TransactionLogTriggerCapsule(TransactionCapsule trxCapsule, BlockCapsule transactionLogTrigger.setFromAddress(StringUtil .encode58Check(cancelAllUnfreezeV2Contract.getOwnerAddress().toByteArray())); transactionLogTrigger.setAssetName("trx"); - transactionLogTrigger.setCancelUnfreezeV2AmountMap(transactionInfo.getCancelUnfreezeV2AmountMap()); + transactionLogTrigger.setExtMap(transactionInfo.getCancelUnfreezeV2AmountMap()); break; default: break;