Документация содержит хорошие подробные туториалы,я лишь немного хочу раскрыть их для рунета.
Solidity *
Язык программирования контрактов для Ethereum
Как создать dApp за три шага
Децентрализованные приложения или dApps - это приложения, которые не полагаются на централизованный сервер или бэкэнд, а используют технологии Web3, такие как блокчейн и оракулы для хранения своей логики и функций бэкэнда, что делает их защищенными от взлома и безопасными.
В этом техническом руководстве вы узнаете как создать простой dApp, который позволяет пользователю получать и хранить текущую цену Ethereum в смарт-контракте. Готовую демонстрационную версию можно найти на GitHub.
Что такое гибридный смарт-контракт?
Гибридный смарт-контракт — это приложение, состоящее из двух частей:
1) Смарт-контракт — код, который работает исключительно на блокчейне
2) Децентрализованная сеть(и) оракулов — безопасные сервисы вне блокчейн, поддерживающие смарт-контракт.
Эти два компонента беспрепятственно и безопасно взаимодействуют друг с другом, образуя единое гибридное приложение смарт-контракта. В результате код на блокчейне дополняется множеством уникальных и важных способов, открывая множество новых вариантов использования, которые были бы невозможны только с помощью кода на блокчейн из-за технических, юридических или финансовых ограничений.
Важно отметить, что DON по-прежнему обеспечивают очень высокий уровень устойчивости к взлому и надежности, соответствующий гарантиям, предоставляемым смарт-контрактом, но они делают это в изолированной среде вне блокчейн с использованием множества различных подходов к безопасности.
Криптография и будущее децентрализованных вычислений
Хотя технологии на основе блокчейна обладают многими качествами, которые отличают их от других вычислительных парадигм, их основным ценностным предложением является генерация криптографической истины. В самом простом смысле, криптографическая истина — это форма вычислений и ведения учета, которая является более точной, доступной, проверяемой и защищенной от взлома, чем существующие альтернативы.
Криптографическая истина происходит от инфраструктуры с минимизацией доверия - кода, который работает именно так, как задумано, потому что его выполнение и проверка не зависят от доверия к незнакомцам или неконтролируемым переменным. Блокчейн генерирует минимизацию доверия, используя криптографию для аутентификации данных и обеспечения хронологического порядка записей, а также децентрализованный консенсус для подтверждения новых записей и сохранения их неизменности. Благодаря этому механизму многосторонние процессы могут отслеживаться и выполняться на общем, достоверно нейтральном бэкенде, который стимулируется к честному управлению.
Истории
77+ примеров использования смарт-контрактов
77+ примеров использования смарт-контрактов
В своей основе, контракты определяют условия и обязанности при обмене чем-либо между двумя и более независимыми сторонами. Исторически так сложилось, что требовался централизованный арбитраж для подтверждения, что условия контракта соблюдаются. Благодаря появлению технологии блокчейн и смарт-контрактов, мы можем заменить централизованных арбитражеров на децентрализованную инфраструктуру, сокращая таким образом риски всех участников и повышая при этом эффективность исполнения.
Однако, из-за механизмов консенсуса в блокчейне, смарт-контракты не имеют встроенной функции или возможности связываться с внешними ресурсами, такими как поставщики данных или сервисы API, как средством верификации исхода реальных событий, происходящих за пределами блокчейна. Это создает так называемую проблему оракулов в блокчейне и является одним из самых серьезных препятствий для исполнения смарт-контрактов.
Чтобы преодолеть отсутствие такого связующего звена, гибридные смарт-контракты используют оракулы в качестве посредника для сбора информации из внешних источников данных, предоставления информации во внешние источники, и для вычислений off-chain. Оракулы обеспечивают не только двустороннюю связь между смарт-контрактами и внешним миром, но и безопасную среду, которая защищает от любого риска единой точки отказа (single point of failure), например, от манипуляции данных или системного сбоя.
Что такое решения второго уровня (Layer 2) для блокчейн?
Второй уровень (Layer 2, L2) - это любая офф-чейн сеть, система или технология, построенная поверх блокчейна (обычно известного как сеть первого уровня), которая помогает расширить возможности сети базового уровня. Сети второго уровня могут поддерживать любой блокчейн для внедрения таких улучшений, как например, более высокая пропускная способность транзакций.
Одним из основных требований к сети, системе или технологии второго уровня является то, что она наследует безопасность блокчейна, на базе которого она построена. Данные транзакций должны в той или иной форме проверяться и подтверждаться базовой сетью блокчейна, а не отдельным набором узлов. Например, сайдчейны часто не считаются вторым уровнем, поскольку они обычно используют собственные механизмы консенсуса и валидаторы, что приводит к иному набору гарантий безопасности, чем в сети базового уровня.
Для блокчейнов, которые жертвуют масштабируемостью для достижения более высокой децентрализации и безопасности, второй уровень обеспечивает большую пропускную способность транзакций, что может привести к снижению комиссий. Второй уровень можно рассматривать как одно из решений проблемы масштабируемости, обеспечивающее быстрое и масштабируемое исполнение без ущерба для децентрализации и безопасности.
Overflow
К переполнению относятся числовые вычисления, результат которых превосходит объём памяти, отведённого для хранения. В Solidity диапазон, который может представлять тип данных uint8, составляет 256 чисел от 0 до 255. Когда тип uint8 используется для вычисления 255 + 1, произойдет переполнение, поэтому результат вычислений будет равен 0, минимальному значению, которое может представлять тип uint8.
Если в контракте есть уязвимость переполнения, фактический результат вычисления может значительно отличаться от ожидаемого результата. Это повлияет на нормальную логику контракта и может привести к потере средств. Однако существуют ограничения версии для уязвимости переполнения. В версиях Solidity <0.8 переполнение не будет сообщать об ошибке, но в версиях >= 0.8 переполнение вызовет ошибку.
Спящий гигант, или Почему Cardano продолжает и выигрывает
Cardano и Ethereum — блокчейны, у которых схожие возможности и они неизбежно подвергаются сравнению друг с другом. Постепенно расстановка сил меняется, и о Cardano всё чаще говорят как об «убийце Ethereum». Разбираемся в особенностях технологии Cardano, смотрим, есть ли основания для слухов и рассказываем, почему Cardano может стать мощнее, быстрее и доступнее, чем Ethereum или Bitcoin.
Разбираемся с BeaconProxy от OpenZeppelin
Многим из вас, наверное, известно, что в теории, смарт-контракты в EVM-подобных системах, являются неизменяемыми (immutable), но на практике это уже давно не так. И речь даже не о таких свойствах как Pausable, то есть каких-то переменных состояния контракта, которые могут влиять на его работоспособность, а о более серьезных возможностях изменения бизнес-логики контракта. В этой статье я опишу основные приемы и остановлюсь подробнее на одном из них, на BeaconProxy.
Почему мы выбрали ERC-721, а не ERC-20 для контракта получателя дивидендов
Привет! Для меня некоторое время было удивительно, почему некоторые проекты стали выбирать ERC-721 протокол для выплаты дивидентов, неужели это дань моде? Но поразмыслив немного, я, кажется, пришел к пониманию в чем преимущества этого подхода.
В этой статье не будет деталей о самих протоколах, только мои рассуждения об их применении.
Работа со смарт-контрактами Ethereum с помощью ESP8266
В этой статье я расскажу как с помощью микроконтроллера ESP8266 подключиться к приватной Ethereum сети и вызвать смарт-контракт.
Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 3
Основная задача:
Изучить, как хранить данные IoT на комбинации on-chain (Ethereum Blockchain) и off-chain хранилищ (IPFS и Ethereum Swarm) в зашифрованном виде и использовать их в модели публикации-подписки в режиме реального времени без использования каких-либо протоколов M2M, таких как MQTT или CoAP. Оценить производительность этой системы с точки зрения количества транзакций, которые могут быть выполнены в секунду и оптимизировать ее работу.
Предыдущие части статьи:
Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 1
Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 2
В этой части статьи в главе 6 мы проводим эксперименты по хранению данных с использованием традиционных баз данных, а также предложенной системы с использованием Ethereum Blockchain, IPFS и Swarm. Чтобы понять стоимость безопасности IoT, мы проводим эксперименты по оценке производительности предложенной системы.
В главе 7 мы попытаемся обобщить выводы, сделанные в данной статье, и завершим ее ретроспективным обзором 2 измерений производительности этих систем хранения данных вместе с блокчейном.
Исследуем потребление газа и распределение памяти в программах Solidity
Если раньше вы писали программы для обычных приложений, таких как скрипты Web-сайтов или Desktop-приложения, то скорее всего сильно не задумывались о том, чтобы экономить оперативную или дисковую память. В современных компьютерах ее достаточно много, и если речь не идет о каких-либо специальных применениях, то память можно особо не экономить.
Однако при создании программ Solidity нужно учитывать, что стоимость публикации смарт-контракта, а также стоимость вызова его функций может очень сильно зависеть от того, сколько в контракте используется памяти, какой и каким именно образом.
Для измерения стоимости вызова функций смарт-контракта, а также для изучения распределения памяти подготовим стенд в виде проекта Hardhat.
Ближайшие события
Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 2
Напомним про основную задачу:
Изучить, как хранить данные IoT на комбинации on-chain (Ethereum Blockchain) и off-chain хранилищ (IPFS и Ethereum Swarm) в зашифрованном виде и использовать их в модели публикации-подписки в режиме реального времени без использования каких-либо протоколов M2M, таких как MQTT или CoAP. Оценить производительность этой системы с точки зрения количества транзакций, которые могут быть выполнены в секунду и оптимизировать ее работу.
Краткое содержание данной части статьи:
В главе 4 мы описываем терминологию, протоколы и устройства IoT, рассматриваемые для использования в нашей статье. Мы также рассмотрим, как установить корень доверия для этих устройств и обеспечить функции безопасности с помощью внешнего оборудования.
В главе 5 мы описываем предложенную систему хранения данных в блокчейн и вне блокчейн для децентрализованного хранения данных с датчиков. Мы также описываем смарт-контракт, используемый для регистрации IoT-устройств и хранения данных.
Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 1
Интернет вещей (IoT) — это набор технологий, которые позволяют подключенным к сети устройствам выполнять действия или обмениваться данными между несколькими подключенными устройствами или с общей базой данных. Действия могут могут быть любыми: от дистанционного включения кондиционера воздуха до включения зажигания автомобиля с помощью команды, поданной из удаленного места, или попросить Alexa или Google Assistant найти информацию о погодных условиях в том или ином районе. IoT доказал свою эффективность во многих отраслях промышленности таких как цепочки поставок, доставка и транспортировка, предоставляя информацию о состоянии грузов в режиме реального времени. Это привело к появлению огромного количества данных, создаваемых множеством таких устройств. которые необходимо обрабатывать в режиме реального времени.
В данной статье мы предлагаем метод сбора информации с датчиков устройств IoT и использования блокчейна для хранения и получения собранных данных для безопасного и децентрализованного хранения и извлечения собранных данных в рамках закрытой системы, подходящей для одного предприятия или группы компаний в таких отраслях как, например, судоходство, где требуется обмен данных друг с другом. Подобно блокчейну, мы представляем себе будущее, в котором устройства IoT смогут подключаться и отключаться к распределенным системам, не вызывая простоя в сборе и хранении данных или не полагаясь на облачные технологии хранения или полагаться на облачную систему хранения для синхронизации данных между устройствами. Мы также рассмотрим производительность некоторых из этих распределенных систем, таких как Inter Planetary File System (IPFS) и Ethereum Swarm на маломощных устройствах, таких как raspberry pi.
Внедрение Blockchain в нефтегазовую отрасль
У нефтегазовых компаний возникают проблемы с повышением эффективности производственного процесса и снижением затрат на его реализацию. Комбинированное использование технологий Blockchain и IoT открывает множество возможностей для различных компаний. В данной статье рассматриваются возможности идеализации цепочек поставок нефти и управления в этой области - децентрализованная система управления работой независимых предприятий с потоком данных и денежных потоков для международного экспорта, с использованием смарт-контракта на основе публичного блокчейна.
Эзотерическая оптимизация газа в Solidity
Программирование в Солидити отличается от других языков, так как каждое инструкция и байт памяти тратят газ - деньги пользователей. В сети уже есть много ресурсов с основными техниками оптимизации кода (например, стараться использовать calldata вместо memory), но я хочу показать несколько совсем безумных и неочевидных.
Понять о чем я говорю без базового опыта в solidity будет очень сложно, но может быть эти оптимизации проявят в вас интерес в ethereum программировании.
Solidity: mapping
Концепция mapping
в Solidity аналогична HashMap
в Java или dict
в Python.
Нет ничего лучше, чем аналогия с реальным миром, чтобы понять, что такое mapping
в Solidity и как он себя ведет. Следующий пример был взят из поста на Reddit:
"Хеш-таблица(= mapping) похожа на гардероб. Вы сдаете свою куртку и получаете номерок. Всякий раз, когда вы возвращаете этот номерок, вы немедленно получаете свою куртку. В гардеробе может быть много курток, но вы все равно получите свою куртку обратно. В гардеробе происходит много волшебства, но вам все равно, потому что главное это то, что вы немедленно получите свою куртку обратно."
Другими словами, mapping
позволяет эффективно находить местоположение данных, соответствующее заданному ключу.
Что такое Re-entrancy attack?
Говорят, что процедура является re-entrant, если ее выполнение может быть прервано в середине, инициировано заново, и оба запуска могут завершиться без каких-либо ошибок при выполнении. В контексте смарт-контрактов Ethereum повторный вход может привести к серьезным уязвимостям.
Самым известным примером этого был взлом DAO, в ходе которого был выведен эфир на сумму 70 миллионов долларов.
Так что же такое уязвимость повторного входа? Как это работает и как это предотвратить?
Механизм
Примером повторно входящего процесса может быть отправка электронной почты. Пользователь может начать вводить электронное письмо, сохранить черновик, отправить другое электронное письмо и закончить сообщение позже. Это безобидный пример. Однако представьте плохо построенную систему онлайн-банкинга для выдачи банковских переводов, в которой баланс счета проверяется только на этапе инициализации. Пользователь может инициировать несколько переводов, фактически не отправляя ни один из них. Банковская система подтвердит, что на счету пользователя имеется достаточный баланс для каждого отдельного перевода. Если во время фактической отправки не было дополнительной проверки, пользователь мог затем отправить все транзакции и потенциально превысить свой баланс. Это основной механизм эксплойта с повторным входом, который использовался в известном взломе DAO.
Пример из реальной жизни - взлом DAO
DAO это популярный децентрализованный инвестиционный фонд, основанный на смарт-контрактах. В 2016 году смарт-контракт DAO накопил эфир на сумму более 150 000 000 долларов (на тот момент). Если проект, запросивший финансирование, получил достаточную поддержку со стороны сообщества DAO, адрес Ethereum этого проекта мог вывести эфир из DAO. К сожалению для DAO, механизм перевода переводил эфир на внешний адрес, прежде чем обновлять его внутреннее состояние и отмечать, что баланс уже переведен. Это дало злоумышленникам возможность для вывода большего количества эфира, чем они имели право, путем повторного входа.
Solidity: комментарии
Комментарии используются для того, чтобы объяснить что делает код. Роберт С. Мартин ("дядюшка" Боб) утверждает, что «правильное использование комментариев должно компенсировать нашу неспособность выразить что-то в коде». Поэтому комментарии делают исходный код более понятным для человека.
Почему комментарии так важны, когда дело доходит до Solidity? Потому что они помогают разобраться в работе вашего смарт контракта не только разработчикам, но и конечным пользователям.
Вклад авторов
p4lex 145.0rubyruby 81.0DryginAlexander 66.0pnaydanovgoo 65.0yarlykovrv 64.0BoogerWooger 56.0AlexandreFrolov 54.0tonoyandev 47.0AgentRX 45.0quantum 39.0