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

Merge rc 1.6.0 trie sync optimizations #5309

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
208 commits
Select commit Hold shift + click to select a range
42a73c8
add hasher to trackable data trie
BeniaminDrasovean Oct 24, 2022
498b5f7
sort imports
BeniaminDrasovean Oct 24, 2022
c279ee4
Merge pull request #4633 from ElrondNetwork/add-hasher-to-trackable-d…
BeniaminDrasovean Oct 24, 2022
9466b97
add marshalizer to trackable data trie
BeniaminDrasovean Oct 25, 2022
9bc791f
sort imports
BeniaminDrasovean Oct 25, 2022
7e51156
fix after review
BeniaminDrasovean Oct 25, 2022
535dd32
Merge pull request #4640 from ElrondNetwork/add-marshaller-to-data-tr…
BeniaminDrasovean Oct 26, 2022
8f81258
Merge remote-tracking branch 'origin/rc/v1.4.0' into 28.10-merge-rc/1…
BeniaminDrasovean Oct 28, 2022
fc8ec3e
Merge pull request #4652 from ElrondNetwork/28.10-merge-rc/1.4.0-to-f…
BeniaminDrasovean Oct 28, 2022
ebf7e05
add AutoBalanceDataTriesEnableEpoch flag
BeniaminDrasovean Nov 10, 2022
e25cfed
propagate enableEpochsHandler to userAccount
BeniaminDrasovean Nov 10, 2022
a613e1c
generate dataTrieValue based on proto file
BeniaminDrasovean Nov 10, 2022
12f8d59
generate a struct for dataTrieValue and pass a trieLeafParser to GetA…
BeniaminDrasovean Nov 10, 2022
39467c0
fix after review
BeniaminDrasovean Nov 10, 2022
33c763f
refactor comment for NewPeerAccount
BeniaminDrasovean Nov 11, 2022
02f9e7d
Merge pull request #4680 from ElrondNetwork/enable-epochs-handler-to-…
BeniaminDrasovean Nov 11, 2022
1bc5e2e
Merge branch 'feat/balance-data-tries' into data-trie-value
BeniaminDrasovean Nov 11, 2022
e48cace
rename disabledTrieLeafParser to trieLeafParserV1
BeniaminDrasovean Nov 14, 2022
4daa25f
Merge pull request #4686 from ElrondNetwork/data-trie-value
BeniaminDrasovean Nov 14, 2022
e035b91
implement new version of data trie value storage
BeniaminDrasovean Nov 14, 2022
6667f05
Merge branch 'feat/balance-data-tries' into hash-keys-for-data-tries
BeniaminDrasovean Nov 14, 2022
67b99f2
rename trieLeafParser to trieLeafParserV2
BeniaminDrasovean Nov 14, 2022
fd6d2c3
sort imports
BeniaminDrasovean Nov 14, 2022
36bbcb2
fix after review
BeniaminDrasovean Nov 17, 2022
a668bf0
replace NewEmptyUserAccount with NewUserAccountFromBytes
BeniaminDrasovean Nov 18, 2022
a6e5367
fix edgecase with nil val on SaveKeyVal()
BeniaminDrasovean Nov 21, 2022
d30b794
Merge pull request #4695 from ElrondNetwork/hash-keys-for-data-tries
BeniaminDrasovean Nov 21, 2022
a041022
add key size to total leaf size computation only after autobalancing …
BeniaminDrasovean Nov 23, 2022
7d267e9
remove key from maxLeafSize computation
BeniaminDrasovean Nov 23, 2022
32a03f4
Merge pull request #4729 from ElrondNetwork/fix-leaf-size-check
BeniaminDrasovean Nov 25, 2022
310a1bd
add version on trie nodes, and refactor extension node to have the co…
BeniaminDrasovean Nov 28, 2022
e55cbbb
add correct node version for branchNode and leafNode
BeniaminDrasovean Dec 7, 2022
0ba4f70
sort imports, fix comments
BeniaminDrasovean Dec 7, 2022
95d2d3a
fix failing tests
BeniaminDrasovean Dec 7, 2022
bc99158
Merge branch 'feat/balance-data-tries' into add-children-version-to-t…
BeniaminDrasovean Dec 15, 2022
68e5d16
small fixes
BeniaminDrasovean Dec 15, 2022
06ba828
add unit tests for trie nodes versioning
BeniaminDrasovean Dec 15, 2022
1591e53
use setVersionForChild for branch nodes
BeniaminDrasovean Dec 15, 2022
06eee9c
Merge branch 'add-children-version-to-trie-nodes' into unit-tests-for…
BeniaminDrasovean Dec 15, 2022
81a1729
use NotSpecified version when updating the main trie
BeniaminDrasovean Dec 19, 2022
e1a03f4
rename dataForInsertion to TrieData and move to common package
BeniaminDrasovean Dec 19, 2022
c041299
add new version only for data trie nodes
BeniaminDrasovean Dec 19, 2022
1bafe97
fix failing test
BeniaminDrasovean Dec 19, 2022
ae59b1e
add check for empty struct after unmarshal
BeniaminDrasovean Dec 21, 2022
0745b5e
sort imports
BeniaminDrasovean Dec 21, 2022
4bbbca3
add TODO
BeniaminDrasovean Dec 21, 2022
6eeb50e
Merge pull request #4821 from ElrondNetwork/trieLeafData-unmarshal
BeniaminDrasovean Dec 21, 2022
d6ff778
Merge remote-tracking branch 'origin/rc/v1.5.0' into merge-rc/1.5.0-t…
BeniaminDrasovean Dec 23, 2022
7133b08
fix after merge
BeniaminDrasovean Dec 23, 2022
189470c
Merge pull request #4837 from ElrondNetwork/merge-rc/1.5.0-to-feat/ba…
BeniaminDrasovean Dec 23, 2022
6c6e503
Merge remote-tracking branch 'origin/feat/balance-data-tries' into ad…
BeniaminDrasovean Dec 23, 2022
f9584f4
fix after merge
BeniaminDrasovean Dec 23, 2022
45a758c
update trieLeafParser
BeniaminDrasovean Jan 9, 2023
5df6a83
Merge branch 'add-children-version-to-trie-nodes' into unit-tests-for…
BeniaminDrasovean Jan 12, 2023
b66e4eb
fix after review
BeniaminDrasovean Jan 19, 2023
e5fe309
sort imports
BeniaminDrasovean Jan 19, 2023
06fc755
fix failing test
BeniaminDrasovean Jan 19, 2023
d0f2950
Merge remote-tracking branch 'origin/rc/v1.5.0' into merge-rc/1.5.0-i…
BeniaminDrasovean Jan 20, 2023
df2ac45
fix after merge
BeniaminDrasovean Jan 20, 2023
377177f
fix after review
BeniaminDrasovean Jan 20, 2023
f3a4284
Merge pull request #4892 from multiversx/merge-rc/1.5.0-in-feat/balan…
BeniaminDrasovean Jan 20, 2023
4292400
Merge branch 'feat/balance-data-tries' into add-children-version-to-t…
BeniaminDrasovean Jan 20, 2023
3b0806d
Merge pull request #4735 from multiversx/add-children-version-to-trie…
gabi-vuls Jan 23, 2023
f6bd007
Merge branch 'feat/balance-data-tries' into unit-tests-for-trie-node-…
BeniaminDrasovean Jan 23, 2023
8e71a82
Merge pull request #4809 from multiversx/unit-tests-for-trie-node-ver…
BeniaminDrasovean Jan 25, 2023
8223ef0
Merge remote-tracking branch 'origin/rc/v1.5.0' into merge-rc/1.5.0-i…
BeniaminDrasovean Jan 30, 2023
624bb69
fix after merge
BeniaminDrasovean Jan 30, 2023
a58531f
Merge pull request #4926 from multiversx/merge-rc/1.5.0-in-feat/balan…
BeniaminDrasovean Jan 30, 2023
16142d6
implement CollectLeavesForMigration and refactor trackableDataTrie
BeniaminDrasovean Feb 3, 2023
0e3f078
Merge remote-tracking branch 'origin/rc/v1.5.0' into merge-rc/1.5.0-i…
BeniaminDrasovean Feb 6, 2023
8e75abb
Merge pull request #4960 from multiversx/merge-rc/1.5.0-in-feat/balan…
BeniaminDrasovean Feb 6, 2023
d10b63e
Merge remote-tracking branch 'origin/feat/balance-data-tries' into mi…
BeniaminDrasovean Feb 6, 2023
c53aa60
update go mod
BeniaminDrasovean Feb 6, 2023
44e3633
add migrate to same version unit test
BeniaminDrasovean Feb 6, 2023
8b53f33
add sharded lvldb persister in pruning storer factory
ssd04 Feb 10, 2023
de686f3
added shard id provider in bootstrap components
ssd04 Feb 10, 2023
cc8a587
use shard id provider in persister factory + node test fixes
ssd04 Feb 10, 2023
dace923
add shard id provider stub
ssd04 Feb 10, 2023
d10e0f2
fix epoch start bootstrap unit tests
ssd04 Feb 10, 2023
0026498
add shard id provider to config + fix tests
ssd04 Feb 13, 2023
5b0d4b6
update config in tests
ssd04 Feb 13, 2023
468b6ec
fixes after review: code rearrangements, unit tests for disabled comp…
ssd04 Feb 13, 2023
97361d3
update comment for supported db types
ssd04 Feb 15, 2023
f9e4ad4
added sharded config per DB
ssd04 Feb 19, 2023
951af96
rename shardeddb package
ssd04 Feb 19, 2023
c7f5a8b
remove vars from config toml
ssd04 Feb 19, 2023
3425fba
set db type for sharded serial lvldb
ssd04 Feb 19, 2023
bf31005
save db config to toml file
ssd04 Feb 20, 2023
6d99daa
Merge pull request #4979 from multiversx/integrate-sharded-lvldb-pers…
ssd04 Feb 20, 2023
88f7d64
get config from file if available
ssd04 Feb 20, 2023
32ef9db
check if dir is empty
ssd04 Feb 21, 2023
e7808ce
fix check if dir is empty
ssd04 Feb 21, 2023
29a58c9
Merge branch 'feat/sharded-persister' into sharded-setup-per-db
ssd04 Feb 21, 2023
c9e9d8d
added more constants
ssd04 Feb 21, 2023
7510a96
handle config file create for in memory db
ssd04 Feb 21, 2023
2bf1678
revert temp version for core
ssd04 Feb 21, 2023
7d1f3dc
Merge branch 'rc/v1.6.0' into merge-1.6.0-into-feat-sharded-persister
ssd04 Feb 21, 2023
a503d12
Merge pull request #5011 from multiversx/merge-1.6.0-into-feat-sharde…
ssd04 Feb 21, 2023
76df834
Merge branch 'feat/sharded-persister' into sharded-setup-per-db
ssd04 Feb 21, 2023
e2fb102
moved save toml config file to core
ssd04 Feb 21, 2023
b5ca532
remove unneded shard id provider
ssd04 Feb 21, 2023
3676e3c
added unit tests for persister factory
ssd04 Feb 21, 2023
b582dba
additional unit tests for get db config
ssd04 Feb 23, 2023
4cc1ce6
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean Mar 2, 2023
f1e0237
fix after merge
BeniaminDrasovean Mar 2, 2023
d26c931
Merge pull request #5047 from multiversx/merge-rc/v1.6.0-in.feat/bala…
BeniaminDrasovean Mar 2, 2023
9a4d6f2
add migration stats when collecting statistics about the trie
BeniaminDrasovean Mar 6, 2023
cd9ed47
fix after review
BeniaminDrasovean Mar 7, 2023
29f2e50
Merge branch 'feat/balance-data-tries' into migrate-data-trie
BeniaminDrasovean Mar 7, 2023
f024371
update go mod
BeniaminDrasovean Mar 7, 2023
0bed4d9
Merge pull request #4962 from multiversx/migrate-data-trie
BeniaminDrasovean Mar 8, 2023
dc731b8
Merge branch 'feat/balance-data-tries' into add-node-version-to-trie-…
BeniaminDrasovean Mar 8, 2023
c53cea5
update go mod
BeniaminDrasovean Mar 8, 2023
4ce924e
move some code to core
BeniaminDrasovean Mar 8, 2023
e5d4f53
fix after review
BeniaminDrasovean Mar 8, 2023
cb98a42
add missing comments
BeniaminDrasovean Mar 8, 2023
94f912a
fix after review
BeniaminDrasovean Mar 10, 2023
ca7274a
fix after review
BeniaminDrasovean Mar 13, 2023
b32c3b2
Merge pull request #5056 from multiversx/add-node-version-to-trie-stats
BeniaminDrasovean Mar 14, 2023
ce6e3be
add migrateDataTrie semi integration tests
BeniaminDrasovean Mar 21, 2023
6917b8d
do not run test with race
BeniaminDrasovean Mar 21, 2023
c7503e2
fix after review
BeniaminDrasovean Mar 22, 2023
a7eab37
Merge pull request #5115 from multiversx/migrateDataTrie-tests
BeniaminDrasovean Mar 24, 2023
9d30ad3
add api endpoint to verify if a data trie is migrated or not
BeniaminDrasovean Mar 28, 2023
8546d9a
sort imports
BeniaminDrasovean Mar 28, 2023
ba5d492
add config entry
BeniaminDrasovean Mar 28, 2023
ee39154
fix after review
BeniaminDrasovean Mar 29, 2023
f95ecef
update go mod
BeniaminDrasovean Mar 29, 2023
d9b0aec
fix linter issues
BeniaminDrasovean Mar 29, 2023
912825e
Update comment
BeniaminDrasovean Mar 29, 2023
54152d7
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean Apr 4, 2023
a455819
fix after merge
BeniaminDrasovean Apr 4, 2023
75da5a2
Merge pull request #5151 from multiversx/merge-rc/v1.6.0-in-feat/bala…
BeniaminDrasovean Apr 4, 2023
b11a968
Merge branch 'feat/balance-data-tries' into add-api-endpoint-data-tri…
BeniaminDrasovean Apr 4, 2023
49e0526
Merge pull request #5127 from multiversx/add-api-endpoint-data-trie-m…
BeniaminDrasovean Apr 4, 2023
4ed887e
update go mod
BeniaminDrasovean Apr 20, 2023
370a819
sort imports
BeniaminDrasovean Apr 20, 2023
42a2e67
Merge pull request #5180 from multiversx/update-vm-common-version-fea…
BeniaminDrasovean Apr 20, 2023
783a859
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean Apr 24, 2023
b9c9fb1
fix after merge
BeniaminDrasovean Apr 25, 2023
b3bed1d
Merge pull request #5193 from multiversx/merge-rc/v1.6.0-in-feat/bala…
BeniaminDrasovean Apr 25, 2023
4504582
fix for delete edgecase and remove some code
BeniaminDrasovean Apr 25, 2023
f9792ba
MigrateDataTrieLeaves func fix - get proper key if old version is Aut…
BeniaminDrasovean Apr 25, 2023
751d2c7
Remove duplicated code: get from trie on RetrieveValue() and getOldVa…
BeniaminDrasovean Apr 25, 2023
b094051
change code position
BeniaminDrasovean Apr 25, 2023
d6aaa70
Merge branch 'trackable-data-trie-fix-double-delete-for-key-case' int…
BeniaminDrasovean Apr 25, 2023
33c2ad9
Merge pull request #5194 from multiversx/trackable-data-trie-fix-doub…
BeniaminDrasovean Apr 25, 2023
97c3aca
Merge branch 'feat/balance-data-tries' into trackable-data-trie-remov…
BeniaminDrasovean Apr 25, 2023
14b1665
Merge pull request #5197 from multiversx/trackable-data-trie-remove-d…
BeniaminDrasovean Apr 25, 2023
a2092ec
added persister creator
ssd04 Apr 25, 2023
8ad757e
specify path directly to sharded persister
ssd04 Apr 25, 2023
befda8f
added separate db config handler component
ssd04 Apr 26, 2023
027fbda
fix db config handler instantiation
ssd04 Apr 26, 2023
0a9c892
unit tests update in storage
ssd04 Apr 26, 2023
1e97d98
unit tests for persister creator
ssd04 Apr 27, 2023
cd7aa60
refactor save toml file checks
ssd04 Apr 27, 2023
96adb77
optimize save db config to toml file
ssd04 Apr 27, 2023
d216a86
update latest changes from storage repo
ssd04 Apr 27, 2023
b039bdc
added dir exists check for memory db
ssd04 Apr 28, 2023
67f3901
added unit tests for save to toml config file
ssd04 Apr 28, 2023
bbf3bb2
Merge pull request #5002 from multiversx/sharded-setup-per-db
ssd04 May 2, 2023
bcd99f4
remove unused shard id provider
ssd04 May 2, 2023
18ca8a3
deleter unused stub
ssd04 May 3, 2023
34fce17
Merge pull request #5210 from multiversx/cleanup-shardidprovider
ssd04 May 3, 2023
8f2d552
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-into-sharded-persister
ssd04 May 3, 2023
ccb5772
conflict fixes after merge
ssd04 May 3, 2023
a2614e3
fix persister storage tests
ssd04 May 3, 2023
f173ebc
proper release for core
ssd04 May 3, 2023
1232a6f
Merge pull request #5212 from multiversx/merge-rc-1.6.0-into-sharded-…
ssd04 May 4, 2023
5cdc088
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-into-sharded-persister
ssd04 May 8, 2023
b4bfa3b
Merge pull request #5228 from multiversx/merge-rc-1.6.0-into-sharded-…
ssd04 May 8, 2023
6d813ac
update go mod
BeniaminDrasovean May 8, 2023
c121324
update tries statistics
BeniaminDrasovean May 16, 2023
ad4ebea
add unit test
BeniaminDrasovean May 16, 2023
fbd1c79
fix after review
BeniaminDrasovean May 17, 2023
93a17e5
fix failing test
BeniaminDrasovean May 17, 2023
3d4e9af
Merge pull request #5242 from multiversx/balance-data-tries-update
BeniaminDrasovean May 17, 2023
d8b169d
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-into-sharded-persister
ssd04 May 22, 2023
4464dcf
fix go.mod conflicts
ssd04 May 22, 2023
224007d
switch log to trace + cleanup config
ssd04 May 22, 2023
43d6774
Merge pull request #5263 from multiversx/merge-rc-1.6.0-into-sharded-…
ssd04 May 22, 2023
ac7093f
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean May 23, 2023
db120b1
fix after merge
BeniaminDrasovean May 23, 2023
6654e8d
Merge pull request #5268 from multiversx/merge-rc/v1.6.0-in-feat/bala…
BeniaminDrasovean May 23, 2023
4cb606c
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-into-sharded-persister
ssd04 May 24, 2023
c50a75f
Merge pull request #5272 from multiversx/merge-rc-1.6.0-into-sharded-…
ssd04 May 24, 2023
63feb40
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean May 24, 2023
f10b18c
fix after merge
BeniaminDrasovean May 24, 2023
1c57589
Merge remote-tracking branch 'origin/rc/v1.6.0' into merge-rc/v1.6.0-…
BeniaminDrasovean May 25, 2023
e4e66c3
update go mod
BeniaminDrasovean May 25, 2023
1f61f5d
Merge pull request #5279 from multiversx/merge-rc/v1.6.0-in-feat/bala…
BeniaminDrasovean May 25, 2023
b128a5c
change epoch in which autoBalanceDataTries is enabled
BeniaminDrasovean May 25, 2023
d1cbee2
Merge pull request #5282 from multiversx/change-auto-balance-enable-e…
BeniaminDrasovean May 25, 2023
d19560a
Merge remote-tracking branch 'origin/rc/v1.6.0' into update-feat/bala…
BeniaminDrasovean May 29, 2023
19dd063
fix after merge
BeniaminDrasovean May 29, 2023
876f173
Merge pull request #5287 from multiversx/update-feat/balance-data-tri…
BeniaminDrasovean May 29, 2023
838969c
update go mod
BeniaminDrasovean May 29, 2023
056fd44
Merge pull request #5292 from multiversx/integrate-latest-changes-in-…
BeniaminDrasovean May 29, 2023
11e0647
add proper releases
BeniaminDrasovean May 30, 2023
c631b80
Merge pull request #5298 from multiversx/balance-data-tries-proper-re…
BeniaminDrasovean May 30, 2023
37f967b
Merge pull request #4636 from multiversx/feat/balance-data-tries
BeniaminDrasovean May 30, 2023
127c0a5
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-into-sharded-persister
ssd04 May 30, 2023
904fe34
proper release for storage
ssd04 May 30, 2023
0a8163e
Merge pull request #5302 from multiversx/merge-rc-1.6.0-into-sharded-…
ssd04 May 30, 2023
e58a866
Merge pull request #5010 from multiversx/feat/sharded-persister
ssd04 May 30, 2023
dc0c7f4
Merge branch 'rc/v1.6.0' into merge-rc-1.6.0-trie-sync-optimizations
ssd04 May 30, 2023
01b0e13
fix merge conflicts
ssd04 May 30, 2023
6b8fb77
conflict fixes after merge - revert print
ssd04 May 30, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions api/errors/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,6 @@ var ErrRegisteredNFTTokenIDs = errors.New("getting registered nft token ids erro

// ErrInvalidRole signals that an invalid role was provided
var ErrInvalidRole = errors.New("invalid role")

// ErrIsDataTrieMigrated signals that an error occurred while trying to verify the migration status of the data trie
var ErrIsDataTrieMigrated = errors.New("could not verify the migration status of the data trie")
70 changes: 50 additions & 20 deletions api/groups/addressGroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,27 @@ import (
)

const (
getAccountPath = "/:address"
getAccountsPath = "/bulk"
getBalancePath = "/:address/balance"
getUsernamePath = "/:address/username"
getCodeHashPath = "/:address/code-hash"
getKeysPath = "/:address/keys"
getKeyPath = "/:address/key/:key"
getESDTTokensPath = "/:address/esdt"
getESDTBalancePath = "/:address/esdt/:tokenIdentifier"
getESDTTokensWithRolePath = "/:address/esdts-with-role/:role"
getESDTsRolesPath = "/:address/esdts/roles"
getRegisteredNFTsPath = "/:address/registered-nfts"
getESDTNFTDataPath = "/:address/nft/:tokenIdentifier/nonce/:nonce"
getGuardianData = "/:address/guardian-data"
urlParamOnFinalBlock = "onFinalBlock"
urlParamOnStartOfEpoch = "onStartOfEpoch"
urlParamBlockNonce = "blockNonce"
urlParamBlockHash = "blockHash"
urlParamBlockRootHash = "blockRootHash"
urlParamHintEpoch = "hintEpoch"
getAccountPath = "/:address"
getAccountsPath = "/bulk"
getBalancePath = "/:address/balance"
getUsernamePath = "/:address/username"
getCodeHashPath = "/:address/code-hash"
getKeysPath = "/:address/keys"
getKeyPath = "/:address/key/:key"
getDataTrieMigrationStatusPath = "/:address/is-data-trie-migrated"
getESDTTokensPath = "/:address/esdt"
getESDTBalancePath = "/:address/esdt/:tokenIdentifier"
getESDTTokensWithRolePath = "/:address/esdts-with-role/:role"
getESDTsRolesPath = "/:address/esdts/roles"
getRegisteredNFTsPath = "/:address/registered-nfts"
getESDTNFTDataPath = "/:address/nft/:tokenIdentifier/nonce/:nonce"
getGuardianData = "/:address/guardian-data"
urlParamOnFinalBlock = "onFinalBlock"
urlParamOnStartOfEpoch = "onStartOfEpoch"
urlParamBlockNonce = "blockNonce"
urlParamBlockHash = "blockHash"
urlParamBlockRootHash = "blockRootHash"
urlParamHintEpoch = "hintEpoch"
)

// addressFacadeHandler defines the methods to be implemented by a facade for handling address requests
Expand All @@ -54,6 +55,7 @@ type addressFacadeHandler interface {
GetAllESDTTokens(address string, options api.AccountQueryOptions) (map[string]*esdt.ESDigitalToken, api.BlockInfo, error)
GetKeyValuePairs(address string, options api.AccountQueryOptions) (map[string]string, api.BlockInfo, error)
GetGuardianData(address string, options api.AccountQueryOptions) (api.GuardianData, api.BlockInfo, error)
IsDataTrieMigrated(address string, options api.AccountQueryOptions) (bool, error)
IsInterfaceNil() bool
}

Expand Down Expand Up @@ -164,6 +166,11 @@ func NewAddressGroup(facade addressFacadeHandler) (*addressGroup, error) {
Method: http.MethodGet,
Handler: ag.getGuardianData,
},
{
Path: getDataTrieMigrationStatusPath,
Method: http.MethodGet,
Handler: ag.isDataTrieMigrated,
},
}
ag.endpoints = endpoints

