最近、Arc-20プロトコルの導入により、碑文市場は再び熱狂的な動きを見せています。 この記事では、技術的な観点から、2つのプロトコルの詳細と長所と短所を掘り下げます。
ビットコインはもともと、安全で安定した信頼性の高い分散型デジタル通貨として設計されました。 ただし、その技術アーキテクチャとイーサリアムと比較して比較的柔軟性の低いスクリプト言語のため、ビットコインはスマートコントラクトを直接実行するのには適していません。
それにもかかわらず、開発者の革新的なアイデアと大胆な試みは、ビットコインエコシステムに繁栄をもたらしました。 典型的な例の 1 つは、Brc-20 プロトコルです。 プロトコルの核となるアイデアは、ミームを中心とした実験的なトークン形式です。 誰でもスマートコントラクトに頼ることなく、先着順でビットコインチェーン上でこれらのトークンを直接鋳造できます。 Brc-20トークンの主な特徴は、プライベートセール、プレセール、ロック解除やステーキングなどのメカニズムを排除する分散型の性質です。 これにより、真に分散化されたエンゲージメントが保証されます。
これに関連して、Arc-20プロトコルは碑文への強い関心を再び呼び起こしました。
Brc-20 プロトコルと Arc-20 プロトコルはどちらも Btc チェーンに基づいているため、Arc-20 プロトコルと Brc-20 プロトコルを正式に導入する前に、UTXO (未使用トランザクション出力) について簡単に理解しておきましょう。
ビットコインについて話すとき、UTXO(未使用トランザクション出力)モデルは重要な設計概念です。 これは、ビットコインで使用されるアカウントモデルの一種であり、銀行口座などの従来の残高モデルとは異なります。
UTXOモデルでは、すべてのビットコイントランザクションが一連の未使用のアウトプットを作成し、各アウトプットは一定量のビットコインを表します。 これらの未使用のアウトプットは、紙幣や硬貨と同様に、基本的にデジタル通貨の未使用の単位です。 あなたがビットコインを受け取るとき、誰かが実際にあなたのビットコインアドレスに関連付けられた新しい未使用のアウトプットを作成しました。 この出力はUTXO.
UTXOモデルについて、簡単な例を挙げて説明しましょう。
0.7BTCと0.5BTCの2つのトランザクションがある場合、0.7BTCと0.5BTCの2つのUTXOを持つことになります。 1BTCを支払いたい場合、1つのUTXOを単純に使うのではなく、2つのUTXOを新しいUTXO(合計1.2BTC)に統合し、1BTCを受取人に送り、残りの0.2BTCをおつりとして自分に返す必要があります。 ただし、取引の円滑な運用を確保するために、ユーザーはマイナーに取引手数料を支払う必要があるため、実際の変化は0.2BTC未満になる可能性があります。
BRC-20は、順序理論と碑文を活用することにより、ビットコインのレイヤー1で代替可能なトークンを作成する可能性を実証する実験的標準です。 Ordinalsプロトコル(プロトコルの標準で鋳造された最初のトークン)を使用すると、テキスト、画像、ビデオなどのコンテンツをビットコインの最小単位であるサトシに刻印できるため、独自のデジタル資産を作成できます。
順序理論は、BTCネットワークに碑文を実装するための鍵です。
それぞれのサトシは本質的に同じであり、オーディナルは物語理論を通じてサトシの秩序プロトコルを開発しました。 この順序付けは、サトシのマイニングと、そのトランザクションのインプットとアウトプットの順序に基づいています。
序数を表すには、いくつかの方法があります。
次数式には、A°B'C"D'''、A、B、C、D の 4 つの部分があり、異なる意味を表します。
ナラティヴ理論は、度数表現によってサトシの序列を決定し、その順番によってサトシごとに異なる希少性レベルを定義することで、それぞれのサトシの独自性を実現しています
たとえば、既存の次数は 1°1′0"0''' と表されます。
上記のレアリティの定義により、このサトシはレアストシと定義されています。
一般的なプロセスは次のとおりです。
py# 高さが与えられたブロックの物語(報酬)を計算する
DEF助成金(身長):
return 50*100_000_000 >> height // 210_000
この関数は、50*100_000_000がビットコインの開始報酬>>、右シフト演算子であり、2つの整数除算で割ることに相当する、特定の高さのビットコインブロックの報酬を計算するために使用されます。 この関数は、指定された高さのブロックの報酬額を表す整数を返します。
def first_ordinal(高さ):
開始 = 0
範囲 (高さ) の h の場合:
スタート+=補助金(H)
スタートを返す
この関数は、指定された高さのブロックの最初の報酬の序数を計算します。 最初のブロックから特定の高さまでの報酬の総数を、高さを反復して各ブロックの報酬を累積することで計算し、最初の報酬の序数を求めます。
def assign_ordinals(ブロック):
最初 = first_ordinal(block.height)
last = first + 補助金(block.height)
coinbase_ordinals =list(範囲(最初, 最後))
def assign_ordinals(ブロック):
最初 = first_ordinal(block.height)
last = first + 補助金(block.height)
coinbase_ordinals =list(範囲(最初, 最後))
block.transactions[1:]のトランザクションの場合:
序数 = []
transaction.inputs の入力の場合:
ordinals.extend(input.ordinals)
transaction.outputs の出力の場合:
output.ordinals = ordinals[:output.value]
序数[:output.value]
coinbase_ordinals.extend(序数)
block.transactions[0].outputs の出力の場合:
output.ordinals = coinbase_ordinals[:output.value]
coinbase_ordinals[:output.value]の
この関数は、特定のビットコインブロックに序数を割り当てるために使用されます。 まず、ブロックの最初と最後の報酬の序数範囲を計算します。 次に、ブロック内の各トランザクションを反復処理し、各出力に序数を割り当てます。 最後に、トランザクションのアウトプットには序数が割り当てられ、ブロック全体のすべてのサトシが一意の序数を持つようになります。
要するに、オーディナル理論では、オリジナルは加工によって本質的に同じサトシをユニークにし、ルールによって各サトシの希少な親しみやすさを定義し、コレクション属性を実現したり、ゲームプレイに合ったルールを策定したりします。
Atomicalsプロトコルは、ビットコインなどの未使用のトランザクションアウトプット(UTXO)を使用してブロックチェーン上のデジタルオブジェクト(伝統的に非代替性トークンとして知られていました)を鋳造、転送、および更新するためのシンプルで柔軟なプロトコルです。 アトミカル(または「アトム」)は、デジタルオブジェクトの作成、転送、更新を管理する方法であり、基本的にはいくつかの単純なルールによって定義されるデジタル所有権チェーンです。
Arc-20はカラーコインモデルを採用しているため、順序で区別されるBrc-20トークンとは異なり、Arc-20トークンにはサトシのサポートが必要です。 Arc-20トークンは完全にサトシに基づいているため、分割およびマージ(記事の冒頭で述べたUTXOと同様)が可能で、ビットコインネットワークを介して直接転送できます。
例えば、Atomicalsプロトコルでは、100サトシを100枚の「映画チケット」と定義し、ユーザーはこの100サトシのうちの1枚を使って、Atomicalsプロトコルに対応した映画館で支払いを行い、映画のチケットとして機能させることができます。
ただし、マイナーとビットコインネットワークは、どのUTXOが「アトミック化」されているかを知ることができないため、Arc-20トークンをマイナー手数料と誤ってみなす可能性があります。 この問題を解決するために、Atomicalsは、偶発的なトークンの破壊を避けるために、各Arc-20トークンをトランザクションの最初の出力にするように指示しています。
次に、2つのプロトコルの類似点と相違点を分析して比較します。
契約は大きく3つのステップに分かれています
{
"p": "BRC-20"、
"on": "デプロイ",
"tick": "オルディ",
"最大": "21000000"、
"lim": "1000"
}
デプロイヤーがトークンをデプロイする際には、BTCはトークン情報自体を認識できないため、インデクサーは、チェーン上の関連データを取得し、このデータを使用して、関連する履歴を記録し、関連するデータ更新を処理するために、チェーン外に台帳を作成する必要がある。
オフチェーンインデクサーは、トークン操作ごとにオフライン台帳を正確にキャプチャして更新する必要があります。 しかし、ブロックチェーンと同様に、トランザクション数が増えるにつれて、ノードによって保存されるデータはどんどん大きくなります。 台帳の整合性を確保し、膨大な量のデータの中から変更が必要な情報を見つけることがBRC-20の課題になります。
同様に、Arc-20プロトコルも、トークンをデプロイする際に、BTCチェーンのフォーマットに従って関連情報を記録する必要があります。
program.command('init-dft')
.description('分散型発行モードで代替性トークン(FT)をアトミックに初期化する')
.argument('<ticker> ', '文字列')
.argument('<mint_amount>', '数値')
.argument('<max_mints>', '数値')
.argument('<mint_height>', '数値')
.argument('<file> ', '文字列')
.option('—rbf', 'トランザクションに対して RBF を有効にするかどうか')
.option('—資金調達<string> ', '資金調達と変更に使用するウォレットエイリアスwifキーを使用')
.option('—satsbyte <number>', '手数料のバイトあたりのサトシ', '15')
.option('—mintbitworkc <string>', 'bitwork のプルーフ オブ ワークをミントに要求するかどうか。 コミット トランザクションに適用されます。
.option('—mintbitworkr <string>', 'bitworkのプルーフオブワークをミントに要求するかどうか。 公開トランザクションに適用されます。
.option('—bitworkc <string>', 'ビットワークのプルーフ・オブ・ワークをトークンミントに入れるかどうか。 コミット トランザクションに適用されます。
.option('—bitworkr <string>', 'ビットワークのプルーフ・オブ・ワークをトークンミントに入れるかどうか。 公開トランザクションに適用されます。
.option('—親<string> ', '親アトミックをミントと一緒に使う必要があるかどうか')
.option('—parentowner <string>', 'ミントと一緒に使う親のウォレット所有者')
.option('—disablechalk', 'Bitworkマイニングの各ハッシュのリアルタイムチョークロギングを無効にするかどうか。 このフラグを設定するためのマイニングパフォーマンスを改善します')
.action(async (ticker, mintAmount, maxMints, mintHeight, file, options) => {
.....
}
atomicals-js cli ソースコードには、トークンを初期化するための手順があります。チェーンに記録する必要があるパラメータは次のとおりです。
ticker: トークン名
mint_amount:ミントの総量
max_mints:1回のミント数
mint_height:ミントを開始するブロックの高さを指定します
ファイル: 関連メタデータ
しかし、Brc20とは異なり、Arc20は色付き通貨モデルを採用しています。 トークン関連の情報がBTCチェーンに入力された後、プロトコルはトークンをSats:1 token = 1 satで固定します。
同時に、色付き通貨モデルを使用することで、ユーザーはオフチェーン台帳ではなく、BTCネットワークを介して直接取引を行うことができます。 トークンの残高はUTXOのサトシと一致しているため、トークンに関連する変化を直感的にチェーンに反映することができます。. Arc-20 のインデクサーは、チェーン上のトークンの関連するデプロイ情報を読み取り、どのトークンが Arc-20 プロトコルに準拠しているかを確認するためにのみ使用されます。
Brc-20の設計構造はオフチェーン台帳に大きく依存していますが、Arc-20はBtcの特性により合っており、Brc-20と比較して分散化されています。 しかし、カラーコインモデルでは、ミームコインはトークンの総供給量が多いことが多く、1トークン=1サットという特徴から、ミームコインを発行する際に大量のBTCを消費する必要があるため、Arc-20はミームコインの発行を完了できません。
author:<a href="https://twitter.com/YanAemons "">@YanAemons
最近、Arc-20プロトコルの導入により、碑文市場は再び熱狂的な動きを見せています。 この記事では、技術的な観点から、2つのプロトコルの詳細と長所と短所を掘り下げます。
ビットコインはもともと、安全で安定した信頼性の高い分散型デジタル通貨として設計されました。 ただし、その技術アーキテクチャとイーサリアムと比較して比較的柔軟性の低いスクリプト言語のため、ビットコインはスマートコントラクトを直接実行するのには適していません。
それにもかかわらず、開発者の革新的なアイデアと大胆な試みは、ビットコインエコシステムに繁栄をもたらしました。 典型的な例の 1 つは、Brc-20 プロトコルです。 プロトコルの核となるアイデアは、ミームを中心とした実験的なトークン形式です。 誰でもスマートコントラクトに頼ることなく、先着順でビットコインチェーン上でこれらのトークンを直接鋳造できます。 Brc-20トークンの主な特徴は、プライベートセール、プレセール、ロック解除やステーキングなどのメカニズムを排除する分散型の性質です。 これにより、真に分散化されたエンゲージメントが保証されます。
これに関連して、Arc-20プロトコルは碑文への強い関心を再び呼び起こしました。
Brc-20 プロトコルと Arc-20 プロトコルはどちらも Btc チェーンに基づいているため、Arc-20 プロトコルと Brc-20 プロトコルを正式に導入する前に、UTXO (未使用トランザクション出力) について簡単に理解しておきましょう。
ビットコインについて話すとき、UTXO(未使用トランザクション出力)モデルは重要な設計概念です。 これは、ビットコインで使用されるアカウントモデルの一種であり、銀行口座などの従来の残高モデルとは異なります。
UTXOモデルでは、すべてのビットコイントランザクションが一連の未使用のアウトプットを作成し、各アウトプットは一定量のビットコインを表します。 これらの未使用のアウトプットは、紙幣や硬貨と同様に、基本的にデジタル通貨の未使用の単位です。 あなたがビットコインを受け取るとき、誰かが実際にあなたのビットコインアドレスに関連付けられた新しい未使用のアウトプットを作成しました。 この出力はUTXO.
UTXOモデルについて、簡単な例を挙げて説明しましょう。
0.7BTCと0.5BTCの2つのトランザクションがある場合、0.7BTCと0.5BTCの2つのUTXOを持つことになります。 1BTCを支払いたい場合、1つのUTXOを単純に使うのではなく、2つのUTXOを新しいUTXO(合計1.2BTC)に統合し、1BTCを受取人に送り、残りの0.2BTCをおつりとして自分に返す必要があります。 ただし、取引の円滑な運用を確保するために、ユーザーはマイナーに取引手数料を支払う必要があるため、実際の変化は0.2BTC未満になる可能性があります。
BRC-20は、順序理論と碑文を活用することにより、ビットコインのレイヤー1で代替可能なトークンを作成する可能性を実証する実験的標準です。 Ordinalsプロトコル(プロトコルの標準で鋳造された最初のトークン)を使用すると、テキスト、画像、ビデオなどのコンテンツをビットコインの最小単位であるサトシに刻印できるため、独自のデジタル資産を作成できます。
順序理論は、BTCネットワークに碑文を実装するための鍵です。
それぞれのサトシは本質的に同じであり、オーディナルは物語理論を通じてサトシの秩序プロトコルを開発しました。 この順序付けは、サトシのマイニングと、そのトランザクションのインプットとアウトプットの順序に基づいています。
序数を表すには、いくつかの方法があります。
次数式には、A°B'C"D'''、A、B、C、D の 4 つの部分があり、異なる意味を表します。
ナラティヴ理論は、度数表現によってサトシの序列を決定し、その順番によってサトシごとに異なる希少性レベルを定義することで、それぞれのサトシの独自性を実現しています
たとえば、既存の次数は 1°1′0"0''' と表されます。
上記のレアリティの定義により、このサトシはレアストシと定義されています。
一般的なプロセスは次のとおりです。
py# 高さが与えられたブロックの物語(報酬)を計算する
DEF助成金(身長):
return 50*100_000_000 >> height // 210_000
この関数は、50*100_000_000がビットコインの開始報酬>>、右シフト演算子であり、2つの整数除算で割ることに相当する、特定の高さのビットコインブロックの報酬を計算するために使用されます。 この関数は、指定された高さのブロックの報酬額を表す整数を返します。
def first_ordinal(高さ):
開始 = 0
範囲 (高さ) の h の場合:
スタート+=補助金(H)
スタートを返す
この関数は、指定された高さのブロックの最初の報酬の序数を計算します。 最初のブロックから特定の高さまでの報酬の総数を、高さを反復して各ブロックの報酬を累積することで計算し、最初の報酬の序数を求めます。
def assign_ordinals(ブロック):
最初 = first_ordinal(block.height)
last = first + 補助金(block.height)
coinbase_ordinals =list(範囲(最初, 最後))
def assign_ordinals(ブロック):
最初 = first_ordinal(block.height)
last = first + 補助金(block.height)
coinbase_ordinals =list(範囲(最初, 最後))
block.transactions[1:]のトランザクションの場合:
序数 = []
transaction.inputs の入力の場合:
ordinals.extend(input.ordinals)
transaction.outputs の出力の場合:
output.ordinals = ordinals[:output.value]
序数[:output.value]
coinbase_ordinals.extend(序数)
block.transactions[0].outputs の出力の場合:
output.ordinals = coinbase_ordinals[:output.value]
coinbase_ordinals[:output.value]の
この関数は、特定のビットコインブロックに序数を割り当てるために使用されます。 まず、ブロックの最初と最後の報酬の序数範囲を計算します。 次に、ブロック内の各トランザクションを反復処理し、各出力に序数を割り当てます。 最後に、トランザクションのアウトプットには序数が割り当てられ、ブロック全体のすべてのサトシが一意の序数を持つようになります。
要するに、オーディナル理論では、オリジナルは加工によって本質的に同じサトシをユニークにし、ルールによって各サトシの希少な親しみやすさを定義し、コレクション属性を実現したり、ゲームプレイに合ったルールを策定したりします。
Atomicalsプロトコルは、ビットコインなどの未使用のトランザクションアウトプット(UTXO)を使用してブロックチェーン上のデジタルオブジェクト(伝統的に非代替性トークンとして知られていました)を鋳造、転送、および更新するためのシンプルで柔軟なプロトコルです。 アトミカル(または「アトム」)は、デジタルオブジェクトの作成、転送、更新を管理する方法であり、基本的にはいくつかの単純なルールによって定義されるデジタル所有権チェーンです。
Arc-20はカラーコインモデルを採用しているため、順序で区別されるBrc-20トークンとは異なり、Arc-20トークンにはサトシのサポートが必要です。 Arc-20トークンは完全にサトシに基づいているため、分割およびマージ(記事の冒頭で述べたUTXOと同様)が可能で、ビットコインネットワークを介して直接転送できます。
例えば、Atomicalsプロトコルでは、100サトシを100枚の「映画チケット」と定義し、ユーザーはこの100サトシのうちの1枚を使って、Atomicalsプロトコルに対応した映画館で支払いを行い、映画のチケットとして機能させることができます。
ただし、マイナーとビットコインネットワークは、どのUTXOが「アトミック化」されているかを知ることができないため、Arc-20トークンをマイナー手数料と誤ってみなす可能性があります。 この問題を解決するために、Atomicalsは、偶発的なトークンの破壊を避けるために、各Arc-20トークンをトランザクションの最初の出力にするように指示しています。
次に、2つのプロトコルの類似点と相違点を分析して比較します。
契約は大きく3つのステップに分かれています
{
"p": "BRC-20"、
"on": "デプロイ",
"tick": "オルディ",
"最大": "21000000"、
"lim": "1000"
}
デプロイヤーがトークンをデプロイする際には、BTCはトークン情報自体を認識できないため、インデクサーは、チェーン上の関連データを取得し、このデータを使用して、関連する履歴を記録し、関連するデータ更新を処理するために、チェーン外に台帳を作成する必要がある。
オフチェーンインデクサーは、トークン操作ごとにオフライン台帳を正確にキャプチャして更新する必要があります。 しかし、ブロックチェーンと同様に、トランザクション数が増えるにつれて、ノードによって保存されるデータはどんどん大きくなります。 台帳の整合性を確保し、膨大な量のデータの中から変更が必要な情報を見つけることがBRC-20の課題になります。
同様に、Arc-20プロトコルも、トークンをデプロイする際に、BTCチェーンのフォーマットに従って関連情報を記録する必要があります。
program.command('init-dft')
.description('分散型発行モードで代替性トークン(FT)をアトミックに初期化する')
.argument('<ticker> ', '文字列')
.argument('<mint_amount>', '数値')
.argument('<max_mints>', '数値')
.argument('<mint_height>', '数値')
.argument('<file> ', '文字列')
.option('—rbf', 'トランザクションに対して RBF を有効にするかどうか')
.option('—資金調達<string> ', '資金調達と変更に使用するウォレットエイリアスwifキーを使用')
.option('—satsbyte <number>', '手数料のバイトあたりのサトシ', '15')
.option('—mintbitworkc <string>', 'bitwork のプルーフ オブ ワークをミントに要求するかどうか。 コミット トランザクションに適用されます。
.option('—mintbitworkr <string>', 'bitworkのプルーフオブワークをミントに要求するかどうか。 公開トランザクションに適用されます。
.option('—bitworkc <string>', 'ビットワークのプルーフ・オブ・ワークをトークンミントに入れるかどうか。 コミット トランザクションに適用されます。
.option('—bitworkr <string>', 'ビットワークのプルーフ・オブ・ワークをトークンミントに入れるかどうか。 公開トランザクションに適用されます。
.option('—親<string> ', '親アトミックをミントと一緒に使う必要があるかどうか')
.option('—parentowner <string>', 'ミントと一緒に使う親のウォレット所有者')
.option('—disablechalk', 'Bitworkマイニングの各ハッシュのリアルタイムチョークロギングを無効にするかどうか。 このフラグを設定するためのマイニングパフォーマンスを改善します')
.action(async (ticker, mintAmount, maxMints, mintHeight, file, options) => {
.....
}
atomicals-js cli ソースコードには、トークンを初期化するための手順があります。チェーンに記録する必要があるパラメータは次のとおりです。
ticker: トークン名
mint_amount:ミントの総量
max_mints:1回のミント数
mint_height:ミントを開始するブロックの高さを指定します
ファイル: 関連メタデータ
しかし、Brc20とは異なり、Arc20は色付き通貨モデルを採用しています。 トークン関連の情報がBTCチェーンに入力された後、プロトコルはトークンをSats:1 token = 1 satで固定します。
同時に、色付き通貨モデルを使用することで、ユーザーはオフチェーン台帳ではなく、BTCネットワークを介して直接取引を行うことができます。 トークンの残高はUTXOのサトシと一致しているため、トークンに関連する変化を直感的にチェーンに反映することができます。. Arc-20 のインデクサーは、チェーン上のトークンの関連するデプロイ情報を読み取り、どのトークンが Arc-20 プロトコルに準拠しているかを確認するためにのみ使用されます。
Brc-20の設計構造はオフチェーン台帳に大きく依存していますが、Arc-20はBtcの特性により合っており、Brc-20と比較して分散化されています。 しかし、カラーコインモデルでは、ミームコインはトークンの総供給量が多いことが多く、1トークン=1サットという特徴から、ミームコインを発行する際に大量のBTCを消費する必要があるため、Arc-20はミームコインの発行を完了できません。
author:<a href="https://twitter.com/YanAemons "">@YanAemons