При написании смартконтрактов важно помнить, что после загрузки в блокчейн, они уже не могут быть изменены, а следовательно, не могут быть внесены какие-либо улучшения или исправлены какие-то найденные ошибки! Все мы знаем, что ошибки есть в любой программе, а вернувшись к написанному пару месяцев назад коду мы всегда найдем, что там можно улучшить. Как же быть? Единственно возможный вариант – это загрузить новый контракт с исправленным кодом. Но как же быть, если на базе имеющегося контракта уже выпущены токены? На помощь нам приходит миграция! За последний год я попробовал много разных техник ее реализации, проанализировал применяемые в других крупных блокчейн проектах и что-то поизобретал сам. Подробности под катом.
Читать полностью »
Рубрика «solidity» - 5
Смарт контракты Ethereum: что делать при ошибке в смартконтракте или техники миграции
2017-10-01 в 23:02, admin, рубрики: Ethereum, solidity, блокчейн, миграция, смартконтрактКак я искал (и нашел!) баги в смартконтракте проекта kickico
2017-09-29 в 4:51, admin, рубрики: Ethereum, kickico, solidity, информационная безопасностьВ августе я, неожиданно для себя, поучаствовал в bugbounty проекта Kickico. Я уже рассказал об этом на митапе Atlas Blockchain в прошлую пятницу. Статья — текстовая версия этого доклада с дополнением и небольшим пятничным конкурсом :)
Работа со смарт-контрактами через Ethereum RPC API
2017-09-21 в 6:56, admin, рубрики: blockchain, Ethereum, solidity, Блог компании Райффайзенбанк, платежные системы, ПрограммированиеВсем привет. В этой статье мы рассмотрим основные приемы по публикации смарт-контрактов и взаимодействию с ними с использованием Ethereum RPC API. Обсуждаемые методы API позволяют решать такие задачи:
- Создание счёта.
- Создание корректного смарт-контракта.
- Получение информации со смарт-контракта.
- Изменение состояния смарт-контракта.
Смарт контракты Ethereum: пишем простой контракт для ICO
2017-09-16 в 21:43, admin, рубрики: Ethereum, javascript, solidity, биллинговые системы, блокчейн, платежные системыВ последнее время ко мне поступает огромное количество запросов за помощью в разработке смартконтракта для проведения ICO, при этом у меня не хватает времени, чтобы помочь каждому. Поэтому я решил записать этот небольшой пост (ссылка на видео в конце поста), в котором описываю очень простой смартконтракт для проведения crowdsale, который вы можете использовать в своих проектах.
Читать полностью »
Погружение в разработку на Ethereum. Часть 2: Web3.js и газ
2017-08-30 в 12:32, admin, рубрики: Ethereum, gas, solidity, блокчейн, ПрограммированиеВ предыдущей статье мы описали деплой контрактов и взаимодействие с ними через пользовательский интерфейс кошелька Mist, но это не подходит для реальной разработки. Нужна библиотека, которая позволит работать с блокчейном из кода пользовательского приложения. В этой статье мы кратко рассмотрим что представляет собой библиотека Web3.js, пощупав ее из консоли Geth. И еще одна важная тема, которая наверняка интересует не только разработчиков, но и потенциальных заказчиков — сколько стоят транзакции на блокчейне, ведь каждая из них требует газа, который покупается за эфир.

Погружение в разработку на Ethereum. Часть 1
2017-08-23 в 10:57, admin, рубрики: blockchain, Ethereum, solidity, децентрализация, криптография, ПрограммированиеТехнология блокчейна завладела умами. Покупаются фермы, ICO собирают миллионы долларов. Наша компания тоже захотела приобщиться. Решили начать с малого. В серии статей будет описан наш путь от новичков в сфере блокчейна до общепризнанных гуру. На момент написания этих слов мы все еще на этапе новичков, предлагаем следить за нашим развитием и развиваться с нами.