Expand Down Expand Up @@ -442,6 +449,29 @@ func (ag *addressGroup) getAllESDTData(c *gin.Context) {
shared.RespondWithSuccess(c, gin.H{"esdts": formattedTokens, "blockInfo": blockInfo})
}

// isDataTrieMigrated returns true if the data trie is migrated for the given address
func (ag *addressGroup) isDataTrieMigrated(c *gin.Context) {
addr := c.Param("address")
if addr == "" {
shared.RespondWithValidationError(c, errors.ErrIsDataTrieMigrated, errors.ErrEmptyAddress)
return
}

options, err := extractAccountQueryOptions(c)
if err != nil {
shared.RespondWithValidationError(c, errors.ErrIsDataTrieMigrated, err)
return
}

isMigrated, err := ag.getFacade().IsDataTrieMigrated(addr, options)
if err != nil {
shared.RespondWithInternalError(c, errors.ErrIsDataTrieMigrated, err)
return
}

shared.RespondWithSuccess(c, gin.H{"isMigrated": isMigrated})
}

func buildTokenDataApiResponse(tokenIdentifier string, esdtData *esdt.ESDigitalToken) *esdtNFTTokenData {
tokenData := &esdtNFTTokenData{
TokenIdentifier: tokenIdentifier,
Expand Down
85 changes: 85 additions & 0 deletions api/groups/addressGroup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1150,8 +1150,93 @@ func getAddressRoutesConfig() config.ApiRoutesConfig {
{Name: "/:address/nft/:tokenIdentifier/nonce/:nonce", Open: true},
{Name: "/:address/esdts-with-role/:role", Open: true},
{Name: "/:address/registered-nfts", Open: true},
{Name: "/:address/is-data-trie-migrated", Open: true},
},
},
},
}
}

