- PVSM.RU - https://www.pvsm.ru -

Погружение в технологию блокчейн: Что такое ICO и как его провести

Продолжаем серию материалов посвященных разработке с помощью технологий блокчейна. В этой статье разработчик из Waves рассказывает о том, как провести набирающий популярность ICO, а также об опыте поднятия ноды в облаке Azure.

Погружение в технологию блокчейн: Что такое ICO и как его провести - 1

Цикл статей «Погружение в технологию блокчейн»

  1. Серия материалов, посвященных технологии Emer:
    1.1. Секреты EmerCoin [1].
    1.2. Децентрализованная нецензурированная система доменных имён [2].
    1.3. Инфраструктура публичных ключей всемирного масштаба [3].
    1.4. Децентрализованная беспарольная система безопасности [4].
  2. Быстрые и безопасные транзакции [5].
  3. Экосистема цифровой стоматологии [6].
  4. Борьба с контрафактными товарами [7].
  5. Взаимное страхование животных [8].
  6. Что такое ICO и как его провести [9].
  7. Loading....

Что такое ICO?

В последнее время стал популярным уход от привычной модели IPO в пользу проведения ICO — initial coin offering — организационно куда более простого процесса. Техническая основа ICO — токены. Выпуск токенов происходит путём добавления в блокчейн транзакции с их описанием, количеством и уникальным ID. После выпуска любое количество токенов может быть отправлено на любой кошелёк в блокчейне.

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

Иногда используют кошельки с несколькими подписями (multisig wallets). К примеру, для сети Bitcoin такие кошельки описаны здесь [10].

О том, как провести ICO на Waves, я расскажу дальше.

Waves Platform

Криптовалютная платформа Waves была запущена в апреле 2016 года, ICO-инвестиции составили 30 тысяч биткоинов, а на сегодняшний день капитализация платформы — более 100 миллионов долларов. В блокчейне Waves используется алгоритм Proof-of-stake, с минимальным майнящим балансом в 10 000 Waves.

Один из основных способов использования Waves — это именно проведение ICO. Сеть платформы состоит из так называемых нод (node — узел), которые сообщаются между собой и предоставляют API для использования клиентскими кошельками.

Основной программный интерфейс платформы — Node API, поддерживающий работу с различными транзакциями: переводом средств, выпуском токенов и лизингом Waves. Также нода предоставляет API децентрализованной биржи (DEX). Большинство методов API доступны из web-клиента, но их, конечно, можно использовать и напрямую. К примеру, получим список последних 20 неподтверждённых (ожидающих добавления в блокчейн) транзакций:

require('http').get({
    host: 'nodes.wavesnodes.com',
    port: 80,
    path: '/transactions/unconfirmed'
}, (res) => {
    let raw = '';
    res.on('data', (ch) => { raw += ch; });
    res.on('end', () => console.log(JSON.parse(raw)));
});

Полную документацию Node API [11] можно найти там же, где и подробное описание установки ноды [12]: в GitHub-репозитории.

Одно из преимуществ обладания Waves-нодой — это возможность майнинга. Нода, на балансе которой есть от 10000 Waves, участвует в генерации блоков, и за каждый сгенерированный блок она получает комиссию со всех транзакций, находящихся в блоке, а также бонус в виде некоторого количества MRT (Miners Reward Token), которым, в свою очередь, можно торговать на бирже.

Чтобы организовать майнящую ноду в сети Waves, нужно развернуть её на своём сервере. Никаких особых требований к железу у ноды нет, но 4 Гб оперативной памяти и 10 Гб свободного дискового пространства всё же стоит иметь. Также весьма удобный способ поднять ноду — это воспользоваться готовой виртуальной машиной в MS Azure.

Waves Node в Azure

Находим Waves Platform [13] в Azure Marketplace и нажимаем кнопку "Создать". Затем — несколько простых шагов по настройке вашей виртуальной машины с Waves на борту.

Первым делом, выберите название и создайте учётную запись. Также определитесь с типом диска, способом аутентификации и географическим расположением машины:

Погружение в технологию блокчейн: Что такое ICO и как его провести - 2

Теперь найдите подходящую вам конфигурацию железа:

Погружение в технологию блокчейн: Что такое ICO и как его провести - 3

И, наконец, сконфигурируйте сеть и уточните дополнительные параметры:

Погружение в технологию блокчейн: Что такое ICO и как его провести - 4

Осталось проверить настройки и оплатить подписку. Поздравляю, теперь вы — участник сети Waves!

DEX: простейший способ провести ICO

