Skip to content

Commit f09bedb

Browse files
authored
Merge pull request #3615 from tronprotocol/remove-blackhole-account
add the query burn trx interface
2 parents 2d4a7f9 + 6bf2ebb commit f09bedb

File tree

9 files changed

+149
-15
lines changed

9 files changed

+149
-15
lines changed

framework/src/main/java/org/tron/core/services/RpcApiService.java

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.tron.core.services;
22

3-
import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
4-
53
import com.google.common.base.Preconditions;
64
import com.google.protobuf.ByteString;
75
import com.google.protobuf.InvalidProtocolBufferException;
@@ -142,7 +140,6 @@
142140
import org.tron.protos.contract.AssetIssueContractOuterClass.TransferAssetContract;
143141
import org.tron.protos.contract.AssetIssueContractOuterClass.UnfreezeAssetContract;
144142
import org.tron.protos.contract.AssetIssueContractOuterClass.UpdateAssetContract;
145-
import org.tron.protos.contract.BalanceContract;
146143
import org.tron.protos.contract.BalanceContract.AccountBalanceRequest;
147144
import org.tron.protos.contract.BalanceContract.AccountBalanceResponse;
148145
import org.tron.protos.contract.BalanceContract.BlockBalanceTrace;
@@ -672,6 +669,11 @@ public void getBrokerageInfo(BytesMessage request,
672669
getBrokerageInfoCommon(request, responseObserver);
673670
}
674671