func TestIsDataTrieMigrated(t *testing.T) {
t.Parallel()

testAddress := "address"
expectedErr := errors.New("expected error")

t.Run("should return error if IsDataTrieMigrated returns error", func(t *testing.T) {
t.Parallel()

facade := mock.FacadeStub{
IsDataTrieMigratedCalled: func(address string, _ api.AccountQueryOptions) (bool, error) {
return false, expectedErr
},
}

addrGroup, err := groups.NewAddressGroup(&facade)
require.NoError(t, err)
ws := startWebServer(addrGroup, "address", getAddressRoutesConfig())

req, _ := http.NewRequest("GET", fmt.Sprintf("/address/%s/is-data-trie-migrated", testAddress), nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

response := shared.GenericAPIResponse{}
loadResponse(resp.Body, &response)
assert.Equal(t, http.StatusInternalServerError, resp.Code)
assert.True(t, strings.Contains(response.Error, expectedErr.Error()))
})

t.Run("should return true if IsDataTrieMigrated returns true", func(t *testing.T) {
t.Parallel()

facade := mock.FacadeStub{
IsDataTrieMigratedCalled: func(address string, _ api.AccountQueryOptions) (bool, error) {
return true, nil
},
}

addrGroup, err := groups.NewAddressGroup(&facade)
require.NoError(t, err)
ws := startWebServer(addrGroup, "address", getAddressRoutesConfig())

req, _ := http.NewRequest("GET", fmt.Sprintf("/address/%s/is-data-trie-migrated", testAddress), nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

response := shared.GenericAPIResponse{}
loadResponse(resp.Body, &response)
assert.Equal(t, http.StatusOK, resp.Code)
assert.True(t, response.Error == "")

respData, ok := response.Data.(map[string]interface{})
assert.True(t, ok)
assert.True(t, respData["isMigrated"].(bool))
})

t.Run("should return false if IsDataTrieMigrated returns false", func(t *testing.T) {
t.Parallel()

facade := mock.FacadeStub{
IsDataTrieMigratedCalled: func(address string, _ api.AccountQueryOptions) (bool, error) {
return false, nil
},
}

addrGroup, err := groups.NewAddressGroup(&facade)
require.NoError(t, err)
ws := startWebServer(addrGroup, "address", getAddressRoutesConfig())

req, _ := http.NewRequest("GET", fmt.Sprintf("/address/%s/is-data-trie-migrated", testAddress), nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

response := shared.GenericAPIResponse{}
loadResponse(resp.Body, &response)
assert.Equal(t, http.StatusOK, resp.Code)
assert.True(t, response.Error == "")

respData, ok := response.Data.(map[string]interface{})
assert.True(t, ok)
assert.False(t, respData["isMigrated"].(bool))
})
}
10 changes: 10 additions & 0 deletions api/mock/facadeStub.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ type FacadeStub struct {
RestAPIServerDebugModeCalled func() bool
PprofEnabledCalled func() bool
DecodeAddressPubkeyCalled func(pk string) ([]byte, error)
IsDataTrieMigratedCalled func(address string, options api.AccountQueryOptions) (bool, error)
}

// GetTokenSupply -
Expand Down Expand Up @@ -553,6 +554,15 @@ func (f *FacadeStub) GetInternalStartOfEpochValidatorsInfo(epoch uint32) ([]*sta
return nil, nil
}

// IsDataTrieMigrated -
func (f *FacadeStub) IsDataTrieMigrated(address string, options api.AccountQueryOptions) (bool, error) {
if f.IsDataTrieMigratedCalled != nil {
return f.IsDataTrieMigratedCalled(address, options)
}

return false, nil
}

// Trigger -
func (f *FacadeStub) Trigger(_ uint32, _ bool) error {
return nil
Expand Down
1 change: 1 addition & 0 deletions api/shared/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,6 @@ type FacadeHandler interface {
GetTransactionsPoolForSender(sender, fields string) (*common.TransactionsPoolForSenderApiResponse, error)
GetLastPoolNonceForSender(sender string) (uint64, error)
GetTransactionsPoolNonceGapsForSender(sender string) (*common.TransactionsPoolNonceGapsForSenderApiResponse, error)
IsDataTrieMigrated(address string, options api.AccountQueryOptions) (bool, error)
IsInterfaceNil() bool
}
5 changes: 4 additions & 1 deletion cmd/node/config/api.toml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,10 @@
{ Name = "/:address/esdts-with-role/:role", Open = true },

# /address/:address/registered-nfts will return the token identifiers of the tokens registered by the address
{ Name = "/:address/registered-nfts", Open = true }
{ Name = "/:address/registered-nfts", Open = true },

# /address/:address/is-data-trie-migrated will return the status of the data trie migration for the given address
{ Name = "/:address/is-data-trie-migrated", Open = true }
]

[APIPackages.hardfork]
Expand Down
3 changes: 3 additions & 0 deletions cmd/node/config/enableEpochs.toml
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,9 @@
# RuntimeMemStoreLimitEnableEpoch represents the epoch when the condition for Runtime MemStore is enabled
RuntimeMemStoreLimitEnableEpoch = 1

# AutoBalanceDataTriesEnableEpoch represents the epoch when the data tries are automatically balanced by inserting at the hashed key instead of the normal key
AutoBalanceDataTriesEnableEpoch = 5

# SetSenderInEeiOutputTransferEnableEpoch represents the epoch when setting the sender in eei output transfers will be enabled
SetSenderInEeiOutputTransferEnableEpoch = 1

Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV1.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV2.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV3.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV4.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV5.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV6.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
2 changes: 2 additions & 0 deletions cmd/node/config/gasSchedules/gasScheduleV7.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
SetGuardian = 250000
GuardAccount = 250000
UnGuardAccount = 250000
TrieLoadPerNode = 20000
TrieStorePerNode = 50000

[MetaChainSystemSCsCost]
Stake = 5000000
Expand Down
3 changes: 2 additions & 1 deletion common/converters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/multiversx/mx-chain-go/common/mock"
"github.com/multiversx/mx-chain-go/testscommon"
"github.com/multiversx/mx-chain-go/testscommon/hashingMocks"
"github.com/multiversx/mx-chain-go/testscommon/marshallerMock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -122,7 +123,7 @@ func TestCalculateHash_Good(t *testing.T) {
marshaledData := "marshalized random string"
hashedData := "hashed marshalized random string"
hash, err := core.CalculateHash(
&testscommon.MarshalizerStub{
&marshallerMock.MarshalizerStub{
MarshalCalled: func(obj interface{}) ([]byte, error) {
marshalCalled = true
assert.Equal(t, initialObject, obj)
Expand Down
1 change: 1 addition & 0 deletions common/enablers/enableEpochsHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ func (handler *enableEpochsHandler) EpochConfirmed(epoch uint32, _ uint64) {
handler.setFlagValue(epoch >= handler.enableEpochsConfig.KeepExecOrderOnCreatedSCRsEnableEpoch, handler.keepExecOrderOnCreatedSCRsFlag, "keepExecOrderOnCreatedSCRsFlag", epoch, handler.enableEpochsConfig.KeepExecOrderOnCreatedSCRsEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.ChangeUsernameEnableEpoch, handler.changeUsernameFlag, "changeUsername", epoch, handler.enableEpochsConfig.ChangeUsernameEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.ConsistentTokensValuesLengthCheckEnableEpoch, handler.consistentTokensValuesCheckFlag, "consistentTokensValuesCheckFlag", epoch, handler.enableEpochsConfig.ConsistentTokensValuesLengthCheckEnableEpoch)
handler.setFlagValue(epoch >= handler.enableEpochsConfig.AutoBalanceDataTriesEnableEpoch, handler.autoBalanceDataTriesFlag, "autoBalanceDataTriesFlag", epoch, handler.enableEpochsConfig.AutoBalanceDataTriesEnableEpoch)
}

func (handler *enableEpochsHandler) setFlagValue(value bool, flag *atomic.Flag, flagName string, epoch uint32, flagEpoch uint32) {
Expand Down
6 changes: 5 additions & 1 deletion common/enablers/enableEpochsHandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ func createEnableEpochsConfig() config.EnableEpochs {
MultiClaimOnDelegationEnableEpoch: 78,
KeepExecOrderOnCreatedSCRsEnableEpoch: 79,
ChangeUsernameEnableEpoch: 80,
AutoBalanceDataTriesEnableEpoch: 81,
}
}

Expand Down Expand Up @@ -220,11 +221,12 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.False(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.False(t, handler.IsMultiClaimOnDelegationEnabled())
assert.False(t, handler.IsChangeUsernameEnabled())
assert.False(t, handler.IsAutoBalanceDataTriesEnabled())
})
t.Run("flags with == condition should be set, along with all >=", func(t *testing.T) {
t.Parallel()

epoch := uint32(80)
epoch := uint32(81)
cfg := createEnableEpochsConfig()
cfg.StakingV2EnableEpoch = epoch
cfg.ESDTEnableEpoch = epoch
Expand Down Expand Up @@ -322,6 +324,7 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.True(t, handler.IsRuntimeCodeSizeFixEnabled())
assert.True(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.True(t, handler.IsChangeUsernameEnabled())
assert.True(t, handler.IsAutoBalanceDataTriesEnabled())
})
t.Run("flags with < should be set", func(t *testing.T) {
t.Parallel()
Expand Down Expand Up @@ -419,5 +422,6 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.False(t, handler.IsRuntimeCodeSizeFixEnabled())
assert.False(t, handler.IsKeepExecOrderOnCreatedSCRsEnabled())
assert.False(t, handler.IsChangeUsernameEnabled())
assert.False(t, handler.IsAutoBalanceDataTriesEnabled())
})
}
Loading