Semnături de tranzacție

Utilizări stelare semnături ca autorizare. Tranzacțiile au nevoie întotdeauna de autorizare de la cel puțin o cheie publică pentru a fi considerate valide. În general, tranzacțiile au nevoie doar de autorizare din cheia publică a contului sursă.

operațiune prag

Semnăturile tranzacției sunt create prin semnarea criptografică a conținutului obiectului tranzacției cu o cheie secretă. Stellar utilizează în prezent schema de semnături ed25519, dar există și un mecanism pentru adăugarea unor tipuri suplimentare de scheme de chei publice/private. Se consideră că o tranzacție cu o semnătură atașată are autorizație de la cheia publică respectivă.

În două cazuri, o tranzacție poate necesita mai multe semnături. Dacă tranzacția are operațiuni care afectează mai mult de un cont, va avea nevoie de autorizare din partea fiecărui cont în cauză. O tranzacție va avea nevoie, de asemenea, de semnături suplimentare dacă contul asociat tranzacției are mai multe chei publice. Pentru exemple, consultați ghidul de operații.

Praguri

Operațiunile se încadrează într-o anumită categorie de prag: scăzut, mediu sau ridicat. Pragul pentru un anumit nivel poate fi setat la orice număr de la 0 la 255. Acest prag este cantitatea de greutate a semnăturii necesară pentru a autoriza o operațiune la acel nivel.

Să presupunem că Diyang stabilește pragul mediu pentru unul dintre conturile sale la 4. Dacă acel cont trimite o tranzacție care include o operațiune de plată (securitate medie), pragul tranzacției este 4 - ponderile semnăturii pe acesta trebuie să fie mai mari sau egale cu 4 pentru a alerga. Dacă cheia principală a Diyang - cheia corespunzătoare cheii publice care identifică contul pe care o deține - are o pondere mai mică de 4, nu poate autoriza o tranzacție fără alți semnatari.

Odată ce pragul de semnătură este atins, dacă există resturi de semnături, atunci tranzacția va eșua. Acest lucru se va întâmpla chiar dacă semnăturile sunt valabile. De exemplu, dacă tranzacția dvs. necesită 3 semnături, furnizarea a mai mult de 3 semnături va duce la o tranzacție eșuată cu o eroare TX_BAD_AUTH_EXTRA (chiar dacă toate sunt valabile). Motivul acestei erori este legat de performanță, deoarece verificarea inutilă a semnăturii are un efect mare asupra performanței înainte de a accepta tranzacțiile în consens.

Fiecare cont își poate seta propriile valori prag. În mod implicit, toate nivelurile pragurilor sunt setate la 0, iar cheia principală este setată la greutatea 1. Operațiunea Setare opțiuni vă permite să modificați greutatea cheii master și să adăugați alte chei de semnare cu greutăți diferite.

  • Procesarea tranzacției
    • Încărcarea unei taxe sau actualizarea numărului de ordine pentru contul sursă
  • Permiteți funcționarea Trust
    • Folosit pentru a permite utilizatorilor să dețină credit din acest cont fără a expune cheia care permite trimiterea plăților din acest cont.
  • Bump Sequence
    • Modificați direct numărul de ordine al contului

  • Setați Opțiuni pentru a schimba semnatarii sau pragurile
    • Vă permite să creați un set de semnatari care oferă sau revocă accesul la cont.
  • Combinarea contului pentru îmbinarea conturilor

Pentru majoritatea cazurilor, se recomandă setarea unor praguri atât de mici .

Chei de semnare suplimentare

Conturile sunt identificate printr-o cheie publică. Cheia privată care corespunde acestei chei publice se numește cheia principala. Cheile de semnare suplimentare pot fi adăugate în cont utilizând operațiunea Setare opțiuni.

Dacă greutatea cheii master este actualizată la 0, aceasta nu poate fi utilizată pentru a semna tranzacții (chiar și pentru operațiuni cu o valoare de prag 0), până la restabilirea de către alți semnatari care îndeplinesc pragul înalt. Dacă există alți semnatari enumerați în cont, aceștia pot continua să semneze tranzacții.

„Semnatori” se referă la cheia principală sau la orice cheie de semnare adăugată ulterior. Un semnatar este definit ca pereche: cheie publică, greutate.

Fiecare semnatar suplimentar dincolo de cheia principală mărește soldul minim al contului.

Tipuri alternative de semnături

Pentru a activa unele caracteristici avansate ale contractului inteligent, există câteva tipuri de semnături suplimentare. Aceste tipuri de semnături au, de asemenea, greutăți și pot fi adăugate și eliminate în mod similar cu tipurile de semnături normale. Dar, mai degrabă decât să verifice o semnătură criptografică pentru autorizare, acestea au o metodă diferită de a demonstra validitatea rețelei.

Tranzacție preautorizată

Este posibil ca un cont să preautorizeze o anumită tranzacție adăugând hash-ul viitoarei tranzacții ca „semnatar” în cont. Pentru a face acest lucru, trebuie să pregătiți tranzacția în prealabil cu numărul de ordine corespunzător. Apoi, puteți obține hash-ul acestei tranzacții și îl puteți adăuga ca semnat la cont.