672+
@Override
673+
public void getBurnTrx(EmptyMessage request, StreamObserver<NumberMessage> responseObserver) {
674+
getBurnTrxCommon(request, responseObserver);
675+
}
676+
675677
@Override
676678
public void getMerkleTreeVoucherInfo(OutputPointInfo request,
677679
StreamObserver<IncrementalMerkleVoucherInfo> responseObserver) {
@@ -959,9 +961,10 @@ public void getAccountById(Account req, StreamObserver<Account> responseObserver
959961
}
960962

961963
/**
964+
*
962965
*/
963966
public void getAccountBalance(AccountBalanceRequest request,
964-
StreamObserver<AccountBalanceResponse> responseObserver) {
967+
StreamObserver<AccountBalanceResponse> responseObserver) {
965968
try {
966969
AccountBalanceResponse accountBalanceResponse = wallet.getAccountBalance(request);
967970
responseObserver.onNext(accountBalanceResponse);
@@ -972,9 +975,10 @@ public void getAccountBalance(AccountBalanceRequest request,
972975
}
973976

974977
/**
978+
*
975979
*/
976980
public void getBlockBalanceTrace(BlockBalanceTrace.BlockIdentifier request,
977-
StreamObserver<BlockBalanceTrace> responseObserver) {
981+
StreamObserver<BlockBalanceTrace> responseObserver) {
978982
try {
979983
BlockBalanceTrace blockBalanceTrace = wallet.getBlockBalance(request);
980984
responseObserver.onNext(blockBalanceTrace);
@@ -1017,7 +1021,7 @@ private void createTransactionExtention(Message request, ContractType contractTy
10171021
} catch (ContractValidateException e) {
10181022
retBuilder.setResult(false).setCode(response_code.CONTRACT_VALIDATE_ERROR)
10191023
.setMessage(ByteString
1020-
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
1024+
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
10211025
logger.debug(CONTRACT_VALIDATE_EXCEPTION, e.getMessage());
10221026
} catch (Exception e) {
10231027
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
@@ -1895,7 +1899,7 @@ private void callContract(TriggerSmartContract request,
18951899
} catch (ContractValidateException | VMIllegalException e) {
18961900
retBuilder.setResult(false).setCode(response_code.CONTRACT_VALIDATE_ERROR)
18971901
.setMessage(ByteString.copyFromUtf8(Wallet
1898-
.CONTRACT_VALIDATE_ERROR + e.getMessage()));
1902+
.CONTRACT_VALIDATE_ERROR + e.getMessage()));
18991903
trxExtBuilder.setResult(retBuilder);
19001904
logger.warn(CONTRACT_VALIDATE_EXCEPTION, e.getMessage());
19011905
} catch (RuntimeException e) {
@@ -2069,7 +2073,7 @@ public void createShieldedTransaction(PrivateParameters request,
20692073
} catch (ContractValidateException | ZksnarkException e) {
20702074
retBuilder.setResult(false).setCode(response_code.CONTRACT_VALIDATE_ERROR)
20712075
.setMessage(ByteString
2072-
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
2076+
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
20732077
logger.debug(CONTRACT_VALIDATE_EXCEPTION, e.getMessage());
20742078
} catch (Exception e) {
20752079
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
@@ -2100,7 +2104,7 @@ public void createShieldedTransactionWithoutSpendAuthSig(PrivateParametersWithou
21002104
} catch (ContractValidateException | ZksnarkException e) {
21012105
retBuilder.setResult(false).setCode(response_code.CONTRACT_VALIDATE_ERROR)
21022106
.setMessage(ByteString
2103-
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
2107+
.copyFromUtf8(Wallet.CONTRACT_VALIDATE_ERROR + e.getMessage()));
21042108
logger.debug(CONTRACT_VALIDATE_EXCEPTION, e.getMessage());
21052109
} catch (Exception e) {
21062110
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
@@ -2510,6 +2514,11 @@ public void getBrokerageInfo(BytesMessage request,
25102514
getBrokerageInfoCommon(request, responseObserver);
25112515
}
25122516

2517+
@Override
2518+
public void getBurnTrx(EmptyMessage request, StreamObserver<NumberMessage> responseObserver) {
2519+
getBurnTrxCommon(request, responseObserver);
2520+
}
2521+
25132522
@Override
25142523
public void updateBrokerage(UpdateBrokerageContract request,
25152524
StreamObserver<TransactionExtention> responseObserver) {
@@ -2659,6 +2668,19 @@ public void getRewardInfoCommon(BytesMessage request,
26592668
responseObserver.onCompleted();
26602669
}
26612670

2671+
public void getBurnTrxCommon(EmptyMessage request,
2672+
StreamObserver<NumberMessage> responseObserver) {
2673+
try {
2674+
long value = dbManager.getDynamicPropertiesStore().getBurnTrxAmount();
2675+
NumberMessage.Builder builder = NumberMessage.newBuilder();
2676+
builder.setNum(value);
2677+
responseObserver.onNext(builder.build());
2678+
} catch (Exception e) {
2679+
responseObserver.onError(e);
2680+
}
2681+
responseObserver.onCompleted();
2682+
}
2683+
26622684
public void getBrokerageInfoCommon(BytesMessage request,
26632685
StreamObserver<NumberMessage> responseObserver) {
26642686
try {

framework/src/main/java/org/tron/core/services/http/FullNodeHttpApiService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ public class FullNodeHttpApiService implements Service {
228228
@Autowired
229229
private BroadcastHexServlet broadcastHexServlet;
230230
@Autowired
231+
private GetBurnTrxServlet getBurnTrxServlet;
232+
@Autowired
231233
private GetBrokerageServlet getBrokerageServlet;
232234
@Autowired
233235
private GetRewardServlet getRewardServlet;
@@ -515,6 +517,7 @@ public void start() {
515517
"/wallet/getaccountbalance");
516518
context.addServlet(new ServletHolder(getBlockBalanceServlet),
517519
"/wallet/getblockbalance");
520+
context.addServlet(new ServletHolder(getBurnTrxServlet), "/wallet/getburntrx");
518521

519522
int maxHttpConnectNumber = Args.getInstance().getMaxHttpConnectNumber();
520523
if (maxHttpConnectNumber > 0) {
@@ -524,7 +527,7 @@ public void start() {
524527
// filters the specified APIs
525528
// when node is lite fullnode and openHistoryQueryWhenLiteFN is false
526529
context.addFilter(new FilterHolder(liteFnQueryHttpFilter), "/*",
527-
EnumSet.allOf(DispatcherType.class));
530+
EnumSet.allOf(DispatcherType.class));
528531

529532
// filter
530533
ServletHandler handler = new ServletHandler();
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.tron.core.services.http;
2+
3+
import java.io.IOException;
4+
import javax.servlet.http.HttpServletRequest;
5+
import javax.servlet.http.HttpServletResponse;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.stereotype.Component;
9+
import org.tron.core.db.Manager;
10+
11+
12+
@Component
13+
@Slf4j(topic = "API")
14+
public class GetBurnTrxServlet extends RateLimiterServlet {
15+
16+
@Autowired
17+
private Manager manager;
18+
19+
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
20+
try {
21+
long value = manager.getDynamicPropertiesStore().getBurnTrxAmount();
22+
response.getWriter().println("{\"burnTrxAmount\": " + value + "}");
23+
} catch (Exception e) {
24+
logger.error("", e);
25+
try {
26+
response.getWriter().println(Util.printErrorMsg(e));
27+
} catch (IOException ioe) {
28+
logger.debug("IOException: {}", ioe.getMessage());
29+
}
30+
}
31+
}
32+
33+
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34+
doGet(request, response);
35+
}
36+
}

framework/src/main/java/org/tron/core/services/http/solidity/SolidityNodeHttpApiService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.tron.core.services.http.GetBlockByLimitNextServlet;
2323
import org.tron.core.services.http.GetBlockByNumServlet;
2424
import org.tron.core.services.http.GetBrokerageServlet;
25+
import org.tron.core.services.http.GetBurnTrxServlet;
2526
import org.tron.core.services.http.GetDelegatedResourceAccountIndexServlet;
2627
import org.tron.core.services.http.GetDelegatedResourceServlet;
2728
import org.tron.core.services.http.GetExchangeByIdServlet;
@@ -127,7 +128,8 @@ public class SolidityNodeHttpApiService implements Service {
127128
private GetMarketOrderListByPairServlet getMarketOrderListByPairServlet;
128129
@Autowired
129130
private GetMarketPairListServlet getMarketPairListServlet;
130-
131+
@Autowired
132+
private GetBurnTrxServlet getBurnTrxServlet;
131133
@Autowired
132134
private GetBrokerageServlet getBrokerageServlet;
133135
@Autowired
@@ -237,6 +239,7 @@ public void start() {
237239
context.addServlet(new ServletHolder(getNodeInfoServlet), "/wallet/getnodeinfo");
238240
context.addServlet(new ServletHolder(getBrokerageServlet), "/walletsolidity/getBrokerage");
239241
context.addServlet(new ServletHolder(getRewardServlet), "/walletsolidity/getReward");
242+
context.addServlet(new ServletHolder(getBurnTrxServlet), "/walletsolidity/getburntrx");
240243

241244
int maxHttpConnectNumber = Args.getInstance().getMaxHttpConnectNumber();
242245
if (maxHttpConnectNumber > 0) {

framework/src/main/java/org/tron/core/services/interfaceOnPBFT/RpcApiServiceOnPBFT.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ public void scanShieldedTRC20NotesByIvk(IvkDecryptTRC20Parameters request,
467467
StreamObserver<DecryptNotesTRC20> responseObserver) {
468468
walletOnPBFT.futureGet(
469469
() -> rpcApiService.getWalletSolidityApi()
470-
.scanShieldedTRC20NotesByIvk(request, responseObserver)
470+
.scanShieldedTRC20NotesByIvk(request, responseObserver)
471471
);
472472
}
473473

@@ -476,7 +476,7 @@ public void scanShieldedTRC20NotesByOvk(OvkDecryptTRC20Parameters request,
476476
StreamObserver<DecryptNotesTRC20> responseObserver) {
477477
walletOnPBFT.futureGet(
478478
() -> rpcApiService.getWalletSolidityApi()
479-
.scanShieldedTRC20NotesByOvk(request, responseObserver)
479+
.scanShieldedTRC20NotesByOvk(request, responseObserver)
480480
);
481481
}
482482

@@ -485,7 +485,14 @@ public void isShieldedTRC20ContractNoteSpent(NfTRC20Parameters request,
485485
StreamObserver<NullifierResult> responseObserver) {
486486
walletOnPBFT.futureGet(
487487
() -> rpcApiService.getWalletSolidityApi()
488-
.isShieldedTRC20ContractNoteSpent(request, responseObserver)
488+
.isShieldedTRC20ContractNoteSpent(request, responseObserver)
489+
);
490+
}
491+
492+
@Override
493+
public void getBurnTrx(EmptyMessage request, StreamObserver<NumberMessage> responseObserver) {
494+
walletOnPBFT.futureGet(
495+
() -> rpcApiService.getWalletSolidityApi().getBurnTrx(request, responseObserver)
489496
);
490497
}
491498
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.tron.core.services.interfaceOnPBFT.http;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
import org.tron.core.services.http.GetBurnTrxServlet;
9+
import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
10+
11+
12+
@Component
13+
@Slf4j(topic = "API")
14+
public class GetBurnTrxOnPBFTServlet extends GetBurnTrxServlet {
15+
16+
@Autowired
17+
private WalletOnPBFT walletOnPBFT;
18+
19+
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
20+
walletOnPBFT.futureGet(() -> super.doGet(request, response));
21+
}
22+
23+
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
24+
walletOnPBFT.futureGet(() -> super.doPost(request, response));
25+
}
26+
}

framework/src/main/java/org/tron/core/services/interfaceOnSolidity/RpcApiServiceOnSolidity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,5 +485,11 @@ public void getMarketPairList(EmptyMessage request,
485485
);
486486
}
487487

488+
@Override
489+
public void getBurnTrx(EmptyMessage request, StreamObserver<NumberMessage> responseObserver) {
490+
walletOnSolidity.futureGet(
491+
() -> rpcApiService.getWalletSolidityApi().getBurnTrx(request, responseObserver)
492+
);
493+
}
488494
}
489495
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.tron.core.services.interfaceOnSolidity.http;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
import org.tron.core.services.http.GetBurnTrxServlet;
9+
import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
10+
11+
12+
@Component
13+
@Slf4j(topic = "API")
14+
public class GetBurnTrxOnSolidityServlet extends GetBurnTrxServlet {
15+
16+
@Autowired
17+
private WalletOnSolidity walletOnSolidity;
18+
19+
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
20+
walletOnSolidity.futureGet(() -> super.doGet(request, response));
21+
}
22+
23+
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
24+
walletOnSolidity.futureGet(() -> super.doPost(request, response));
25+
}
26+
}

protocol/src/main/protos/api/api.proto

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ service Wallet {
4242
};
4343

4444
rpc GetAccountBalance (AccountBalanceRequest) returns (AccountBalanceResponse) {
45-
option (google.api.http) = {
45+
option (google.api.http) = {
4646
post: "/wallet/getaccountbalance"
4747
body: "*"
4848
additional_bindings {
@@ -777,6 +777,9 @@ service Wallet {
777777

778778
rpc GetTransactionInfoByBlockNum (NumberMessage) returns (TransactionInfoList) {
779779
}
780+
781+
rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) {
782+
}
780783
};
781784

782785
service WalletSolidity {
@@ -960,6 +963,8 @@ service WalletSolidity {
960963
rpc GetMarketPairList (EmptyMessage) returns (MarketOrderPairList) {
961964
}
962965

966+
rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) {
967+
}
963968
};
964969

965970
service WalletExtension {

0 commit comments

Comments
 (0)