
Solidity *
Язык программирования контрактов для Ethereum
Solidity 0.5.0 — что нового он нам несет
Update: 13.11.2018 вышел релиз, вот подробное описание изменений. В статье рассказывается про состояние этой версии в мае (за пять месяцев до релиза).
Хочу рассказать об изменениях языка Solidity, которые ожидаются в версии 0.5.0. Сразу отмечу, что я ограничусь только языком — его грамматикой и семантикой.
Какого-то вменяемого текста на эту тему нет даже на английском языке, но недавно в репозитории Solidity появился проект.
По нему можно отслеживать прогресс подготовки версии 0.5.0.
Disclaimer: в статье описано текущее состояние проекта, к релизу многое может поменяться. Точную информацию можно получить из официального changelog'a.
Вопрос на миллион

Переписываем приложение под Blockchain

Отмечу сразу, что данная статья не о том как писать код на Solidity, а как существующую классическую архитектуру вашего приложения можно перевести на рельсы blockchain и думать в ключе децентрализации.
Пару лет назад я работал над одним интересным веб приложением сервиса p2p доставки посылок. По определенным причинам разработку пришлось заморозить на этапе прототипа, так что я просто выложил исходный код на GitHub и забыл про него.
В последнее время по роду деятельности мне довелось поработать с несколькими проектами связанными с криптовалютой и blockchain-технологиями. Познакомившись ближе с Ethereum и его идеологией децентрализованных приложений (ĐApp) я просто заболел этой идеей: никакой цензуры, никто не может прикрыть ваш бизнес, никто не может конфисковать ваши средства, невозможно просто взять и выключить сервер на котором работает ваше приложение. В определенный момент я пришёл к выводу, что именно в такой среде мой проект может иметь шансы на жизнь.
Итак, взглянем на фронт работ.
Attention! S in Ethereum stands for Security. Part 3. Solidity in practice

Представляем третью часть цикла, посвященного типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. Здесь поговорим о том, какими особенностями обладает Solidity и какими уязвимостями они могут обернуться в умелых руках.
Key transparency & Coniks для защиты структур данных
Алексей Ермишкин (Scratch )

Прежде я бы хотел немножко объяснить свое отношение к теме блокчейна. Я очень люблю технологию блокчейн, в последнее время все, что крутится вокруг – SEO, криптовалюта, смарт-контракты – это все прекрасно и отлично, но это далеко не все, что может блокчейн, и это далеко не вся его философия.
Blockchain – это далеко не только смарт-контракты и криптовалюты, которые вообще стали сокращать до слова «крипто». Мне, как человеку, занимающемуся криптографией, это особенно бьет по ушам.
Blockchain — не обязательно распределенные системы. Если посмотреть определение слова «Blockchain», это распределенная база данных с консенсусами и со всем остальным. Нет, это абсолютно не так.
Blockchain-технология существовала за 4 года до Bitcoin. Вы наверняка тоже ею пользуетесь, но не догадываетесь, что это блокчейн. Это Git, и я очень легко это докажу.
Программный комитет по блокчейну или как отбиться от ICO

Не секрет, что проведение профессиональной конференции требует большой подготовительной работы. Самой важной частью, без которой вообще ничего не получится, конечно, является работа программного комитета. Эта работа не заканчивается на этапе отсева рекламных докладов и докладов для совсем начинающих или слишком узкоспециальных, а включает такие внимательные расспросы кандидатов, чтобы ничего ценного не было потерянно за банальным неумением точно выразиться, и наоборот за красивыми словами не проскользнула незрелая работа.
В случае с DeCenter TokenConf мы получили многообразие заявок о способах сбора крипты на самые замечательные цели, из которых можно было бы собрать ещё пять конференций, и все их отклонили…
Смарт-контракт ловушка в сети Ethereum
Платёжная система в 50 строк кода, реально?

Погружение в разработку на Ethereum. Часть 4: деплой и дебаг в truffle, ganache, infura

Реализация простой пиксельной игры в блокчейне Ethereum
Смарт-контракт не требует оплаты за изменения цвета пикселей, но нужно будет заплатить небольшую комиссию майнерам за подтверждение транзакции.
В данной статье я бы хотел рассказать, как у нас получилась текущая первая версия приложения и с какими техническими сложностями нам пришлось столкнуться.
Экономия газа в смарт-контрактах Ethereum
В Ethereum для выполнения каждой транзакции требуется определённое количество газа — специальной сущности. Существуют разные пути для снижения затрат. Часть из них уже реализована. Хочу начать с обсуждения вопроса оптимизации стоимости создания смарт-контракта.

Как видите, можно заметно снизить расход газа, сокращая издержки. Прежде чем займёмся деталями давайте обсудим вопрос оптимизации программ.
Attention! S in Ethereum stands for Security. Part 2. EVM features

Представляем вторую часть цикла, посвященного типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. Здесь поговорим о некоторых особенностях EVM и о том, какими уязвимостями они могут обернуться.
Ближайшие события
Децентрализованное хранилище данных Ethereum Swarm