Semnatarii de acest tip sunt eliminați automat din cont atunci când se aplică corect o tranzacție potrivită. În caz de eroare sau când tranzacția de potrivire nu este trimisă niciodată, semnatarul rămâne și trebuie eliminat manual folosind operațiunea Setare opțiuni.

Acest tip de semnat este util în special în conturile escrow. Puteți preautoriza două tranzacții diferite. Ambele ar putea avea același număr de secvență, dar destinații diferite. Aceasta înseamnă că doar unul dintre ele poate fi executat.

Hash (x)

Adăugarea unei semnături de tip hash (x) permite oricărei persoane care știe x să semneze tranzacția. Acest tip de semnat este deosebit de util în swap-urile atomice încrucișate care sunt necesare pentru protocoalele inter-blockchain, cum ar fi rețelele fulger.

Mai întâi, creați o valoare aleatorie de 256 biți, pe care o numim x. Hash-ul SHA256 de acea valoare poate fi adăugat ca semnator de tip hash (x). Apoi, pentru a autoriza o tranzacție, x este adăugat ca una dintre semnăturile tranzacției. Rețineți că x va fi cunoscut de lume imediat ce o tranzacție este trimisă în rețea cu x ca semnătură. Aceasta înseamnă că oricine va putea să se semneze pentru acel cont cu semnatorul hash (x) în acel moment. De multe ori doriți să existe semnatari suplimentari, astfel încât cineva trebuie să aibă o anumită cheie secretă și să știe x pentru a atinge pragul de greutate necesar pentru a autoriza tranzacțiile pe cont.

Plicuri

O tranzacție plic încheie o tranzacție cu un set de semnături. Obiectul tranzacției este lucrul pe care semnatorii îl semnează de fapt. Din punct de vedere tehnic, un plic de tranzacție este lucrul care este transmis în jurul rețelei și inclus în seturile de tranzacții.

Autorizare

Pentru a determina dacă o tranzacție are autorizația necesară pentru a rula, se adaugă ponderile tuturor semnăturilor din plicul tranzacției. Dacă această sumă este egală sau mai mare decât pragul (vezi mai jos) stabilit pentru acel tip de operație, atunci operațiunea este autorizată.

Această schemă este foarte flexibilă. Puteți solicita multor semnatari să autorizeze plăți dintr-un anumit cont. Puteți avea un cont pe care orice număr de persoane îl poate autoriza. Puteți avea o cheie master care acordă acces sau revocă accesul de la alții. Acceptă orice m de configurare.

Operațiuni

Exemplul 1: Ancore

Rulați o ancoră care ar dori să mențină cheia de emitere offline. În acest fel, este mai puțin probabil ca un actor rău să poată obține cheia ancorei și să înceapă să emită credit necorespunzător. Cu toate acestea, ancora dvs. trebuie să autorizeze persoanele care dețin credite executând operațiunea Permiteți încrederea. Înainte de a acorda credit unui cont, trebuie să verificați dacă contul este OK.

Multisig vă permite să faceți toate acestea fără a expune cheia principală a ancorei. Puteți adăuga o altă cheie de semnare în contul dvs. cu operația Setare opțiuni. Această cheie suplimentară ar trebui să aibă o pondere sub pragul mediu al contului dvs. de ancorare. Deoarece Permiteți încrederea este o operațiune cu prag redus, această cheie suplimentară autorizează utilizatorii să dețină creditul ancorei dvs. Însă, deoarece plata este o operațiune cu prag mediu, această cheie nu permite nimănui care vă compromite ancora să emită credit.

Configurarea contului dvs.:

Exemplul 2: Conturi comune

Doriți să creați un cont comun cu Bilal și Carina, astfel încât oricare dintre voi să autorizeze o plată. De asemenea, doriți să configurați contul astfel încât, dacă alegeți să schimbați semnatarii (de exemplu, să eliminați sau să adăugați pe cineva), o operațiune cu prag înalt, toți 3 trebuie să fiți de acord. Îi adăugați pe Bilal și Carina ca semnatari la contul comun. De asemenea, vă asigurați că este nevoie de toate greutățile cheie pentru a șterge pragul înalt, dar numai unul pentru a șterge pragul mediu.

Configurarea contului comun:

Exemplul 3: Conturi de companie

Compania dvs. dorește să creeze un cont care necesită 3 din 6 angajați să fie de acord cu orice tranzacție din acel cont.

Configurarea contului companiei:

Exemplul 4: Conturi de cheltuieli

Controlați pe deplin un cont de cheltuieli, dar doriți ca cei doi colegi de serviciu Diyuan și Emil să poată autoriza tranzacțiile din acest cont. Adăugați cheile de semnare ale lui Diyuan și Emil în contul de cheltuieli. Dacă Diyuan sau Emil părăsesc compania, le puteți elimina cheia de semnare, o operațiune cu prag înalt.

Configurarea contului de cheltuieli:

Exemplul 5: Valute personalizate

Doriți să emiteți o monedă personalizată și să vă asigurați că nu se vor mai crea mai multe. Faceți un cont sursă și emiteți suma maximă de monedă într-un cont de deținere. Apoi setați greutatea principală a contului sursă sub pragul mediu - contul sursă nu mai poate emite valută.

Configurarea contului sursă:

Rețineți că, deși aici pragurile sunt 0, cheia master nu poate semna cu succes o tranzacție, deoarece propria sa pondere este 0.