Как стать автором
Поиск
Написать публикацию
Обновить
4.63

Solidity *

Язык программирования контрактов для Ethereum

Сначала показывать
Порог рейтинга
Уровень сложности

Сказки про NFT для самых маленьких

Время на прочтение7 мин
Количество просмотров14K

Гифка за 580 000$, набор пиксельных панков за 7.5mil$ и Kings of Leon выпускающие свой альбом прямо на нем. О дивный новый мир искусства и какого черта в нем вообще происходит?

Читать далее

Dapp. Vue.js + ethers.js

Время на прочтение9 мин
Количество просмотров10K

В этой статье я попытаюсь максимально кратко и информативно пройтись по всем пунктам создания создания полноценного Децентрализованного приложения в сети Ethereum используя JavaScript фреймворк - Vue для создания веб-приложения и библиотеку ethers.js для общения со смарт контрактом. Также будут рассмотрены некоторые моменты о том, как установить и подключить кошелек, как задеплоить контракт в сеть используя truffle и др.

Некоторые пункты могут показаться очень очевидными и не сложными, потому вы их можете пропустить.

Читать далее...

Основы программирования смарт-контрактов TON (FreeTON)

Время на прочтение4 мин
Количество просмотров6.7K

Перед тем как мы начнем писать свой токен, а затем систему смарт-контрактов, давайте проведем краткий обзор важных элементов смарт-контрактов для FreeTON.

Читать далее

Hello Word смарт-контракт для TON (FreeTON)

Время на прочтение3 мин
Количество просмотров11K

Одна из интересных тем, о которой мне хотелось бы сегодня рассказать - это программирование смарт-контрактов. За язык на котором мы будем программировать свой смарт возьмем Solidity, а в качестве платформы будем использовать FreeTON

Читать далее

Ненормальная криптография, или как я проверял подписи Ed25519 на Solidity

Время на прочтение13 мин
Количество просмотров6.1K

Когда пишут о том, как разрабатывать безопасные приложения, один из частых советов звучит так: не пишите криптографию самостоятельно, а используйте какую-нибудь проверенную библиотеку. К сожалению, при разработке блокчейнов этот совет часто не работает: нужные алгоритмы либо не реализованы вовсе, либо существующие реализации не годятся по множеству возможных причин — даже потому, что они недостаточно безопасны. Вот и в этом случае нужно было проверять подписи, использующие Ed25519 — весьма популярный тип подписей, для которого существует множество реализаций, ни одна из которых, однако, нам не подошла. А всё потому, что проверка должна была выполняться из смарт-контракта, работающего на блокчейне Ethereum.

Читать дальше →

Разбираемся с форматами токенов на Ethereum

Время на прочтение4 мин
Количество просмотров37K
Со временем блокчейн всё сильнее проникает в нашу жизнь, и появляется необходимость понимать основные его технологии, в том числе работу децентрализованных приложений (dApps). Большинство dApps в данный момент создано на Ethereum, возможности которого гораздо более гибкие, чем выпуск привычных ERC20 токенов.

Зачем нужны стандарты


Внутри смарт-контракта (что это?) можно прописать уникальную механику токена. Он будет работать, но другие разработчики (и смарт-контракты) не смогут обращаться к нему с помощью универсальной логики.

Пример: вы создали токен для игрового предмета (децентрализованный гейминг сейчас активно развивается) и хотите, чтобы он мог торговаться на маркетплейсах для игровых предметов (каком-нибудь таком). Но маркетплейсы не знают, как обращаться к функциям внутри вашего контракта, им нужен отдельный смарт-контракт, чтобы поддерживать ваш токен.

На помощь приходят стандарты. Зная способы взаимодействия с ними, создатели других dApps заложили в код всё необходимое для работы с токеном на опредёленном стандарте.
Читать дальше →

Ethereum + Python = Brownie

Время на прочтение6 мин
Количество просмотров11K

Салют, дорогой криптоэнтузиаст!


Сегодня речь пойдёт о Brownie — аналоге фреймворка Truffle, который часто используется для разработки умных контрактов на Solidity, их тестирования и развёртывания (о чём можно почитать в цикле соответствующих статей здесь).

Читать дальше →

Разработать софт для децентрализованного проката скутеров. Кто сказал, что будет легко?

Время на прочтение4 мин
Количество просмотров4.8K
В этой статье я расскажу о том, как мы пытались построить децентрализованный прокат скутеров на смарт контрактах и почему нам все равно понадобился централизованный сервис.


Читать дальше →

Создаем приватную сеть Ethereum Geth в контейнерах Docker

Время на прочтение9 мин
Количество просмотров9.9K


Если вам нужно развернуть приватную сеть Ethereum на базе Geth, то это можно сделать, например, создавая узлы сети на физических серверах или виртуальных машинах. Однако намного легче использовать готовые образы (Images) контейнеров Geth из репозитория Docker hub. В этом случае можно установить целую сеть узлов даже на одной виртуальной машине или на одном физическом сервере.

