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
15 changes: 15 additions & 0 deletions common/src/main/java/org/tron/common/logsfilter/TriggerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,24 @@ public class TriggerConfig {
@Setter
private String topic;

@Getter
@Setter
private boolean redundancy;

@Getter
@Setter
private boolean ethCompatible;

@Getter
@Setter
private boolean solidified;

public TriggerConfig() {
triggerName = "";
enabled = false;
topic = "";
redundancy = false; // event will also write to log
ethCompatible = false; // add eth compatible fields, just for transaction now
solidified = false; // just write solidified data, just for block and transaction now
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,22 @@ public ContractLogTrigger() {
super();
setTriggerName(Trigger.CONTRACTLOG_TRIGGER_NAME);
}

public ContractLogTrigger(ContractEventTrigger eventTrigger) {
super();
setTriggerName(Trigger.CONTRACTLOG_TRIGGER_NAME);

setRawData(eventTrigger.getRawData());
setLatestSolidifiedBlockNumber(eventTrigger.getLatestSolidifiedBlockNumber());
setRemoved(eventTrigger.isRemoved());
setUniqueId(eventTrigger.getUniqueId());
setTransactionId(eventTrigger.getTransactionId());
setContractAddress(eventTrigger.getContractAddress());
setOriginAddress(eventTrigger.getOriginAddress());
setCallerAddress("");
setCreatorAddress(eventTrigger.getCreatorAddress());
setBlockNumber(eventTrigger.getBlockNumber());
setTimeStamp(eventTrigger.getTimeStamp());
setBlockHash(eventTrigger.getBlockHash());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ public class ContractTrigger extends Trigger {
@Setter
private Long blockNumber;

@Getter
@Setter
private String blockHash;

/**
* true if the transaction has been revoked
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.tron.common.logsfilter.trigger;

import java.util.List;
import lombok.Getter;
import lombok.Setter;

public class LogPojo {
@Getter
@Setter
private String address;

@Getter
@Setter
private String blockHash;

@Getter
@Setter
private long blockNumber;

@Getter
@Setter
private String data;

@Getter
@Setter
private long logIndex;

@Getter
@Setter
private List<String> topicList;

@Getter
@Setter
private String transactionHash;

@Getter
@Setter
private long transactionIndex;
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,21 @@ public class TransactionLogTrigger extends Trigger {
@Getter
@Setter
private String data;
@Getter
@Setter
private int transactionIndex;
@Getter
@Setter
private long cumulativeEnergyUsed;
@Getter
@Setter
private long preCumulativeLogCount;
@Getter
@Setter
private List<LogPojo> logList;
@Getter
@Setter
private long energyUnitPrice;

public TransactionLogTrigger() {
setTriggerName(Trigger.TRANSACTION_TRIGGER_NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,26 @@ public class EventPluginLoader {

private boolean blockLogTriggerEnable = false;

private boolean blockLogTriggerSolidified = false;

private boolean transactionLogTriggerEnable = false;

private boolean transactionLogTriggerSolidified = false;

private boolean transactionLogTriggerEthCompatible = false;

private boolean contractEventTriggerEnable = false;

private boolean contractLogTriggerEnable = false;

private boolean contractLogTriggerRedundancy = false;

private boolean solidityEventTriggerEnable = false;

private boolean solidityLogTriggerEnable = false;

private boolean solidityLogTriggerRedundancy = false;

private boolean solidityTriggerEnable = false;

private FilterQuery filterQuery;
Expand Down Expand Up @@ -241,8 +251,12 @@ private void setSingleTriggerConfig(TriggerConfig triggerConfig) {
if (EventPluginConfig.BLOCK_TRIGGER_NAME.equalsIgnoreCase(triggerConfig.getTriggerName())) {
if (triggerConfig.isEnabled()) {
blockLogTriggerEnable = true;
if (triggerConfig.isSolidified()) {
blockLogTriggerSolidified = true;
}
} else {
blockLogTriggerEnable = false;
blockLogTriggerSolidified = false;
}

if (!useNativeQueue) {
Expand All @@ -253,8 +267,16 @@ private void setSingleTriggerConfig(TriggerConfig triggerConfig) {
.equalsIgnoreCase(triggerConfig.getTriggerName())) {
if (triggerConfig.isEnabled()) {
transactionLogTriggerEnable = true;
if (triggerConfig.isEthCompatible()) {
transactionLogTriggerEthCompatible = true;
}
if (triggerConfig.isSolidified()) {
transactionLogTriggerSolidified = true;
}
} else {
transactionLogTriggerEnable = false;
transactionLogTriggerEthCompatible = false;
transactionLogTriggerSolidified = false;
}

if (!useNativeQueue) {
Expand All @@ -277,8 +299,12 @@ private void setSingleTriggerConfig(TriggerConfig triggerConfig) {
.equalsIgnoreCase(triggerConfig.getTriggerName())) {
if (triggerConfig.isEnabled()) {
contractLogTriggerEnable = true;
if (triggerConfig.isRedundancy()) {
contractLogTriggerRedundancy = true;
}
} else {
contractLogTriggerEnable = false;
contractLogTriggerRedundancy = false;
}

if (!useNativeQueue) {
Expand Down Expand Up @@ -309,8 +335,12 @@ private void setSingleTriggerConfig(TriggerConfig triggerConfig) {
.equalsIgnoreCase(triggerConfig.getTriggerName())) {
if (triggerConfig.isEnabled()) {
solidityLogTriggerEnable = true;
if (triggerConfig.isRedundancy()) {
solidityLogTriggerRedundancy = true;
}
} else {
solidityLogTriggerEnable = false;
solidityLogTriggerRedundancy = false;
}
if (!useNativeQueue) {
setPluginTopic(Trigger.SOLIDITY_LOG_TRIGGER, triggerConfig.getTopic());
Expand All @@ -332,6 +362,10 @@ public synchronized boolean isBlockLogTriggerEnable() {
return blockLogTriggerEnable;
}

public synchronized boolean isBlockLogTriggerSolidified() {
return blockLogTriggerSolidified;
}

public synchronized boolean isSolidityTriggerEnable() {
return solidityTriggerEnable;
}
Expand All @@ -344,10 +378,22 @@ public synchronized boolean isSolidityLogTriggerEnable() {
return solidityLogTriggerEnable;
}

public synchronized boolean isSolidityLogTriggerRedundancy() {
return solidityLogTriggerRedundancy;
}

public synchronized boolean isTransactionLogTriggerEnable() {
return transactionLogTriggerEnable;
}

public synchronized boolean isTransactionLogTriggerEthCompatible() {
return transactionLogTriggerEthCompatible;
}

public synchronized boolean isTransactionLogTriggerSolidified() {
return transactionLogTriggerSolidified;
}

public synchronized boolean isContractEventTriggerEnable() {
return contractEventTriggerEnable;
}
Expand All @@ -356,6 +402,10 @@ public synchronized boolean isContractLogTriggerEnable() {
return contractLogTriggerEnable;
}

public synchronized boolean isContractLogTriggerRedundancy() {
return contractLogTriggerRedundancy;
}

private void setPluginTopic(int eventType, String topic) {
eventListeners.forEach(listener -> listener.setTopic(eventType, topic));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public void setLatestSolidifiedBlockNumber(long latestSolidifiedBlockNumber) {
contractTrigger.setLatestSolidifiedBlockNumber(latestSolidifiedBlockNumber);
}

public void setBlockHash(String blockHash) {
contractTrigger.setBlockHash(blockHash);
}

@Override
public void processTrigger() {
ContractTrigger event;
Expand Down Expand Up @@ -123,6 +127,7 @@ public void processTrigger() {
event.setCreatorAddress(contractTrigger.getCreatorAddress());
event.setBlockNumber(contractTrigger.getBlockNumber());
event.setTimeStamp(contractTrigger.getTimeStamp());
event.setBlockHash(contractTrigger.getBlockHash());

if (matchFilter(contractTrigger)) {
if (isEvent) {
Expand All @@ -136,6 +141,25 @@ public void processTrigger() {
.offer((ContractEventTrigger) event);
}

// enable process contractEvent as contractLog
if ((EventPluginLoader.getInstance().isContractLogTriggerEnable()
&& EventPluginLoader.getInstance().isContractLogTriggerRedundancy())
|| (EventPluginLoader.getInstance().isSolidityLogTriggerEnable()
&& EventPluginLoader.getInstance().isSolidityLogTriggerRedundancy())) {
ContractLogTrigger logTrigger = new ContractLogTrigger((ContractEventTrigger) event);
logTrigger.setTopicList(logInfo.getHexTopics());
logTrigger.setData(logInfo.getHexData());

if (EventPluginLoader.getInstance().isContractLogTriggerRedundancy()) {
EventPluginLoader.getInstance().postContractLogTrigger(logTrigger);
}

if (EventPluginLoader.getInstance().isSolidityLogTriggerRedundancy()) {
Args.getSolidityContractLogTriggerMap().computeIfAbsent(event
.getBlockNumber(), listBlk -> new LinkedBlockingQueue())
.offer(logTrigger);
}
}
} else {
if (EventPluginLoader.getInstance().isContractLogTriggerEnable()) {
EventPluginLoader.getInstance().postContractLogTrigger((ContractLogTrigger) event);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ public SolidityTriggerCapsule(long latestSolidifiedBlockNum) {
solidityTrigger.setLatestSolidifiedBlockNumber(latestSolidifiedBlockNum);
}

public void setTimeStamp(long timeStamp) {
solidityTrigger.setTimeStamp(timeStamp);
}

@Override
public void processTrigger() {
EventPluginLoader.getInstance().postSolidityTrigger(solidityTrigger);
Expand Down
Loading