Разработка на блокчейн
“Голос”
Дэн Лаример
2014 2015 2016 2017
Голос? Какой ещё голос? Голос телешоу?
- Форк Steemit;
- Graphene блокчейн с консенсусом DPoS - бесплатные транзакции!
- Медиаблокейн (социальная платформа) - система вознаграждений;
- Огромная производительность блокчейна: 10K транзакций в
секунду (TPS) (для примера в Ethereum 28 TPS);
- Легкость разработки приложений.
Голос для пользователей
Возможность заработка.
Голос для разработчиков
Это просто как база данных для приложения!
А также возможность заработка (монетизации)...
Проблемы для разработчиков на Голосе?
● Документация;
● Примеры;
● Плохой вывод об ошибках;
● Спрос на рынке?
Ещё интересные проекты на Steem
DTube - аналог YouTube
DSound аналог SoundCloud
Хакатоны и призы
- Fit4code
- GolosAnswers
- Shopot
- Bee Social
- Way2Share
- Beat Buy
- YourTarget
- CarData
Общий призовой фонд от Голоса составил 5700$
Из 24 команды 8 из них на БЧ Голос!
Steepshot
Заработок на фотографиях.
Так же сделали две библиотеки для работы с БЧ Голос:
- Ditch для С#
- Golodranets для Python
ViBoard (ВГолос)
Заработок на видео.
Смарт-контракты
Сейчас их нет… Но планируется…
Ну а ещё Вы можете сами написать плагин на С++ для блокчейна! ))
Но, но, но есть Escrow!
Открытый код
Открытый код на GitHub и MIT лицензия
Если нет исходников и используется бекенд = SCAM?!
Тонкий клиент
Это фронтенд приложения которые не используют бекенд
(собственные сервера) !
Весь код берётся прямо из GitHub (с помощью GitHub Pages).
Стоимость такого решения в месяц: 0$
Библиотеки для работы с голосом
“Оракулы”
Однако для реализации некоторой бизнес-логики приложения, иногда
требуется “оракул”. Для этого придётся использовать бекенд, где на
собственных серверах на NodeJS (например) будут происходить
вычисления.
Ну лучше стараться этого избегать…
Ключи
4 типа ключа:
- Ключ владельца (posting key);
- Активный ключ (active key);
- Постинг ключ (posting key);
- Ключ заметок (memo key);
Подключение
Frontend:
<script src="./golos.min.js"></script>
<script>
golos.config.set('chain_id',
'5876894a41e6361bde2e73278f07340f2eb8b41c2facd29099de9deef6cdb679');
</script>
Локально или через CDN:
https://cdn.jsdelivr.net/npm/golos-js@0.6.3/dist/golos.min.js
https://unpkg.com/golos-js@0.6.3/dist/golos.min.js
Backend:
npm install golos-js
const golos = require('golos-js');
golos.config.set('chain_id',
'5876894a41e6361bde2e73278f07340f2eb8b41c2facd29099de9deef6cdb679');
Переключение на TestNet
golos.config.set('websocket', 'wss://ws.testnet.golos.io');
golos.config.set('chain_id',
'5876894a41e6361bde2e73278f07340f2eb8b41c2facd29099de9deef6cdb679');
Добавление
var wif = '5K...';
var parentAuthor = '';
var parentPermlink = 'dev';
var author = 'epexa';
var permlink = 'test-url';
var title = 'test';
var body = 'test2';
var jsonMetadata = '{}';
golos.broadcast.comment(wif, parentAuthor, parentPermlink, author, permlink,
title, body, jsonMetadata, function(err, result) {
console.log(err, result);
});
Бенефициарство
При создании поста, можно указать бенефицаров.
При помощи метода: comment_options
beneficiaries: [
{ account: "goloscore", weight: 500 },
{ account: "epexa", weight: 500 }
]
Вес указывается из расчета 100% = 10000, 50% = 5000, 10% = 1000
и т.д.
Получение одной записи
var author = 'epexa';
var permlink = 'test-url';
golos.api.getContent(author, permlink, function(err, result) {
console.log(err, result);
});
Получение нескольких записей по тегам
var query = {
select_tags: ['dev', 'test'],
limit: 100,
//start_author: 'epexa',
//start_permlink: 'test-url'
};
golos.api.getDiscussionsByTrending(query, function(err, result) {
console.log(err, result);
});
Получение несколько записей по автору
var query = {
select_authors: ['epexa'],
select_tags: ['dev'],
limit: 100
};
golos.api.getDiscussionsByBlog(query, function(err, result) {
console.log(err, result);
});
Отправка голосов
var wif = '5J...';
var from = 'epexa';
var to = 'melnikaite';
var amount = '0.001 GOLOS';
var memo = 'gift';
golos.broadcast.transfer(wif, from, to, amount, memo,
function(err, result) {
console.log(err, result);
});
Получение приватных ключей
var username = 'epexa';
var password = 'P5H...'; // master password
var roles = ['owner', 'active', 'posting', 'memo']; // optional
parameter, if not specify, then all keys will return
var keys = golos.auth.getPrivateKeys(username, password, roles);
console.log('getPrivateKeys', keys);
Получение информации о аккаунте
var accounts = [ 'epexa', 'epexa2' ];
golos.api.getAccounts(accounts, function(err, result) {
console.log(err, result);
});
Голосование за статьюкоммент
var wif = '5J...';
var voter = 'epexa';
var author = 'melnikaite';
var permlink = 'golosico-provedenie-ico-na-blokchein-golos';
var weight = 10000; // 10000 (100 * 100) or 0 - vote cancel
golos.broadcast.vote(wif, voter, author, permlink, weight,
function(err, result) {
console.log(err, result);
});
Генерация ключей
var name = 'epexa4';
var password = 'qwerty12345';
var newKeys = golos.auth.generateKeys(name, password, ['owner', 'active',
'posting', 'memo']);
console.log('newKeys', newKeys);
Регистрация пользователя
var wif = '5K...';
var fee = '90.000 GOLOS';
var creator = 'epexa';
var newAccountName = name;
var owner = {
weight_threshold: 1,
account_auths: [],
key_auths: [[newKeys.owner, 1]]
};
var active = {
weight_threshold: 1,
account_auths: [],
key_auths: [[newKeys.active, 1]]
};
var posting = {
weight_threshold: 1,
account_auths: [],
key_auths: [[newKeys.posting, 1]]
};
Регистрация пользователя
var memoKey = newKeys.memo;
var jsonMetadata = '{}';
golos.broadcast.accountCreate(wif, fee, creator, newAccountName, owner, active, posting, memoKey,
jsonMetadata, function(err, result) {
console.log(err, result);
});
Спасибо за внимание!
Telegram: @epexa
Разработка на блокчейн Голос | Ерлан Шиндаулетов

Разработка на блокчейн Голос | Ерлан Шиндаулетов