В этой статье мы расскажем как установить Docker на сервере с ОС Debian 9 (виртуальном или физическом), как создать несколько контейнеров с работающим Geth и объединить их в приватную сеть. Мы приведем пример скрипта для Node.js, который обращается к узлам Geth, работающим в контейнерах.
Читать дальше →

Продвигаем Ethereum DAPP

Время на прочтение3 мин
Количество просмотров4.5K
Сегодня в интернете достаточно информации, как создавать DAPP приложения. Вот вы создали крутое DAPP и теперь появляется вопрос ещё сложнее, как рассказать о нём потенциальным пользователям?

image

Я хочу поделиться собственным опытом продвижения DAPP приложения по каталогам. Метод хорош тем, что он ориентирован на пользователей, которые уже знают, что такое DAPP и как ими пользоваться, также про DAPP узнают поисковики.
Читать дальше →

Гайд по автоматическому аудиту смарт-контрактов. Часть 3: Mythril

Время на прочтение13 мин
Количество просмотров4.3K

Warning


Данная статья — это не рейтинг эффективности автоанализаторов. Я применяю их к собственным контрактам, намеренно синтезируя ошибки, и изучаю реакции. Такое исследование не может являться основанием для определения "лучше-хуже", для этого имеет смысл провести слепое исследование на большой выборке контрактов, которое, учитывая капризный характер такого рода ПО, провести крайне сложно. Вполне возможна ситуация, когда небольшая ошибка в контракте может отключить большой кусок логики анализатора, а простейший эвристический признак может добавить анализатору огромное число очков за счет нахождения широко распространенного бага, который конкуренты просто не успели добавить. Также могут сыграть роль ошибки в подготовке и компиляции контрактов. Все рассматриваемое ПО является довольно молодым, и дорабатывается постоянно, поэтому не стоит воспринимать критические замечания как непоправимые проблемы.


Цель статьи — дать читателю понимание того, как работают методы анализа кода в разных анализаторах и умение их правильно использовать, а не "определиться с выбором". Разумный выбор — использовать сразу несколько инструментов, делая акцент на наиболее подходящем для анализируемого контракта.

Читать дальше →

Гайд по автоматическому аудиту смарт-контрактов. Часть 2: Slither

Время на прочтение6 мин
Количество просмотров3.8K

Анализатор: Slither
Описание: Open-source static analysis framework for Solidity
githib: https://github.com/trailofbits/slither


Это статический анализатор кода, написанный на python. Он умеет следить за переменными, вызовами, и детектирует вот такой список уязвимостей. У каждой уязвимости есть ссылка с описанием, и, если вы новичок в Solidity, вам имеет смысл ознакомиться со всеми.


Slither может работать, как модуль python и предоставлять программисту интерфейс, для аудита по собственному плану. Простой и показательный пример того, что умеет делать slither можно увидеть тут.


Мы еще вернемся к сценариям анализа в конце статьи, а пока запустим Slither:

Читать дальше →

Обновление* Ethereum «Constantinople» откладывается из-за найденной в последний момент потенциальной уязвимости

Время на прочтение4 мин
Количество просмотров5.6K
image
*многие называют это событие «hard fork»-ом, но «Виталик» против.

Долгожданный релиз Constantinople должен был состояться 17 января, в 4AM UTC, однако, в очередной раз жестоко обломав несметную армию разработчиков countdown счетчиков этому не суждено будет сбыться.
Читать дальше →

Ближайшие события

Обратная сторона zero knowledge: бэкдор в zk-SNARK, который невозможно обнаружить

Время на прочтение3 мин
Количество просмотров12K
Используя протокол доказательства с нулевым разглашением из семейства SNARK, вы никогда не знаете правил игры. Эти правила устанавливают участники процедуры генерации доверенных параметров системы, однако после её завершения проверить эти правила не представляется возможным. Вы можете поверить в корректность генерации, но, если вы в ней не участвовали, стопроцентных гарантий у вас нет.


Читать дальше →

Как тестировать смарт-контракты

Время на прочтение7 мин
Количество просмотров12K
image

Условия смарт-контракта нельзя изменить. Поэтому всякий раз, когда вы создаёте смарт-контракт, нужно убедиться, что он работает правильно. Тестирование — безопасный способ проверить контракт в разных ситуациях. В этом туториале вы узнаете, какие шаги для этого нужно предпринять.
Читать дальше →

Сканирование Live Ethereum контрактов на ошибку «Unchecked-Send». Часть 2

Время на прочтение6 мин
Количество просмотров1.9K

Продолжение статьи «Сканирование Live Ethereum контрактов на ошибку «Unchecked-Send». Часть 1».


Почти год назад (в то время как Ethereum был в своем «пограничном» выпуске), популярный лотерейный контракт EtherPot [9] также пострадал от той же ошибки. Более ранняя версия BTCRelay также показала эту ошибку [7]. Несмотря на то, что в предыдущем аудите безопасности была обнаружена опасность, сначала было применено неправильное исправление [8].

