Acest articol este doar pentru partajare tehnică și nu constituie niciun sfat de investiții.
Va avea BTC și propriul său contract inteligent?
În recentul ecosistem Bitcoin, Fractal BTC a lansat în sfârșit rețeaua principală în septembrie, după ce a trecut prin mai multe rețele de testare. O caracteristică majoră a Fractal este capacitatea de a avea „contracte inteligente” și aproape în același timp cu lansarea rețelei principale, a fost lansat un nou protocol token CAT 20. Ce inteligență tehnică are CAT 20? Ce putem invata?
Fractal Bitcoin
Înainte de a înțelege CAT 20, trebuie să înțelegem pe scurt Fractal Bitcoin. Relația lor este la fel ca ERC 20 și ETH.
Fractal Bitcoin, cunoscut și sub numele de Fractal Bitcoin, este o rețea de „al doilea strat” care este pe deplin compatibilă cu BTC. În comparație cu BTC, timpul de confirmare a blocului este mai rapid, durând doar 1 minut. Principiul său de bază este pur și simplu așa cum spune numele, care este de a face mai multe copii ale rețelei BTC. Cu cât mai multe noduri pot procesa tranzacții, cu atât va fi mai rapid. Cu toate acestea, detaliile specifice, cum ar fi modul în care diferitele lanțuri comunică, nu sunt încă clare și nu există documente tehnice oficiale corespunzătoare pentru referință.
Dacă doar o tranzacție în lanț de nivel al doilea este mai rapidă, se pare că nu există entuziasm. Cu toate acestea, activarea OP_CAT în Fractal, care a fost abandonată de BTC cu mult timp în urmă din motive de securitate, a adus capacitățile Fractal Bitcoin la un nivel superior. Unii oameni spun că OP_CAT poate permite BTC să aibă capabilități de contract inteligente în felul acesta, este loc pentru imaginație.
Acum, cineva a implementat un protocol asemănător ERC 20 pe Fractal Bitcoin.
În ceea ce privește motivul pentru care OP_CAT a fost abandonat și de ce poate fi folosit pe Fractal Bitcoin, putem vorbi despre el mai târziu Aici ne concentrăm pe CAT 20.
Protocolul CAT Vă rugăm să consultați cartea albă pentru următorul conținut: Introducere | Protocolul CAT (https://catprotocol.org/)
Și depozitul github: GitHub - CATProtocol/cat-token-box: Un monorepo pentru pachetele care implementează protocolul CAT (https://github.com/CATProtocol/cat-token-box)
Cu suportul OP_CAT de bază, un protocol corespunzător, Protocolul CAT, va fi disponibil în curând. În prezent, un protocol care rulează efectiv este protocolul CAT 20, iar un panou corespunzător a fost adăugat pe Unisat: https://explorer.unisat.io/fractal-mainnet/cat20.
Toată lumea ar trebui să poată reacționa când vede numele CAT 20. Ar trebui să fie mai asemănător cu ERC 20. În comparație cu protocolul matur ERC 20, este foarte convenabil pentru toată lumea să implementeze un Token Cum implementează CAT 20 un ciclu de viață similar cu ERC 20?
Implementează
Înainte de implementare, utilizatorii trebuie să specifice adresa portofelului și informațiile de bază despre token. Informațiile de bază despre token sunt similare cu cele din ERC 20:
Vor exista unele diferențe CAT 20 poate stabili limite de pre-exploatare și de cantitate pentru fiecare Monetărie. Desigur, ERC 20 poate atinge aceste capacități și prin capabilități contractuale.
În timpul fazei de implementare vor fi inițiate două tranzacții, care pot fi considerate ca două faze: „commit” și „reveal”. Citând diagrama oficială, etapele de implementare sunt următoarele:
În etapa „commit”, informațiile de bază ale jetonului vor fi scrise în scriptul de ieșire al tranzacției, cum ar fi numele, simbolul etc. HashIdul tranzacției inițiate în faza „commit” va fi folosit ca simbol al token-ului pentru a distinge celelalte token-uri.
Puteți vedea că utxo-ul acestei tranzacții „bc 1 pucq...ashx” corespunde commit-ului. Apoi, au rămas două tranzacții care indică „bc 1 pszp...rehc 4”. Prima este folosită pentru a plăti taxa de gaz pentru următoarea etapă „descoperire”, iar cealaltă este schimbarea.
În etapa „reveal”, puteți vedea că există două intrări utxo, corespunzătoare primelor două ieșiri ale etapei anterioare de comitere. Această tranzacție va scoate mai întâi un OP_RETURN, în care va fi salvat Hash-ul stării inițiale a CAT 20. Apoi va fi scos un Minter, care va juca un rol important în procesul Mint ulterior și este folosit pentru a menține schimbările de stare ale procesului Mint.
Privind în urmă la întregul proces de implementare, „commit” și „reveal” urmează cei doi pași de depunere și dezvăluie utilizate în mod obișnuit pe blockchain. Este o modalitate relativ comună de a implementa proiecte. vor fi dezvăluite etapele.
Ca
Când ne uităm pentru prima dată la Mint Token, tranzacția arată astfel.
După cum puteți vedea în imaginea de mai sus, procesul Mint are următoarele caracteristici.
Intrarea de mentă este un minter, care este generat inițial în timpul implementării.
De fiecare dată când menta are un singur minter ca intrare și orice număr de minter ca ieșire (un pic problematic)
Fiecare mentă are doar un singur jeton (un pic problematic)
Ordinea de ieșire este necesară, minter trebuie urmată de simbol
Cunoscând procesul Mint, putem descoperi de fapt câteva situații speciale care vor face întregul proces Mint interesant.
De exemplu, minter, ca rezultat al tranzacției mint, poate fi 1, multiplu sau chiar 0. Dacă Mint este setat la 1 de fiecare dată, atunci numărul de monetări care pot fi utilizate în întreaga rețea va rămâne neschimbat (1), ceea ce va face Mint aglomerat și toată lumea trebuie să apuce acest minter pentru a evita acest lucru În cazul în care este necesar, este necesar să setați numărul de ieșiri de tuns de fiecare dată la mai mult de 1, astfel încât după mentare să poată fi folosite din ce în ce mai multe.
Cu toate acestea, fiecare ieșire suplimentară de minter înseamnă că trebuie să plătiți un utxo suplimentar. Din motive economice, mai mulți oameni vor fi dispuși să seteze minter la 0, ceea ce va face inevitabil deflația minter, ceea ce necesită ca unii oameni să vină să facă o donație și să plătească. extra minter voluntar.
În versiunea V2, implicit este generarea a două minter, iar starea celor două minter va fi cât mai asemănătoare.
Structurarea tranzacțiilor
Este posibil ca unii prieteni să fi descoperit o problemă, adică de ce poate fi folosit minter's utxo pentru a construi tranzacții? Pentru a înțelege această problemă, trebuie să analizați codul sursă al „contractului”.
1, dezvăluie utxo
În primul rând, analizăm tranzacția în timpul procesului de dezvăluire și aflăm că folosește comiterea de ieșire a tranzacției anterioare ca intrare. De ce putem lua un utxo care nu este adresa noastră și putem construi intrarea tranzacției?
Conform bunului simț, o cheie privată corespunde unei chei publice, iar cheia publică derivă adresa. Când se verifică dacă o intrare utxo este validă, se determină de obicei prin compararea dacă semnătura este în concordanță cu tranzacția originală după ce a fost decriptată cu cheia publică. Această parte a logicii este scrisă în script Bitcoin. Deci putem rescrie inteligent logica scriptului Perechile de chei publice și private scrise în script aparțin propriei adrese, astfel încât să putem controla utxo a două adrese diferite.
Privind codul sursă, putem vedea ce s-a întâmplat:
Există o altă problemă aici, adică o cheie privată corespunde unei chei publice, deci de ce adresa de comitere generată este diferită de adresa noastră? Aici îl puteți vedea din codul sursă
Cu alte cuvinte, cheia noastră privată va ajusta cheia publică în funcție de ISSUE_PUBKEY, care este, de asemenea, o caracteristică a adresei P 2 TR.
2, minter uxo
În timpul procesului de revelare, folosim utxo diferit ca intrare, dar de fapt cheia de criptare este aceeași, care este cheia privată a implementatorului. Dar în etapa de minter, toată lumea poate folosi aceste utxo ca intrare, cum se face acest lucru?
Bănuiesc că această parte este capacitatea OP_CAT menționată anterior, adică capacitatea contractelor inteligente. Fiecare minter este un contract inteligent. Cu toate acestea, codul sursă al acestei părți nu a fost făcut public în prezent și nu cunoaștem încă implementarea specifică.
Starea tranzacției (V2)
În minter se păstrează și starea. Această stare există în două locuri: unul se află în OP_RETURN al ieșirii tranzacției, iar celălalt este stocat în contractul inteligent, care este Minter și Token-ul menționat mai sus.
Ceea ce este stocat în OP_RETURN este Hash-ul stării curente de ieșire a tranzacției, iar timpii Mint rămași ai Tokenului sunt stocați în contract. După fiecare Monetărie, numărul de monetări din noul Minter generat va fi egal cu numărul rămas de monetări împărțit la doi. Reprezentat cu o diagramă:
La sfârșitul jocului, numărul rămas din toate Minter este 0.
Revenind la imaginea originală, pe lângă faptul că Minter este un contract inteligent, Tokenul generat este și un contract inteligent, care este CAT 20. CAT 20 are două stări de bază: cantitatea și adresa proprietarului Tokenului. Puteți vedea că, spre deosebire de BRC 20 sau inscripția anterioară, CAT 20 nu se află pe UTXO-ul adresei dvs.
Transfer
La transfer, numărul de jetoane de intrare și de ieșire din tranzacție trebuie să fie consecvent. Desigur, pot exista mai multe jetoane diferite în aceeași tranzacție, atâta timp cât numerele de intrare și de ieșire ale diferitelor jetoane sunt consecvente.
Arde
Dacă doriți să ardeți Jetonul, trebuie doar să transferați Jetonul la o adresă normală.
Rezuma
Se poate observa că toate operațiunile sunt construite de utilizatori înșiși, ceea ce este foarte flexibil, așa că trebuie făcută multă logică de verificare în partea contractului. Unele dintre vulnerabilitățile care au fost expuse până acum se datorează și neglijenței în logica verificării.
Un astfel de design poate avea câteva beneficii:
Dacă doriți să găsiți starea de deținere a tuturor Jetoanelor, trebuie doar să verificați utxo-ul jetonului și nu este nevoie să continuați căutarea.
Dacă doriți să verificați situația actuală a menții, puteți căuta tranzacții cu cat în OP_RETURN.
ZAN este aici pentru a lua apă fără nici un prag!
Sfat: Puteți primi 0,01 ETH gratuit testnet la fiecare 24 de ore pentru a vă ajuta să experimentați și să testați proiecte Web3 în ecosistemul Ethereum Faceți clic pentru a-l primi acum: https://zan.top/faucet?chInfo=ch_WZ
Mai multe lanțuri publice vor fi susținute în curând~
Acest articol este scris de Yeezo (cont X @GaoYeezo 75065) al echipei ZAN (cont X @zan_team)