Fuel - по-сложному (тех.специалистам - привет!)
Иногда, сложное - просто, простое - сложно
Доброго времени суток вам, юзеры! Сегодня я адаптирую для вас Гитхаб Fuel.
Для моих программистов и увлекающихся тех.частью - посвящается!
FuelVM
Модель контрактов и вызовов
Fuel использует схожую с Ethereum модель для контрактов и межконтрактных вызовов. Контракты могут вызвать другие контракты с помощью "CALL" (аналогично вызову сообщения Ethereum). В отличие от EVM, который может направлять вызов только своему базовому активу (т.е. ETH), FuelVM может направлять вызов одному собственному взаимозаменяемому активу.
Транзакции могут инициировать вызовы контрактов. Транзакции Ethereum могут напрямую вызывать один контракт. Транзакции Fuel вместо этого выполняют скрипт (произвольный байткод, прикрепленный к транзакции), который может вызывать любое количество контрактов.
EVM использует линейную память (т.е. начинается с 0 и выше), без определенного предела. Выделение памяти обходится в квадратичное количество газа, что сильно ограничивает объем памяти, используемой в одном контексте (т.е. вызове контракта).
Кроме того, EVM имеет отдельное пространство памяти для каждого контекста. Контексты могут взаимодействовать друг с другом путем копирования данных в буферы вызовов и возврата данных.
FuelVM использует один общий блок памяти для каждой транзакции. Память выделяется статически с известной верхней границей, что позволяет легко реализовать векторы. Память в FuelVM доступна для глобального чтения во всех контекстах, но для локальной записи. Каждый контекст может записывать только в те части, которыми он владеет.
Многочисленные нативные активы
Fuel поддерживает несколько нативных активов. Любой отдельный актив может быть направлен с помощью CALL. Контракты имеют баланс всех возможных активов, а не только базового актива.
Обратите внимание, что только базовый актив можно использовать для оплаты за газ.