feat(vm): record internal tx for precompile value calls#37
Open
bladehan1 wants to merge 1 commit into
Open
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces #36 to use the branch naming convention from
CONTRIBUTING.md:feature/prefix with underscore-separated words. #36 replaced #35, which was marked as merged afterrelease_v4.8.2was temporarily pushed to the feature commit by mistake.What does this PR do?
Records an internal transaction when a successful precompiled contract call carries TRX or TRC10 value.
Zero-value precompiled contract calls still do not emit internal transactions. TRX value calls are recorded with the transferred TRX value, and TRC10 value calls are recorded with token information, matching normal contract call internal transaction semantics.
Why are these changes required?
Precompiled contract calls can currently carry value through the CALL/CALLTOKEN path when the precompiled address already has an account. The balance change is committed on successful execution, but no internal transaction is recorded, which makes the transfer difficult to reconcile from transaction results.
This change keeps the existing value-transfer behavior while making successful precompiled value calls observable through internal transactions.
This PR has been tested by:
./gradlew :framework:test --tests org.tron.common.runtime.vm.OperationsTest./gradlew :framework:checkstyleMain :framework:checkstyleTestFollow up
None.
Extra details
This PR is based on
release_v4.8.2and contains one commit with two changed files.Summary by cubic
Record internal transactions for successful precompiled contract value calls (TRX and TRC10) so these transfers are visible in results. Zero-value calls remain unchanged.
CALL/CALLTOKENwhen value > 0; TRX uses the value field and TRC10 includes token info; note is "call".Written for commit b617af2. Summary will update on new commits.