Написание и разбор смарт-контрактов. (10/100)
[1] Простой смарт-контракт на принятие эфира и управление выводом средств.
[2] Создание счета с функциями deposit, withdraw, balance.
[3] Преобразование кода Solidity в блок-схемы UML
[4] «Raffle» смарт-контракт. Часть 1.
[5] Уязвимость в контроле доступа.
[6] Механика голландского NFT аукциона.
[7] Airdrop Events.
[8] Смарт-контракт «Калькулятор»
[9] Ethernaut - основы игры.
[10] Смарт-контракт с использованием zk-SNARKs
[1] Простой смарт-контракт на принятие эфира и управление выводом средств.
[2] Создание счета с функциями deposit, withdraw, balance.
[3] Преобразование кода Solidity в блок-схемы UML
[4] «Raffle» смарт-контракт. Часть 1.
[5] Уязвимость в контроле доступа.
[6] Механика голландского NFT аукциона.
[7] Airdrop Events.
[8] Смарт-контракт «Калькулятор»
[9] Ethernaut - основы игры.
[10] Смарт-контракт с использованием zk-SNARKs
❤2
Уязвимость в контроле доступа.
Представим как хорошо было бы в наших смарт-контрактах устанавливать новых владельцев.
Скажем, в смарт-контракте «Raffle» владелец (owner)Чарли Бакета новый кошелек. И да, это сделать возможно, необходимо написать функцию которая будет называться
Теперь легко можем это осуществить и все довольны. Но скажем эту функцию случайно увидел Matapac и быстро завладел нашим смарт-контрактом 😣(конечно сообщил об уязвимости 🥳) Разберем, почему так произошло и что с этим можно сделать.
[1] В данной реализации функции
[2] Для обеспечения безопасности контракта, нужно добавить проверку, которая бы гарантировала, что только текущий владелец контракта может изменить свой адрес.
[3] Это можно сделать с помощью модификаторов или с использованием функции require.
[4] Теперь установлена проверка, что вызывающий адрес равен текущему владельцу контракта. Если это условие не выполняется, появится сообщение
[5] Совершили простую реализацию функции смены владельца, при этом соблюдается контроль доступа с помощью проверки вызывающего адреса.
Представим как хорошо было бы в наших смарт-контрактах устанавливать новых владельцев.
Скажем, в смарт-контракте «Raffle» владелец (owner)
WillyWonka захотел назначить владельцем setOwner (установить владельца) function setOwner(address NewOwner) public {
WillyWonka = NewOwner;
}Теперь легко можем это осуществить и все довольны. Но скажем эту функцию случайно увидел Matapac и быстро завладел нашим смарт-контрактом 😣
[1] В данной реализации функции
setOwner отсутствует проверка на то, что вызывающий адрес равен текущему владельцу контракта. Это может означать, что любой адрес может вызвать эту функцию и изменить владельца контракта. [2] Для обеспечения безопасности контракта, нужно добавить проверку, которая бы гарантировала, что только текущий владелец контракта может изменить свой адрес.
[3] Это можно сделать с помощью модификаторов или с использованием функции require.
function setOwner(address NewOwner) public {
require(msg.sender == WillyWonka, "You're not the owner");
WillyWonka = NewOwner;
}[4] Теперь установлена проверка, что вызывающий адрес равен текущему владельцу контракта. Если это условие не выполняется, появится сообщение
"You're not the owner". Если проверка проходит, то новый адрес, переданный в качестве параметра, устанавливается новым владельцем контракта.[5] Совершили простую реализацию функции смены владельца, при этом соблюдается контроль доступа с помощью проверки вызывающего адреса.
❤5
Механика голландского NFT аукциона.
В самом начале объявляется максимальная стоимость предмета. После цена постепенно снижается до тех пор, пока не найдется покупатель или не закончится время.
Таким образом, продавец может получить максимальную возможную цену за свой NFT, а покупатель - выгодную сделку при нахождении оптимальной цены.
В самом начале объявляется максимальная стоимость предмета. После цена постепенно снижается до тех пор, пока не найдется покупатель или не закончится время.
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.23;
contract DutchAuction {
//Параметры:
uint public initialPrice; // Начальная цена (максимальная цена NFT);
uint public biddingPerid; // Переменная длительности периода торгов в секундах;
uint public offerPriceDecrement; // Снижение цены предложения (сумма на которую цена NFT уменьшается с каждой секундой);
uint public startTime; // Время начала;
NftToken public boom; // Адрес нашего NFT токена который был выставлен на продажу;
address payable public seller; // Адрес продавца, который получит все средства с продажи NFT;
address payable winnerAddress; // Изначально равно 0 и будет адресом победителя, кто первый сделает выигрышную ставку, того NFT, адрес победителя сохранит значение;
function buyNow() public payable { // Функция торгов «Купить сейчас», кто первый предоставит достаточно средств, того NFT;
uint timeElapsed = block.timestamp - startTime; // Логика покупки: мы должны выяснить какова текущая цена (currPrice), поэтому текущая цена будет зависеть от того сколько времени прошло (timeElapsed) с момента начала аукциона, прошедшее время будет текущей меткой блока (block.timestamp) минус время начала (startTime);
uint currPrice = initialPrice - (timeElapsed * offerPriceDecrement); // Текущая цена будет начальной ценой минус (количество прошедших секунд умноженное на снижения цены предложения);
uint userBid = msg. value; // Пользовательская ставка - вся сумма которую пользователь предоставляет;
// Операторы - выполняют необходимые проверки действительности ставки;
require(winnerAddress == address(0)); // Адрес победителя равен 0, что означает, что никто еще не заявил права на NFT (аукцион продолжается);
require(timeElapsed < biddingPeriod); // Ставка делается своевременно до истечения времени (время прошедшее с момента начала < периода торгов);
require(userBid >= currPrice); // Пользователь предоставил достаточно средств; (ставка больше, либо равно текущей цене);
winnerAddress = payable(msg.sender); // Если все условия выше выполнены = ставка действительна;
winnerAddress.transfer(userBid - currPrice); // Возврат разницы победителю (размер ставки минус текущая цена)
seller.transfer(currPrice); // Текущая цена будет передана продавцу;
boom.transferOwnership(winnerAddress); // Вызываем функцию передачи права собственности на NFT и передаем от текущего владельца победителю;
}
}
Таким образом, продавец может получить максимальную возможную цену за свой NFT, а покупатель - выгодную сделку при нахождении оптимальной цены.
❤5
Boom! Погружение в виртуальную машину Ethereum.
Документация Solidity описывает расположение переменных состояния в хранилище.
• В чем разница между
• Какой из них использовать и когда?
• Что происходит, когда приводим строку к байтам?
• Можно ли привести к
• Сколько это стоит?
• Как
• Как скомпилированный контракт выглядит для EVM?
EVM — это механизм базы данных. Чтобы понять, как работают смарт-контракты на любом языке EVM, необходимо понимать, как данные организуются, хранятся и ими манипулируют.
В серии статей разобраны простые контракты Solidity, чтобы понять, как они работают в качестве байткода EVM.
Таблица набора инструкций EVM будет полезным справочником.
Конечная цель — полностью понять скомпилированный контракт Solidity. Начнем с чтения базового байткода EVM.
Погружение в виртуальную машину Ethereum. Часть 1
https://blog.qtum.org/diving-into-the-ethereum-vm-6e8d5d2f3c30
Погружение в виртуальную машину Ethereum. Часть 2
Начнем изучать, как Solidity использует фрагменты по 32 байта для представления более сложных типов данных, таких как структуры и массивы. Мы также увидим, как можно оптимизировать хранилище и почему оптимизация может потерпеть неудачу.
https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-2-storage-layout-bc5349cb11b7
Погружение в виртуальную машину Ethereum. Часть 3
Рассмотрим, как Solidity поддерживает более сложные структуры данных. Массивы и сопоставления (
https://medium.com/@hayeah/diving-into-the-ethereum-vm-the-hidden-costs-of-arrays-28e119f04a9b
Погружение в виртуальную машину Ethereum. Часть 4
Как расшифровать метод
В этой статье увидим, как Solidity и EVM позволяют «внешним программам» использовать метод
https://medium.com/@hayeah/how-to-decipher-a-smart-contract-method-call-8ee980311603
Погружение в виртуальную машину Ethereum. Часть 5
Процесс создания смарт-контракта.
Байт-код EVM, который мы видели до сих пор, прост: это просто инструкции, которые EVM выполняет сверху вниз, никакой магии в рукаве. Процесс создания контракта более увлекателен, поскольку он стирает барьер между кодом и данными.
https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-5-the-smart-contract-creation-process-cb7b6133b855
Погружение в виртуальную машину Ethereum. Часть 6
Как реализуются Solidity Events.
Понимая, как события реализуются с помощью инструкций EVM более низкого уровня и сколько они стоят, мы получим лучшее представление об эффективном использовании событий.
https://blog.qtum.org/how-solidity-events-are-implemented-diving-into-the-ethereum-vm-part-6-30e07b3037b9
Документация Solidity описывает расположение переменных состояния в хранилище.
• В чем разница между
string, bytes32, byte[], bytes? • Какой из них использовать и когда?
• Что происходит, когда приводим строку к байтам?
• Можно ли привести к
byte[]?• Сколько это стоит?
• Как
mappings хранится в EVM?• Как скомпилированный контракт выглядит для EVM?
EVM — это механизм базы данных. Чтобы понять, как работают смарт-контракты на любом языке EVM, необходимо понимать, как данные организуются, хранятся и ими манипулируют.
В серии статей разобраны простые контракты Solidity, чтобы понять, как они работают в качестве байткода EVM.
• Основы байткода EVM.
• Введение в ассемблерный код EVM.
• Как представлены различные типы (mapping, arrays).
• Что происходит при создании нового контракта.
• Что происходит при вызове метода.
• Как ABI объединяет разные языки EVM.
Таблица набора инструкций EVM будет полезным справочником.
Конечная цель — полностью понять скомпилированный контракт Solidity. Начнем с чтения базового байткода EVM.
Погружение в виртуальную машину Ethereum. Часть 1
https://blog.qtum.org/diving-into-the-ethereum-vm-6e8d5d2f3c30
Погружение в виртуальную машину Ethereum. Часть 2
Начнем изучать, как Solidity использует фрагменты по 32 байта для представления более сложных типов данных, таких как структуры и массивы. Мы также увидим, как можно оптимизировать хранилище и почему оптимизация может потерпеть неудачу.
https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-2-storage-layout-bc5349cb11b7
Погружение в виртуальную машину Ethereum. Часть 3
Рассмотрим, как Solidity поддерживает более сложные структуры данных. Массивы и сопоставления (
mapping) на первый взгляд могут показаться знакомыми, но способ их реализации придает им радикально разные характеристики производительности.https://medium.com/@hayeah/diving-into-the-ethereum-vm-the-hidden-costs-of-arrays-28e119f04a9b
Погружение в виртуальную машину Ethereum. Часть 4
Как расшифровать метод
call смарт-контракта.В этой статье увидим, как Solidity и EVM позволяют «внешним программам» использовать метод
call контракта и вызывать изменение его состояния.https://medium.com/@hayeah/how-to-decipher-a-smart-contract-method-call-8ee980311603
Погружение в виртуальную машину Ethereum. Часть 5
Процесс создания смарт-контракта.
Байт-код EVM, который мы видели до сих пор, прост: это просто инструкции, которые EVM выполняет сверху вниз, никакой магии в рукаве. Процесс создания контракта более увлекателен, поскольку он стирает барьер между кодом и данными.
https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-5-the-smart-contract-creation-process-cb7b6133b855
Погружение в виртуальную машину Ethereum. Часть 6
Как реализуются Solidity Events.
Понимая, как события реализуются с помощью инструкций EVM более низкого уровня и сколько они стоят, мы получим лучшее представление об эффективном использовании событий.
https://blog.qtum.org/how-solidity-events-are-implemented-diving-into-the-ethereum-vm-part-6-30e07b3037b9
❤🔥4
Продолжаю написание простых смарт-контрактов, (одна из целей достичь 100 таких разборов)
В этом смарт-контракте рассмотрим функции внесения и распределения средств в равных долях, участникам различных ивентов, с разблокировкой токенов при помощи временных меток.
https://teletype.in/@nodiggity/0DwiHIAksXx
В этом смарт-контракте рассмотрим функции внесения и распределения средств в равных долях, участникам различных ивентов, с разблокировкой токенов при помощи временных меток.
https://teletype.in/@nodiggity/0DwiHIAksXx
Teletype
Смарт-контракт для airdrop events.
Скажем некое сообщество X планирует сделать раздачу eth для своих подписчиков. Чтобы каждый из них в течении месяца после определенных...
❤3
Типы данных для чисел: uint, int
В этом случае максимально допустимое число, для
256 это количество бит, которое мы выделяем для хранения данных числа. Бит – принимает только два значения 0 и 1 (т.е. 2 варианта) и теперь, когда мы 2 возводим в 256 степень (и вычитаем 1) мы получим максимально допустимое число (в размерности
Самая минимальная размерность - это uint8, где минимальное допустимое число — это 0, max допустимое число 2 в 8 степени (и вычитаем 1) = (256-1) т.е. в
Почему мы вычитаем 1? Важно понимать, что число 0 также занимает 1 бит информации, поэтому отчет начинается с нуля.
Каждая следующая размерность (начиная с
В int8 размерность высчитывается иначе т.к. для хранения информации о знаке (0 или 1)*если ноль, то число положительное, когда 1 то число отрицательное, всегда резервируется один бит (для битового знака) И для хранения числа у нас остается только 7 бит, а не 8 как в uint8. Поэтому мы возводим 2 (*помним что бит – принимает только два значения 0 и 1 т.е. 2 варианта) возводим в 7 степень и (вычитаем 1) = 127 максимально допустимое число. т.к. у нас есть информация об отрицательном знаке, то и минимальное значение уже не 0 , а (-128)
Как видим целые числа со знаком включают отрицательные числа, но имеют половину максимального значения целых чисел без знака.
В Solidity в отличие от многих других языков, 256-битные целые числа без знака являются целочисленным типом «по умолчанию». Например, массивы возвращают
Поскольку
uint (unsigned integer) - это простой тип данных, который может хранить только положительные целые числа (числа без знака минус) в большинстве проектов используются строго положительные значения. int (integer) - простой тип данных, который может хранить как положительные, так и отрицательные целые числа. Целые числа возможно использовать в арифметических операциях, балансы токенов, счетчики циклов, последовательные идентификационные номера и т.д. uint/intпо умолчанию является аналогомuint256/int256.
В этом случае максимально допустимое число, для
uint256 которое мы можем использовать при хранении данных будет равно 115792089237316195423570985008687907853269984665640564039457584007913129639935256 это количество бит, которое мы выделяем для хранения данных числа. Бит – принимает только два значения 0 и 1 (т.е. 2 варианта) и теперь, когда мы 2 возводим в 256 степень (и вычитаем 1) мы получим максимально допустимое число (в размерности
uint) Самая минимальная размерность - это uint8, где минимальное допустимое число — это 0, max допустимое число 2 в 8 степени (и вычитаем 1) = (256-1) т.е. в
uint8 public totalEligible; мы можем хранить максимум 255 человек (переменная из прошлого контракта) Почему мы вычитаем 1? Важно понимать, что число 0 также занимает 1 бит информации, поэтому отчет начинается с нуля.
Каждая следующая размерность (начиная с
uint8 ) увеличивается с шагом 8 т.е. следующая допустимая размерность для компиляции = uint16 -> uint24 -> uint32 и т.д до uint256В int8 размерность высчитывается иначе т.к. для хранения информации о знаке (0 или 1)
// переменные int*
int8 = От -128 до 127
int16 = От -32 768 до 32 767
int32 = От -2 147 483 648 до 2 147 483 647
int64 = От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
int128 = От -170141183460469231731687303715884105728 до 170141183460469231731687303715884105727
int256 = От -57896044618658097711785492504343953926634992332820282019728792003956564819968 до 57896044618658097711785492504343953926634992332820282019728792003956564819967
// переменные uint*
uint8 = От 0 до 255
uint16 = От 0 до 65 535
uint32 = От 0 до 4 294 967 295
uint64 = От 0 до 18 446 744 073 709 551 615
uint256 = От 0 до 115792089237316195423570985008687907853269984665640564039457584007913129639935
Как видим целые числа со знаком включают отрицательные числа, но имеют половину максимального значения целых чисел без знака.
В Solidity в отличие от многих других языков, 256-битные целые числа без знака являются целочисленным типом «по умолчанию». Например, массивы возвращают
uint256 целые числа для своего .length свойства:// SPDX-License-Identifier: MIT
pragma solidity >=0.8.23;
contract SignedUnsignedIntegers {
uint8[] public someArray = [0, 1, 2, 3, 4];
// Это не удастся скомпилировать
// Возвращает целое число, но someArray.length — это uint
function getLength1() public view returns(int){
return someArray.length;
}
// Это отлично!
function getLength2() public view returns(uint){
return someArray.length;
}
// тоже допустимо
function getLength3() public view returns(int){
return int(someArray.length);
}
}
Поскольку
someArray.length возвращается как uint256, мы не можем вернуть его как int без явного преобразования типа, что мы делаем в getLength3(). Лучше избегать использования целых чисел со знаком, если этого не требует конкретной цели. В основном будет достаточно задавать тип данных uint.❤3
Смарт-контракт «Калькулятор»
В каждом телефоне сейчас есть калькулятор, так для чего же пересобирать велосипед и разрабатывать данный контракт на Solidity? И причем здесь операторы и что это такое, ознакомимся и разберем в статье:
https://teletype.in/@nodiggity/81T5YzNnViQ
В каждом телефоне сейчас есть калькулятор, так для чего же пересобирать велосипед и разрабатывать данный контракт на Solidity? И причем здесь операторы и что это такое, ознакомимся и разберем в статье:
https://teletype.in/@nodiggity/81T5YzNnViQ
Teletype
Смарт-контракт «Калькулятор»
1. Создадим контракт под названием Calculator 2. Создадим переменную result для хранения изначального результата. 3. Создадим функции...
❤🔥2
Remix Release v0.40.0
1) Обновленный компилятор Vyper, который компилирует последнюю версию.
Remix объединился с ApeWorX для создания нового компилятора Vyper. Это означает, что вы можете компилировать контракты Vyper в Remix и использовать не только последнюю версию, но и почти все версии Vyper.
2) Поддержка Circom v2.1.6
В Remix теперь можно запустить последнюю версию компилятора Circom. Так что попробуйте свои эллиптические кривые с помощью новейшей разработки Circom.
3) Шаблоны Uniswap v4.
В окне "Create Workspace" выберите один из вариантов шаблонов Uniswap v4.
Файлы Uniswap v4 взяты с Cookbook.dev. Таким образом, плагин Remix COOKBOOK.DEV активируется и записывает файлы шаблонов в проводник.
HookBook MultiSigSwapHook.
Контракт MultiSigSwapHook можно использовать, если вы хотите убедиться, что операция обмена на Uniswap (или аналогичной платформе) была одобрена несколькими сторонами, прежде чем ее можно будет выполнить.
Uniswap v4 — это новый протокол автоматического маркет-мейкера, который обеспечивает расширяемость и возможность настройки пулов.
Uniswap v4 Hooks — отличный сайт, на котором можно увидеть, что было создано на данный момент.
v4-periphery - периферийные смарт-контракты для взаимодействия с Uniswap v4.
https://medium.com/remix-ide/remix-release-v0-40-0-17668192db64
1) Обновленный компилятор Vyper, который компилирует последнюю версию.
Remix объединился с ApeWorX для создания нового компилятора Vyper. Это означает, что вы можете компилировать контракты Vyper в Remix и использовать не только последнюю версию, но и почти все версии Vyper.
2) Поддержка Circom v2.1.6
В Remix теперь можно запустить последнюю версию компилятора Circom. Так что попробуйте свои эллиптические кривые с помощью новейшей разработки Circom.
3) Шаблоны Uniswap v4.
В окне "Create Workspace" выберите один из вариантов шаблонов Uniswap v4.
Файлы Uniswap v4 взяты с Cookbook.dev. Таким образом, плагин Remix COOKBOOK.DEV активируется и записывает файлы шаблонов в проводник.
HookBook MultiSigSwapHook.
Контракт MultiSigSwapHook можно использовать, если вы хотите убедиться, что операция обмена на Uniswap (или аналогичной платформе) была одобрена несколькими сторонами, прежде чем ее можно будет выполнить.
Uniswap v4 — это новый протокол автоматического маркет-мейкера, который обеспечивает расширяемость и возможность настройки пулов.
Uniswap v4 Hooks — отличный сайт, на котором можно увидеть, что было создано на данный момент.
v4-periphery - периферийные смарт-контракты для взаимодействия с Uniswap v4.
https://medium.com/remix-ide/remix-release-v0-40-0-17668192db64
❤2
Boom! Один из способов ознакомиться с уязвимостями и ошибками в смарт-контрактах на практике - это прохождение/решение CTF и начнем с основ игры Ethernaut.
https://teletype.in/@nodiggity/l2H2En0fEh0
https://teletype.in/@nodiggity/l2H2En0fEh0
Teletype
Ethernaut - основы игры.
Ethernaut – это СTF решение OpenZeppelin, каждый уровень является смарт-контрактом, который необходимо «взломать». Исходный код игры...
👍2
Передайте мне ваши пароли, но не нужно их раскрывать. Вот мой:
[["0x0ac917308a7b8db29288c028109c8617f910f6b6843c975a736374ddbc276797","0x1960e7c91c4bb774e6308c418615d566280679a5b7c18b45f89ab64098187bdf"],[["0x2df5af53473f2343c58091e657898f92b5b7f0b88a6ea7514c9952a47e07f444","0x0121a9c22c2abafb7dee637ef4f743a4d62798835350d042d55c708d2481fe3d"],["0x1e46763eeacc9f85215740e3d3f7eaddc2fca5c8115c282be1e60157740bcec8","0x23d8a13843a39d8f37b8a0ef6da31281b7ee2c61d16079a48f2620b9f6ef9aa0"]],["0x2f990abf7f96daee712f3ca282e7e304370ac70d633b6156a41b91f140e6cb41","0x0e619f6d20fc6c39fa3fa0320c795e57218824f1f11ee90b0d7edf3a306de8fd"]]
🙈3
Но как действительно доказать, что мы обладаем знанием о пароле или о чем-то еще и конечно все должно быть конфиденциально.
Разберем на практике применение протокола zk-SNARKs
https://teletype.in/@nodiggity/AjLyPAogLJO
https://teletype.in/@nodiggity/AjLyPAogLJO
https://teletype.in/@nodiggity/AjLyPAogLJO
Разберем на практике применение протокола zk-SNARKs
https://teletype.in/@nodiggity/AjLyPAogLJO
https://teletype.in/@nodiggity/AjLyPAogLJO
https://teletype.in/@nodiggity/AjLyPAogLJO
Teletype
Смарт-контракт с использованием zk-SNARKs
Например, у нас есть секретная информация, скажем, пароль. Мы хотим доказать другому человеку, что у нас есть этот пароль, но не хотим...
❤🔥3
Обновление по подборке:
Виртуальная машина Ethereum — серия статей by Zaryab. (Руководитель в Push Protocol, разработчик, аудитор, отчеты о безопасности смарт-контрактов можно найти здесь.)
Как устроен Ethereum и смарт-контракты by Vas3k. (Максимально простым языком)
Памятка по Solidity. (Это руководство предназначено не для того, чтобы научить Solidity с нуля, а для того, чтобы помочь разработчикам с базовыми знаниями, которым может быть сложно ознакомиться со смарт-контрактами и блокчейном)
Контрольный список аудита уязвимостей смарт-контрактов. (Который можно использовать в качестве справочника для проверки надежности смарт-контракта)
Cтандарт безопасности и качества кода by transmissions11 (Инженер-исследователь создает производительное и высоконадежное программное обеспечение в Paradigm)
Виртуальная машина Ethereum — серия статей by Zaryab. (Руководитель в Push Protocol, разработчик, аудитор, отчеты о безопасности смарт-контрактов можно найти здесь.)
Как устроен Ethereum и смарт-контракты by Vas3k. (Максимально простым языком)
Памятка по Solidity. (Это руководство предназначено не для того, чтобы научить Solidity с нуля, а для того, чтобы помочь разработчикам с базовыми знаниями, которым может быть сложно ознакомиться со смарт-контрактами и блокчейном)
Контрольный список аудита уязвимостей смарт-контрактов. (Который можно использовать в качестве справочника для проверки надежности смарт-контракта)
Cтандарт безопасности и качества кода by transmissions11 (Инженер-исследователь создает производительное и высоконадежное программное обеспечение в Paradigm)
👍2
Мы можем использовать блокчейн биткойна как состояние с низкой энтропией. Как ископаемое топливо, как нефть. Теория цифровой материи (DMT) – первоначальная основа для распознавания образов.
Данные основанные на непроизвольных внутренних закономерностях сети. Паттерны похожие на участки, это наше виртуальное пространство определяет каждый блок в блокчейне биткойна как цифровую недвижимость. Этот механизм позволяет реализовать первый непроизвольный дизайн метавселенной.
Развертывание непроизвольных токенов (NAT) — это одно из приложений теории цифровой материи, где каждый может создавать гибридные токены в Биткойне, параметры существования токена которых определяются посредством ссылки на записи .element.
BitNATs — это проект монетного двора в метавселенной, управляемый сообществом, в котором держатели блоков .bitnats создают огромную глобальную коллекцию непроизвольных токенов в цепочке.
По сути это похоже на владение шахтой. Где все полезные ископаемые в блоке принадлежат владельцу битнатса.
Предоставления товаров (NAT токена) метавселенной владельцам .bitnats. Очевидно, за редкие вещи будут выставлять высокий прайс. «Commons» будет использоваться для публичного минта предметов, создавая охоту на .bitnats, которые не были добыты для конкретного дропнутого предмета. Их ценность будет определена рынком в зависимости от созданных внутри них натов.
По мере роста блокчейна биткойна в цепочку добавляются новые блоки. Концепция непроизвольных пространств (NAS) предлагает расположить эти блоки непроизвольным образом, чтобы создать пригодный для использования «Мир».
Данные основанные на непроизвольных внутренних закономерностях сети. Паттерны похожие на участки, это наше виртуальное пространство определяет каждый блок в блокчейне биткойна как цифровую недвижимость. Этот механизм позволяет реализовать первый непроизвольный дизайн метавселенной.
Развертывание непроизвольных токенов (NAT) — это одно из приложений теории цифровой материи, где каждый может создавать гибридные токены в Биткойне, параметры существования токена которых определяются посредством ссылки на записи .element.
BitNATs — это проект монетного двора в метавселенной, управляемый сообществом, в котором держатели блоков .bitnats создают огромную глобальную коллекцию непроизвольных токенов в цепочке.
Характерно тому, что печатать опцион пут, стоимость которого определяется базовым активом (связанными NAT). Минтеры Bitnats получают право, но не обязанность, выкупить базовый актив (например, nats) по заранее определенной цене (альтернативная стоимость отказа от его продажи). За исключением отсутствия временного фактора, как в случае с опционами, происхождение битнатов вечно.
По сути это похоже на владение шахтой. Где все полезные ископаемые в блоке принадлежат владельцу битнатса.
Предоставления товаров (NAT токена) метавселенной владельцам .bitnats. Очевидно, за редкие вещи будут выставлять высокий прайс. «Commons» будет использоваться для публичного минта предметов, создавая охоту на .bitnats, которые не были добыты для конкретного дропнутого предмета. Их ценность будет определена рынком в зависимости от созданных внутри них натов.
По мере роста блокчейна биткойна в цепочку добавляются новые блоки. Концепция непроизвольных пространств (NAS) предлагает расположить эти блоки непроизвольным образом, чтобы создать пригодный для использования «Мир».
digital-matter-theory.gitbook.io
Digital Matter Theory
A new era of digital substance
🤔3
Форк Dencun завершился, на данный момент наиболее активные сети задействующие так называемые большие двоичные объекты (blobs или блобы) после обновления: StarkNet, Base, Optimism, Arbitrum, zkSync, где 48% отправленных блобов приходятся из Starknet.
По данным blobscan ежедневные расходы газа за отправку блобов за два последних дня, в эквиваленте использования в качестве газа Calldata составляет в среднем ниже в 18 раз.
Больше вызывает интерес панель общей суммы комиссий, уплачиваемая пользователями, по вышеуказанным сетям до Dencun, в среднем с 01.03-13.03 составляло - 2M $, когда за 14 марта - 987 469 $ и за 15 марта - 667 753 $ т.е. суммарно сейчас доход сетей меньше всего в 2 и в 3 раза. Дальше ожидаем полного внедрения EIP-4844 со стороны L2 и еще большего снижения расходов на комиссии.
Панели мониторинга Blobs:
https://dune.com/hildobby/blobs
https://dune.com/0xRob/blobs
https://dune.com/flashbots/blob-block-builder-board
https://dune.com/oplabspbc/blobbers-oplabspbc
По данным blobscan ежедневные расходы газа за отправку блобов за два последних дня, в эквиваленте использования в качестве газа Calldata составляет в среднем ниже в 18 раз.
Больше вызывает интерес панель общей суммы комиссий, уплачиваемая пользователями, по вышеуказанным сетям до Dencun, в среднем с 01.03-13.03 составляло - 2M $, когда за 14 марта - 987 469 $ и за 15 марта - 667 753 $ т.е. суммарно сейчас доход сетей меньше всего в 2 и в 3 раза. Дальше ожидаем полного внедрения EIP-4844 со стороны L2 и еще большего снижения расходов на комиссии.
Важно понимать, что Dencun это еще и важный этап на пути к реализации данкшардинга, который полностью перестроит архитектуру блокчейна и, вероятно, позволит Ethereum преодолеть проблему низкой пропускной способности, не жертвуя безопасностью (c)
Панели мониторинга Blobs:
https://dune.com/hildobby/blobs
https://dune.com/0xRob/blobs
https://dune.com/flashbots/blob-block-builder-board
https://dune.com/oplabspbc/blobbers-oplabspbc
👍7
Layer-2 развитие как культурная среда обитания в Ethereum.
Виталик неизменно следуя канонам блокчейна Эфириума, ведет речь не о том, что можно построить, а о том, что будет построено и как это влияет на стимулы и способность людей действовать.
Говоря о стимулах ссылается на исследователя Пола Дилана-Энниса который в свою очередь потратил много времени на изучение и понимание субкультур Эфириума. Он выделяет три основные субкультуры:
• Шифропанки - олдскульщики создающие инфраструктуру и инструменты конфиденциальности с открытым исходным кодом.
• Регены - герои / филантропы сосредоточены на общественных благах сообщества. Привержены к регенерации или регенеративному подходу к созданию технологий.
• Дегены - в первую очередь мотивированы спекуляциями и финансовой выгодой, накоплением богатства любой ценой, degens (degenerates). Торгуют мемкоинами, NFT и играют в игры.
В мемтокенах сомневаются, их ненавидят, над ними смеются, но несуразные новички всегда привлекают внимание.
Для субкультуры, layer2 является идеальным игровым полем.
Приложения по типу Uniswap могут иметь запас ресурсов и возможностей, но на их основе не получится строить другие структуры. Uniswap - это здорово, но не существует концепции «построения на Uniswap», которая была бы хоть сколько-нибудь столь же сильной, как «построение на Polygon»
L2 протоколы привлекают кочующих эфирианцев, способствует развитию технологий и создания глобальных сообществ.
Эфириум - это продолжающийся эксперимент - «вещает Виталик» и часть того, что его волнует в экосистеме - это ее готовность решать сложные проблемы напрямую. Многие проблемы возникают из-за несогласованности стимулов, естественным решением этой проблемы является создание более эффективного поощрения для сотрудничества в масштабах всей экосистемы.
Краеугольная идея, о которой упоминает - широкоизвестный в узких кругах, граф Виталик в своем предыдущем посте, о создании «Гильдии базовой инфраструктуры» в дополнение к «Гильдии протоколов» является одним из вариантов.
Другой вариант - явно субсидировать проекты, над которыми решили сотрудничать несколько L2 (т. е. что-то отдаленно похожее на квадратичное финансирование, но с упором на объединение экосистем, а не на объединение отдельных лиц.
Виталик неизменно следуя канонам блокчейна Эфириума, ведет речь не о том, что можно построить, а о том, что будет построено и как это влияет на стимулы и способность людей действовать.
Поскольку Ethereum представляет собой экосистему, ориентированную на L2, вы можете самостоятельно построить свою подэкосистему со своими уникальными функциями и в то же время быть частью крестной семьи эфириума.
Говоря о стимулах ссылается на исследователя Пола Дилана-Энниса который в свою очередь потратил много времени на изучение и понимание субкультур Эфириума. Он выделяет три основные субкультуры:
• Шифропанки - олдскульщики создающие инфраструктуру и инструменты конфиденциальности с открытым исходным кодом.
• Регены - герои / филантропы сосредоточены на общественных благах сообщества. Привержены к регенерации или регенеративному подходу к созданию технологий.
• Дегены - в первую очередь мотивированы спекуляциями и финансовой выгодой, накоплением богатства любой ценой, degens (degenerates). Торгуют мемкоинами, NFT и играют в игры.
Если бы Эфириум был местным парком, мемкоинеры были бы неуправляемой бандой подростков, слушающих музыку через какие-то богом забытые Bluetooth-колонки. (с)
В мемтокенах сомневаются, их ненавидят, над ними смеются, но несуразные новички всегда привлекают внимание.
Для субкультуры, layer2 является идеальным игровым полем.
Приложения по типу Uniswap могут иметь запас ресурсов и возможностей, но на их основе не получится строить другие структуры. Uniswap - это здорово, но не существует концепции «построения на Uniswap», которая была бы хоть сколько-нибудь столь же сильной, как «построение на Polygon»
Polygon добился успеха благодаря партнерству с ведущими компаниями и более качественной экосистеме ZK. У оптимизма есть Base и World Chain, а также сильный культурный интерес к таким идеям, как ретро-финансирование и управление, основанное не только на токенах. Metis специализируется на DAO. Arbitrum построил бренд на основе высококачественных инструментов и технологий для разработчиков. Scroll фокусируется на «сохранении сущности Ethereum — минимизированного доверия, безопасного и открытого исходного кода». Тайко подчеркивает, что он «бесшовный UX», «ориентированный на сообщество». В общем, каждый L2 имеет свою «душу» некую комбинацию культуры Эфириума со своими особенностями.
L2 протоколы привлекают кочующих эфирианцев, способствует развитию технологий и создания глобальных сообществ.
Быть хорошим гражданином в Эфириуме — значит… разрушать централизацию там, где она есть.
Эфириум - это продолжающийся эксперимент - «вещает Виталик» и часть того, что его волнует в экосистеме - это ее готовность решать сложные проблемы напрямую. Многие проблемы возникают из-за несогласованности стимулов, естественным решением этой проблемы является создание более эффективного поощрения для сотрудничества в масштабах всей экосистемы.
Краеугольная идея, о которой упоминает - широкоизвестный в узких кругах, граф Виталик в своем предыдущем посте, о создании «Гильдии базовой инфраструктуры» в дополнение к «Гильдии протоколов» является одним из вариантов.
Другой вариант - явно субсидировать проекты, над которыми решили сотрудничать несколько L2 (т. е. что-то отдаленно похожее на квадратичное финансирование, но с упором на объединение экосистем, а не на объединение отдельных лиц.
❤4
Тот случай когда под маской шифропанков и регенов, команды тир1 проектов самые первые дегены.
Дикая западня для комьюнити, для которого второй проект к ряду несет убытки, финансовые/эмоциональные. Еще немного - и не останется комьюнити.
Фор фан на диком западе, негласные правила подлежат очень быстрому изменению. Сео зксунка берет в руки бритву Оккама и отсекает неугодных. Но забывает, что не приносящее пользу пчелам - не принесет и пользы улью.
Многих интересует каков настрой последнего из троицы? Раздача - это стройный порядок, или же смешение и путаница. Какова цель покериста во всей показательной комбинаторике по извлечению сивилл? В одной руке сверкающий клинок - not eligible во второй карт-бланш на любовь фермеров к технологиям и чем воспользуется Брайан узнаем вери сун.
Будьте здоровы!
Дикая западня для комьюнити, для которого второй проект к ряду несет убытки, финансовые/эмоциональные. Еще немного - и не останется комьюнити.
Фор фан на диком западе, негласные правила подлежат очень быстрому изменению. Сео зксунка берет в руки бритву Оккама и отсекает неугодных. Но забывает, что не приносящее пользу пчелам - не принесет и пользы улью.
Многих интересует каков настрой последнего из троицы? Раздача - это стройный порядок, или же смешение и путаница. Какова цель покериста во всей показательной комбинаторике по извлечению сивилл? В одной руке сверкающий клинок - not eligible во второй карт-бланш на любовь фермеров к технологиям и чем воспользуется Брайан узнаем вери сун.
Будьте здоровы!
❤7
Стал ли Эфириум «ультранадежными» деньгами? 🦇🔊 Ultra Sound Money.
Ультранадежные деньги - это мем Ethereum, посвященный вероятному сокращению предложения ETH. Если золото с ограниченным предложением является надежным, то эфир с уменьшающимся саплаем является очень надежным.
Общее предложение эфира уменьшается всякий раз, когда в результате сжигания комиссий уничтожается больше ETH, чем создается в результате эмиссии. Сжигание комиссий - это двигатель дефицита, подпитываемый транзакционной полезностью Ethereum.
Каково происхождение мема?
Август 2020г. - Виталик Бутерин шутит о сверхзвуковых деньгах. Сентябрь 2020г. - Мемы Джастина Дрейка об ультразвуковых деньгах. Март 2021г. - Bankless популяризирует сверхзвуковые деньги.
Сигнал летучей мыши 🦇🔊 - это визуальное выражение мема об ультранадежных деньгах, игривый намек на ультразвук летучих мышей.
В общем, после слияния в сентябре 2022 года Ethereum изначально был признан как «ультранадежные» деньги. И фактически тотал саплай уменьшился с 120,491 до 120,097 M, с чистым снижением на 394 тыс. ETH или 0,3%. Этот спад ускорился с увеличением сжигаемых комиссий за транзакции.
Это обновление привело к стремительному спаду медианной комиссии за транзакцию и как правило, общей суммы сжигаемых комиссий, несмотря на высокую производительность сети.
С момента слияния, общее обращение эфира прогрессирует с самой высокой ежедневной скоростью. Поскольку объем погребенных заживо депозитов растет, а масштаб кремирования комиссий сократился в следствии: внедрения Dencun, сезона отпусков, снижения интереса к Web3 у промышленных фермеров, высаживания/засаживания пассажиров.
При текущей активности, Ethereum уже не является дефляционным. Летучая идея «сверхнадежных» денег в продолжительном анабиозе и для пробуждения потребуется куда большие значения чем 2 gwei dao.
Ультранадежные деньги - это мем Ethereum, посвященный вероятному сокращению предложения ETH. Если золото с ограниченным предложением является надежным, то эфир с уменьшающимся саплаем является очень надежным.
Общее предложение эфира уменьшается всякий раз, когда в результате сжигания комиссий уничтожается больше ETH, чем создается в результате эмиссии. Сжигание комиссий - это двигатель дефицита, подпитываемый транзакционной полезностью Ethereum.
Каково происхождение мема?
Август 2020г. - Виталик Бутерин шутит о сверхзвуковых деньгах. Сентябрь 2020г. - Мемы Джастина Дрейка об ультразвуковых деньгах. Март 2021г. - Bankless популяризирует сверхзвуковые деньги.
Сигнал летучей мыши 🦇🔊 - это визуальное выражение мема об ультранадежных деньгах, игривый намек на ультразвук летучих мышей.
В общем, после слияния в сентябре 2022 года Ethereum изначально был признан как «ультранадежные» деньги. И фактически тотал саплай уменьшился с 120,491 до 120,097 M, с чистым снижением на 394 тыс. ETH или 0,3%. Этот спад ускорился с увеличением сжигаемых комиссий за транзакции.
Общая сумма сожженных комиссий по истории положительно коррелируется с повышением активности сети. Поэтому до обновления Dencun большая активность сети означала более высокие комиссии и, следовательно, уменьшение количества ETH.
Это обновление привело к стремительному спаду медианной комиссии за транзакцию и как правило, общей суммы сжигаемых комиссий, несмотря на высокую производительность сети.
С момента слияния, общее обращение эфира прогрессирует с самой высокой ежедневной скоростью. Поскольку объем погребенных заживо депозитов растет, а масштаб кремирования комиссий сократился в следствии: внедрения Dencun, сезона отпусков, снижения интереса к Web3 у промышленных фермеров, высаживания/засаживания пассажиров.
При текущей активности, Ethereum уже не является дефляционным. Летучая идея «сверхнадежных» денег в продолжительном анабиозе и для пробуждения потребуется куда большие значения чем 2 gwei dao.
👍3
Boom! Посмотрел по аркхаму топ 100 кошельков zro (95% саплая). Казалось бы, это будут кошельки проекта, биржи и мм - так и есть, но в поле зрения попали несколько адресов, которые выбиваются из общей массы:
https://teletype.in/@nodiggity/U11opzC3qpj
https://teletype.in/@nodiggity/U11opzC3qpj
https://teletype.in/@nodiggity/U11opzC3qpj
https://teletype.in/@nodiggity/U11opzC3qpj
https://teletype.in/@nodiggity/U11opzC3qpj
https://teletype.in/@nodiggity/U11opzC3qpj
Teletype
Arkham часть 1. (Top 100 holders LayerZero)
1.1 Перехожу в личный кабинет, раздел - мои панели.
❤7