Форум о заработке в интернете - Показать сообщение отдельно - Qtum (QTUM) - qtum.org
Показать сообщение отдельно
Старый 05.09.2018, 12:02   #6
CryptoInvest
Аналитик GoldRoyal.net
 
Аватар для CryptoInvest
 
Регистрация: 27.03.2018
Сообщений: 3,364
3 | 0
19 | 0
По умолчанию Re: Qtum (QTUM) - qtum.org

Уровень абстракции счета Qtum (AAL) Пояснение



Qtum основывается на модели Биткойна UTXO, но все же позволяет создавать и выполнять интеллектуальные контракты с использованием модели учетных записей, предлагаемой Ethereum. Магия, которая делает эту работу, называется так называемым «уровнем абстракции аккаунта», который, как указано в названии, абстрагирует концепцию «Учетные записи» от реализации, позволяя виртуальным машинам, таким как EVM (или предстоящая Qtum x86 VM) работать на UTXO, которая обеспечивает Qtum.
В модели UTXO у нас часто бывает много пар открытых и закрытых ключей при изменении, и транзакции перемещают монеты вокруг. Кошелек поддерживает список открытых ключей, в которых хранятся ваши монеты, и ваши 10 биткойнов или Qtum могут быть разделены между 10 различными UTXO. В модели учетных записей все это упрощено для адреса учетной записи: баланс в базе данных, чтобы контракты могли просто проверять остаток на конец для отправки / получения средств.

Если у вас есть UTXO, как бы контракт мог выбрать, какие монеты использовать при отправке из стоимости контракта в адрес?
А как насчет внутренних транзакций между контрактами, которые обычно выполняются на виртуальной машине, просто корректируя балансы данного контракта?
Как вы моделируете модели в UTXO, где все транзакции должны быть явно записаны?


Когда транзакция отправляется на глобальный общий компьютер, транзакция декодируется в нечто вроде изображения ниже с «Биткойн-скриптом», предлагающим набор опкодов .

Программное обеспечение cryptocurrency wallet выполняет эти коды операций на вашем компьютере. В этом примере инструкции сообщают программе проверить транзакцию, чтобы убедиться, что предоставленный открытый ключ соответствует сигнатуре транзакции:
ААЛ Qtum добавляет пару новых кодов операций к кодам операций биткойна, чтобы добавить поддержку смарт-контрактов.
OP_CREATE: используется для создания новых смарт-контрактов
OP_CALL: используется для выполнения кода внутри существующего интеллектуального контракта
OP_SPEND: используется для траты стоимости в интеллектуальном контракте

В процессе создания блока программное обеспечение валидатора будет анализировать сценарий в транзакциях Qtum, а когда дело касается транзакций с использованием этих кодов операций, оно отложит их для обработки через EVM. Контрактные транзакции EVM затем обрабатываются в специальный «Ожидаемый список транзакций транзакций», который выполняется узлами валидатора. Эти транзакции затем выполняются против EVM, при этом полученный результат преобразуется в потраченный Qtum tx. Если во время исполнения контракта контракт называет другой контракт со значением, эта транзакция также превращается в явный Qtum tx и прикрепляется к текущему блоку.



Примечание. Это изображение из технической документации Qtum, которая содержит более ранние версии кодов операций.
OP_EXEC_ASSIGN теперь OP_CREATE
OP_EXEC теперь OP_CALL
OP_TXHASH теперь OP_SPEND
Делая транзакции OP_CREATE, OP_CALL и OP_SPEND все затратными, мы можем довольно эффективно управлять размером Qtum UTXO. Когда договор самоуничтожается, транзакция OP_CREATE расходуется, например, удаляя ее из пула UTXO.

Еще одно упрощение существует для обработки, когда контракт имеет более одного UTXO. Вместо того, чтобы пытаться выбрать, какие монеты должен использовать контракт (как это делали предыдущие версии Qtum), в любое время для контракта существует более одного UTXO, создается новый tx, объединяющий и уплотняющий их в один UTXO.
Также существует проблема возмещения расходов на газ в модели UTXO. Модель газа для Ethereum работает, переоценивая стоимость исполнения контракта и после исполнения, возвращая оставшуюся сумму, возвращая ее обратно на баланс счета расходов. Это относительно легко сделать в модели Accounts посредством внутренних транзакций, но в модели UTXO валидатор не может частично возместить плату за транзакции, которые не используют весь газ. Также должно быть возможно откат транзакций, которые заканчиваются газом, при этом все еще кредитование отработанного газа для валидаторов.
Возмещение расходов на газ в Qtum работает, создавая новые результаты в рамках транзакции coinbase для этого блока. Весь входной газ потребляется и передается валидатору, а валидатор должен включать выходы в транзакции коинбазы, которые кредитуют отправителей транзакций с возвратом газа. Эти возмещения применяются с использованием нового правила консенсуса по валидации блока. В противном случае валидаторы могли бы вообще не возвращать газ.

Другая проблема заключается в том, как фактически определяют транзакции и направляют платежи за газ. В модели UTXO плата за газ и транзакцию объединяются вместе и отправляются вместе, поэтому как мы можем отделить то, что является платой за передачу транзакции, и сколько потратить на газ и сколько возместить по сравнению с тем, сколько было использовано. Это делается с помощью новой простой модели оплаты.

После завершения исполнения контракта оставшаяся часть платы за газ должна быть возвращена к данному сценарию возврата газа, добавив вывод к транзакции coinbase, которую используют валидаторы, чтобы получить их вознаграждение за блок.
AAL - это волшебный соус, который позволяет создавать, исполнять и обрабатывать договорные фонды в модели Qtum UTXO, дополняя скрипт биткойна несколькими новыми кодами операций. Транзакция UTXO анализируется, а затем преобразуется в транзакцию EVM. Затем эта транзакция EVM обрабатывается, что приводит к возможной новой транзакции UTXO, основанной на том, что контракт заключает какие-либо вызовы. Затем AAL обрабатывает все эти транзакции EVM для обновления глобального состояния и добавления транзакций Qtum UTXO в новый блок.
CryptoInvest вне форума   Ответить с цитированием