feat!: MultisigAccount and LogicSig with signer interfaces #465
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.
This PR started as just multisig, but now also includes logic signatures since they are partly intertwined. Both the lsig and msig abstractions present in algosdk and utils require direct usage of secret keys. The abstractions in this PR work entirely based on signing callbacks. This improves security (secret keys are no longer passed around) and makes multisigs and logicsigs compatible with external KMS.
The following function was also added to make it easy for anyone without Algorand knowledge to generate Algorand-specific signing functions with type safety, auth address handling, and proper domain separation:
It should be noted that this is a fairly significant breaking change for lsigs and msigs but the changes only affect those using in-memory secret keys with these abstractions whcih should hopefully be a small percentage of production code.
TODOs in this PR
Related TODOs in follow up PRs