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 is sharing some early, experimental work on a Schnorr signature full aggregation module per the DahLIAS protocol. The paper has not yet been translated into a BIP but I was eager to try implementing module here from scratch and I wanted to share it as a base for some discussions while working on a BIP. Obviously, the code here will be subject to change because of this.
Aside from all the stuff that is still missing the most interesting question so far seems to be: How can code be shared between two modules that might be not be considered low level and general enough to enter the main library but that is behaving exactly the same between two separate modules? In the code here there a many helper functions, almost all of them related to the effective nonce logic, that are (intentionally) exactly the same as in the Musig module (grep for TODO in the main impl file). This code might be shared with a FROST module as well in the future but to me this code doesn't feel like it really belongs into the lower level library code because it is very specific to these higher level protocols. Maybe I am wrong here but if not there could be some common code section that is shared between modules but is not accessible from the other library code.
TODOs