Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Externalize the generation of child records for view calls #9795

Merged
merged 233 commits into from
Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from 66 commits
Commits
Show all changes
233 commits
Select commit Hold shift + click to select a range
a369797
Fix TokenInfoHTSSuite tests
MiroslavGatsanoga Oct 26, 2023
98d5403
Merge branch 'develop' into fix-token-info-hts-suite
MiroslavGatsanoga Oct 27, 2023
18f035b
Move fix for child records to AbstractNonRevertibleTokenViewCall
MiroslavGatsanoga Oct 30, 2023
c884415
Remove unused mock
MiroslavGatsanoga Oct 30, 2023
432b9c6
Setup mock message frame with mock proxy updater
MiroslavGatsanoga Oct 30, 2023
378e035
Fix copy-paste error in DefaultKycStatusCallTest
MiroslavGatsanoga Oct 30, 2023
c379a62
Merge branch 'develop' into fix-token-info-hts-suite
MiroslavGatsanoga Oct 30, 2023
c750cb7
Enable a couple of tests in DefaultTokenStatusSuite
MiroslavGatsanoga Oct 30, 2023
7547749
Revert MessageFrame injections and make QuerySystemContractOperations
MiroslavGatsanoga Oct 31, 2023
d6c44e9
Fix failing unit test
MiroslavGatsanoga Oct 31, 2023
3372c04
Merge branch 'fix-token-info-hts-suite' into 09566-fix-token-update-s…
petreze Nov 1, 2023
04a9c7f
Merge branch 'develop' into fix-token-info-hts-suite
MiroslavGatsanoga Nov 2, 2023
bf11d32
fix UpdatePrecompileSuite tests and enhance child records behaviour
petreze Nov 2, 2023
e1b260a
apply spotless and fix minor typo
petreze Nov 2, 2023
d5b274c
Merge branch 'develop' into 09566-fix-token-update-suite
petreze Nov 2, 2023
83dc553
apply spotless and fix minor typo
petreze Nov 2, 2023
6ab6e58
Populate evm function result on failing eth transaction (modulatized …
stoqnkpL Nov 1, 2023
8f16eb3
old logging API moved to legacy package (#8459)
hendrikebbers Nov 1, 2023
8911e17
09449 Create data consistency validator (#9549)
alittley Nov 1, 2023
a185876
Support fuzzy-matching record snapshots (#9513)
tinker-michaelj Nov 1, 2023
8ccf213
9559 Increased timeout in the assertions to prevent non-deterministic…
imalygin Nov 1, 2023
f3eba22
Fix compile breakage in develop following package move of logging. (#…
jsync-swirlds Nov 1, 2023
0af2702
Cleanup Module patching (#8561)
jjohannes Nov 1, 2023
b6394f7
Make platform mainnet settings the default (#9341)
poulok Nov 1, 2023
edd46bd
Measure consensus metrics for all events. (#9604)
cody-littley Nov 1, 2023
9a6072e
09543 d remove crypto class (#9544)
lpetrovic05 Nov 2, 2023
164ed6f
remove static from all the test in MiscCryptoSuite (#9619)
povolev15 Nov 2, 2023
2eca0d3
Merge remote-tracking branch 'origin/09566-fix-token-update-suite' in…
petreze Nov 2, 2023
e442139
fix UpdatePrecompileSuite tests and enhance child records behaviour
petreze Nov 2, 2023
49a469e
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 2, 2023
c0d5630
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 2, 2023
6eb51bc
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 2, 2023
4d6cf74
use correct method for failures
petreze Nov 3, 2023
827c08a
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 3, 2023
2ae5af2
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 3, 2023
16f3263
09372: fixed multiple suite test in CreatePrecompileSuite
agadzhalov Nov 3, 2023
98f53c4
fix failing unit test and add additional one for another corner case
petreze Nov 3, 2023
e2680cf
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 3, 2023
3361ca0
Stabilize fuzzy matching
tinker-michaelj Nov 3, 2023
4f8c0d2
Try to stabilize CI
tinker-michaelj Nov 3, 2023
824277d
Remove fuzzy match from PayableCreate2WorksAsExpected() for now
tinker-michaelj Nov 4, 2023
d151a8f
09371: fixed unit test because of missing symbol, treasury and autoRe…
agadzhalov Nov 6, 2023
da5097e
Merge branch 'develop' into 09567-fix-token-update-expiry-e2e
petreze Nov 6, 2023
e614095
fix TokenExpiryInfoSuite test
petreze Nov 6, 2023
84ba2a6
fix misleading typo
petreze Nov 6, 2023
8e48cae
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 6, 2023
869ac22
Merge branch '09566-fix-token-update-suite' into 09567-fix-token-upda…
petreze Nov 6, 2023
dfc8a38
fix misleading typo
petreze Nov 6, 2023
f8aec8d
apply spotless
petreze Nov 6, 2023
297d899
apply spotless
petreze Nov 6, 2023
4bc440c
Add AutoSnapshotModeOp
tinker-michaelj Nov 6, 2023
c143252
09372: fixed createTokenWithInsufficientValueSent
agadzhalov Nov 7, 2023
9ecc4ba
Stabilize CryptoTransferSuite
tinker-michaelj Nov 7, 2023
eaa0fcb
Skip irrelevant files
tinker-michaelj Nov 7, 2023
abfd631
Merge upstream
tinker-michaelj Nov 7, 2023
9f5dd85
Small fixes
tinker-michaelj Nov 7, 2023
e335896
remove unnecessary checks
petreze Nov 7, 2023
3839a6d
Merge branch 'develop' into 09566-token-update-suite
petreze Nov 7, 2023
a458f67
Merge branch '09566-token-update-suite' into 09567-fix-token-update-e…
petreze Nov 7, 2023
730c0c4
Consolidate JSON snapshots
tinker-michaelj Nov 7, 2023
e56d85c
Stabilize CI
tinker-michaelj Nov 7, 2023
874935a
Merge remote-tracking branch 'origin/develop' into 09697-auto-snapsho…
tinker-michaelj Nov 7, 2023
848aa92
Add resouce
tinker-michaelj Nov 7, 2023
1a69bdd
wip
Neeharika-Sompalli Nov 7, 2023
14eb340
Merge branch '09697-auto-snapshot-matching' into 9750-D-transfer-fuzz…
Neeharika-Sompalli Nov 7, 2023
7a7e402
wip
Neeharika-Sompalli Nov 7, 2023
3d69063
wip
Neeharika-Sompalli Nov 8, 2023
d10ba68
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 8, 2023
4ec954f
Merge branch 'develop' into test-optimization
petreze Nov 8, 2023
52e8444
Merge remote-tracking branch 'origin/09372-fix-create-hts-suites' int…
petreze Nov 8, 2023
6653952
Fix some tests from LazyCreateThroughPrecompileSuite
MiroslavGatsanoga Nov 8, 2023
e28e34c
Extract setting of contract call result in record to be in precompile…
MiroslavGatsanoga Nov 8, 2023
50b291d
Merge branch 'develop' into test-optimization
petreze Nov 8, 2023
fd1d0e9
Add gas fees to ContractCreate and ContractCall record transactionFee…
tinker-michaelj Nov 8, 2023
0f50b2b
Merge remote-tracking branch 'origin/develop' into 09663-inc-gas-in-t…
tinker-michaelj Nov 8, 2023
fe55ec7
Revert HtsCall change
tinker-michaelj Nov 8, 2023
207b036
Remove unwanted log
tinker-michaelj Nov 8, 2023
6837011
Fix typo
tinker-michaelj Nov 8, 2023
d5a7482
fixes few more issues
Neeharika-Sompalli Nov 8, 2023
dd7619d
fix unit test
tinker-michaelj Nov 8, 2023
1954f9b
fixes few more issues
Neeharika-Sompalli Nov 8, 2023
9c3ea2f
Merge remote-tracking branch 'origin/09663-inc-gas-in-txn-fee' into 9…
Neeharika-Sompalli Nov 8, 2023
057efd7
intermezzo
tinker-michaelj Nov 8, 2023
7ec4e2d
Add unit tests, prep for PR
tinker-michaelj Nov 9, 2023
742efe6
Merge remote-tracking branch 'origin/develop' into 09775-fix-sc-creat…
tinker-michaelj Nov 9, 2023
a14d618
Remove unwanted line
tinker-michaelj Nov 9, 2023
fbb44d8
Merge branch '09775-fix-sc-create-children' into 9750-D-transfer-fuzz…
Neeharika-Sompalli Nov 9, 2023
81b96ad
Merge branch 'develop' into 09372-fix-create-hts-suites
agadzhalov Nov 9, 2023
ca707f7
Merge branch 'develop' into test-optimization
petreze Nov 9, 2023
85cb531
09372: added todo comment for extenalizing commong logic
agadzhalov Nov 9, 2023
365883a
Fix failing unit tests
MiroslavGatsanoga Nov 9, 2023
6b8ff95
Merge branch 'develop' into fix-lazy-create-through-precompile-tests
MiroslavGatsanoga Nov 9, 2023
cba65e0
Merge branch 'develop' into 09372-fix-create-hts-suites
agadzhalov Nov 9, 2023
5e17a3e
Merge remote-tracking branch 'origin/develop' into 09775-fix-sc-creat…
tinker-michaelj Nov 9, 2023
daf3991
partial work
petreze Nov 9, 2023
ca2f6c7
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 9, 2023
59632f6
apply spotless plus some unit test fixes
petreze Nov 9, 2023
17306b4
Use ExternalizedRecordCustomizer
tinker-michaelj Nov 9, 2023
cc50fce
fix unit test
tinker-michaelj Nov 9, 2023
35b3889
Fix typo
tinker-michaelj Nov 9, 2023
3711915
fix unit test
tinker-michaelj Nov 9, 2023
8800b79
WIP
Neeharika-Sompalli Nov 9, 2023
5370081
Use ExternalizedRecordCustomizer instead of UnaryOperator
tinker-michaelj Nov 9, 2023
0f33f69
fix most tests
Neeharika-Sompalli Nov 9, 2023
27c8a83
Address reviewer comments
tinker-michaelj Nov 9, 2023
bfd15e5
fix most tests
Neeharika-Sompalli Nov 9, 2023
ef16071
fix most tests
Neeharika-Sompalli Nov 9, 2023
fd25b68
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 9, 2023
2f5f2ad
Merge branch '09775-fix-sc-create-children' into 9750-D-transfer-fuzz…
Neeharika-Sompalli Nov 9, 2023
155723a
enable records for transfer suite
Neeharika-Sompalli Nov 9, 2023
83550e5
docs
Neeharika-Sompalli Nov 9, 2023
9f79573
Require @NonNull customizer
tinker-michaelj Nov 10, 2023
607dc55
address few review comments
Neeharika-Sompalli Nov 10, 2023
ce06a8a
Merge branch '09775-fix-sc-create-children' into 9750-D-transfer-fuzz…
Neeharika-Sompalli Nov 10, 2023
4fe7b76
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 10, 2023
180e819
Merge remote-tracking branch 'origin/09372-fix-create-hts-suites' int…
petreze Nov 10, 2023
84fc01f
fix after merging develop
petreze Nov 10, 2023
6e957f1
generalize even further inside HtsSystemContract class
petreze Nov 10, 2023
5f3c892
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 10, 2023
122d425
Fix failing tests
Neeharika-Sompalli Nov 10, 2023
ba2ffc2
Fix failing tests
Neeharika-Sompalli Nov 10, 2023
695cbef
Fix all print stack traces
Neeharika-Sompalli Nov 10, 2023
507220a
more review comments
Neeharika-Sompalli Nov 10, 2023
720dfc6
more review comments
Neeharika-Sompalli Nov 10, 2023
681ba5f
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 10, 2023
512d628
fix unit tests
Neeharika-Sompalli Nov 10, 2023
9267624
Fix MiscSuite compile errors
tinker-michaelj Nov 11, 2023
76474b4
wip
Neeharika-Sompalli Nov 11, 2023
8c855e3
wip
Neeharika-Sompalli Nov 11, 2023
850e7f8
add additional check to handle unit tests
petreze Nov 13, 2023
a51ed0b
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 13, 2023
8e89036
apply spotless
petreze Nov 13, 2023
0ca3143
fix hapi test
petreze Nov 13, 2023
82463a5
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 13, 2023
e868110
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 13, 2023
e5f7669
fix CI Integration tests and spotless
Neeharika-Sompalli Nov 13, 2023
075877b
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 13, 2023
aa9f392
review comments
Neeharika-Sompalli Nov 14, 2023
f0b4643
Merge branch 'develop' into 9750-D-transfer-fuzzy-records
Neeharika-Sompalli Nov 14, 2023
5cc195e
Merge branch '9750-D-transfer-fuzzy-records' into 9727-D-auto-creatio…
Neeharika-Sompalli Nov 14, 2023
fc137f9
wip
Neeharika-Sompalli Nov 14, 2023
05cb18c
Merge remote-tracking branch 'origin/9727-D-auto-creation-records' in…
Neeharika-Sompalli Nov 14, 2023
fecc178
fix null pointer exception after generalization
petreze Nov 14, 2023
2f0c004
fix unit test
petreze Nov 14, 2023
9344181
fix compile
petreze Nov 14, 2023
1396199
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 14, 2023
22fae47
fix merge with develop
petreze Nov 14, 2023
d165e34
Merge branch 'develop' into 9727-D-auto-creation-records
Neeharika-Sompalli Nov 14, 2023
a25d1aa
wip
Neeharika-Sompalli Nov 14, 2023
ddd3356
fix some more tests
Neeharika-Sompalli Nov 14, 2023
7e0e3b9
Fix dispatch validations
tinker-michaelj Nov 14, 2023
a4d10a9
fixed one more test
Neeharika-Sompalli Nov 14, 2023
35d8468
fixes all tests
Neeharika-Sompalli Nov 14, 2023
5d6bf5a
fix unit tests and spotless
Neeharika-Sompalli Nov 14, 2023
5647ae9
add hollow finalization mono-service snapshot
Neeharika-Sompalli Nov 15, 2023
c21f411
Further discriminate dispatch behavior for hollow account completions
tinker-michaelj Nov 15, 2023
20d21b7
Add comment
tinker-michaelj Nov 15, 2023
854c8ee
Merge upstream
tinker-michaelj Nov 15, 2023
2702f5b
Verify correct entities in dispatch
tinker-michaelj Nov 15, 2023
71bf5b2
Add comment
tinker-michaelj Nov 15, 2023
d7edb4a
remove unnecessary check and fix unit test by mocking
petreze Nov 15, 2023
47b795f
fix child records behaviour to not be added to write calls
petreze Nov 15, 2023
f76c276
Fix failing unit tests
MiroslavGatsanoga Nov 15, 2023
e0cc1f5
Merge branch 'develop' into fix-lazy-create-through-precompile-tests
MiroslavGatsanoga Nov 15, 2023
408d4c7
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 15, 2023
51cb433
fix tests
Neeharika-Sompalli Nov 15, 2023
9d6bbf5
Add fix for contract creates dispatching synthetic crypto transfer
MiroslavGatsanoga Nov 15, 2023
eb9536e
Waive signing requirements for synthetic CryptoCreate
tinker-michaelj Nov 15, 2023
205aa27
Merge
tinker-michaelj Nov 15, 2023
f54cb04
Merge branch 'develop' into 9696-hollow-account-records
Neeharika-Sompalli Nov 15, 2023
3f61588
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 15, 2023
ca8f99e
fix suite after merge with develop (new implementation IsTokenCall)
petreze Nov 15, 2023
807e655
Resolve HapiTest issues
tinker-michaelj Nov 15, 2023
af9a549
wip
Neeharika-Sompalli Nov 15, 2023
c62f403
Merge branch 'fix-lazy-create-through-precompile-tests' into 9696-hol…
Neeharika-Sompalli Nov 15, 2023
68cf767
Fix compile error
tinker-michaelj Nov 15, 2023
fb18b2a
Merge branch 'fix-lazy-create-through-precompile-tests' into 9696-hol…
Neeharika-Sompalli Nov 15, 2023
a9f18e6
Fix to 3 remaining XTest failures
tinker-michaelj Nov 16, 2023
4972660
fix unit test
tinker-michaelj Nov 16, 2023
84e9764
Merge branch 'fix-lazy-create-through-precompile-tests' into 9696-hol…
Neeharika-Sompalli Nov 16, 2023
107491e
Merge branch 'develop' into fix-lazy-create-through-precompile-tests
Neeharika-Sompalli Nov 16, 2023
dd314f8
fix most tests
Neeharika-Sompalli Nov 16, 2023
b031238
Merge remote-tracking branch 'origin/9696-hollow-account-records' int…
Neeharika-Sompalli Nov 16, 2023
2465e68
Merge branch 'fix-lazy-create-through-precompile-tests' into 9696-hol…
Neeharika-Sompalli Nov 16, 2023
42e6b02
fix most tests
Neeharika-Sompalli Nov 16, 2023
23a64d0
fix snapshots
Neeharika-Sompalli Nov 16, 2023
845b0b5
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 16, 2023
87465a0
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 16, 2023
8e92267
after merge with dev
petreze Nov 16, 2023
342b697
Merge branch 'develop' into 9696-hollow-account-records
Neeharika-Sompalli Nov 16, 2023
883dbda
add calculateFees to ContractCreateHandler
Neeharika-Sompalli Nov 16, 2023
a017f32
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 16, 2023
42a27ed
fix tests
Neeharika-Sompalli Nov 16, 2023
5526d00
fix tests
Neeharika-Sompalli Nov 16, 2023
48d3140
Merge branch 'develop' into fix-generalize-externalization
petreze Nov 16, 2023
41474ba
fix after merging develop
petreze Nov 16, 2023
b4402b8
fix tests
Neeharika-Sompalli Nov 16, 2023
3fff025
fix spotless
Neeharika-Sompalli Nov 16, 2023
efacc54
Set contract id on reverted ContractCallResult; avoid reverting gas c…
tinker-michaelj Nov 16, 2023
fed491a
Merge branch '9696-hollow-account-records' of github.com:hashgraph/he…
tinker-michaelj Nov 16, 2023
a4f716d
fix unit test
tinker-michaelj Nov 16, 2023
50bd957
Confirm no auto-creations in HollowAccountFinalizationSuite
tinker-michaelj Nov 16, 2023
e4b2ce6
clean up
Neeharika-Sompalli Nov 16, 2023
6bd7a51
Merge remote-tracking branch 'origin/9696-hollow-account-records' int…
Neeharika-Sompalli Nov 16, 2023
b7aa046
fix docs
Neeharika-Sompalli Nov 16, 2023
c9715af
docs
Neeharika-Sompalli Nov 16, 2023
766b896
Retake snapshot
tinker-michaelj Nov 16, 2023
cca27f9
Merge branch '9696-hollow-account-records' of github.com:hashgraph/he…
tinker-michaelj Nov 16, 2023
1e25dc2
Merge upstream
tinker-michaelj Nov 16, 2023
9b092e3
fix comments
Neeharika-Sompalli Nov 16, 2023
cd61403
Merge remote-tracking branch 'origin/9696-hollow-account-records' int…
Neeharika-Sompalli Nov 16, 2023
8bea4d8
Stabilize txnWith2CompletionsAndAnother2PrecedingChildRecords()
tinker-michaelj Nov 17, 2023
b4c0a1f
Merge branch '9696-hollow-account-records' of github.com:hashgraph/he…
tinker-michaelj Nov 17, 2023
8ad9ec7
Merge branch '9696-hollow-account-records' into fix-generalize-extern…
tinker-michaelj Nov 17, 2023
76fb9a6
intermezzo
tinker-michaelj Nov 17, 2023
94d8901
Fix hapiTransferFromForFungibleToken() by finalizing child records an…
tinker-michaelj Nov 18, 2023
11228b4
Begin centralizing result construction
tinker-michaelj Nov 18, 2023
d587a7a
Revert output should be encoded rc
tinker-michaelj Nov 18, 2023
6aa3635
intermezzo
tinker-michaelj Nov 18, 2023
2efac9f
Enable more dispatch result-dependent specs
tinker-michaelj Nov 19, 2023
bff5234
Merge upstream
tinker-michaelj Nov 19, 2023
e5d5720
fix unit test
tinker-michaelj Nov 19, 2023
c405fa8
fix unit test
tinker-michaelj Nov 19, 2023
6949128
spotless
tinker-michaelj Nov 19, 2023
b83b3e7
fix unit test
tinker-michaelj Nov 19, 2023
a8b9b60
Add outputFn customization
tinker-michaelj Nov 19, 2023
14a058d
Revert on state changes in static frame
tinker-michaelj Nov 19, 2023
516cfc1
fix unit test
tinker-michaelj Nov 19, 2023
5e6b82f
Remove unwanted logging
tinker-michaelj Nov 20, 2023
25cd84c
spotless
tinker-michaelj Nov 20, 2023
2cecd5b
Disable failing tests for now
tinker-michaelj Nov 20, 2023
b6bfd63
Don't re-charge fees if not rolling back stack
tinker-michaelj Nov 20, 2023
6bbcf2b
Comment unstable tests
tinker-michaelj Nov 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.hedera.node.app.service.contract.impl.exec.scope;

import static com.hedera.hapi.node.base.ResponseCodeEnum.SUCCESS;
import static java.util.Objects.requireNonNull;

import com.hedera.hapi.node.base.AccountID;
Expand All @@ -32,7 +31,6 @@
import com.hedera.hapi.node.transaction.TransactionBody;
import com.hedera.node.app.service.contract.impl.annotations.TransactionScope;
import com.hedera.node.app.service.contract.impl.records.ContractCallRecordBuilder;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.ResultStatus;
import com.hedera.node.app.spi.workflows.HandleContext;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
Expand Down Expand Up @@ -115,14 +113,12 @@ public HandleSystemContractOperations(@NonNull final HandleContext context) {
*/
@Override
public void externalizeResult(
@NonNull final ContractFunctionResult result,
@NonNull final ResultStatus status,
@NonNull final ResponseCodeEnum responseStatus) {
@NonNull final ContractFunctionResult result, @NonNull final ResponseCodeEnum responseStatus) {
final var childRecordBuilder = context.addChildRecordBuilder(ContractCallRecordBuilder.class);
childRecordBuilder
.transaction(Transaction.DEFAULT)
.contractID(result.contractID())
.status(status == ResultStatus.IS_ERROR ? responseStatus : SUCCESS)
.status(responseStatus)
.contractCallResult(result);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import com.hedera.hapi.node.transaction.ExchangeRate;
import com.hedera.hapi.node.transaction.TransactionBody;
import com.hedera.node.app.service.contract.impl.annotations.QueryScope;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.ResultStatus;
import com.hedera.node.app.spi.workflows.QueryContext;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
Expand Down Expand Up @@ -106,9 +105,7 @@ public QuerySystemContractOperations(@NonNull final QueryContext queryContext) {
*/
@Override
public void externalizeResult(
@NonNull final ContractFunctionResult result,
@NonNull final ResultStatus status,
@NonNull final ResponseCodeEnum responseStatus) {
@NonNull final ContractFunctionResult result, @NonNull final ResponseCodeEnum responseStatus) {
// no-op
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import com.hedera.hapi.node.state.token.Token;
import com.hedera.hapi.node.transaction.ExchangeRate;
import com.hedera.hapi.node.transaction.TransactionBody;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.ResultStatus;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
import java.util.function.Predicate;
Expand Down Expand Up @@ -109,12 +108,9 @@ <T> T dispatch(
* Attempts to create a child record of the current record, with the given {@code result}
*
* @param result contract function result
* @param status whether the result is success or an error
*/
void externalizeResult(
@NonNull final ContractFunctionResult result,
@NonNull final ResultStatus status,
@NonNull final ResponseCodeEnum responseStatus);
@NonNull final ContractFunctionResult result, @NonNull final ResponseCodeEnum responseStatus);

/**
* Returns the {@Link ExchangeRate} for the current consensus time. This will enable the translation from hbars
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@

package com.hedera.node.app.service.contract.impl.exec.systemcontracts;

import static com.hedera.hapi.node.base.ResponseCodeEnum.SUCCESS;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.HederaSystemContract.FullResult.haltResult;
import static com.hedera.node.app.service.contract.impl.utils.ConversionUtils.asEvmContractId;
import static com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.contractFunctionResultFailedFor;
import static com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.contractFunctionResultSuccessFor;
import static java.util.Objects.requireNonNull;

import com.hedera.hapi.node.base.ContractID;
import com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts.HtsCall;
import com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts.HtsCallFactory;
import com.hedera.node.app.service.contract.impl.exec.utils.FrameUtils;
Expand All @@ -29,6 +34,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.tuweni.bytes.Bytes;
import org.hyperledger.besu.datatypes.Address;
import org.hyperledger.besu.evm.frame.ExceptionalHaltReason;
import org.hyperledger.besu.evm.frame.MessageFrame;
import org.hyperledger.besu.evm.gascalculator.GasCalculator;
Expand All @@ -38,7 +44,7 @@ public class HtsSystemContract extends AbstractFullContract implements HederaSys
private static final Logger log = LogManager.getLogger(HtsSystemContract.class);
private static final String HTS_PRECOMPILE_NAME = "HTS";
public static final String HTS_PRECOMPILE_ADDRESS = "0x167";

private static final ContractID contractID = asEvmContractId(Address.fromHexString(HTS_PRECOMPILE_ADDRESS));
private final HtsCallFactory callFactory;

@Inject
Expand Down Expand Up @@ -70,15 +76,30 @@ private static FullResult resultOfExecuting(
final HtsCall.PricedResult pricedResult;
try {
pricedResult = call.execute(frame);
final var enhancement = FrameUtils.proxyUpdaterFor(frame).enhancement();
final var responseCode = pricedResult.responseCode();

if (responseCode == SUCCESS) {
final var output = pricedResult.fullResult().result().getOutput();
enhancement
.systemOperations()
.externalizeResult(
contractFunctionResultSuccessFor(pricedResult.nonGasCost(), output, contractID),
responseCode);
} else {
enhancement
.systemOperations()
.externalizeResult(
contractFunctionResultFailedFor(
pricedResult.nonGasCost(), responseCode.toString(), contractID),
responseCode);
}
} catch (final HandleException handleException) {
throw handleException;
} catch (final Exception internal) {
log.error("Unhandled failure for input {} to HTS system contract", input, internal);
return haltResult(ExceptionalHaltReason.PRECOMPILE_ERROR, frame.getRemainingGas());
}
if (pricedResult.nonGasCost() > 0) {
throw new AssertionError("Not implemented");
}
return pricedResult.fullResult();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

import com.hedera.hapi.node.base.ContractID;
import com.hedera.node.app.service.contract.impl.state.ProxyWorldUpdater;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.ResultStatus;
import com.hedera.node.app.service.evm.exceptions.InvalidTransactionException;
import com.hederahashgraph.api.proto.java.ResponseCodeEnum;
import edu.umd.cs.findbugs.annotations.NonNull;
Expand Down Expand Up @@ -108,9 +107,7 @@ void createSuccessfulRecord(
requireNonNull(contractID);
var updater = (ProxyWorldUpdater) frame.getWorldUpdater();
updater.externalizeSystemContractResults(
contractFunctionResultSuccessFor(gasRequirement, randomNum, contractID),
ResultStatus.IS_SUCCESS,
SUCCESS);
contractFunctionResultSuccessFor(gasRequirement, randomNum, contractID), SUCCESS);
}
}

Expand All @@ -122,9 +119,7 @@ void createFailedRecord(
contractFunctionResultFailedFor(gasRequirement, errorMsg, contractID);
var updater = (ProxyWorldUpdater) frame.getWorldUpdater();
updater.externalizeSystemContractResults(
contractFunctionResultFailedFor(gasRequirement, errorMsg, contractID),
ResultStatus.IS_ERROR,
FAIL_INVALID);
contractFunctionResultFailedFor(gasRequirement, errorMsg, contractID), FAIL_INVALID);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,77 +16,26 @@

package com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts;

import static com.hedera.hapi.node.base.ResponseCodeEnum.INVALID_TOKEN_ID;
import static com.hedera.hapi.node.base.ResponseCodeEnum.SUCCESS;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.HtsSystemContract.HTS_PRECOMPILE_ADDRESS;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts.HtsCall.PricedResult.gasOnly;
import static com.hedera.node.app.service.contract.impl.utils.ConversionUtils.asEvmContractId;
import static com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.contractFunctionResultSuccessFor;

import com.hedera.hapi.node.base.ResponseCodeEnum;
import com.hedera.hapi.node.state.token.Token;
import com.hedera.node.app.service.contract.impl.exec.gas.SystemContractGasCalculator;
import com.hedera.node.app.service.contract.impl.exec.systemcontracts.HederaSystemContract.FullResult;
import com.hedera.node.app.service.contract.impl.hevm.HederaWorldUpdater;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
import org.hyperledger.besu.datatypes.Address;

/**
* Implementation support for view calls that require an extant token.
* Classic view function calls are generally non-revertible.
*/
public abstract class AbstractNonRevertibleTokenViewCall extends AbstractHtsCall {
@Nullable
protected final Token token;

public abstract class AbstractNonRevertibleTokenViewCall extends AbstractTokenViewCall {
lukelee-sl marked this conversation as resolved.
Show resolved Hide resolved
protected AbstractNonRevertibleTokenViewCall(
@NonNull final SystemContractGasCalculator gasCalculator,
@NonNull final HederaWorldUpdater.Enhancement enhancement,
@Nullable final Token token) {
super(gasCalculator, enhancement);
this.token = token;
super(gasCalculator, enhancement, token);
}

@Override
public @NonNull PricedResult execute() {
petreze marked this conversation as resolved.
Show resolved Hide resolved
PricedResult result;
if (token == null) {
result = gasOnly(viewCallResultWith(INVALID_TOKEN_ID, gasCalculator.viewGasRequirement()));
} else {
result = gasOnly(resultOfViewingToken(token));
}

final var gasRequirement = result.fullResult().gasRequirement();
final var output = result.fullResult().result().getOutput();
final var contractID = asEvmContractId(Address.fromHexString(HTS_PRECOMPILE_ADDRESS));
enhancement
.systemOperations()
.externalizeResult(
contractFunctionResultSuccessFor(gasRequirement, output, contractID),
SystemContractUtils.ResultStatus.IS_SUCCESS,
SUCCESS);

return result;
return super.execute();
}

/**
* Returns the result of viewing the given {@code token}.
*
* @param token the token to view
* @return the result of viewing the given {@code token}
*/
@NonNull
protected abstract FullResult resultOfViewingToken(@NonNull Token token);

/**
* Returns the result of viewing the given {@code token} given the {@code status}.
* Currently, the only usage for this method is to return an INVALID_TOKEN_ID status
* if the token is null.
* @param status - ResponseCodeEnum status
* @return the results to return to the caller
*/
@NonNull
protected abstract FullResult viewCallResultWith(ResponseCodeEnum status, long gasRequirement);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,67 +16,37 @@

package com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts;

import static com.hedera.hapi.node.base.ResponseCodeEnum.INVALID_TOKEN_ID;
import static com.hedera.hapi.node.base.ResponseCodeEnum.SUCCESS;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.HederaSystemContract.FullResult.revertResult;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.HtsSystemContract.HTS_PRECOMPILE_ADDRESS;
import static com.hedera.node.app.service.contract.impl.exec.systemcontracts.hts.HtsCall.PricedResult.gasOnly;
import static com.hedera.node.app.service.contract.impl.utils.ConversionUtils.asEvmContractId;
import static com.hedera.node.app.service.contract.impl.utils.SystemContractUtils.contractFunctionResultSuccessFor;

import com.hedera.hapi.node.base.ResponseCodeEnum;
import com.hedera.hapi.node.state.token.Token;
import com.hedera.node.app.service.contract.impl.exec.gas.SystemContractGasCalculator;
import com.hedera.node.app.service.contract.impl.exec.systemcontracts.HederaSystemContract;
import com.hedera.node.app.service.contract.impl.hevm.HederaWorldUpdater;
import com.hedera.node.app.service.contract.impl.utils.SystemContractUtils;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
import org.hyperledger.besu.datatypes.Address;

/**
* Implementation support for view calls that require an extant token.
* ERC view function calls are generally revertible.
*/
public abstract class AbstractRevertibleTokenViewCall extends AbstractHtsCall {
@Nullable
private final Token token;

public abstract class AbstractRevertibleTokenViewCall extends AbstractTokenViewCall {
protected AbstractRevertibleTokenViewCall(
@NonNull final SystemContractGasCalculator gasCalculator,
@NonNull final HederaWorldUpdater.Enhancement enhancement,
@Nullable final Token token) {
super(gasCalculator, enhancement);
this.token = token;
super(gasCalculator, enhancement, token);
}

@Override
public @NonNull PricedResult execute() {
PricedResult result;
if (token == null) {
result = gasOnly(revertResult(INVALID_TOKEN_ID, gasCalculator.viewGasRequirement()));
} else {
result = gasOnly(resultOfViewingToken(token));
}

final var gasRequirement = result.fullResult().gasRequirement();
final var output = result.fullResult().result().getOutput();
final var contractID = asEvmContractId(Address.fromHexString(HTS_PRECOMPILE_ADDRESS));
enhancement
.systemOperations()
.externalizeResult(
contractFunctionResultSuccessFor(gasRequirement, output, contractID),
SystemContractUtils.ResultStatus.IS_SUCCESS,
SUCCESS);

return result;
return super.execute();
}

/**
* Returns the result of viewing the given {@code token}.
*
* @param token the token to view
* @return the result of viewing the given {@code token}
*/
@NonNull
protected abstract HederaSystemContract.FullResult resultOfViewingToken(@NonNull Token token);
@Override
protected HederaSystemContract.FullResult viewCallResultWith(
@NonNull ResponseCodeEnum status, long gasRequirement) {
return revertResult(status, gasRequirement);
}
}