Читать дальше →

Уязвимости смарт-контрактов Etherium. Примеры кода

Время на прочтение4 мин
Количество просмотров6.8K
Данным постом начинаю цикл статей на тему безопасности смарт-контрактов Ethereum. Считаю эту тему весьма актуальной, так-как количество разработчиков лавинообразно растет, а уберечь от «граблей» — некому. Пока — переводы…

1. Сканирование Live Ethereum контрактов на ошибку «Unchecked-Send»


Оригинал — Scanning Live Ethereum Contracts for the «Unchecked-Send...»


Авторы: Zikai Alex Wen и Andrew Miller

Программирование смарт-контрактов в Ethereum, как известно, подвержено ошибкам [1] . Недавно мы увидели, что несколько
высококлассных смарт-контрактов, таких как King of the Ether и The DAO-1.0, содержали уязвимости, вызванные ошибками программирования.

Начиная с марта 2015 года программисты смарт-контрактов были предупреждены о конкретных опасностях программирования, которые могут возникнуть, когда контракты отправляют сообщения друг другу [6]

В нескольких руководствах по программированию содержится рекомендация, как избежать распространенных ошибок (в официальных документах Ethereum [3] и в независимом руководстве от UMD [2] ). Хотя эти опасности достаточно понятны, чтобы избегать их, последствия такой ошибки являются ужасными: деньги могут быть заблокированы, потеряны или украдены.

Насколько распространены ошибки, возникающие в результате этих опасностей? Есть ли еще уязвимые, но живые контракты на block-chain Ethereum? В этой статье мы отвечаем на этот вопрос, анализируя контракты на живом block-chain Ethereum с помощью нового инструмента анализа, который мы разработали.


Читать дальше →

Более эффективная запись массивов в постоянную память смарт-контракта в Solidity

Время на прочтение9 мин
Количество просмотров4.7K
В последнее время, мне пришлось немного поработать с блокчейном Ethereum. Идея, над которой я работал, требовала хранить прямо в блокчейне некоторое достаточно большое количество целых чисел, так, чтобы смарт-контракт имел к ним удобный доступ. Большинство уроков по разработке смарт-контрактов говорят нам «не храните много данных в блокчейне, это дорого!». Но сколько это «много», и с какого количества цена становится слишком высокой для практического использования? Это мне надо было выяснить, потому что нам наши данные выносить офф-чейн было никак нельзя, рушилась вся затея.

Я только начинаю работать с Solidity и EVM, поэтому эта статья не претендует на истину в последней инстанции, но других материалов по этой теме ни на русском, ни на английском мне найти не удалось (хотя очень плохо, что вот эта статья мне не попалась раньше), поэтому я надеюсь, что она может оказаться кому-то полезна. Ну или в крайнем случае, она может оказаться полезна мне, если опытные товарищи расскажут, насколько и где именно я в ней не прав.

Для начала, я решил быстро прикинуть — получится ли у нас? Давайте возьмём стандартный, широко распространённый тип контракта — токен ERC20. По крайней мере, такой контракт хранит в блокчейне соответствие адресов людей, который купили токены, их балансам. В реальности, хранятся только балансы, каждый из которых занимает 32 байта (на деле здесь экономить не имеет смысла из-за особенностей Solidity и EVM). У более-менее успешного токена легко могут быть десятки тысяч обладателей, и таким образом получаем, что хранить в блокчейне около 320000 байт — вполне допустимо. А нам больше и не надо!

Наивный подход


Ну что же, попробуем наши данные сохранить. Значительная их часть — 8-битные целые беззнаковые числа, поэтому передадим их массив в контракт, и попробуем записать их в постоянную память:
Читать дальше →

Делаем web-аутентификацию через блокчейн

Время на прочтение5 мин
Количество просмотров16K


Недавно я участвовал в Ethereum-хакатоне, и сегодня хочу рассказать о проекте EtherAuth, с которым команда MixBytes заняла третье место. EtherAuth — это попытка сделать децентрализованную версию входа на сайт при помощи внешней учетной записи. Как кнопка войти через Facebook, только без Facebook.

Читать дальше →

P2P-споры на блокчейне

Время на прочтение9 мин
Количество просмотров4.6K


Сеть Ethereum, широко известная в узком кругу блокчейн-разработчиков, уже зарекомендовала себя как удобная и стабильная платформа для разработки смарт-контрактов. Мы стараемся сделать смарт-контракты доступными для неподготовленных пользователей, предлагая простые, но практически полезные контракты. Недавно мы разработали смарт-контракт спора Bet Me. В основе контракта лежит пари (спор) двух оппонентов. Они подкрепляют уверенность в собственной правоте денежной ставкой. Проигравший теряет деньги, а победитель забирает всё. Подробнее о нём я расскажу в этой статье.

Читать дальше →