Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра с крипто-валютным бонусом, как сделать 
:(
    Опции темы
svinuga
  Дата 28.4.2018, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.4.2018

Репутация: нет
Всего: нет



Преамбула
Наверное, нет такого программиста, который не хотел бы написать популярную игру. Извините, сразу разочарую - сегодня мы не будем писать игру, мы будем её именно делать - возьмём готовую на Javascript (благо их, красивых и бесплатных сто-пятьсот), и довернём код игры так, чтобы по результатам игрок получал бонус в несколько сатоши. 

Зачем ? 
- очевидно, что игра, за которую платят, интереснее чем точно такая же игра, за которую - нет. 
- с морально-психологической точки зрения игрок теперь не время убивает - он деньги зарабатывает.
- на страничку игры, как на источник сатоши, появятся линки (но об чуть этом позже), которые приведут новых посетителей/игроков.
Малая же сатошечка - бонус  легко отбивается рекламой. 

Насторожившихся при слове "сатоши", попрошу вернуться к корням и скрепам:
Биткоин на Википедии
https://bitcoin.org/ru/

Остальные наверняка спросят: "Ну да, несколько сатоши игроку переслать, а комиссию сети Биткоин кто платить будет?!"

Верно. Минимальная комиссия биткоиновой транзакции будет больше тех десятков/сотен сатоши, которые можно безболезненно предложить игроку, а время передачи денег будет таким, что запоздалый бонус игрока скорее разочарует, чем мотивирует. 

Теория
Для решения проблем передачи небольших сумм существуют так называемые криптовалютные микроплатёжки. Появились они в первую очередь для обслуживания "bitcoin faucets", по-русски - "фосетов" или "крантиков". 
Как это работает: Плательщик (владелец крантика) кладет на свой счет некоторую сумму в криптовалюте. Потом он создает кран (faucet), или приложение (app) (терминология варьируются от системы к системе), и получает секретный ключ. Потом с этим ключом через API (например, такой API) скрипт с сайта плательщика говорит микроплатёжке что-то типа: "Я - такой-то (вот мой секретный ключ), приказываю заплатить такому-то биткойн-адресу столько-то сатоши." 
Конечно, никакой реальной транзакции сети Биткоин в этот момент не происходит.  Сатоши не покидают микроплатёжку, они просто переходят со счёта плательщика на счёт получателя. Зато мгновенно, бесплатно (небольшая комиссия берётся с плательщика при вводе денег в систему), и наглядно - получатель всегда может убедиться что его счёт пополнился.  
Настоящая же биткон-транзакция случится автоматически, когда сумма на счету получателя станет достаточно солидной, чтобы эту транзакцию пережить (примерно 20 000 сатоши).
Всё просто, правда ?

Ещё одна проблемка - для вызовов к API микроплатёжки нужны серверные скрипты, чтобы не "светить" секретный ключ. Но и это ограничение мы сейчас обойдём - сделаем игру, работающую исключительно на клиенте. 
Для этого понадобится ещё один сервис : Remote Faucets ("удалённые крантики" ? - не знаю как красиво перевести) - там можно сконфигурировать этот самый удалённый крантик, передав секретный ключ микроплатёжке в "доверительное управление", а в замен получить  HTML/Javascript,  позволяющий осуществить платёж прямо на клиенте.

Теория кончилась, давайте делать игру.
Сразу оговорюсь: все ресурсы ниже - англоязычные, русских аналогов мне найти не удалось. Но и читать там особо нечего, если умеете программировать на Javascript, то и с конфигурацией крантиков справитесь легко.  

Игра
В этом  примере давайте использовать BlockRain - добротный классический Тетрис на jQuery. Подходящих игр сотни, если не тысячи, а может быть у Вас и своя есть. 
В коде выбранной игры надо надо найти место, где игра заканчивается, то самое "Game Over". В BlockRain очень удобно, берётся <DIV>:
HTML
<div class="game" style="width:250px; height:500px;"></div>

Запускается вот так:
Код
$('.game').blockrain({showFieldOnStart: true});[/JS]
А по "Game Over" вызывается коллбэк:
[JS]onGameOver: function(score){
//вот тут мы спрячем игру, и покажем крантик с сатоши - бонусом 
//крантиков мы сделаем несколько, и выберем один,
// чем больше score, тем больше бонус  
}


Микроплатёжка
Микроплатёжку мы будем использовать опосредованно, через Remote Faucets, а там поддерживается три разных. Давайте выберем cryptoo.me
Преимущество этой - не надо сразу пополнять баланс (то, из чего будут платиться бонусы игрокам) "из крамана". Можно зарегистрироваться, найти в меню сверху Deposits,скопировать оттуда Bitcoin address (это тот самый адрес, куда надо переводить средства для пополнения баланса), а потом с этим адресом  прогуляться по списку крантиков cryptoo.me, и получить сатоши с них. Как раз на эксперименты хватит. 
Теперь займёмся нашими крантиками. Пусть в игре у нас будет три разных бонуса, соответственно - три крантика в My Faucets.  
Имена ("Faucet name") придумайте сами, хоть "Тетрис Бонус 1"..."Тетрис Бонус 3",  а вот Faucet URL должна указывать на страничку с игрой. На основании этой информации и создастся список крантиков, откуда (в том числе) придут игроки - собиратели сатоши.
Секретные ключи ("API keys") нам понадобятся на следующем этапе.
 
Remote Faucet/Удалённый крантик
Вот на этом этапе. Опять создаём три крантика (теперь "удалённых крантиков"), используя API keys. Имена и URL можно оставить теми же. Остальные параметры конфигурации расписывать нет смысла - там всё просто. 
Для каждого созданного удалённого крантика нам понадобится Faucet ID.

Код
На страничке с игрой добавьте ещё один  <DIV>, в нём будет показываться крантик - бонус. 
HTML
<!-- 
Этот id='wmexp-faucet-TO-BE' сейчас скрыт, 
потом мы выберем крантик в соответствии с результатом игры,
и покажем его здесь
-->
<div id='wmexp-faucet-TO-BE' style='display:none; min-height:600px;background-color:blue;'></div>
<!-- 
Этот div class="game" сейчас видимый, 
когда игра закончится - мы его спрячем, и покажем бонус
-->
<div class="game" style="width:250px; height:500px;"></div>


Теперь немножко нашего  любимого Javascript'а:
Код

<script>
show_reward = function(score)
{
    var rewards = [ //вместо 123456 должны быть ВАШИ значения Faucet ID 
    {score:10000, faucet_id:123456},//крантик - бонус за 10000 очков
    {score:30000, faucet_id:123456},// . . .
    {score:50000, faucet_id:123456}, //крантик - бонус за 50000 очков
    ];
     
    var faucet_id = rewards[0].faucet_id; 
    for(var i = 0; i [ rewards.length; i++)
    {
        if(score ]= rewards[i].score)
        {
            faucet_id = rewards[i].faucet_id;
        }
    }

    //прячем игру  
    document.querySelector('.game').style.display = 'none'; 
    //готовим DIV для крантика
    var faucet_div = document.getElementById('wmexp-faucet-TO-BE');
    faucet_div.style.display = 'block';
    //выставляем настоящее значение
    faucet_div.id = 'wmexp-faucet-'+faucet_id; 
    //добавляем скрипт - он покажет крантик 
    var script = document.createElement('script'); 
    script.src = 'https://wmexp.com/faucet/'+faucet_id+'/'; http://forum.vingrad.ru/act-UserCP/CODE-00.html
    document.head.appendChild(script);
}
</script>


Всё. Как работает можно посмотреть вот тут.
.

В статье использованы материалы Creating Remote Faucet и Game Bonuses

Если остались вопросы - не стесняйтесь ;)
PM MAIL   Вверх
_zorn_
Дата 28.4.2018, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Цитата(svinuga @  28.4.2018,  07:40 Найти цитируемый пост)
 (благо их, красивых и бесплатных сто-пятьсот)

Ну да, только для затеи либо ни один не подойдет, либо надо допиливать так что проще заного написать  smile 

В остальном наворотил какой то херни (извините). Какие то микроплатежи. Я тебе открою один секрет (но только ты его никому не рассказывай  smile ). Ты в своей системе можешь иметь "баланс" у пользователей. Реальных транзакций не будет. А когда вывод (а вывод ограничен минимумом), тогда уже с кошеля и спишется. А "баланс" это тупо цифра в базе. И клиент счастлив и ниче платить не надо пока не наберет достаточно )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1050 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.