Как уже упоминалось выше, DEX расшифровывается как "decentralized exchange" и позволяет торговать токенами, которые есть в блокчейне. Работа DEX обеспечивается матчером, который хранит ордера пользователей и отправляет в блокчейн транзакции обмена токенами для исполняющихся ордеров. Основное преимущество такой биржи — в том, что все деньги хранятся в кошельке пользователя, а матчер лишь сопоставляет ордера. Прежде чем попасть в блокчейн Waves, exchange-транзакции всегда проверяются нодами на соответствие цен в ордерах, чтобы матчер не мог внедрить "неправильные" транзакции.

В DEX не нужно ждать добавления новых валют, и это делает его удобной площадкой для быстрого проведения ICO: вы можете выпустить свой токен и, как только issue-транзакция окажется в блокчейне, выставить его на продажу.

Вкратце, процесс выглядит следующим образом:

  1. Скачать WavesLiteApp [14] и купить некоторое количество Waves (например, через ShapeShift [15]).
  2. Перейти на вкладку Token Creation и создать новый токен (комиссия — 1 Waves).
  3. Немного подождать, а затем выставить токен на продажу во вкладке DEX, по той цене, которая обеспечит достижение цели по сбору средств вашего ICO. Можно создать ордера в нескольких парах, если вы хотите принимать разные валюты, и даже с разными ценами — чтобы создать бонусные условия для первых инвесторов.

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

Waves позволяет вести безопасную биржевую торговлю и проводить ICO и краудфандинговые кампании, одновременно являясь чем-то вроде sidechain-технологии для других этой статье [16].

Получаем данные о сделках на DEX из сервиса datafeed

Коммьюнити Waves активно ведёт собственные разработки, улучшающие и дополняющие платформу. Здесь я расскажу про datafeed — программу, интегрирующуюся с нодой и агрегирующую информацию о сделках, заключаемым через DEX.

Допустим, нам нужна история сделок по какой-нибудь паре, то есть, те ордера, exchange-транзакции от которых уже попали в блокчейн. Для этого используем метод /api/trades/{amountAssetId}/{priceAssetId}/{limit}. В качестве примера, запросим последние 50 сделок для пары WAVES/BTC:

require('http').get({
    host: 'marketdata.wavesplatform.com',
    port: 80,
    path: '/api/trades/WAVES/BTC/50'
}, (res) => {
    let raw = '';
    res.on('data', (ch) => { raw += ch; });
    res.on('end', () => console.log(JSON.parse(raw)));
});

Эти и другие данные из datafeed могут быть использованы для отслеживания хода ICO: например, для получения статистики по криптовалютам и размерам сделок при покупке ICO-токенов.

Проект datafeed находится в бета-версии, поэтому официальной документации пока что нет. Текущий черновик с описанием основых методов — под спойлером.

datafeed API

Waves Data Feed API (v1.3.2)

REST API server http://marketdata.wavesplatform.com/api/

REST API methods:

GET /symbols — get the list of symbols

GET /markets — get the list of all asset pairs traded, with ticker and matchers info

GET /tickers — get the tickers for all asset pairs traded

GET /ticker/{amountAsset}/{priceAsset} — get the ticker for the specified asset pair

GET /trades/{amountAsset}/{priceAsset}/{limit} — get the last {limit} trades for the specified asset pair. Response includes both unconfirmed and confirmed transactions (there is a confirmed boolean field on each reported tick)

GET /trades/{amountAsset}/{priceAsset}/{from_timestamp}/{to_timestamp} — get all trades (up to a max of 100) between {from_timestamp} and {to_timestamp}

GET /trades/{amountAsset}/{priceAsset}/{address}/{limit} — get the last {limit} trades for the specified {address} and asset pair

GET /candles/{amountAsset}/{priceAsset}/{timeframe}/{limit} — get the last {limit} candles for the specified asset pair and {timeframe} (valid timeframes are 5, 15, 30, 60, 240, 1440 minutes)

GET /candles/{amountAsset}/{priceAsset}/{timeframe}/{from_timestamp}/{to_timestamp} — get all candles between {from_timestamp} and {to_timestamp} with the specified {timeframe}

GET /matchers — get the list of all available matchers

Examples:

http://marketdata.wavesplatform.com/api/symbols [17]
http://marketdata.wavesplatform.com/api/markets [18]
http://marketdata.wavesplatform.com/api/ticker/waves/btc [19]
http://marketdata.wavesplatform.com/api/trades/mrt/btc/25 [20]
http://marketdata.wavesplatform.com/api/trades/waves/btc/1493121600000/1493488800000 [21]
http://marketdata.wavesplatform.com/api/trades/waves/btc/3PMAVpWdSqPWrLvkYRqukmSyhv6btc8rnVB/5 [22]
http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/10 [23]
http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/1493121600000/1493488800000 [24]