Блокчейн Ethereum интересен своими смарт-контрактами, а также возможностью создания децентрализованных приложений DApp (Decentralized Application). Однако такому приложению необходимо децентрализованное хранилище данных.
Хранение данных большого объема в блокчейне может стоить немалых денег. На помощь приходят такие децентрализованные хранилища, как Ethereum Swarm («swarm» переводится как «рой», «куча»). Если кратко, то Ethereum Swarm представляет собой программный код, работающий на пиринговой сети Ethereum. Он обеспечивает децентрализованное хранение данных на дисках узлов, владельцы которых отдают свои ресурсы в общее пользование.
В этой статье мы расскажем о том, как установить локальный узел Ethereum Swarm для приватной сети Ethereum с целью тестирования технологии и разработки децентрализованных приложений, хранящих данные в Ethereum Swarm.
Attention! S in Ethereum stands for Security. Part 1. Blockchain things

С этой статьи мы начинаем цикл, посвященный типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. В первой части мы поговорим вот о чем:
- почему сложно реализовать децентрализованную биржу на смарт-контрактах
- как сгенерировать случайное число
- как вывести из строя всю Proof-of-Authority сеть
Модуль Net::Ethereum для работы с контрактами Solidity

Обычно когда мне нужно использовать какой-то новый сервис или технологию из скриптов Perl, я захожу на CPAN, и там уже есть один или несколько подходящих модулей. Однако в случае фреймворков для работы с узлами блокчейна Ethereum и контрактами Solidity, к сожалению, мне не удалось найти нужного модуля.
Мы планируем в ближайшее время использовать смарт-контракты Solidity сети Ethereum в нашем SAAS-сервисе интернет-магазинов, написанном на Perl. Поэтому мне ничего не оставалось, как написать свой модуль Net::Ethereum (этот модуль уже доступен на CPAN, хотя и в виде альфа-версии).
Надеюсь, что модуль Net::Ethereum будет полезен тем, кто хочет интегрировать свои Perl-системы с контрактами блокчейна Ethereum. Буду очень благодарен тем, кто воспользуется этим модулем и пришлет мне свои соображения по его доработке, а также информацию о найденных ошибках.
Программирование генератора случайных чисел на Ethereum

При разработке смарт-контрактов на Ethereum обычно считается что полагаться на хеш блока как источник рандомности ненадежно, так как майнер может влиять на результат, подбирая хеш блока (см. Private Information and Randomness, How do you get a random number in a contract?)
Насколько в действительности велика возможность для майнера увеличить свои шансы на выигрыш в игре в которой нужно угадать хеш блока c определенным номером (или некое число производимое от хеша блока)?
Обновляемые смарт-контракты в сети Ethereum
Мотивация
Контракты сети Ethereum иммутабельны – единожды загруженные в сети (блокчейн), они не могут быть изменены. Специфика бизнеса или разработки могут потребовать обновить код, но при традиционном подходе это становится проблемой.
Популярные причины необходимости обновления
- Ошибки в коде
- Изменение бизнес требований
- Принятие предложений сообщества об изменении работы контракта
Описание технического решения
Реализация требуемого функционала — обновление кода, планируется через разделение кода на составляющие:
- Данные — смарт-контракты без логики и предоставляющие исключительно пространство для хранения данных;
- Бизнес-логика — смарт-контракты описывающие логику извлечения данных из хранилища и их изменения;
- Входные точки — иммутабельные контракты ведут учет обновления бизнес-логики и предоставляют конечному пользователю ссылку на актуальный контракт бизнес-логики
Эксперименты с контрактами Solidity в тестовой сети Rinkeby блокчейна Ethereum

Эта статья представляет собой небольшое практическое руководство, которое поможет вам быстро настроить среду разработки смарт-контрактов на языке Solidity для блокчейна Ethereum. Вы опубликуете первый контракт, сохраните его в тестовом блокчейне Rinkeby и научитесь вызывать методы контракта. Это будет ваш первый шаг на пути создания децентрализованных приложений DApp (Decentralized Application).
Несмотря на обилие книг, статей и руководств, посвященной теме этой статьи, новичку довольно трудно приступить к публикации контрактов и работе с ними. При попытке что-то сделать по книгам, руководствам и статьям нередко оказывается, что примеры не работают, а команды возвращают непонятные ошибки. Я попытаюсь в некоторой степени упростить первый этап освоения, отразив в этой статье свой опыт изучения Ethereum.
При погружении в эту тему я использовал приложение (браузер) Mist в среде Microsoft Windows, а также интерфейс командной строки Geth узла Ethereum в среде Ubuntu. В этой статье мы расскажем о работе с Geth, а также немного о том, как вызывать методы контрактов из Node.js.
С благодарностью приму замечания и пожелания по дальнейшим статьям про блокчейн Ethereum, разработку контрактов на языке Solidity и приложений DApp.
Руководство по блокчейн для маркетолога

Блокчейн, неизменяемый и невзламываемый реестр транзакций, был придуман 10 лет назад, чтобы стать основой для криптовалюты Bitcoin. С тех пор сфера применения этой технологии расширилась от финансов до медицинских услуг и, в последнее время, digital-рекламы.
Это происходит с подачи таких крупных компаний, как IBM и Comcast, а также небольших стартапов вроде MadHive и Rebel AI.
Вклад авторов
pnaydanovgoo 172.0p4lex 145.0yarlykovrv 140.4rubyruby 81.0DryginAlexander 66.0lexa144 64.0BoogerWooger 56.0AlexandreFrolov 54.0tonoyandev 47.0AgentRX 45.0