- PVSM.RU - https://www.pvsm.ru -
Продолжаем серию материалов посвященных разработке с помощью технологий блокчейна. В этой статье разработчик из Waves рассказывает о том, как провести набирающий популярность ICO, а также об опыте поднятия ноды в облаке Azure.
В последнее время стал популярным уход от привычной модели IPO в пользу проведения ICO — initial coin offering — организационно куда более простого процесса. Техническая основа ICO — токены. Выпуск токенов происходит путём добавления в блокчейн транзакции с их описанием, количеством и уникальным ID. После выпуска любое количество токенов может быть отправлено на любой кошелёк в блокчейне.
ICO — это продажа компанией своих токенов в обмен на более-менее стабильные криптовалюты. Поскольку внешнего регулятора в лице государства тут нет, приходится полагаться на репутацию. Здесь в игру вступают эскроу — авторитетные люди или компании, кошельки которых используются для хранения средств до завершения ICO. В случае, если ICO завершилось, собрав денег меньше минимального порога, эскроу возвращают всё обратно инвесторам.
Иногда используют кошельки с несколькими подписями (multisig wallets). К примеру, для сети Bitcoin такие кошельки описаны здесь [10].
О том, как провести ICO на Waves, я расскажу дальше.
Криптовалютная платформа 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 Platform [13] в Azure Marketplace и нажимаем кнопку "Создать". Затем — несколько простых шагов по настройке вашей виртуальной машины с Waves на борту.
Первым делом, выберите название и создайте учётную запись. Также определитесь с типом диска, способом аутентификации и географическим расположением машины:
Теперь найдите подходящую вам конфигурацию железа:
И, наконец, сконфигурируйте сеть и уточните дополнительные параметры:
Осталось проверить настройки и оплатить подписку. Поздравляю, теперь вы — участник сети Waves!
Как уже упоминалось выше, DEX расшифровывается как "decentralized exchange" и позволяет торговать токенами, которые есть в блокчейне. Работа DEX обеспечивается матчером, который хранит ордера пользователей и отправляет в блокчейн транзакции обмена токенами для исполняющихся ордеров. Основное преимущество такой биржи — в том, что все деньги хранятся в кошельке пользователя, а матчер лишь сопоставляет ордера. Прежде чем попасть в блокчейн Waves, exchange-транзакции всегда проверяются нодами на соответствие цен в ордерах, чтобы матчер не мог внедрить "неправильные" транзакции.
В DEX не нужно ждать добавления новых валют, и это делает его удобной площадкой для быстрого проведения ICO: вы можете выпустить свой токен и, как только issue-транзакция окажется в блокчейне, выставить его на продажу.
Вкратце, процесс выглядит следующим образом:
Однако, у такой схемы есть и минусы. Во-первых, на данный момент в Waves отсутствуют multisig-кошельки, а значит, инвесторы должны полностью доверять создателю ICO или его эскроу. Во-вторых, чтобы оперировать криптовалютами, не родными для платформы, нужно сначала воспользоваться шлюзом для перевода средств из стороннего блокчейна в блокчейн Waves. Для "внешних" криптовалют внутри платформы созданы специальные токены, которые обмениваются один к одному с этой же валютой в её настоящем блокчейне.
Waves позволяет вести безопасную биржевую торговлю и проводить ICO и краудфандинговые кампании, одновременно являясь чем-то вроде sidechain-технологии для других этой статье [16].
Коммьюнити 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 находится в бета-версии, поэтому официальной документации пока что нет. Текущий черновик с описанием основых методов — под спойлером.
REST API server http://marketdata.wavesplatform.com/api/
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
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].
Вполне можно предположить, что через 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
Нажмите здесь для печати.