Both amountAsset and priceAsset can be Asset IDs or Asset Symbols. They can also be mixed. Symbols are case insensitive.

Authored by Peter Black [25].

Будущее платформы Waves

Вполне можно предположить, что через 10-15 лет криптовалюты и блокчейн-технологии будут настолько же привычными, насколько сегодня нам привычны пластиковые карты. Уже сейчас многие люди, особенно в развитых странах, начинают противиться контролю со стороны государства и банков. Это движение к децентрализации порождает множество проектов, подавляющему большинству которых необходимо финансирование, которое логичнее всего искать среди целевой аудитории — в криптовалютной индустрии.

Именно здесь, в области финансирования и проведения ICO, платформа Waves может занять ключевую позицию и стать одним из лидирующих игроков криптомира, позволяя новым проектам быстро и эффективно находить инвестиции.

Помимо ICO и токенизации, команда Waves ведёт исследования в области анонимного голосования на блокчейне, а также планирует разработку и внедрение защищённого месенджера на базе платформы.

Об авторе

Филипп Филиппак

Филипп Филиппак [26] — frontend-разработчик Waves Platform. Пришёл в профессиональную разработку в 2012 году, занимался различными проектами, в том числе Пробок.нет, LabicomConnect и timestore. Участвовал в gamedev-конкурсе js13kGames. В данный момент занимается разработкой ICO-платформы Lapti [27]. Увлекается software-архитектурой и изучением алгоритмов.

Автор: Microsoft

Источник [28]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/microsoft/255876

Ссылки в тексте:

[1] Секреты EmerCoin: https://habrahabr.ru/company/microsoft/blog/311690/

[2] Децентрализованная нецензурированная система доменных имён: https://habrahabr.ru/company/microsoft/blog/314368/

[3] Инфраструктура публичных ключей всемирного масштаба: https://habrahabr.ru/company/microsoft/blog/316326/

[4] Децентрализованная беспарольная система безопасности: https://habrahabr.ru/company/microsoft/blog/316864/

[5] Быстрые и безопасные транзакции: https://habrahabr.ru/company/microsoft/blog/312308/

[6] Экосистема цифровой стоматологии: https://habrahabr.ru/company/microsoft/blog/313130/

[7] Борьба с контрафактными товарами: https://habrahabr.ru/company/microsoft/blog/312054/

[8] Взаимное страхование животных: https://habrahabr.ru/company/microsoft/blog/323548/

[9] Что такое ICO и как его провести: https://habrahabr.ru/company/microsoft/blog/328896/

[10] здесь: https://en.bitcoin.it/wiki/Address#Multi-signature_addresses

[11] документацию Node API: https://github.com/wavesplatform/Waves/wiki/Waves-Node-REST-API

[12] описание установки ноды: https://github.com/wavesplatform/Waves/wiki/How-to-install-Waves-node

[13] Waves Platform: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/waves.waves?tab=Overview

[14] WavesLiteApp: https://chrome.google.com/webstore/detail/wavesliteapp/kfmcaklajknfekomaflnhkjjkcjabogm

[15] ShapeShift: https://shapeshift.io

[16] этой статье: https://gendal.me/2014/10/26/a-simple-explanation-of-bitcoin-sidechains/

[17] http://marketdata.wavesplatform.com/api/symbols: http://marketdata.wavesplatform.com/api/symbols

[18] http://marketdata.wavesplatform.com/api/markets: http://marketdata.wavesplatform.com/api/markets

[19] http://marketdata.wavesplatform.com/api/ticker/waves/btc: http://marketdata.wavesplatform.com/api/ticker/waves/btc

[20] http://marketdata.wavesplatform.com/api/trades/mrt/btc/25: http://marketdata.wavesplatform.com/api/trades/mrt/btc/25

[21] http://marketdata.wavesplatform.com/api/trades/waves/btc/1493121600000/1493488800000: http://marketdata.wavesplatform.com/api/trades/waves/btc/1493121600000/1493488800000

[22] http://marketdata.wavesplatform.com/api/trades/waves/btc/3PMAVpWdSqPWrLvkYRqukmSyhv6btc8rnVB/5: http://marketdata.wavesplatform.com/api/trades/waves/btc/3PMAVpWdSqPWrLvkYRqukmSyhv6btc8rnVB/5

[23] http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/10: http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/10

[24] http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/1493121600000/1493488800000: http://marketdata.wavesplatform.com/api/candles/waves/btc/1440/1493121600000/1493488800000

[25] Peter Black: https://twitter.com/p_blck

[26] Филипп Филиппак: https://habrahabr.ru/users/xenohunter/

[27] Lapti: http://lapti.co

[28] Источник: https://habrahabr.ru/post/328896/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best