Блокчейн-платформа для сделок торгового финансирования на базе смарт-контрактов
2017-07-13 в 7:19, admin, рубрики: blockchain, Ethereum, solidity, Storj.io, банки, Блог компании Райффайзенбанк, блокчейн, Программирование, разработка, финансы- Кратко о целях и результатах
- Задачи исследовательского проекта
- Общая схема платформы и взаимодействие её элементов
- Реализация смарт-контрактов для аккредитива
- Выбор компонентов платформы
- Инфраструктура
- Интеграция компонентов
- Подробное описание реализации Провайдера запросов
- На пользу сообщества
- Некоторые замечания по опыту интеграции сторонних компонентов
- Выводы исследования
22 июня 2017 года на Blockchain & Bitcoin Conference в Санкт-Петербурге наш аналитик направления блокчейн, Марина Сманцер, сделала доклад о результатах исследовательского проекта по созданию комплексной платформы для сделок торгового финансирования на основе смарт-контрактов.
20-минутный формат доклада не позволял подробно осветить технические аспекты. Поэтому выход Райффайзенбанка на habrahabr – прекрасная возможность рассказать о наших результатах во всех подробностях.
Отмечу, что статья рассчитана на понимание читателем основных аспектов технологии блокчейн и принципов работы смарт-контрактов. Так как обзор по каждой теме – это объем для отдельной статьи, мы рассчитываем на понимание хабрасообщества.
Читать полностью »
Смарт контракты Ethereum: структурируем токены как акции
2017-05-09 в 12:54, admin, рубрики: Ethereum, javascript, solidity, биллинговые системы, блокчейн, платежные системыВ настоящее время идет настоящая волна хайпа криптовалют и череда успешных ICO самых разнообразных проектов, в том числе имеющих весьма сомнительное или не имеющих вообще никакого отношения к децентрализации и другим базовым принципам блокчейн. В ходе ICO на продажу широкой публике выставляются некие виртуальные сущности – токены. Наполнение этих самых токенов какой-либо реальной «ценностью», как правило, уникально для каждого проекта. В рамках данной статьи я хочу рассмотреть структурирование токена как «акции», когда держатель этих токенов претендует на получение дивидендов от проекта, пропорционально имеющемуся у него проценту токенов от общей эмиссии. Это создает целый ряд правовых коллизий и неопределенностей, поэтому на сегодня нет ни одного крупного проекта, построенного по этой логичной и понятной для инвесторов модели, но юридические аспекты мы вынесем за скобки и остановимся лишь на технической реализации.
Читать полностью »
Пишем умный контракт на Solidity. Часть 1 — установка и «Hello world»
2016-10-07 в 9:16, admin, рубрики: bitcoin, blockchain, Ethereum, solidity, децентрализованные сетиЛюди, интересующиеся темой блокчейна, уже не раз слышали о проекте российско-канадского программиста Виталика Бутерина — Ethereum, а в вместе с ним и о так называемых умных контрактах. В данном цикле статей я постараюсь максимально просто описать суть Ethereum, умных контрактов, концепцию газа и показать, как пишутся умные контракты.
Smart Contract & Gas
Если на пальцах, "умный контракт" — это некоторый код, живущий внутри блокчейна. Любой участник сети может его вызвать за небольшую плату. Эта плата и называется Gas, дословно "топливо". Зачем это нужно? Для защиты майнера от злоупотребления мошенником его ресурсов.
Немногие знают, но даже в биткоине есть возможность писать эти самые контракты, но в силу некоторых причин этим мало кто занимается. Одна из главных проблем — язык Script не Тьюринг-полный и написать что-то более менее серьезное непросто (чтобы вы понимали масштаб проблемы — нет даже возможности добавить цикл). В случае с Ethereum все чуть по другому, языки Тьюринг-полные, и есть риск, что кто-то напишет контракт вида
// Это псевдокод
foo = 0;
while (True) {
foo++;
}
Понятно, что майнер, запустивший этот контракт, закончит нескоро и по факту просто потратит в никуда свои ресурсы. Вот чтобы такого не произошло, разработчики Ethereum и придумали газ — в реальности запускать код вроде того, что я написал, будет просто экономически нецелесообразно, потому что вызвавшему придется заплатить за каждое действие контракта.