Refactor escrow account to be an ATA #108
Merged
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.
Closes #46 (credit to @bonedaddy for first report)
Formerly, the escrow account was something the user could supply where unwrapped tokens could be held. The only requirement was for the owner to be the wrapped mint authority. After some thinking and audits, it's worth revisiting. In the annoying case, someone else could unwrap through your escrow, leaving you to find another to unwrap through. If they were malicious, they could unwrap through your escrow and re-wrap through say hundreds of very small accounts. This would leave you, on the client side, scrambling to unwrap through those accounts. In general, this frontrunning is a griefing attack surface.
This PR adds validation that requires the escrow to be a ATA associated with the wrapped mint. That way, everyone on that mint shares a deterministic bucket to unwrap from.
Changes to:
Javascript updates in #109