Skip to content

Commit c636d80

Browse files
wangyue168gitdalaocu
authored andcommitted
Dev 1.7.4 (#37)
* add basic table ignore config * fix bug of data leak
1 parent 1861995 commit c636d80

File tree

14 files changed

+436
-44
lines changed

14 files changed

+436
-44
lines changed

ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# 更新历史
22

3+
### V1.7.4 (2021-07-08)
4+
- 增加基础表和表字段过滤能力
5+
- 修复区块多笔交易场景下,事件解析只解析首条的bug
6+
37
### V1.7.3 (2021-05-21)
48
- 服务方式启动整合编译插件,配置合约即可完成导出
59
- sdk修复部分bug

WeBankBlockchain-Data-Export-sdk/WeBankBlockchain-Data-Export-common/src/main/java/com/webank/blockchain/data/export/common/bo/data/BlockRawDataBO.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,4 @@ public class BlockRawDataBO {
3131
private String gasUsed;
3232
private String signatureList;
3333
private String transactionList;
34-
protected Date depotUpdatetime;
3534
}

WeBankBlockchain-Data-Export-sdk/WeBankBlockchain-Data-Export-common/src/main/java/com/webank/blockchain/data/export/common/entity/ExportConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ public class ExportConfig {
3333
*/
3434
private Map<String, Map<String,List<String>>> ignoreParam = new HashMap<>();
3535

36+
/**
37+
* ex: Map<contractName, Map<methodName or eventName, List<solidityParamName>>>
38+
*/
39+
private Map<String, List<String>> ignoreBasicDataTableParam = new HashMap<>();
40+
3641
/**
3742
* ex: Map<contractName, Map<methodName or eventName, Map<solidityParamName,paramType>>>
3843
*/

WeBankBlockchain-Data-Export-sdk/WeBankBlockchain-Data-Export-common/src/main/java/com/webank/blockchain/data/export/common/enums/DataType.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,15 @@ public static List<DataType> getDefault(){
3636
return ListUtil.toList(NULL);
3737
}
3838

39+
public static DataType getDataType(String tableName){
40+
for(DataType dataType : DataType.values()){
41+
if (dataType.tableName.equals(tableName)){
42+
return dataType;
43+
}
44+
}
45+
return NULL;
46+
}
47+
3948
public static List<String> getTables(List<DataType> dataTypes){
4049
if (CollectionUtil.isEmpty(dataTypes)) {
4150
return Collections.emptyList();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.webank.blockchain.data.export.common.enums;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
6+
/**
7+
* @author wesleywang
8+
* @Description:
9+
* @date 2021/6/23
10+
*/
11+
@AllArgsConstructor
12+
@Getter
13+
public class IgnoreBasicDataParam {
14+
15+
@Getter
16+
public enum IgnoreBasicDataTable {
17+
BLOCK_RAW_DATA_TABLE,
18+
TX_RAW_DATA_TABLE,
19+
TX_RECEIPT_RAW_DATA_TABLE;
20+
21+
IgnoreBasicDataTable() { }
22+
}
23+
24+
@Getter
25+
public enum BlockRawDataParams {
26+
DB_HASH,
27+
EXTRA_DATA,
28+
GAS_LIMIT,
29+
GAS_USED,
30+
LOGS_BLOOM,
31+
PARENT_HASH,
32+
RECEIPTS_ROOT,
33+
SEALER,
34+
SEALER_LIST,
35+
SIGNATURE_LIST,
36+
STATE_ROOT,
37+
TRANSACTION_LIST,
38+
TRANSACTIONS_ROOT;
39+
40+
BlockRawDataParams() { }
41+
}
42+
43+
@Getter
44+
public enum TxReceiptRawDataParams {
45+
FROM,
46+
GAS_USED,
47+
LOGS,
48+
INPUT,
49+
MESSAGE,
50+
OUTPUT,
51+
LOGS_BLOOM,
52+
ROOT,
53+
TO,
54+
TX_INDEX,
55+
TX_PROOF,
56+
RECEIPT_PROOF;
57+
58+
TxReceiptRawDataParams() { }
59+
}
60+
61+
@Getter
62+
public enum TxRawDataParams {
63+
FROM,
64+
GAS,
65+
GAS_PRICE,
66+
INPUT,
67+
NONCE,
68+
VALUE,
69+
TO;
70+
71+
72+
TxRawDataParams() { }
73+
}
74+
75+
}

WeBankBlockchain-Data-Export-sdk/WeBankBlockchain-Data-Export-parser/src/main/java/com/webank/blockchain/data/export/parser/handler/BlockCrawlerHandler.java

Lines changed: 64 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@
1616
import com.webank.blockchain.data.export.common.bo.data.BlockDetailInfoBO;
1717
import com.webank.blockchain.data.export.common.bo.data.BlockDetailInfoBO.Status;
1818
import com.webank.blockchain.data.export.common.bo.data.BlockRawDataBO;
19+
import com.webank.blockchain.data.export.common.entity.ExportConfig;
20+
import com.webank.blockchain.data.export.common.entity.ExportConstant;
21+
import com.webank.blockchain.data.export.common.enums.IgnoreBasicDataParam;
1922
import com.webank.blockchain.data.export.common.tools.DateUtils;
2023
import com.webank.blockchain.data.export.common.tools.JacksonUtils;
2124
import org.fisco.bcos.sdk.client.protocol.response.BcosBlock.Block;
2225

26+
import java.util.List;
27+
import java.util.Map;
28+
2329
/**
2430
* BlockCrawlerHandler is responsible for crawling block info.
2531
*
@@ -36,7 +42,6 @@ public class BlockCrawlerHandler {
3642
* transaction's count in current block, block hash and block timestamp.
3743
*
3844
* @param block
39-
* @param blockHeight
4045
* @return boolean
4146
*/
4247
public static BlockDetailInfoBO handleBlockDetail(Block block) {
@@ -50,24 +55,68 @@ public static BlockDetailInfoBO handleBlockDetail(Block block) {
5055
}
5156

5257
public static BlockRawDataBO handleBlockRawData(Block block) {
58+
ExportConfig config = ExportConstant.getCurrentContext().getConfig();
59+
Map<String, List<String>> ignoreBasicDataTableParam = config.getIgnoreBasicDataTableParam();
5360
BlockRawDataBO blockRawDataBO = new BlockRawDataBO();
5461
blockRawDataBO.setBlockHeight(block.getNumber().longValue());
5562
blockRawDataBO.setBlockHash(block.getHash());
5663
blockRawDataBO.setBlockTimeStamp(DateUtils.hexStrToDate(block.getTimestamp()));
57-
blockRawDataBO.setDbHash(block.getDbHash());
58-
blockRawDataBO.setExtraData(JacksonUtils.toJson(block.getExtraData()));
59-
blockRawDataBO.setGasLimit(block.getGasLimit());
60-
blockRawDataBO.setGasUsed(block.getGasUsed());
61-
blockRawDataBO.setLogsBloom(block.getLogsBloom());
62-
blockRawDataBO.setParentHash(block.getParentHash());
63-
blockRawDataBO.setReceiptsRoot(block.getReceiptsRoot());
64-
blockRawDataBO.setSealer(block.getSealer());
65-
blockRawDataBO.setSealerList(JacksonUtils.toJson(block.getSealerList()));
66-
blockRawDataBO.setSignatureList(JacksonUtils.toJson(block.getSignatureList()));
67-
blockRawDataBO.setStateRoot(block.getStateRoot());
68-
blockRawDataBO.setTransactionsRoot(block.getTransactionsRoot());
69-
blockRawDataBO.setTransactionList(JacksonUtils.toJson(block.getTransactions()));
70-
blockRawDataBO.setBlockObject(JacksonUtils.toJson(block));
64+
if (!ignoreBasicDataTableParam.containsKey(IgnoreBasicDataParam.IgnoreBasicDataTable.BLOCK_RAW_DATA_TABLE.name())) {
65+
blockRawDataBO.setDbHash(block.getDbHash());
66+
blockRawDataBO.setExtraData(JacksonUtils.toJson(block.getExtraData()));
67+
blockRawDataBO.setGasLimit(block.getGasLimit());
68+
blockRawDataBO.setGasUsed(block.getGasUsed());
69+
blockRawDataBO.setLogsBloom(block.getLogsBloom());
70+
blockRawDataBO.setParentHash(block.getParentHash());
71+
blockRawDataBO.setReceiptsRoot(block.getReceiptsRoot());
72+
blockRawDataBO.setSealer(block.getSealer());
73+
blockRawDataBO.setSealerList(JacksonUtils.toJson(block.getSealerList()));
74+
blockRawDataBO.setSignatureList(JacksonUtils.toJson(block.getSignatureList()));
75+
blockRawDataBO.setStateRoot(block.getStateRoot());
76+
blockRawDataBO.setTransactionsRoot(block.getTransactionsRoot());
77+
blockRawDataBO.setTransactionList(JacksonUtils.toJson(block.getTransactions()));
78+
}else {
79+
List<String> params = ignoreBasicDataTableParam.get(IgnoreBasicDataParam.IgnoreBasicDataTable.BLOCK_RAW_DATA_TABLE.name());
80+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.DB_HASH.name())) {
81+
blockRawDataBO.setDbHash(block.getDbHash());
82+
}
83+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.EXTRA_DATA.name())) {
84+
blockRawDataBO.setExtraData(JacksonUtils.toJson(block.getExtraData()));
85+
}
86+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.GAS_LIMIT.name())) {
87+
blockRawDataBO.setGasLimit(block.getGasLimit());
88+
}
89+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.GAS_USED.name())) {
90+
blockRawDataBO.setGasUsed(block.getGasUsed());
91+
}
92+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.LOGS_BLOOM.name())) {
93+
blockRawDataBO.setLogsBloom(block.getLogsBloom());
94+
}
95+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.PARENT_HASH.name())) {
96+
blockRawDataBO.setParentHash(block.getParentHash());
97+
}
98+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.RECEIPTS_ROOT.name())) {
99+
blockRawDataBO.setReceiptsRoot(block.getReceiptsRoot());
100+
}
101+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.SEALER.name())) {
102+
blockRawDataBO.setSealer(block.getSealer());
103+
}
104+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.SEALER_LIST.name())) {
105+
blockRawDataBO.setSealerList(JacksonUtils.toJson(block.getSealerList()));
106+
}
107+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.SEALER_LIST.name())) {
108+
blockRawDataBO.setSignatureList(JacksonUtils.toJson(block.getSignatureList()));
109+
}
110+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.STATE_ROOT.name())) {
111+
blockRawDataBO.setStateRoot(block.getStateRoot());
112+
}
113+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.TRANSACTIONS_ROOT.name())) {
114+
blockRawDataBO.setTransactionsRoot(block.getTransactionsRoot());
115+
}
116+
if (!params.contains(IgnoreBasicDataParam.BlockRawDataParams.TRANSACTION_LIST.name())) {
117+
blockRawDataBO.setTransactionList(JacksonUtils.toJson(block.getTransactions()));
118+
}
119+
}
71120
return blockRawDataBO;
72121
}
73122
}

