Use byte arrays to store non-unicode fate strings #291
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.
extracted from #287
This PR is supported by the Æternity Foundation
Firstly, if a contract uses fate strings as bytes, then these bytes can be broken by converting them to strings on js side. To avoid that I propose to keep data as bytes, keeping the same API except that
valueOf
will return bytes instead of a string if the payload is non-unicode.The issue I had is that some arguments in contract instructions are raw strings, the current implementation breaks them while decoding making impossible to encode them back. For example: