BIP: 118 Layer: Consensus (soft fork) Titlu: SIGHASH_NOINPUT Autor: Christian Decker <[email protected]> Comentarii-Rezumat: Niciun comentariu inca. Comentarii-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0118 Stare: Tipul proiectului: Crearea standardelor: 28.02.2017 Licenta: BSD-3-Clause

Abstract

Acest BIP descrie un nou semn de semnatura hash (sighash-flag) pentru tranzactiile segwit. Indeparteaza orice angajament fata de rezultatul cheltuit din mecanismul de verificare a semnaturii. Aceasta permite legarea dinamica a tranzactiilor la iesiri, bazata exclusiv pe compatibilitatea scripturilor de iesire cu scripturile de intrare.

Motivatie

Protocoalele off-chain folosesc tranzactiile care nu sunt inca difuzate catre reteaua Bitcoin pentru a renegocia starea finala care ar trebui solutionata in lant. Intr-o serie de cazuri este de dorit sa reactionam la o anumita tranzactie care este vazuta in lant cu o reactie predeterminata sub forma unei alte tranzactii. Adesea reactia este identica, indiferent de tranzactia care este vazuta in lant, dar aplicatia trebuie totusi sa creeze multe tranzactii identice. Acest lucru se datoreaza faptului ca semnaturile din intrarea unei tranzactii se angajeaza in mod unic la hashul tranzactiei care a creat iesirea cheltuita.

Aceasta propunere introduce un nou semnal sighash care modifica comportamentul algoritmului de tranzactionare utilizat in crearea si verificarea semnaturii, pentru a exclude angajamentul de iesire anterior. Prin eliminarea angajamentului, permitem reconectarea dinamica a unei tranzactii semnate la rezultatele al caror program martor si valoare se potrivesc cu cele din martorul tranzactiei de cheltuieli.

Legarea dinamica este opt-in si poate fi restrictionata in continuare prin utilizarea scripturilor de testare unice care sunt specifice instantei aplicatiei, de exemplu, folosind chei publice care sunt specifice instantei de protocol in afara lantului.

Specificatie

SIGHASH_NOINPUT este un flag cu valoarea 0x40 atasat la o semnatura, astfel incat semnatura sa nu se angajeze la niciuna dintre intrari si, prin urmare, la iesirile cheltuite. Steagul se aplica exclusiv verificarii acelei semnaturi.

Semnalizatorul SIGHASH_NOINPUT este activ numai pentru scripturile segwit cu versiunea 1 sau mai mare. In cazul in care semnalul va fi utilizat intr-un script non-segwit sau un script segwit din versiunea 0, comportamentul curent este mentinut si executia scriptului TREBUIE sa se intrerupa cu un esec.

Algoritmul de tranzactionare din BIP 143 este utilizat la verificarea unei semnaturi SIGHASH_NOINPUT, cu urmatoarele modificari:

2. hashPrevouts (32-byte hash) este 32 0x00 bytes 3. hashSequence (32-byte hash) este 32 0x00 bytes 4. outpoint (32-byte hash + 4-byte little endian) este setat la 36 0x00 bytes 5.

porno peludas españolas follando rico
videosdeincesto pornoxxxxx
jovencitas masturbandose porno español jovencitas
hentaihd comic porno español
orgias familiares videos porno abuelas
sexo gratis incesto cincuentonas follando
mamas cachondas xxx abuelas
desnudas en la cocina pono gay
guarras.com danna paola desnuda
maduras pajeando culos porno
fontanero cachondo corridas en la garganta
madre española se folla a su hijo chochitos jovencitos
videos xxxxx orgias caseras
mamadas de abuelas intercambio parejas amateur
se la chupa mientras duerme el video porno mas visto en internet
porno incesto real follando en el campo
madura se corre pajas caseras
cincuentonas follando cachondas españolas
follando a mi hijastra me hace una paja
creampie española videos porno caseros españoles

scriptCode din intrare este setat la un script gol 0x00

Valoarea rezultatului anterior ramane parte a rezumatului tranzactiei si, prin urmare, este angajata si in semnatura.

Steagul NOINPUT POATE fi combinat cu steagul SINGLE, caz in care hashOutputs este modificat conform BIP 143 [1]: se angajeaza la iesire doar cu indicele de potrivire, daca exista o astfel de iesire, si este uint256 0x0000 …. ..0000 in caz contrar.

Fiind o modificare a algoritmului de rezumat, semnalul NOINPUT se aplica tuturor codurilor de optiune de verificare a semnaturii segwit, in special se aplica:

  • OP_CHECKSIG
  • OP_CHECKSIGVERIFY
  • OP_CHECKMULTISIG
  • OP_CHECKMULTISIGVERIFY

Legarea prin scripturi

Folosind NOINPUT intrarea care contine semnatura nu mai face referinta la o iesire specifica. Orice participant poate efectua o tranzactie si o poate rescrie schimband referinta hash la iesirea anterioara, fara a invalida semnaturile. Acest lucru permite legarea tranzactiilor de orice rezultat care se potriveste cu valoarea angajata in semnatura si al carui program martor, combinat cu martorul tranzactiei de cheltuieli, returneaza adevarat.

Anterior, toate informatiile din tranzactie erau angajate in semnatura insasi, in timp ce relatia dintre tranzactia de cheltuieli si rezultatul cheltuit se bazeaza exclusiv pe compatibilitatea programului martor si a martorului.

Aceasta inseamna, de asemenea, ca trebuie sa se acorde o atentie speciala pentru a evita activarea neintentionata a acestui mecanism de legare. NOINPUT NU TREBUIE utilizat, cu exceptia cazului in care este necesar in mod explicit pentru aplicatie, de exemplu, NU TREBUIE sa fie un semn de semnare implicit intr-o implementare portofel. Reluarea este posibila numai atunci cand rezultatele tranzactiei se pot lega de toate utilizeaza aceleasi chei publice. Orice cheie publica care este utilizata intr-o semnatura NOINPUT TREBUIE sa fie utilizata numai pentru iesirile la care intrarea poate fi legata si NU TREBUIE folosite pentru tranzactiile la care intrarea s-ar putea sa nu se lege. De exemplu, o aplicatie TREBUIE sa genereze o noua pereche de chei pentru instanta aplicatiei utilizand semnaturi NOINPUT si NU TREBUIE sa le refoloseasca dupa aceea.

Implementare

Steagul NOINPUT sighash trebuie sa fie implementat in timpul unei actualizari regulate a scriptului segwit.

Compatibilitate inversa

Ca o furca soft, software-ul mai vechi va continua sa functioneze fara modificari. Cu toate acestea, nodurile neactualizate nu vor verifica validitatea noului flag sighash si vor considera tranzactia valabila in mod implicit. Fiind aplicabile doar pentru tranzactiile segwit, nodurile non-segwit vor vedea un script oricine poate cheltui si il va considera valid.

Multumiri

Steagul sighash NOINPUT a fost propus pentru prima data de Joseph Poon in februarie 2016 [2], dupa ce a fost mentionat in ziarul Lightning original [3]. Cu toate acestea, o propunere formala a fost amanata pana dupa activarea segwitului. Aceasta propunere este o continuare a acestei discutii si incearca sa o formalizeze astfel incat sa poata fi inclusa in protocolul Bitcoin. Ca atare, am dori sa recunoastem pe Joseph Poon si Thaddeus Dryja ca fiind inventatorii originali ai steagului NOINPUT sighash si utilizarile sale in protocoalele off-chain.

Referinte

  1. ^ https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
  2. ^ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-February/012460.html
  3. ^ http://lightning.network/lightning-network.pdf

Drepturi de autor

Acest document este licentiat sub licenta Clauzei BSD 3.