Taproot og Schnorr (BIP340–342)

Nøkkelsti, script-sti, MAST og Tapscript.

Taproot ble aktivert ved blokk 709 632 14. november 2021. Det er tre BIP-er som arbeider sammen.

BIP340: Schnorr-signaturer

Et nytt Schnorr-signatur-skjema på samme secp256k1-kurve. Signaturer er 64 byte og offentlige nøkler er 32-byte x-only-nøkler. Fordi Schnorr er lineær, kan flere signere kombinere nøklene sine til én med protokoller som MuSig2 (BIP327) og produsere én signatur.

BIP341: Taproot-utdata

En Taproot-utdata (SegWit v1, bc1p…) forplikter seg til én 32-byte nøkkel Q. Q bygges fra en intern nøkkel P og et valgfritt tre av scripter:

Q = P + t·G, der t = hashTapTweak(P || merkle_root)

Det finnes to måter å bruke på:

  • Nøkkelsti: signer med den tweakede nøkkelen. On-chain er det bare én signatur. Ingen kan se om et script-tre fantes.
  • Script-sti: avslør ett script (et blad), inndataene dens, og en kontrollblokk som holder P og Merkle-grenen som beviser at bladet er i treet. De andre bladene forblir skjulte.

Dette treet av alternativer kalles ofte MAST. Et typisk design: nøkkelstien er «alle er enige», og bladene er reserveveier som «2-av-3 etter 6 måneder».

BIP342: Tapscript

Script-språket inne i bladene ble oppdatert. OP_CHECKMULTISIG ble erstattet av OP_CHECKSIGADD, som er batch-verifiserbart. 10 000-byte-scriptgrensen og 201-opcode-grensen ble fjernet og erstattet med et signatur-budsjett knyttet til witness-størrelse. Ubrukte opcodes ble OP_SUCCESSx, som gjør fremtidige soft forks enklere.

Bedre signatur-hashing

BIP341-sighash forplikter seg til beløpene og scriptene til alle inndata som brukes, så maskinvarelommebøker kan verifisere gebyrer uten å se tidligere transaksjoner.

Aktivering

Taproot brukte «Speedy Trial», et kort BIP9-lignende signaleringsvindu med 90 % terskel. 90 %-terskelen ble nådd ved blokk 687 284 12. juni 2021, den ble låst inn fra neste periode (blokk 687 456), og den ble håndhevet fra blokk 709 632.

Fordeler

Billigere og mer privat multisig og kontrakter, fordi det vanlige tilfellet ser ut som en vanlig enkeltnøkkel-betaling.