WeBankBlockchain-Data-Export-sdk/WeBankBlockchain-Data-Export-parser/src/main/java/com/webank/blockchain/data/export/parser/handler/EventCrawlerHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@
5656
@Slf4j
5757
public class EventCrawlerHandler {
5858

59-
6059
@SuppressWarnings({ "rawtypes", "unused" })
6160
public static List<EventBO> crawl(Block block, Map<String, String> txHashContractNameMapping) throws IOException {
6261
List<TransactionResult> transactionResults = block.getTransactions();
62+
List<EventBO> boList = new ArrayList<>();
6363
for (TransactionResult result : transactionResults) {
6464
TransactionObject to = (TransactionObject) result;
6565
JsonTransactionResponse transaction = to.get();
@@ -81,10 +81,10 @@ public static List<EventBO> crawl(Block block, Map<String, String> txHashContrac
8181
if (abi == null) {
8282
continue;
8383
}
84-
return parserEvent(contractAbiMap, contractName.get(), abi, tr,block);
84+
boList.addAll(parserEvent(contractAbiMap, contractName.get(), abi, tr,block));
8585
}
8686
}
87-
return ListUtil.empty();
87+
return boList;
8888
}
8989

9090
private static List<EventBO> parserEvent(Map<String, ContractInfo> contractAbiMap, String contractName, String abi,

0 commit comments

Comments
 (0)