Нещодавно поява протоколу Arc-20 знову спричинила шаленство на ринку записів. У цій статті ми розглянемо деталі, переваги та недоліки двох протоколів з технічної точки зору.
Спочатку біткойн був розроблений як безпечна, стабільна та надійна децентралізована цифрова валюта. Однак через свою технічну архітектуру та відносно менш гнучку мову сценаріїв порівняно з Ethereum біткойн не підходить для безпосереднього виконання смарт-контрактів.
Незважаючи на це, новаторські ідеї та сміливі спроби розробників принесли процвітання екосистемі Bitcoin. Типовим прикладом є протокол Brc-20. Основною ідеєю протоколу є експериментальна форма маркера, зосереджена на мемах. Будь-хто може карбувати ці токени безпосередньо в ланцюжку біткойнів у порядку черги, не покладаючись на розумні контракти. Ключовою особливістю токена Brc-20 є його децентралізований характер, який усуває такі механізми, як приватні продажі, попередні продажі та розблокування чи ставки. Це забезпечує справді децентралізоване залучення.
У цьому контексті протокол Arc-20 знову викликав сильний інтерес до написів.
Протоколи Brc-20 і Arc-20 базуються на ланцюжку BTC, тому, перш ніж ми офіційно представимо протокол Arc-20 і протокол Brc-20, давайте коротко розберемося з UTXO (виведення невитрачених транзакцій).
Коли ми говоримо про біткойн, модель UTXO (виведення невитрачених транзакцій) є важливою концепцією дизайну. Це тип моделі рахунку, який використовується біткойнами, який відрізняється від традиційних моделей балансу, таких як банківські рахунки.
У моделі UTXO кожна транзакція Bitcoin створює серію невитрачених виходів, причому кожен вихід представляє певну суму Bitcoin. Ці невитрачені виходи по суті є невикористаними одиницями цифрової валюти, подібними до паперових купюр або монет. Коли ви отримуєте біткойни, хтось фактично створив новий невитрачений вихід, пов’язаний із вашою адресою біткойн. Цей вихід є UTXO.
Пояснимо модель UTXO на простому прикладі:
Якщо у вас є дві транзакції, одна з яких отримує 0,7 BTC, а друга — 0,5 BTC, у вас буде два UTXO, один вартістю 0,7 BTC, а другий — 0,5 BTC. Якщо ви хочете заплатити 1 BTC, ви не можете просто використати один UTXO, вам потрібно об’єднати два UTXO в новий UTXO (загалом 1,2 BTC), а потім надіслати 1 BTC одержувачу, а решту – 0,2 BTC. повернувся до себе як зміна. Однак фактична зміна може бути меншою за 0,2 BTC, оскільки користувачам потрібно сплатити комісію за транзакцію майнерам, щоб забезпечити безперебійну роботу транзакції.
BRC-20 — це експериментальний стандарт, який демонструє можливість створення взаємозамінних токенів на першому рівні біткойна за допомогою теорії порядкового номера та написів. Протокол Ordinals (перший токен, викарбуваний відповідно до стандартів протоколу) дозволяє друкувати вміст, включаючи текст, зображення або відео, на найменшій одиниці біткойна, Satoshi, таким чином створюючи унікальні цифрові активи.
Порядкова теорія є ключем до реалізації записів у мережі BTC.
Кожен сатоші по суті однаковий, і ординали розробили протокол упорядкування сатоші за допомогою наративної теорії. Цей порядок базується на видобутку сатоші та порядку входів і виходів їхніх транзакцій.
Існує кілька способів представлення порядкових числівників:
Вираз ступеня складається з чотирьох частин: A°B′C″D‴, а A, B, C і D представляють різні значення:
Наративна теорія визначає порядок Сатоші через вираження ступеня та визначає різні рівні рідкості для кожного Сатоші через порядок, таким чином досягаючи унікальності кожного Сатоші
наприклад, наприклад, існуючий градус виражається як 1°1′0″0‴, де
Згідно з наведеним вище визначенням рідкості, цей сатоші визначається як рідкісний стоші.
Загальний процес такий:
py# Обчислити наратив (винагороду) блоку з певною висотою
деф субсидія (висота):
return 50*100_000_000 >> висота // 210_000
Ця функція використовується для розрахунку винагороди за блок біткойн заданої висоти, де 50*100_000_000 — початкова винагорода біткойна, >> — оператор зсуву вправо, еквівалентний діленню на 2 цілих ділення. Ця функція повертає ціле число, що представляє суму винагороди за блок на заданій висоті.
def first_ordinal (висота):
початок = 0
для h в діапазоні (висота):
початок += субсидія (год)
повернення старту
Ця функція обчислює порядковий номер першої винагороди за блок на заданій висоті. Обчисліть загальну кількість винагород від першого блоку до заданої висоти, перебираючи висоти та накопичуючи винагороди для кожного блоку, в результаті чого отримаєте порядковий номер першої винагороди.
def assign_ordinals(блок):
first = first_ordinal(block.height)
останній = перший + субсидія(block.height)
coinbase_ordinals = список (діапазон (перший, останній))
def assign_ordinals(блок):
first = first_ordinal(block.height)
останній = перший + субсидія(block.height)
coinbase_ordinals = список (діапазон (перший, останній))
для транзакції в block.transactions[1:]:
порядкові = []
для введення в транзакцію.inputs:
ordinals.extend(input.ordinals)
для виведення в транзакції.outputs:
output.ordinals = ordinales[:output.value]
з ординалів[:output.value]
coinbase_ordinals.extend(ординали)
для виведення в block.transactions[0].outputs:
output.ordinals = coinbase_ordinals[:output.value]
coinbase_ordinals[:output.value]
Ця функція використовується для призначення порядкового номера даному блоку Bitcoin. Спочатку обчислюється порядковий діапазон першої та останньої нагород блоку. Далі він повторює кожну транзакцію в блоці, призначаючи порядковий номер кожному виходу. Нарешті, результатам транзакції присвоюються порядкові номери, щоб гарантувати, що всі сатоші у всьому блоці мають унікальні порядкові номери.
Коротше кажучи, через порядкову теорію оригінали роблять кожен по суті той самий Сатоші унікальним за допомогою обробки та визначають рідкісну знайомість для кожного Сатоші за допомогою правил, реалізації атрибутів колекції або формулювання правил відповідно до ігрового процесу.
Протокол Atomicals — це простий і гнучкий протокол для карбування, передачі та оновлення цифрових об’єктів (традиційно відомих як невзаємозамінні токени) у блокчейні з невитраченими результатами транзакцій (UTXO), такими як біткойн. Атомний (або «атом») — це спосіб керування створенням, передачею та оновленням цифрових об’єктів — по суті цифровим ланцюжком власності, визначеним деякими простими правилами.
Arc-20 використовує модель кольорових монет, що означає, що токен Arc-20 повинен мати підтримку сатоші, на відміну від токенів Brc-20, які відрізняються за замовленням. Оскільки токени Arc-20 повністю засновані на сатоші, їх можна розділяти та об’єднувати (подібно до UTXO, згаданих на початку статті), а також безпосередньо передавати через мережу Bitcoin.
Наприклад, використовуючи протокол Atomicals, ми можемо визначити 100 сатоші як 100 «квитків у кіно», і користувачі можуть використовувати один із цих 100 сатоші для оплати в кінотеатрі, який підтримує протокол Atomicals, діючи як квиток у кіно.
Однак майнери та мережа біткойн не можуть знати, які UTXO були «атомалізовані», що може помилково вважати токени Arc-20 комісією майнерам. Щоб вирішити цю проблему, Atomicals вказує, що кожен маркер Arc-20 має бути першим виходом транзакції, щоб уникнути випадкового знищення маркера.
Далі ми проаналізуємо та порівняємо подібності та відмінності між двома протоколами.
Угода умовно ділиться на три етапи
{
«p»: «brc-20»,
“on”: “розгорнути”,
«галочка»: «орди»,
"max": "21000000",
«ліміт»: «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('—funding <string>', 'Використовувати псевдонім гаманця ключ wif для фінансування та змін')
.option('—satsbyte <number><число>', 'Сатоші за байт у вигляді зборів', '15')
.option('—mintbitworkc <string>', 'Чи вимагати підтвердження роботи для карбування будь-якого біта. Застосовується до транзакції фіксації.')
.option('—mintbitworkr <string>', 'Чи вимагати підтвердження роботи бітової версії для карбування. Застосовується до трансакції відкриття.')
.option('—bitworkc <string>', 'Чи поміщати будь-яке бітове підтвердження роботи в монетний двір токенів. Застосовується до транзакції фіксації.')
.option('—bitworkr <string>', 'Чи поміщати будь-яке бітове підтвердження роботи в монетний двір токенів. Застосовується до трансакції відкриття.')
.option('—parent <string>', 'Чи вимагати, щоб батьківський атомар витрачався разом із монетним двором.')
.option('—parentowner <string>', 'Власник материнського гаманця, який можна витратити разом із монетним двором.')
.option('—disablechalk', 'Чи потрібно вимкнути реєстрацію кожного хешу в реальному часі для майнінгу Bitwork. Покращує продуктивність видобутку, щоб встановити цей прапор')
.action(async (тикер, mintAmount, maxMints, mintHeight, файл, параметри) => {
…..
}
У вихідному коді cli atomicals-js ви можете знайти інструкції щодо ініціалізації маркера. Параметри, які необхідно записати в ланцюг:
тикер: назва токена
mint_amount: загальна кількість монетного двору
max_mints: кількість монетних дворів за один раз
mint_height: визначає висоту блоку для запуску монетного двору
файл: пов'язані метадані
Але на відміну від Brc20, Arc20 використовує кольорову валютну модель. Після того, як інформацію, пов’язану з токеном, буде введено в ланцюжок BTC, протокол прив’яже токен до Sats:1 токен = 1 sat。
У той же час використання моделі кольорової валюти дозволяє користувачам проводити транзакції безпосередньо через мережу BTC замість оф-чейн-регістрів. Оскільки баланс токенів узгоджується з сатоші в UTXO, відповідні зміни в токені можуть бути інтуїтивно відображені в ланцюжку. . Індексатор в Arc-20 використовується лише для читання відповідної інформації про розгортання токенів у ланцюжку та перевірки того, які токени сумісні з протоколом Arc-20.
Структура дизайну Brc-20 більшою мірою покладається на реєстри поза ланцюгом, тоді як Arc-20 більше відповідає характеристикам Btc і є більш децентралізованою порівняно з Brc-20. Однак модель кольорових монет заважає Arc-20 завершити випуск мем-монет, оскільки мем-монети часто мають високий загальний запас токенів, а функція 1 токен = 1 sat вимагає використання великої кількості BTC під час випуску мемів монети.
автор:https://twitter.com/YanAemons@YanAemons
Нещодавно поява протоколу Arc-20 знову спричинила шаленство на ринку записів. У цій статті ми розглянемо деталі, переваги та недоліки двох протоколів з технічної точки зору.
Спочатку біткойн був розроблений як безпечна, стабільна та надійна децентралізована цифрова валюта. Однак через свою технічну архітектуру та відносно менш гнучку мову сценаріїв порівняно з Ethereum біткойн не підходить для безпосереднього виконання смарт-контрактів.
Незважаючи на це, новаторські ідеї та сміливі спроби розробників принесли процвітання екосистемі Bitcoin. Типовим прикладом є протокол Brc-20. Основною ідеєю протоколу є експериментальна форма маркера, зосереджена на мемах. Будь-хто може карбувати ці токени безпосередньо в ланцюжку біткойнів у порядку черги, не покладаючись на розумні контракти. Ключовою особливістю токена Brc-20 є його децентралізований характер, який усуває такі механізми, як приватні продажі, попередні продажі та розблокування чи ставки. Це забезпечує справді децентралізоване залучення.
У цьому контексті протокол Arc-20 знову викликав сильний інтерес до написів.
Протоколи Brc-20 і Arc-20 базуються на ланцюжку BTC, тому, перш ніж ми офіційно представимо протокол Arc-20 і протокол Brc-20, давайте коротко розберемося з UTXO (виведення невитрачених транзакцій).
Коли ми говоримо про біткойн, модель UTXO (виведення невитрачених транзакцій) є важливою концепцією дизайну. Це тип моделі рахунку, який використовується біткойнами, який відрізняється від традиційних моделей балансу, таких як банківські рахунки.
У моделі UTXO кожна транзакція Bitcoin створює серію невитрачених виходів, причому кожен вихід представляє певну суму Bitcoin. Ці невитрачені виходи по суті є невикористаними одиницями цифрової валюти, подібними до паперових купюр або монет. Коли ви отримуєте біткойни, хтось фактично створив новий невитрачений вихід, пов’язаний із вашою адресою біткойн. Цей вихід є UTXO.
Пояснимо модель UTXO на простому прикладі:
Якщо у вас є дві транзакції, одна з яких отримує 0,7 BTC, а друга — 0,5 BTC, у вас буде два UTXO, один вартістю 0,7 BTC, а другий — 0,5 BTC. Якщо ви хочете заплатити 1 BTC, ви не можете просто використати один UTXO, вам потрібно об’єднати два UTXO в новий UTXO (загалом 1,2 BTC), а потім надіслати 1 BTC одержувачу, а решту – 0,2 BTC. повернувся до себе як зміна. Однак фактична зміна може бути меншою за 0,2 BTC, оскільки користувачам потрібно сплатити комісію за транзакцію майнерам, щоб забезпечити безперебійну роботу транзакції.
BRC-20 — це експериментальний стандарт, який демонструє можливість створення взаємозамінних токенів на першому рівні біткойна за допомогою теорії порядкового номера та написів. Протокол Ordinals (перший токен, викарбуваний відповідно до стандартів протоколу) дозволяє друкувати вміст, включаючи текст, зображення або відео, на найменшій одиниці біткойна, Satoshi, таким чином створюючи унікальні цифрові активи.
Порядкова теорія є ключем до реалізації записів у мережі BTC.
Кожен сатоші по суті однаковий, і ординали розробили протокол упорядкування сатоші за допомогою наративної теорії. Цей порядок базується на видобутку сатоші та порядку входів і виходів їхніх транзакцій.
Існує кілька способів представлення порядкових числівників:
Вираз ступеня складається з чотирьох частин: A°B′C″D‴, а A, B, C і D представляють різні значення:
Наративна теорія визначає порядок Сатоші через вираження ступеня та визначає різні рівні рідкості для кожного Сатоші через порядок, таким чином досягаючи унікальності кожного Сатоші
наприклад, наприклад, існуючий градус виражається як 1°1′0″0‴, де
Згідно з наведеним вище визначенням рідкості, цей сатоші визначається як рідкісний стоші.
Загальний процес такий:
py# Обчислити наратив (винагороду) блоку з певною висотою
деф субсидія (висота):
return 50*100_000_000 >> висота // 210_000
Ця функція використовується для розрахунку винагороди за блок біткойн заданої висоти, де 50*100_000_000 — початкова винагорода біткойна, >> — оператор зсуву вправо, еквівалентний діленню на 2 цілих ділення. Ця функція повертає ціле число, що представляє суму винагороди за блок на заданій висоті.
def first_ordinal (висота):
початок = 0
для h в діапазоні (висота):
початок += субсидія (год)
повернення старту
Ця функція обчислює порядковий номер першої винагороди за блок на заданій висоті. Обчисліть загальну кількість винагород від першого блоку до заданої висоти, перебираючи висоти та накопичуючи винагороди для кожного блоку, в результаті чого отримаєте порядковий номер першої винагороди.
def assign_ordinals(блок):
first = first_ordinal(block.height)
останній = перший + субсидія(block.height)
coinbase_ordinals = список (діапазон (перший, останній))
def assign_ordinals(блок):
first = first_ordinal(block.height)
останній = перший + субсидія(block.height)
coinbase_ordinals = список (діапазон (перший, останній))
для транзакції в block.transactions[1:]:
порядкові = []
для введення в транзакцію.inputs:
ordinals.extend(input.ordinals)
для виведення в транзакції.outputs:
output.ordinals = ordinales[:output.value]
з ординалів[:output.value]
coinbase_ordinals.extend(ординали)
для виведення в block.transactions[0].outputs:
output.ordinals = coinbase_ordinals[:output.value]
coinbase_ordinals[:output.value]
Ця функція використовується для призначення порядкового номера даному блоку Bitcoin. Спочатку обчислюється порядковий діапазон першої та останньої нагород блоку. Далі він повторює кожну транзакцію в блоці, призначаючи порядковий номер кожному виходу. Нарешті, результатам транзакції присвоюються порядкові номери, щоб гарантувати, що всі сатоші у всьому блоці мають унікальні порядкові номери.
Коротше кажучи, через порядкову теорію оригінали роблять кожен по суті той самий Сатоші унікальним за допомогою обробки та визначають рідкісну знайомість для кожного Сатоші за допомогою правил, реалізації атрибутів колекції або формулювання правил відповідно до ігрового процесу.
Протокол Atomicals — це простий і гнучкий протокол для карбування, передачі та оновлення цифрових об’єктів (традиційно відомих як невзаємозамінні токени) у блокчейні з невитраченими результатами транзакцій (UTXO), такими як біткойн. Атомний (або «атом») — це спосіб керування створенням, передачею та оновленням цифрових об’єктів — по суті цифровим ланцюжком власності, визначеним деякими простими правилами.
Arc-20 використовує модель кольорових монет, що означає, що токен Arc-20 повинен мати підтримку сатоші, на відміну від токенів Brc-20, які відрізняються за замовленням. Оскільки токени Arc-20 повністю засновані на сатоші, їх можна розділяти та об’єднувати (подібно до UTXO, згаданих на початку статті), а також безпосередньо передавати через мережу Bitcoin.
Наприклад, використовуючи протокол Atomicals, ми можемо визначити 100 сатоші як 100 «квитків у кіно», і користувачі можуть використовувати один із цих 100 сатоші для оплати в кінотеатрі, який підтримує протокол Atomicals, діючи як квиток у кіно.
Однак майнери та мережа біткойн не можуть знати, які UTXO були «атомалізовані», що може помилково вважати токени Arc-20 комісією майнерам. Щоб вирішити цю проблему, Atomicals вказує, що кожен маркер Arc-20 має бути першим виходом транзакції, щоб уникнути випадкового знищення маркера.
Далі ми проаналізуємо та порівняємо подібності та відмінності між двома протоколами.
Угода умовно ділиться на три етапи
{
«p»: «brc-20»,
“on”: “розгорнути”,
«галочка»: «орди»,
"max": "21000000",
«ліміт»: «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('—funding <string>', 'Використовувати псевдонім гаманця ключ wif для фінансування та змін')
.option('—satsbyte <number><число>', 'Сатоші за байт у вигляді зборів', '15')
.option('—mintbitworkc <string>', 'Чи вимагати підтвердження роботи для карбування будь-якого біта. Застосовується до транзакції фіксації.')
.option('—mintbitworkr <string>', 'Чи вимагати підтвердження роботи бітової версії для карбування. Застосовується до трансакції відкриття.')
.option('—bitworkc <string>', 'Чи поміщати будь-яке бітове підтвердження роботи в монетний двір токенів. Застосовується до транзакції фіксації.')
.option('—bitworkr <string>', 'Чи поміщати будь-яке бітове підтвердження роботи в монетний двір токенів. Застосовується до трансакції відкриття.')
.option('—parent <string>', 'Чи вимагати, щоб батьківський атомар витрачався разом із монетним двором.')
.option('—parentowner <string>', 'Власник материнського гаманця, який можна витратити разом із монетним двором.')
.option('—disablechalk', 'Чи потрібно вимкнути реєстрацію кожного хешу в реальному часі для майнінгу Bitwork. Покращує продуктивність видобутку, щоб встановити цей прапор')
.action(async (тикер, mintAmount, maxMints, mintHeight, файл, параметри) => {
…..
}
У вихідному коді cli atomicals-js ви можете знайти інструкції щодо ініціалізації маркера. Параметри, які необхідно записати в ланцюг:
тикер: назва токена
mint_amount: загальна кількість монетного двору
max_mints: кількість монетних дворів за один раз
mint_height: визначає висоту блоку для запуску монетного двору
файл: пов'язані метадані
Але на відміну від Brc20, Arc20 використовує кольорову валютну модель. Після того, як інформацію, пов’язану з токеном, буде введено в ланцюжок BTC, протокол прив’яже токен до Sats:1 токен = 1 sat。
У той же час використання моделі кольорової валюти дозволяє користувачам проводити транзакції безпосередньо через мережу BTC замість оф-чейн-регістрів. Оскільки баланс токенів узгоджується з сатоші в UTXO, відповідні зміни в токені можуть бути інтуїтивно відображені в ланцюжку. . Індексатор в Arc-20 використовується лише для читання відповідної інформації про розгортання токенів у ланцюжку та перевірки того, які токени сумісні з протоколом Arc-20.
Структура дизайну Brc-20 більшою мірою покладається на реєстри поза ланцюгом, тоді як Arc-20 більше відповідає характеристикам Btc і є більш децентралізованою порівняно з Brc-20. Однак модель кольорових монет заважає Arc-20 завершити випуск мем-монет, оскільки мем-монети часто мають високий загальний запас токенів, а функція 1 токен = 1 sat вимагає використання великої кількості BTC під час випуску мемів монети.
автор:https://twitter.com/YanAemons@YanAemons