### Relevant BIPs Understanding the following BIPs is relevant for the project. #### BIP documents * [BIP 340 - Schnorr Signatures for secp256k1](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) * [BIP 341 - SegWit version 1 spending rules](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki) * [BIP 342 - Validation of Taproot Scripts](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki) * [BIP 114(Rejected but interesting) - Merkelized Abstract Syntax Tree](https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki) * [BIP 65 - OP_CHECKLOCKTIMEVERIFY](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki) * [BIP 174 - Partially Signed Bitcoin Transaction Format](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki) * [BIP 370 - PSBT Version 2](https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki) #### BIP Readtrough videos * [BIP 340 Readtrough - Jimmy Song](https://www.youtube.com/watch?v=rVsNFMzQUck) * [BIP 341 Readtrough - Jimmy Song](https://www.youtube.com/watch?v=pkS9aorpxNc) * [BIP 342 Readtrough - Jimmy Song](https://www.youtube.com/watch?v=fAEcXh6nZ9U) ### Taproot ![[Taproot output structure.canvas]] #### [[Spending Taproot UTXOs]] #### Videos * [Introduction to Taproot - Nicolas Dorier - short video](https://www.youtube.com/watch?v=I7HsXKgtD2I) * [Very good, practical introduction to coding taproot Transactions - Bitdevs LA](https://www.youtube.com/watch?v=E-HxgNkPB-8) #### Workshop [Bitcoin Optech Schnorr Taproot Workshop](https://bitcoinops.org/en/schorr-taproot-workshop/) ### Descriptors/Miniscript We can use Descriptors/Miniscript to precisely and human readable describe the Transaction outputs of the escrow transaction pipeline. This improves readability and portability of the pipeline. #### Videos * [Using BDK and Wallet descriptors for Taproot - Video - Bitdevs LA](https://www.youtube.com/watch?v=wsQIZRY2BD0) * [Introduction to Miniscript - Port of Bitcoin](https://www.youtube.com/watch?v=uNZpfHEtP4U) * [Getting started with Miniscript - Andrew Poelstra](https://www.youtube.com/watch?v=eTUuwASdUBE) #### Websites * [Miniscript introduction/compiler/specification](https://bitcoin.sipa.be/miniscript/) * [https://bitcoinops.org/en/preparing-for-taproot/#taproot-descriptors](https://bitcoinops.org/en/preparing-for-taproot/#taproot-descriptors) ### Signature/Pubkey aggregation To combine multiple parties pubkeys to a single combined Taproot pubkey and to create a aggregated signature with all participants MuSig2 is relevant. * [Paper, very (probably too) deep](https://eprint.iacr.org/2020/1261) #### Videos * [MuSig2 in Taproot - Nicolas Dorier - higher level explanation](https://www.youtube.com/watch?v=hrUyGW91JBc) * [MuSig2: Simple Two-Round Schnorr Multi-Signatures - very detailed, more crypto focused explanation](https://www.youtube.com/watch?v=Dzqj236cVHk) ### ROAST [Roast scheme explanation](https://www.youtube.com/watch?v=f2soc95MWWY) ### Sighash Types Maybe sighash flags could be a useful tool? It's possible to construct a transaction with multiple inputs/outputs from different parties using signatures committing only to specific inputs or outputs. #### Canvas ![[Signature and Flags.canvas]] #### Blog articles [Blog article on Sighashes - good examples - Raghav Sood](https://raghavsood.com/blog/2018/06/10/bitcoin-signature-types-sighash) [Signature Hash Flags Medium Article - enigbe ochekliye](https://enigbe.medium.com/signature-hash-flags-f059d035ddd0) ### How to make taproot transactions? (Example transactions) https://github.com/danielabrozzoni/multisigs_and_carrots (Best Example I could find) https://bitcoindevkit.org/blog/2021/11/first-bdk-taproot-tx-look-at-the-code-part-1/ (Interesting read) https://github.com/bitcoin-core/btcdeb/blob/master/doc/tapscript-example-with-tap.md (Good code for spending taproot transactions) https://dev.to/eunovo/a-guide-to-creating-taproot-scripts-with-bitcoinjs-lib-4oph (Can look at this, this uses bitcoinjs-lib to create taproot scripts) ### Partially signed bitcoin transactions [Bitcoin Optech collection of sources](https://bitcoinops.org/en/topics/psbt/)