Fix/assign network to dvm address string#53
Open
secretnamebasis wants to merge 2 commits into
Open
Conversation
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.
Description
ADDRESS_STRING()in DVM-BASIC callsrpc.NewAddressFromKeys(), which cannot itself determine the current network —rpccan't importglobalswithout a circular dependency — so the resulting address always defaulted to mainnet formatting (dero1...) regardless of whether the node is actually running on testnet or as a simulator. This fix explicitly assignsaddr.Mainnet = globals.IsMainnet()after construction, so the address string returned inside a contract matches the network it's actually running on.Verified independently against a simulator-deployed clone of the live FEED contract (
e12689bf2e670ab627c90a24cf6d1a3ad0f6eea80a0cc55c32a0af4bc77ce5d0): a testnet signer's own registration key (STORE(ADDRESS_STRING(SIGNER()), ...)) was stored asdero1...instead of the expecteddeto1..., while the wallet's ownGetAddress()correctly returneddeto1...for the same key — confirming the mismatch lives in the DVM builtin, not the wallet.Same fix as deroproject#192 (same author), carried forward here since that PR is still open/unmerged upstream.
Fixes # (no tracked issue number)
Type of change
Which part is impacted?
(
dvmis shared by bothcmd/derodandcmd/simulator, since the simulator embeds the same DVM interpreter.)Checklist:
License
I am contributing & releasing the code under DERO Research License (which can be found here).