refactor(api): remove dead WalletExtension gRPC service and config
What does this PR do?
Removes the dead WalletExtension gRPC service and everything reachable only from it:
api.proto:service WalletExtension(GetTransactionsFromThis/2,GetTransactionsToThis/2), plus messagesAccountPaginated,TransactionList,TransactionListExtention(referenced only by these four RPCs) andTimeMessage/TimePaginatedMessage(request types of the WalletExtension*ByTimestampRPCs deleted in 2018, orphaned ever since)RpcApiService: the registration branch and the emptyWalletExtensionApiinner class- The
node.walletExtensionApiconfig item:CommonParameter/NodeConfigfields, theArgsbinding, and the key inreference.conf/config.conf/config-shield.conf. Following the retirement convention fornode.*keys,NodeConfig.fromConfignow logs a removal warning when the old key is still present in an operator config - Dead code only reachable from the above:
Util.printTransactionList(sole caller was its own mock test), the WalletExtension stub and wrappers in test utilitiesGrpcClient/WalletClient,HttpMethed.getTransactions{From,To}ThisFromSolidity(targets/walletextension/*HTTP paths that have no servlet), and commented-outgetTransactionsByTimestamp/getAssetIssueListByTimestampblocks
Why are these changes required?
WalletExtension has had no implementation in any release since v3.7 (2020-03): RpcApiService$WalletExtensionApi overrides none of the four RPCs, so every call falls through to the generated ImplBase default handlers and returns UNIMPLEMENTED. This makes node.walletExtensionApi behavior-irrelevant — enabled, it registers a service with zero implemented methods; disabled, callers get the same UNIMPLEMENTED. The only observable effect of enabling it is that gRPC reflection advertises a service that always fails. Removing it also resolves the default-value inconsistency between config.conf (true) and reference.conf (false).
Six years of unconditional UNIMPLEMENTED rules out any functional dependency, so the service is removed directly without a deprecation period, following existing practice for dead interfaces.
This PR has been tested by:
- Unit Tests:
ParameterTest(2),ArgsTest(21),UtilMockTest(19) all green;./gradlew clean build -x test+ Checkstyle pass; regenerated protobuf no longer containsWalletExtensionGrpcor the three messages; full-repo grep forWalletExtension|walletExtensionApi|AccountPaginated|TransactionsFromThis|TransactionsToThishas zero hits - Manual Testing: smoke-tested a FullNode with a leftover
node.walletExtensionApi = truekey in its config — the node starts normally with zero log mentions (the key is silently ignored, sinceConfigBeanFactoryonly validates bean-side properties), andgrpcurlreflection lists onlyprotocol.Database/protocol.Wallet
Follow up
Ecosystem code that still compiles against the removed stubs/messages needs a sync: the tronprotocol/protocol mirror, the documentation site, and older wallet-cli/trident versions. Compile-time impact only — runtime behavior is unchanged (UNIMPLEMENTED before and after).
Extra details
None.
Summary by cubic
Removed the dead WalletExtension gRPC service and the node.walletExtensionApi config so the API surface stops advertising a service that always returns UNIMPLEMENTED. The old config key is now ignored and logs a warning; runtime behavior is unchanged. The branch also carries the 4.8.2.3 release line: a TVM storage optimization gated by the new ALLOW_OPTIMIZE_TVM_STORAGE proposal, CPU-time checks for self-destructed and invalid-delegated-V2 accounts, dependency upgrades (grpc 1.83.1, netty 4.2.15, jackson 2.18.10, logback 1.3.16; joda-time and commons-math dropped), and sanitized HTTP/JSON-RPC error responses that no longer leak stack traces or exception class names.
- Refactors
- Deleted
service WalletExtensionand its messages fromapi.proto, the emptyWalletExtensionApi, and the dead helpers (Util.printTransactionList, gRPC stubs,/walletextension/*HTTP methods). - Dropped
node.walletExtensionApibindings/defaults;NodeConfig.fromConfigwarns when the key is still present.
- Deleted
- Migration
- Remove downstream references to
WalletExtensionGrpcand the removed messages; the old config key is ignored with a warning.
- Remove downstream references to
Summary by CodeRabbit
- Breaking Changes
- Removed the Wallet Extension API and its transaction-query endpoints.
- Removed related transaction-list response types and client request methods.
- Configuration
- Removed the
walletExtensionApisetting from supported configuration files. - Existing configurations using this setting are ignored with a warning.
- Removed the
- Maintenance
- Retained database, wallet, Solidity wallet, and monitoring services.
- Updated supporting utilities and tests to reflect the retired API surface.