
著者:Captainz、元配偶子の研究者出典:X、@hicaptainz
過去2週間で、BTCエコロジーとさまざまな碑文プロジェクトを勉強していたとき、原則や技術的な詳細を明確に紹介できる記事はほとんどありませんでした。 UTXOのUTXOはどのように追跡され、碑文の内容がスクリプトに配置されています。また、転送時にBRC20を2回動作させる必要があるのはなぜですか?私はこれらの技術的な詳細を理解していないことがわかります。BRC20、BRC420、原子、スタンプ、ルーンルーンの違いを理解することは困難です。この記事はBTCブロックチェーンの基本的な知識に浸透し、上記の質問に答えようとします。
BTCのブロック構造
ブロックチェーンは、本質的にマルチユーザーの簿記技術であり、各タイムの分散データベース(アカウント)です。
>
Excelを使用してフォームを作成して、ブロックチェーンの作業原理を説明しました。Excelファイルはブロックチェーンを表し、それぞれが別のフォームを示します。560331、560332からパッケージ化されます。ブロックの主要な部分は、アドレスの片側で最も一般的な二重簿記法です。値は、対応するアドレスの対応するアドレスに対応します。入力コインの数は、出力コインの数よりも大きくなります。これは、ユーザーレベルでの転送料です。ブロックヘッドは、前のブロックの高さ、前のブロックのハッシュ値、このブロックの確立時間(タイムスタンプ)、および乱数を取得します。それで、分散型の簿記技術として、誰が次のブロックの簿記権をつかむでしょうか?この乱数と対応するハッシュ値に依存します。コンピューティングパワーを持つマイナーは、現在のブロックのハッシュコンピューティングを計算し、適格なハッシュ値を取得した最初の鉱夫は次のブロック簿記を正しく、ブロック報酬と転送料金を獲得します。最後に、スクリプト領域を使用して、たとえば、スクリプトOp_returnを添付バーとして使用できます。実際のブロックでは、スクリプト領域が個別の領域ではなく、入力情報と出力情報に接続されていることに注意してください。たとえば、入力に添付されたスクリプトは、ロック解除スクリプト(ScriptSig)です。これは、契約を導入するために秘密のキーの署名承認を実行するために「対応する秘密鍵を持つ人々」です。
>
>
上記の2つの図は、元の入力と出力のテーブルです。
分離証人とタップルート#
ビットコインネットワークは10年以上動作していますが、重要なイベントはありませんでしたが、トランザクションコストは、もはや実現可能ではない高いポイントに急上昇しています。したがって、ビットコインの開発者は、将来の成長するトランザクション量にどのように対処するために、ネットワークの最良の拡張がどのように拡大するかについて議論してきました。
2017年、議論はクライマックスに達し、ビットコイン開発コミュニティは2つの派ionに分割されました。 。
ロックスクリプトが秘密鍵を使用して「証人データ」を生成する必要があることを理解しているので、各ブロックが収容できるトランザクションの数を増やすために、この証人データをブロックから分離できますか?隔離された証人は、2017年8月に正式に活性化されました。その実装方法は、すべてのトランザクションデータを2つの部分に分割することです。1つはトランザクションの基本情報データであり、もう1つはトランザクションの署名情報であり、新しいブロックの新しいデータ構造に署名情報を保存します。 「証人」と呼ばれ、元のトランザクションとは別に送信されます。
>
技術的には、SEGWITの実装は、トランザクションがもはや証人データを含める必要がないことを意味します(ビットコインが元々ブロック用に配置した1MBスペースを占有しない)。代わりに、ブロックの終わりに、データを目撃するための追加の独立したスペースが作成されます。データ転送をサポートし、割引「ブロック重量」があります。これにより、ハードフォークのニーズを回避するために、ビットコインのブロックサイズに大量のデータを巧みに保持します。このようにして、ビットコイントランザクションのトランザクションデータのサイズは上限を増やし、署名データのトランザクションコストを削減します。Segwitアップグレードの前は、ビットコインの容量は1 MBで、Segwitの後、単純なトランザクションの容量はまだ1mでしたが、分離目撃スペースのサイズは4 MBに達しました。
Taprootは2021年11月に実装されました。Taproot、Tapscript、および「Schnorr Signature」という名前の新しいデジタル署名スキームを含む3つの異なるビットコイン改善提案(BIP)で構成されています。Taprootは、トランザクションのプライバシーの増加や取引コストの削減など、ビットコインユーザーに多くの利点をもたらすことを目指しています。また、ビットコインがより複雑なトランザクションを実行できるようになり、アプリケーションシナリオが拡大されます(一部の操作コードオペコードの追加)。
これらの更新は、序数NFTの重要なプロモーション因子であり、Taprootスクリプトパスに使用済みスクリプト(目撃されたデータスペース)にNFTデータを保存します。このアップグレードにより、構造化されたストレージとストレージがデータを目撃しやすくなり、「ORD」標準の基礎を築きます。データ要件の緩和により、トランザクションがブロック全体をトランザクションと証人データで埋めることができると仮定すると、4MBのブロックサイズ(証人データスペース)の制限は、配置できるメディアタイプのタイプを拡張します。チェーン
スクリプトに文字列があるので、これらの文字列に制限がないので、一部の人々が尋ねるかもしれません。これらのスクリプトが本当に実行されている場合はどうなりますか?コンテンツがさりげなく配置されている場合、エラーコードは外出を拒否しますか?これは、op_false命令に言及するためです。OP_FALSE(ビットコインスクリプトで「0」として表現されている)は、スクリプト言語の実行パスがOP_IFブランチに入ることなく、それを絶え間ない状態に保つことを保証します。それは、後続のコードが実行されないことを確認するために、高度な言語での「注釈」と同様に、スクリプト内の場所または空気操作として機能します。
>
UTXO転送モデル
上記は、コンピューターデータ構造からのBTCの基本原則です。
UTXOは、不足しているトランザクション出力の略語です。では、なぜビットコインはそのような概念を使用するのでしょうか?これは、簿記法のアカウント取引モデルとアカウント残高モデルから始まります。
私たちはあまりにも長い間集中型システムに携わっているため、アカウントバランスモデルの会計方法に非常に慣れています。ユーザーAが100元をユーザーBに転送すると、銀行はAの銀行口座に100元があるかどうかを確認します。ストロークが完了します。
ただし、ビットコインの簿記アルゴリズムには、バランスの概念がありません。ブロックチェーンの分散型台帳に記録されたトランザクションのみがあり、アカウントの現在のバランスを直接記録することはありません(通常、レコードバランスは記録するために特別なサーバーノードを必要とし、その後集中化されます)。現在のユーザーが1,000元であると仮定します。ユーザーが100元に転送されると、転送が記録されます。
トランザクション1ユーザーAからユーザーB 100元転送
トランザクション2ユーザーAユーザーA転送900元(UTXO)(UTXO)
>
ここでのトランザクションは、機能の観点からトランザクションですが、彼はアカウント残高の役割を果たし、100元転送を完了した後、Aのアカウントのアカウントにまだ900元が残っていることを示しています。
質問は、なぜそのようなUTXOを構築する必要があるのですか?BTCブロックチェーンにトランザクションのみを記録できるため、アカウント残高は記録できません。このUTXOがなければ、バランスのバランスを計算し、すべてのアカウントのすべてのトランザクションとアカウントを蓄積する必要があります。UTXOの出現は、バランスを計算するときにすべてのトランザクションの問題点を巧みに回避します。
UTXOには特徴があります。つまり、コインのように、トランザクションプロセス中に十分な入力量を取得する方法とゼロを見つける方法はありますか?コインを使用して類推を行うことができます(実際、UTXOという単語を見るときに「コイン」に自動的に翻訳する方が良いです)。
XiaomingはXiaogangのビットコインを1つ転送しました。このプロセスは、たとえば、Xiaomingのアドレスに対応する十分な入力を求めています。この転送トランザクションの2つの入力。同時に、2つの出力があります。1つは小さなピアントの住所に、額面は1ビットコインです。Xiaoming自身のアドレスの別のアドレスは0.1ビットコインです。
言い換えれば、Xiaomingのポケットには2つのコインがあり、1つの額面は0.9で、もう1つは0.2です。 Xiaogang同時に0.1からゼロ。したがって、この会計モデルの本質は、「ゼロを見つける」という作用を通じて「計算バランス」を回避することです。
順序プロトコルの順序システム
順序プロトコルは、BTCの生態学的爆発のこのラウンドの原因であると言えます。これは、最小のユニットSATとして均一なBTCを分解し、各SATのシリアル番号をマークすることです。それはどうでしたか?
BTCの総量は2100万であり、BTCを1億(SAT)に分割できることがわかっているため、BTCの最小のユニットはSATです。ここで、これらのSATにシリアル番号を割り当てようとしています。
以前にブロックデータ構造について話すとき、トランザクション情報は、入力のアドレスと量、および出力のアドレスと量を示す必要があると述べました。各ブロックには、Transactionsの2つの部分が含まれています。BTCの配送料と転送料です。取り扱い手数料の取引には入力と出力が必要ですが、アウトレット報酬は薄い空気から生成されるBTCであるため、この「入力」は「Coinbaseトランザクション」とも呼ばれます。BTCの総数は、このコインベーストランザクションから派生しており、これはすべてのブロックトランザクションで最初にランク付けされています。
順序プロトコルは次のように規定しています。
-
番号:各SATには採掘順に番号が付けられています
-
転送:Advanced of Advanced Firstによると、トランザクションの入力から出力への転送
第1条ルールは比較的単純であり、数はマイニング報酬のコインベーストランザクションによってのみ生成できると判断します。たとえば、採掘の最初のブロックは50個のBTCに割り当てられます。 5,000,000,000; -
提出(コミット)段階:この段階では、ユーザーは情報(投票の選択や入札価格など)を送信しますが、この情報は暗号化されています。一般に、ユーザーはハッシュ値(つまり、情報の暗号化)を生成し、このハッシュ値をブロックチェーンに送信します。ハッシュ関数の特性により、それらは一意の出力(ハッシュ値)を生成できます。これは、元の情報に対して不可逆的です。これは、元の情報をハッシュ値から推測できないことを意味します。このプロセスにより、提出時に情報の機密性が保証されます。
-
段階を明らかにする:予約された時間の後、ユーザーは元の情報を明らかにし、以前に送信したハッシュ値に一致することを証明する必要があります。これは通常、元の情報とハッシュの生成に使用される追加データ(乱数や「塩」など)を送信することによって行われます。次に、ネットワークは、この元の情報のハッシュ値が以前に送信されたハッシュ値と同じかどうかを確認します。一致する場合、元の情報は有効として受け入れられます。
-
コストを作成します
P2TRトランザクションを作成するために、ユーザーはまず、単一の公開キーまたはより複雑なスクリプトなどの条件付き条件を定義し、ビットコインを使用する要件を指定します(たとえば、複数の署名ウォレットやスマートコントラクト)。 -
Taproot出力を生成します
次に、ユーザーはTaproot出力を生成します。これには、単一の公開キーが含まれます(公開キーは支出の状態を表します)。この公開キーは、「Tweaking」と呼ばれるプロセスを使用して、ユーザーの公開キーとユーザーのハッシュの組み合わせから派生しています。これにより、出力が標準的な公開キーのように見えるようになり、ブロックチェーン上の他のトランザクションと区別することが困難になります。 -
ビットコインを使ってください
ユーザーがビットコインを使用する場合、単一のキー(コストが満たされている場合)を使用したり、元のスクリプトを開示したり、コストを満たすために必要な署名またはデータを提供したりできます。これは、より効率的で柔軟なコストの実行を可能にするTapscriptを使用して行われます。 -
検証トランザクション
その後、鉱山労働者とノードは、Schnorrの署名とデータ、および検査によって提供される支出条件をチェックすることにより検証されました。条件が満たされ、トランザクションが有効であると見なされる場合、ビットコインが予想されます。 -
プライバシーと柔軟性の向上
P2TRトランザクションは、ビットコインを使用するときに必要なコストを開示するため、高いレベルのプライバシーを維持します。さらに、MastとSchnorrの署名により、複数のコストを効率的にエンコードし、トランザクションの全体的なサイズを増やすことなく、より複雑で柔軟なトランザクションを可能にします。
>
ここでのより難しいのは、UTXOには実際に多くのコングが含まれているため、このUTXOのすべてのコングは同じように見えます。これは、実際には2番目のルールで決定されます。
最初に、BTCの最小分割ユニットは1で、合計10ブロックがあり、各ブロックのアウトレットの報酬は10 BTC、つまり合計量は100であると仮定します。これらの100個のBTCにシリアル数の(0-99)を与えることができます。転送状況がない場合、最初のブロックの10 btc番号が(0-9)であり、2番目のブロックの10 btc番号が10 btcまで10番目の領域まで(10-19)であることを知っています。ブロックの数は(90-99)です。費用がかからないため出力はありません。10btcごとに数の範囲を与えることができます。
2番目のブロックに2つの支出が追加され、1つは3BTCで、もう1つは「Find Zero」を備えた7 BTCで、他のBTCに3つのBTCに対応し、それ自体で7つのBTCを見つけると仮定します。この時点で、ブロックトランザクションのリストでは、7つのBTCランキングで最初にランク付けされ、ゼロ(対応する数は10-16)と他の人の3BTCランキング(対応する数は17-19)です。これにより、出力の転送を通じてUTXOに含まれるSATのシーケンスコレクションが確認されます。
すべてのSATはUTXOではないため、SATはUTXOにのみ存在し、SATの特定の範囲が含まれており、SATSを使用した後にのみ新しい出力を生成できます。
この「数字」を表現する方法については、上記の「整数法」、その他の10進10進数、程度の方法、パーセンテージ法、純粋な文字の命名法など、順序は複数のフォームをサポートします。
>
SATSに統一されたシリアル番号がある後、検査を検討できます。上記では、データ型ファイルがテキストであっても、写真やビデオをアップロードした後、ファイルは自動的にヘキサデシマルストレージのTaprootスクリプト領域に変換されます。したがって、1 UTXOはTapRootスクリプト領域に対応し、これらのUTXOには多くのSATが含まれます(全体的なSATSシーケンスコレクション。ダスト攻撃を防ぐために、単一のUTXOのビットコインの数は546 CONG CONGを超えることはできません)。レコードを促進するために、序数プロトコルは、「このシーケンスコレクションを使用した最初のSAT番号は結合関係を表す」(ホワイトペーパーの元の単語は最初の出力番号です))を人為的に規定しています。コレクションと碑文コンテンツのバインディングを置き換える17日。
順序資産のキャストと転送#
順序NFTは明らかに分離証言領域のスクリプトにアップロードされ、SATSシーケンスに結合して、BTCチェーンでNFTアセットを発行するために収集します。しかし、ここには、孤立した証人領域のスクリプトがロックされているスクリプトと出力のロックスクリプトも含まれています。正解は、両方が利用可能であるということです。ここでは、ブロックチェーンテクノロジーのコミットレビールメカニズムについて言及する必要があります。
ブロックチェーンのコミットレビールメカニズムは、情報の公平性と透明な処理を確保するためのプロトコルです。このメカニズムは通常、隠された情報(投票や入札など)に提出する必要があるシナリオで使用され、将来の特定の時点でこの情報を明らかにします。コミットリビールメカニズムは、委員会(コミット)段階と明らかにされた段階の2つの段階に分かれています。
前述のように、碑文の内容は、UTXOに含まれるSATSシーケンスセットでバインドされるため、出力のロックスクリプトに接続する必要があります。ただし、BTCの完全なノードは、ネットワーク全体のすべてのUTXOセットのローカルメンテナンスと送信である必要があります。10,000の4Mビデオファイルが10,000のUTXOロックスクリプトに直接アップロードされている場合、すべてのノードには高いストレージスペースと超高速速度が必要であると想像してくださいしたがって、唯一の解決策は、コンテンツを解除スクリプトに入力に入れて、このコンテンツを別の出力に「ポイント」することです。
したがって、順序資産の鋳造は2つのステップに分割する必要があります(ウォレットはこれら2つのステップを組み合わせることです。トランザクションを構築するとき、同時に、父と息子のトランザクションが構築されます。料金)。
キャスト段階では、ユーザーは最初に、Commit TransactionのUTXO(BアドレスのAアドレスのアドレス)のロックスクリプトにファイルのハッシュ値をアップロードする必要があります。第二に、ユーザーは新しいトランザクション(アドレスBアドレスが自分に転送されます)を構築します。入力のロック解除スクリプトには、元の碑文ファイルが含まれている必要があります。ホワイトペーパーの元の単語の説明は、「まず第一に、コミットでは、碑文コンテンツを含むスクリプトに送信されたタップルート出力を作成します。
転送段階では、順序NFTとBRC20はわずかに異なるため、通常のBTC転送と同様に、特定のUTXOを受信機に結合するNFTを転送する必要があります。ただし、BRC20はカスタム量転送を含むため、2つのステップに分割されます。 Commit-Reveral Father and Sonトランザクションペアは、通常のNFT転送に似ています一部のウォレットは、時間とガスを節約するために、これら3つのトランザクション(子供と孫の3つの生成トランザクション)を同時に構築します。
>
要約すると、コミットトランザクションは、碑文コンテンツ(元のコンテンツのハッシュ値)をSATS(UTXO)とシリアル番号とバインドするために使用され、露出トランザクションはコンテンツ(元のコンテンツ)を表示するために使用されます。この父親のトランザクションは、NFTのキャストを完了しました。
P2TRと例#
キャスティングに関する上記の技術的な議論は終わっていません。一部の人々は興味があるからです。トランザクションを明らかにしたことで、コミットトランザクションの碑文情報がどのように確認されますか?トランザクションを構築するときに、互いの2つのアドレスを転送する必要があるのはなぜですか?碑文を演奏していたとき、私は2つの財布を見ませんでした。ここでは、TapRoot P2TRの主要なアップグレードの1つについて説明する必要があります。
P2TR(Pay-to-Taproot)は、TapRootによって導入された新しいタイプのビットコイントランザクションです。P2TRトランザクションは、ユーザーが単一の公開キーまたはより複雑なスクリプト(複数の署名ウォレットやスマートコントラクトなど)を使用して、より高いプライバシーと柔軟性を実現できるようにすることでビットコインを使用します。これは、Merkleized Abstract Syntax Tree(Mast)とSchnorrの署名に署名することで達成されます。
上記は、P2TRのコミットレビールメカニズムの適用方法です。
ブロックチェーンブラウザhttps://www.blockchain.com/を使用してください。
まず第一に、コミットトランザクションのハッシュIDは(2DDF90DDF7C929C8038888FC2B7591FB999C3BA3C7B49D54D01F8DB44AF585Cであることがわかります。このトランザクションの出力には碑文データ(実際、16メカニズムの図ファイルのハッシュ値)が含まれておらず、Webページに関連する碑文情報がないことに注意してください。この出力(BC1P4MTC …)アドレスは、実際には「微調整」プロセス(スクリプトの公開キーを表す)によって生成される一時的なアドレスと、メインアドレス(BC1PG2MP …)の秘密鍵です。このトランザクションの2番目のUTXOは、返品の「ゼロ」操作に属します。このように、碑文内容の結合と最初のUTXOに含まれるSAT。
>
次に、トランザクションレコードを明らかにし、そのハッシュIDは(E7454DB518CA3910D2F17F41C7B215D6CBA00F29BD186AE77D7FCD7F0BA7C0E1)です。ここでは、序数の碑文の情報を見ることができます。このトランザクションの入力アドレスは、以前のトランザクション(BC1P4MTC …..)によって生成された一時的な出力アドレスであり、入力のロック解除スクリプトには元の画像の16進ファイルが含まれていますが、出力0.00000546BTC(546 CONG)が含まれています。これは、このNFTを独自のTapRootメインアドレス(BC1PG2MP …)に送信することです。最初のアウトの原則と「最初の出力の最初のコング番号が拘束されています」に基づいています。したがって、碑文が(Sat 1893640468329373)にあるCONGを見つけることができます。
(https://ordinals.com/sat/1893640468329373)
>
これら2つのトランザクション(父と息子のトランザクションに属する)は、キャスト時に同時にウォレットによってメモリプールに提出されるため、ガスを取るだけで、記録されて放送される可能性もあります。同じブロックの鉱夫によって(上記の例では(上記の例では、2つのトランザクションがブロック790468に存在します)。その後、マイナーとノードは、Commit Transactionの出力スクリプトの16分の1ヘクサデシマルのハッシュ値と16個のプルーフ画像ハッシュ値のHash値と、Commit Transactionの16個のハッシュ値をチェックすることにより、その後検証されました。2つが同じで、トランザクションが有効であると見なされる場合、このビットコインのUTXOは、BTCのブロックチェーンデータベースに自然に永続的に記録されます2つのハッシュ値が異なる場合、2つのトランザクションがキャンセルされ、碑文が失敗します。
BRC20プロトコルとインデクサー
順序プロトコルの場合、テキスト(イーサリアムの戦利品に対応)であるテキストが刻まれています。碑文は写真です。音楽の期間。では、コードが刻まれていて、このコードが「FT均質化トークンを発行する」コードである場合はどうなりますか?
BRC20は、順序プロトコルを使用して、JSONデータ形式に展開、キャスト、転送することにより、トークンを展開、キャスト、転送します。 。前の記事では、BRC20トークンの本質は半多数のトークンSFT、つまりNFTトランザクションとして使用できると述べていますペアの「異なる状況」の制御はどのように制御できますか?答えはインデックスです。
インデクサーは実際には簿記係であり、データベース内の受信情報を記録するために使用されます。順序プロトコルでは、インデックスは、入力と出力を追跡することにより、異なるアドレスのSATの変更を決定します。BRC-20プロトコルでは、インデックスにもう1つの機能があります。碑文の異なるアドレスの変更を記録します。
したがって、簿記係の観点からは異なるトークンの存在を見ることができます。BRC20プロトコルトークンは、実際にはトリプルデータベースに存在します。最初のlayer1、ブックキーパーはBTCマイナーであり、データベースタイプは「チェーンデータベース」であり、生成されたBTCはFTアセットです。2番目のlayer2、簿記係は順序インデクサー、データベースタイプは「リレーショナルデータベース」、シリアル番号を持つSATSはNFTアセットです。3番目のlayer3、簿記係はBRC20インデクサーであり、データベースタイプは「リレーショナルデータベース」であり、生成されたBRC20アセットはFTアセットです。当我们把brc20按照“张”来算的时候、站的角度是序的索引器(由该索引器记录)、它自然是nft ;当我们把 brc20特に集中交換に充電した後)ステーションの角度は、自然にFTです。このことから、半多形性トークンSFTの存在は、さまざまなレベルのブックキーパーによって引き起こされるという結論を得ることができます。
ブロックチェーンは分散データベースではないため、この「チェーンデータベース」を共同で維持するためのマイナーの会計士がいます(チェーンデータベースのみが本当に分散化できるため)。しかし、私たちが回ったとき、私たちはまだ集中化された「リレーショナルデータベース」の古い道に戻りました。これが、しばらく前の順序合意の順序であるBRC20プロトコルのプロモーターであるUNISATウォレットである順序が、インデクサーが攪拌をアップグレードしたいかどうかの不可欠な本質的な理由です。
しかし、10年以上の開発の後、業界は「分散化」の多くの経験を蓄積しました。安全性と地方分権化を確保するために、詐欺またはZKPを採用できますか?マルチ鎖の生態学的繁栄と統合を促進するために、ビットコインの生態系のDA需要は他のDASにオーバーフローしますか?私はより多くの可能性を見ているようです。
参照情報
https://www.aixinzhijie.com/books/261/master_bitcoin/_book/
https://learnblockchain.cn/article/5717
https://zhuanlan.zhihu.com/p/361854961
https://www.odaily.news/post/5187233
https://learnblockchain.cn/article/5376
https://www.panewslab.com/zh/articledetails/1301r1ibp79c.html
https://docs.ordinals.com/inscriptions.html
https://thebitcoinmanual.com/articles/pay-taproot-p2tr/