Bitcoin Forum
July 05, 2024, 02:00:01 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 [267] 268 269 270 271 272 273 274 275 276 277 278 279 »
5321  Local / Майнеры / Re: Падение хешреита GTX 1080 ti on: July 03, 2020, 03:21:34 PM
Попробуйте запустить тесты эпох.
посмотрите 200,250,300,350 и 400ю Smiley
Если падение хешрейта вызвано увеличением ДАГ файла, значит это проблема у зеленых.
TeamRedMiner только для красных?
5322  Local / Новички / Re: Раздача мерита нуждающимся/Есть задания l on: July 03, 2020, 03:10:21 PM
Исправил. Текст разбиваю потому что уже имел негативный опыт. Вставил и не проверил что все отобразилось.
Когда  увидел, пришлось переводить и исправлять заново.
Как посмотреть сколько текста отобразиться и сколько влазит в 1 пост?


17. финальная часть

Руководство вероятно лучше публиковать последовательно, поэтому забрать на перевод можно в любом порядке, а публиковать только после того, как будет предыдущая готова.
бронирую,
 через 2 недели мое Activity позволит получить новый ранг Smiley
5323  Local / Майнеры / Re: Какое оборудование для майнинга посовет&# on: July 03, 2020, 12:06:05 PM
Если выбирать что-то из 5700 серии, то лучше посмотреть референстные видеокарты, т.е  ГПУ с турбиной. У них лучше охлаждение и турбина дольше работает.
В магазинах сейчас продаются нереференстные.
Asus выпустил брак
https://www.asus.com/ru/Graphics-Cards/TUF-3-RX5700XT-O8G-GAMING/
У этой ГПУ плохое охлаждение памяти и она греется более 100 градусов, потом сбрасывает частоты. И в магазинах эта видеокарта стоит дешевле 2х вентильных конкурентов от сапфира.

5324  Local / Альтернативные криптовалюты / Re: 🔹🅰RK🔹[ANN] ARK - Криптoвaлютнaя Экocиcтeмa🔹 ICO Зaвepшeнo on: July 03, 2020, 11:35:17 AM
Перевод. Оригинальная статья: Launching HTML5 Games In The ARK Desktop Wallet — Part Five
https://blog.ark.io/launching-html5-games-in-the-ark-desktop-wallet-part-five-a2cf1d32be20

Запуск HTML5 игр в ARK Desktop Wallet - часть пятая


Теперь мы подошли к предпоследней части нашей серии, посвященной тому, как запускать HTML5-игры в ARK Desktop Wallet с помощью плагина ARK Core и Construct 3 . Если вы следовали за всеми предыдущими частями этой серии, вы успешно построили с нуля полностью рабочую блокчейн игру с помощью сообщений Smartbridge, сделав интеграцию лобби, для совершения ставок и пари на матч.

Хотя наша игра является полностью функциональной, мы еще не реализовали никакой логики призов, кроме начального соответствия ставок. То есть, победители не получают приза, и в случае ничьей ставки не возвращаются. Тем не менее, это будет предметом сегодняшнего урока.

Если вы впервые к нам присоединяетесь, обязательно ознакомьтесь с первой частью нашей серии руководств.

Это руководство полностью основано на плагине ARK Core, поэтому мы не будем вносить какие-либо изменения в наш проект Construct 3 все это время. Чтобы начать, откройте файл manager.ts в любом текстовом редакторе!

Реализация призовой логики

Прежде чем мы начнем, мы должны импортировать транзакции из крипто библиотеки ARK. Для этого найдите:

Code:
import { Identities } from “@arkecosystem/crypto”;

Замените его на:

Code:
import { Identities, Transactions } from “@arkecosystem/crypto”;// Now, we’ll examine the relevant part of our existing generateState function to see what happens when a game is won or tied:if (outcome !== “ongoing”) {
    break;
}

Помните, что в случае ничьей значение переменной результата будет “tie”, и если кто-то выиграл, значение переменной результата будет 1 или 2, в зависимости от того, был ли победителем игрок 1 или игрок 2. В противном случае значение будет “ongoing”.

Из этого фрагмента кода мы видим на данный момент, что если значение исходной переменной не “ongoing”(т. е. игра выиграна или сыграна вничью), то наш цикл заканчивается, но больше ничего не происходит. Давайте продолжим и пересмотрим этот код сейчас для включения логики, чтобы платить нашим игрокам. Поскольку код выполняется только в том случае, если игра выиграна или сыграна вничью, мы должны это проверить Если это так, мы возвращаем ставку обоим игрокам. Если нет, это означает, что игрок выиграл игру, поэтому должен получить весь приз, который является суммой обеих ставок:

Code:
if (outcome !== "ongoing") {
    if (outcome === "tie") {
        this.pay(address, players, wager);
    } else {
        this.pay(address, players[outcome], wager * 2);
    }
    break;
}

Конечно, мы все еще должны написать нашу функцию оплаты. В случае ничьей объект игроков (который содержит адреса обоих игроков) отправляется в нашу функцию. Когда игра выиграна, просто адрес победителя отправляется в нашу функцию в виде строки. Это означает, что наша функция оплаты будет знать, какой сценарий происходит, проверяя, являются ли переданные ей данные объектом адресов (tie) или единственной адресной строкой (win).

ARK Core 2.6 представил широкий спектр полезных функций, которыми мы можем воспользоваться здесь. Первый - это nonces. Проще говоря, каждая транзакция из отправляющего кошелька должна иметь уникальное значение nonce и строго на единицу больше значения nonce самой последней транзакции, отправленной из кошелька. Мы можем использовать это, чтобы проверить значение nonce нашего игрового кошелька - если значение равно нулю, это означает, что мы еще никому не заплатили, поэтому мы должны это сделать. Если значение nonce не равно 0, мы уже заплатили за эту игру. Это предотвращает случай, когда игрокам платят несколько раз (например, когда вы перезапускаете свой плагин и состояние игры восстанавливается).

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

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

1.Если nonce кошелька не равен нулю, мы уже заплатили, поэтому мы должны выйти.
2.Мы получаем пароль для кошелька игры и его открытый ключ.
3.Если данные, переданные в функцию, представляют собой одну строку, мы генерируем стандартную транзакцию перевода на указанную сумму за вычетом комиссии за транзакцию и отправляем ее по адресу в строке.
4.Если предоставленные данные являются объектом, содержащим несколько адресов, мы генерируем транзакцию с несколькими платежами для обоих игроков с указанной суммой за вычетом комиссии за транзакцию.
5.Как только наша транзакция была сгенерирована, мы подписываем ее и транслируем в сеть.

Мы можем сделать это следующим образом:

Code:
private pay(sender: string, recipient: string | object, amount: number) {
    const wallet = app.resolvePlugin("database").walletManager.findById(sender);        if (wallet.nonce.toString() !== "0") {
        return;
    }    const passphrase = this.addresses[sender];
    const publicKey = Identities.PublicKey.fromPassphrase(passphrase);
    const fee = "1000000";
    const payAmount = (amount — parseInt(fee)).toString();
    let transaction;        if (typeof recipient === "string") {
        transaction = Transactions.BuilderFactory.transfer().nonce("1").senderPublicKey(publicKey).recipientId(recipient).fee(fee).amount(payAmount).vendorField("You won the game, congratulations!");
    } else {
        transaction = Transactions.BuilderFactory.multiPayment().nonce("1").senderPublicKey(publicKey).fee(fee).vendorField("The game was tied. Here is your wager!");
        transaction.addPayment(recipient[1], payAmount);
        transaction.addPayment(recipient[2], payAmount);
    }        const signedTransaction = transaction.sign(passphrase).build();
    app.resolvePlugin("p2p").getMonitor().broadcastTransactions([signedTransaction]);
}

Следующие шаги

Поздравляем, наша игра на блокчейне теперь может рассчитывать, присуждать, выплачивать призы или возвращать вступительные взносы в случае ничьей. Наша отдельная игра завершена! В заключительной части нашей серии руководств мы настроим нашу игру как плагин внутри ARK Desktop Wallet.

Если вы застряли в какой-то момент, обязательно ознакомьтесь с нашими документами в центре обучения ARK. Кроме того, наша команда и разработчики активны в Slack , поэтому не стесняйтесь обращаться к нам!

Проверьте предыдущие статьи из этой серии здесь:

     Часть первая: Как импортировать адрес кошелька ARK в ваше приложение
     Часть вторая: Создание бэкенда для вашего плагина
     Часть третья: Как заставить вашу игру работать с системой ставок
     Часть четвертая: Внедрение игровой логики в ваш плагин
5325  Local / Новички / Re: Раздача мерита нуждающимся/Есть задания l on: July 03, 2020, 11:11:11 AM

16. пятая часть

Руководство вероятно лучше публиковать последовательно, поэтому забрать на перевод можно в любом порядке, а публиковать только после того, как будет предыдущая готова.
забронировал

Опубликовал
https://bitcointalk.org/index.php?topic=1661696.msg54725487#msg54725487

Удачно, что 4 часть досталась не мне Smiley Я даже не знаю как бы справился с таким волшебным скриптом.
Жду новых интересных заданий
5326  Local / Бayнти и aиpдpoпы / Re: Подписная кампания Р2Р платформы Paxful on: July 02, 2020, 07:12:05 AM
https://etherscan.io/address/0x4802F6D9b60593eac171B5F42D465302143f7BC5

мне ничего не пришло
5327  Local / Работа / Re: Срочно ищу Крипто Энтузистов для работы on: June 30, 2020, 10:29:45 PM
Ищу крипто любителей для активности в телеграм группах! Будет еженедельная оплата в токенах торгующий на бирже
~

Каждый раз, когда ищут энтузиастов или любителей - у меня всегда возникает вопрос, может быть что-то новое будет в очередном предложении? Smiley Но здесь слово "токены" резко отпугивает Smiley

Значит так, ТС. Раз вы написали свою тему на этом форуме в разделе Работа - значит самым правильным будет и свой оффер прописать в этой теме, с деталями. А то тут не особо хорошее отношение к новичкам, которые сулят позолоченные слитки, оптом - лишь бы им в телеграм написали. Таких предложений по тексту полно - и отношение к ним, как к разводу, потому что нет информации. Расскажите, может быть вы действительно отличаетесь?

Хотелось бы посмеяться, но вы полностью правы на счет развода. Не советую работать с проектом, токен CRAD, если кому интересно.

Я маркетолог, мне написал это парень в телеграм, я подготовила ему предложение по продвижению из которого он выбрал таргетинг (скорее всего из-за того что я тесты провожу бесплатно, заказчик оплачивает только рекламу), договорились сделать 5 тестов с бюджетом в 30$ (в общем). Сейчас самое смешное, он скинул 5$, которые мне потом пришлось вернуть, потому что он ожидал огромный поток трафика за 5$.

Если вы работали с фейсбук, то знаете что 5$ это минимальный бюджет для одного теста, я растянула на 2, естественно реклама не успела "раскачаться", поэтому было всего 10 переходов. Короче, пассажир зажал деньги на один полноценный тест и потом еще пытался выяснять отношения. Я просто взяла кошелек и вернула, потому что доказывать таким людям что то бессмысленно https://blockchair.com/ethereum/transaction/0x46b2a928ee887e8855a37843c385a4b9651e279576ff5398b0c167fef64130f0

Впрочем, сама виновата, что за это взялась. Надеюсь кому то сохраню время  Smiley


 
Полезный отзыв. Нужно чаще заходить в этот раздел.
кликнул на ссылку, и сначала не понял зачем миллионерша Smiley с балансом 1300 кефира берет работу за 5 уе и платит комиссию 60 Gwei.
https://blockchair.com/ru/ethereum/address/0xea81ce54a0afa10a027f65503bd52fba83d745b8

вывод был из адреса биржи
5328  Local / Майнеры / Re: Падение хешреита GTX 1080 ti on: June 30, 2020, 04:47:18 PM
На 1080 ти наблюдается снижение хешрейта у товарищей тоже. Их душат до 45 мх или переходят на другие алгоритмы, где тишка показывает хорошие результаты.
С чем это связано, неизвестно, но 1080 ти с кефира уходят
5329  Local / Новички / Re: За вами уже выехали. on: June 29, 2020, 03:05:56 PM
Может жить нужно скромнее, не снимая элитные тачки с дорогой недвижимостью и не употребляь элитное порево?
Если дураку на голову упадет состояние, тот его быстро спустит сам или помогут.
Чтобы за вами выехали, наверно нужно сильно наследить. Криптовалюта не сильно отличается от фиатных денег и принципов финансовой безопасности.
5330  Local / Работа / Re: Помощь в ремонте блока питания Corsair RM850i 850W on: June 29, 2020, 02:53:44 PM
Авито захламлено БУ блоками, за 3 тысячи можно купить лучше и мощнее.Схему вам никто не даст, их нет в открытом доступе.АСЦ блоки не чинят, диагностика и возврат в Китай
5331  Local / Майнеры / Re: Ожидаемые топовые ГПУ 2020 on: June 26, 2020, 04:32:01 PM
https://www.youtube.com/watch?v=Rc93MyGE0bM
ДВА ЧИПА У RTX 3090 новый уровень мощи. Выкидывайте свои видеокарты

На видео объяснили почему у карты 1вентилятор. У RTX 3 серии будут 2 процессора: основной и сопроцессор для расчета лучей на обратной стороне платы, где и будет 2 вентилятор.

майнить этот сопроцессор будет?
Это только один из проектов новой СО, или новая утка для АМД
Цена топовых видеокарт сейчас сопоставимы со стоимостью автомобиля. 2ХХХ линейки не очень пользуется спросом, т.к много геймеров до сего дня играют на 1080ти 11 гб.
Причин для массового спроса не наблюдаю, если эти видеокарты будут окупаться в майнинге около 3х и более лет

5332  Local / Новички / Re: Раздача мерита нуждающимся/Есть задания l on: June 26, 2020, 10:57:59 AM
14. Третья часть этого руководства: Launching HTML5 Games In The ARK Desktop Wallet — Part Three
15. четвёртая часть
16. пятая часть
17. финальная часть

Руководство вероятно лучше публиковать последовательно, поэтому забрать на перевод можно в любом порядке, а публиковать только после того, как будет предыдущая готова.
14 забрал
опубликовал
https://bitcointalk.org/index.php?topic=1661696.msg54685845#msg54685845
5333  Local / Альтернативные криптовалюты / Re: 🔹🅰RK🔹[ANN] ARK - Криптoвaлютнaя Экocиcтeмa🔹 ICO Зaвepшeнo on: June 26, 2020, 10:56:18 AM
Теперь добавьте еще одно дополнительное событие в событие Websocket -> On Text Message, чтобы проанализировать данные лобби. Выберите JSON, а затем Has Key. Введите «games», затем нажмите Готово. Нажмите «Добавить действие» для нашего вновь созданного дополнительного события и перейдите к «Система»> «Установить значение». Мы хотим установить для нашего объекта JSON значение JSON.get («games»). Нажмите Готово.

Мы добавим еще одно дополнительное событие для Websocket -> В текстовом сообщении, чтобы сохранить сетевой символ токена. Снова выберите JSON> Has Key. Введите «symbol», выберите «Готово», нажмите «Добавить действие» и выберите «Система»> «Установить значение». Установите для Symbol значение JSON.get («Symbol»).

Далее мы собираемся создать функцию для анализа данных нашего лобби. Щелкните правой кнопкой мыши пустую область и выберите «Добавить функцию». Назовите это ParseLobby. Вернитесь к нашему дополнительному событию для «games» и выберите «Добавить действие», затем «Функции»> «ParseLobby». Затем найдите наше предыдущее событие, где мы установили наш текст «Адрес действителен!» и добавьте еще одно действие к нему. Выберите «Система»> «Установить значение» и установите для переменной ValidatedAddress значение TextInput.Text. Теперь выберите «Добавить действие», затем «Функции»> «ParseLobby».


Наши модифицированные события

Найдите нашу функцию ParseLobby и выберите Добавить действие. Выберите Добавить сценарий. Теперь мы собираемся ввести наш код, чтобы проанализировать список лобби и заполнить наши фреймы:

Code:
const games = JSON.parse(runtime.globalVars.JSON);
const newGames = [];
const existingGames = [];
const ourGames = [];for (const address of Object.keys(games)) {
    const game = games[address];        if (game.players[2]) {
        existingGames.push({ address, game });                if (game.players[1] === runtime.globalVars.ValidatedAddress || game.players[2] === runtime.globalVars.ValidatedAddress)
            ourGames.push({ address, game });
        }
    } else {
        newGames.push({ address, game });
    }
}let html = "";for (const game of newGames) {
    const wager = (game.game.wager / 100000000);
    html += "<div>New game by " + game.game.players[1] + " for " + wager + runtime.globalVars.Symbol + " (<a href='ark:" + game.address + "&amount=" + wager + "'>Join</a>)</div>";
}document.getElementById("NewIframe").contentWindow.document.body.innerHTML = html;
html = "";for (const game of existingGames) {
    const wager = game.game.wager / 100000000;
    html += "<div>Game between " + game.game.players[1] + " and " + game.game.players[2] + " for " + wager + runtime.globalVars.Symbol + "</div>";
}document.getElementById("ExistingIframe").contentWindow.document.body.innerHTML = html;
html = "";for (const game of ourGames) {
    const wager = game.game.wager / 100000000;
    html += "<div>Game between " + (game.game.players[1] === runtime.globalVars.ValidatedAddress ? "you" : game.game.players[1]) + " and " + (game.game.players[2] === runtime.globalVars.ValidatedAddress ? "you" : game.game.players[2]) + " for " + wager + runtime.globalVars.Symbol + "</div>";
}document.getElementById("OurIframe").contentWindow.document.body.innerHTML = html;

Вы можете спросить, что  делает код? Он будет проходить через все наши игры, и если будет два игрока, то это уже существующая игра, в противном случае это новая игра, и будет показана ссылка для автоматической отправки транзакции, чтобы присоединиться к игре, используя  ark: URI, про которую мы писали в последнем уроке. Если адрес совпадает с нашим, он добавит игру в третью колонку для удобства идентификации. Конечно, вы можете поиграть с HTML-кодом и добавить стили к элементам div внутри наших фреймов, чтобы сделать его по-настоящему популярным!

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

Следующие шаги

Поздравляем с окончанием третьего урока! Сегодня мы узнали, как анализировать блокчейн для создания лобби и сопоставления ставок, при этом данные автоматически обновляются в клиенте без обновления вручную. В следующем уроке мы будем играть с полем «smartbridge field», также известным как vendor field, чтобы реализовать пошаговую игровую логику, чтобы сделать нашу игру рабочей.

Если вы застряли в какой-то момент, обязательно ознакомьтесь с нашими документами в центре обучения ARK. Кроме того, наша команда и разработчики активны в Slack , поэтому не стесняйтесь обращаться к нам!
5334  Local / Альтернативные криптовалюты / Re: 🔹🅰RK🔹[ANN] ARK - Криптoвaлютнaя Экocиcтeмa🔹 ICO Зaвepшeнo on: June 26, 2020, 10:44:31 AM
Это будет проходить через все наши сгенерированные адреса и вызывать нашу еще не написанную функцию generateState для генерации их игрового состояния при первой загрузке нашего плагина.

Затем найдите, где мы слушаем входящие транзакции, которые мы написали в нашем последнем уроке:

Code:
emitter.on(ApplicationEvents.TransactionApplied, transaction => {
    if (this.addresses[transaction.recipientId]) {
        for (const websocket of server.clients) {
            // @ts-ignore
            if (websocket.readyState === WebSocket.OPEN && websocket.address === transaction.recipientId) {
                websocket.send(JSON.stringify({ transaction }));
            }
        }
    }
});

Во-первых, в верхней строке измените транзакцию на асинхронную, чтобы наша функция была асинхронной. Затем посмотрите строку for (const websocket of server.clients) Непосредственно перед этой строкой добавьте это, чтобы восстановить состояние любого игрового адреса, который получает новую транзакцию, как только она записывается в базу данных блокчейна:

Code:
while (!(await app.resolvePlugin(“database”).transactionsBusinessRepository.findById(transaction.id))) {
    await delay(100);
}await this.generateState(transaction.recipientId);

Теперь пришло время написать эту неуловимую функцию generateState. Найдите наш блок кода, в котором мы написали функцию generateAddress, и непосредственно под этим блоком мы напишем наш новый код generateState:

Code:
private async generateState(address: string) {
    const database = app.resolvePlugin("database");
    const publicKey = Identities.PublicKey.fromPassphrase(this.addresses[address]);        const transactions: any[] = await Promise.all(
        (await database.transactionsBusinessRepository.search({
            limit: 0,
            walletAddress: address,
            publicKey
        })).rows.map(async transaction => ({
            amount: transaction.amount,
            recipientId: transaction.recipientId,
            senderId: Identities.Address.fromPublicKey(transaction.senderPublicKey, app.getConfig().get("network.pubKeyHash")),
            timestamp: (await database.blocksBusinessRepository.findById(transaction.blockId)).timestamp,
            vendorField: transaction.vendorField ? transaction.vendorField.toString().trim().toUpperCase() : null
        })
    ));        transactions.sort((a: any, b: any) => (a.timestamp > b.timestamp) ? 1 : ((b.timestamp > a.timestamp) ? -1 : 0));        const players = { 1: null, 2: null };
    let wager = 0;
    for (const transaction of transactions) {
        if (transaction.senderId !== address && transaction.amount >= 10000000) {
            players[1] = transaction.senderId;
            wager = transaction.amount;
            break;
        }
    }        if (!players[1]) {
        return;
    }        for (const transaction of transactions) {
        if (transaction.senderId !== address && transaction.senderId !== players[1] && transaction.amount === wager) {
            players[2] = transaction.senderId;
            break;
        }
    }        this.gameStates[address] = { players, wager };
}

Это была большая работа за короткий промежуток времени, поэтому давайте разберемся с тем, что мы только что сделали. Мы передаем сгенерированный игровой адрес в эту функцию и преобразуем соответствующую парольную фразу в открытый ключ, который нам необходим для поиска всех входящих и исходящих транзакций с адреса кошелька. Мы извлекаем сумму, кошелек получателя, кошелек отправителя, отметку времени и сообщение smartbridge для каждой транзакции и сортируем их в хронологическом порядке. Затем мы перебираем транзакции от самых старых до самых новых, чтобы найти первую входящую транзакцию стоимостью не менее 1 ARK; сумма становится ставкой, а адрес игрока распределяется как игрок 1. Если соответствующий адрес не найден, игра недействительна, поэтому мы отменяем. В противном случае, мы повторяем транзакции, чтобы найти другого игрока, который соответствует ставке. Этот адрес становится игроком 2. Затем мы добавляем адреса и ставки игроков в наш объект gameStates.
Передача списка игр клиенту

Если вы сделали это, отлично! Мы завершили логику создания лобби и управления ставками. Следующим шагом является отправка наших данных через WebSocket нашему клиенту. Мы сделаем это, как только клиент подключится и когда состояние какой-либо игры изменится, поэтому наш клиент покажет самую последнюю информацию. Это займет всего несколько строк кода.

Найдите:
Code:
websocket.send(networkData);

Сразу после этого добавьте:

Code:
websocket.send(JSON.stringify({ games: JSON.stringify(this.gameStates) }));
// This will send all our game states to the client as soon as it connects.// Lastly, find:
for (const websocket of server.clients) {
    // @ts-ignore
    if (websocket.readyState === WebSocket.OPEN && websocket.address === transaction.recipientId) {
        websocket.send(JSON.stringify({ transaction }));
    }
}

И заменить его на:

Code:
const state = JSON.stringify({ games: JSON.stringify(this.gameStates) });for (const websocket of server.clients) {
    if (websocket.readyState === WebSocket.OPEN) {
        websocket.send(state);                // @ts-ignore
        if (websocket.address === transaction.recipientId) {
            websocket.send(JSON.stringify({ transaction }));
        }
    }
}

Это повторно отправит наши игровые состояния всем подключенным клиентам, если какое-либо из состояний изменится, чтобы клиент синхронизировался.

Мы закончили нашу работу с Core для этой части урока! Выполните сборку, чтобы собрать последнюю версию нашего плагина, а затем перезапустите Core.

Фильтрация игр по их состоянию

Наш последний шаг - связать все это вместе в Construct 3 и иметь возможность фильтровать игры, чтобы отделить новые игры от существующих, и показать, в каких играх мы участвуем сами. Мы сделаем все это в Construct 3, так что запустите редактор игры, и мы можем начать.

Перейдите в Layout Editor для Layout 1 и добавьте 3 новых объекта iframe. Назовите их NewIframe, ExistingIframe и OurIframe. В первом кадре будут перечислены новые игры, ожидающие соперника, во втором - все игры с соответствующими ставками, а в третьем - игры, в которых участвует наш адрес. Для каждого добавленного объекта iframe установите идентификатор, соответствующий назовите и удалите значения URL по умолчанию.

Перейдите к нашему Листу событий 1 и щелкните правой кнопкой мыши пустую область нашего листа событий и выберите Добавить глобальную переменную. Назовите это «JSON», который должен быть String. Повторите это, но назовите нашу следующую глобальную переменную «ValidatedAddress». Сделайте это еще раз, но назовите нашу новую переменную «Symbol».


Глобальные переменные должны выглядеть так в верхней части таблицы событий
5335  Local / Альтернативные криптовалюты / Re: 🔹🅰RK🔹[ANN] ARK - Криптoвaлютнaя Экocиcтeмa🔹 ICO Зaвepшeнo on: June 26, 2020, 10:20:17 AM
Перевод. Оригинальная статья Launching HTML5 Games In The ARK Desktop Wallet — Part Three
https://blog.ark.io/launching-html5-games-in-the-ark-desktop-wallet-part-three-74fc5398b96f


Запуск HTML5 игр в ARK Desktop Wallet - часть третья

Добро пожаловать в третий урок из нашей серии о запуске игры HTML5 в ARK Desktop Wallet! Эта серия предназначена для разработчиков всех уровней квалификации. Цель этой серии - преобразовать игру HTML5 в полноценный плагин для ARK Desktop Wallet.

В предыдущих частях (Первая часть и Вторая часть) мы настраивали базовый игровой клиент, используя Construct 3, который взаимодействует с нашим собственным плагином ARK Core для проверки адресов и отправки и получения транзакций в блокчейне.

Теперь пришло время заставить игру работать со ставками и создать лобби для запуска игр и просмотра уже существующих! Но давайте не будем забегать вперед, реальная игровая логика появится в следующей части этой серии, поскольку мы все еще закладываем основы для взаимодействия с сетью и блокчейном. Хорошая новость заключается в том, что код, который мы написали в этих предыдущих частях, может быть повторно использован в будущих проектах, так что у вас будет прочная база для взаимодействия между вашими будущими игровыми клиентами и ARK Core, без необходимости переделывать всю работу снова.

Как и в прошлый раз, мы собираемся сосредоточиться на нашем плагине ARK Core, а затем расширить наш проект Construct 3 для взаимодействия с ним. К концу этого урока мы сможем:
Отслеживать все сгенерированные игровые адреса и сохраняйте их на диск, чтобы наши ставки и игры не терялись при перезапуске Core.
Записать ставку и убедиться, что партнер платит правильную сумму.
Передать список игр клиенту.
Фильтрация игр по их состоянию, т. е. Ожидают ли они партнера, завершены, или один из участников является нашим собственным подтвержденным адресом, чтобы отличать наши собственные игры.

Итак, давайте не будем тратить больше времени - откройте файл manager.ts в вашем любимом текстовом редакторе, и мы приступим к работе!
Отслеживание всех сгенерированных игровых адресов для сохранения

В нашем последнем уроке нам уже удалось сгенерировать новый ARK-адрес для приема транзакций. Возможно, вы заметили, что сгенерированные адреса хранятся только в памяти и будут потеряны при перезапуске Core, без возможности восстановить сгенерированную фразу-пароль для последующей передачи ставок, отправленных на адрес. Чтобы исправить это, мы собираемся сделать так, чтобы эти данные сохранялись, сохраняя наш список игровых адресов и парольных фраз как отдельный объект на диске.

Есть разные возможности. Например, вы можете захотеть использовать базу данных, будь то PostgreSQL, MySQL, SQLite3 или другие, но мы собираемся упростить задачу и использовать уже созданную библиотеку под названием FluiDB. Мы можем просто создать новый объект FluiDB для хранения наших игровых адресов, и он будет автоматически и прозрачно загружать и сохранять данные на диск для постоянного хранения, не беспокоясь о написании беспорядочных SQL-запросов или изобретении нашей собственной структуры данных.

Давайте импортируем FluiDB в наш проект, выполнив следующую команду на нашем сервере для установки библиотеки:
Code:
lerna add fluidb — dev
Теперь мы импортируем связь в наш плагин, добавив следующие строки в начало нашего файла manager.ts:
Code:
import delay from "delay";
import FluiDB from "fluidb";// Replace our previous implementation with FluiDB. Find:
private addresses = {};// Replace it with:
private addresses = new FluiDB(`${process.env.CORE_PATH_DATA}/generated-addresses`);
private gameStates = {};

Мы это сделали! Теперь это автоматически сохранит все наши сгенерированные адреса и парольные фразы в файле с именем generate-address.json в нашей папке данных Core, и будет прозрачно загружать их обратно в наш объект адресов при каждом перезапуске Core. Это также импортировало другой пакет, delay, и объявило другую переменную, gameStates, в ожидании нашего следующего раздела.

Записать ставку и убедиться, что наш партнер ей соответствует

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

Для простоты мы собираемся создать функцию, которая будет перебирать все транзакции для данного кошелька, чтобы генерировать его состояние. Под состоянием мы подразумеваем адреса участников и суммы ставок, а также пошаговые данные, такие как состояние доски, хотя мы не будем переходить к пошаговым вкусностям до следующей части этой серии. Затем при запуске мы будем вызывать эту функцию для каждого из адресов, которые мы загрузили из нашего объекта FluiDB, и каждый раз, когда один из наших адресов получает новую транзакцию, мы будем восстанавливать состояние для этого адреса, чтобы убедиться, что он находится в синхронизации с тем, что хранит блокчейн.

Найдите нашу строку здесь, где мы объявляем нашу функцию запуска:
Code:
public start(options: any) {// Make it asynchronous by adding the async keyword, so it looks like this:
public async start(options: any) {

Находим
Code:
const networkData = JSON.stringify({ networkVersion: config.get(“network.pubKeyHash”) });

Меняем код
Code:
const networkData = JSON.stringify({
    networkVersion: config.get("network.pubKeyHash"),
    symbol: config.get("network.client.symbol")
});//On the next line, add the following block of code:
for (const address of Object.keys(this.addresses)) {
    this.generateState(address);
}

5336  Local / Майнеры / Re: Whatsminer асики обзор новинок on: June 26, 2020, 09:47:15 AM

Когда окупится  M30S ++? если профит за минусом энергии 5 долларов в сутки?

Смотрю на сайтах AsicMinerValue и WhatToMine, там показывают, что и M30S++, и S17 имеют отрицательную доходность согласно текущей стоимости Bitcoin, равной примерно $9250. Поэтому я полагаю, что упомянутые устаревшие асики Antminer S9 могут использоваться разве что для майнинга криптовалюты Digibyte, которая тоже базируется на алгоритме SHA256 и у которой сейчас относительно низкий хешрейт сети, но более высокая цена монеты.

Если вы пользуйтесь сайтами для калькуляции прибыли, то выставите правильно стоимость 1 киловатта. По умолчанию 0,1 или 0,12. При таких значениях майнинг убыточен даже на самом современном оборудовании. 0,03-0,045 это цены унас.

Габариты наверное имеют самое последнее значение, если сравнивать M30S ++ и S9. В гаражах асики не ставят, соседи охренеют.
Асикам нужна либо хорошая вентиляция, либо коридоры с холодным и горячим воздухом.

расчет
https://www.whattomine.com/asic?sha256f=true&factor%5Bsha256_hr%5D=112000.0&factor%5Bsha256_p%5D=3450.0&factor%5Bscrypt_hash_rate%5D=1100.0&factor%5Bscrypt_power%5D=1050.0&factor%5Bx11_hr%5D=336000.0&factor%5Bx11_p%5D=1800.0&factor%5Bsia_hr%5D=730.0&factor%5Bsia_p%5D=600.0&factor%5Bqk_hr%5D=56000.0&factor%5Bqk_p%5D=1600.0&factor%5Bqb_hr%5D=56000.0&factor%5Bqb_p%5D=1700.0&factor%5Bmg_hr%5D=56.0&factor%5Bmg_p%5D=700.0&factor%5Bsk_hr%5D=28.0&factor%5Bsk_p%5D=600.0&factor%5Blbry_hr%5D=210.0&factor%5Blbry_p%5D=3300.0&factor%5Bbk14_hr%5D=52000.0&factor%5Bbk14_p%5D=2200.0&factor%5Bx11g_hr%5D=7.0&factor%5Bx11g_p%5D=900.0&factor%5Bcn_hr%5D=360.0&factor%5Bcn_p%5D=720.0&factor%5Beq_hr%5D=135.0&factor%5Beq_p%5D=1420.0&factor%5Blrev2_hr%5D=13.0&factor%5Blrev2_p%5D=1100.0&factor%5Bbcd_hr%5D=185.0&factor%5Bbcd_p%5D=670.0&factor%5Bl2z_hr%5D=62.0&factor%5Bl2z_p%5D=670.0&factor%5Bphi_hr%5D=310.0&factor%5Bphi_p%5D=670.0&factor%5Bkec_hr%5D=29.0&factor%5Bkec_p%5D=430.0&factor%5Bgro_hr%5D=56.0&factor%5Bgro_p%5D=900.0&factor%5Besg_hr%5D=530.0&factor%5Besg_p%5D=170.0&factor%5Btsr_hr%5D=150.0&factor%5Btsr_p%5D=800.0&factor%5Bcost%5D=0.04&sort=Profit24&volume=0&revenue=24h&factor%5Bexchanges%5D%5B%5D=&factor%5Bexchanges%5D%5B%5D=binance&factor%5Bexchanges%5D%5B%5D=bitfinex&factor%5Bexchanges%5D%5B%5D=bitforex&factor%5Bexchanges%5D%5B%5D=bittrex&factor%5Bexchanges%5D%5B%5D=dove&factor%5Bexchanges%5D%5B%5D=exmo&factor%5Bexchanges%5D%5B%5D=gate&factor%5Bexchanges%5D%5B%5D=graviex&factor%5Bexchanges%5D%5B%5D=hitbtc&factor%5Bexchanges%5D%5B%5D=hotbit&factor%5Bexchanges%5D%5B%5D=ogre&factor%5Bexchanges%5D%5B%5D=poloniex&factor%5Bexchanges%5D%5B%5D=stex&dataset=&commit=Calculate

кул ссылка, но чтобы понимали как правильно считать

небольшие колебания в калькуляторе не на что не влияют
5337  Local / Новички / Re: Раздача мерита нуждающимся/Есть задания l on: June 25, 2020, 04:03:47 PM
14. Третья часть этого руководства: Launching HTML5 Games In The ARK Desktop Wallet — Part Three
15. четвёртая часть
16. пятая часть
17. финальная часть

Руководство вероятно лучше публиковать последовательно, поэтому забрать на перевод можно в любом порядке, а публиковать только после того, как будет предыдущая готова.
14 забрал
5338  Local / Майнеры / Re: Whatsminer асики обзор новинок on: June 25, 2020, 03:56:54 PM
Если в Китае асик стоит 4121 доллар, то доставка его к нам увеличит стоимость до 4800 долларов
9 долларов в день с него профит, и 4 доллара оплатим свет. по 2,8 рубля посчитал.

Когда окупится  M30S ++? если профит за минусом энергии 5 долларов в сутки?

Налоги, зарплата инженерам, проводка ..... если все это посчитать, не вижу профита, за 4800 можно собрать риги сбольшим профитом и 3х летней гарантией
5339  Local / Майнеры / Re: Падение хешреита GTX 1080 ti on: June 25, 2020, 01:17:23 PM
3080? которая выйдет  на рынок к концу года и будет стоить состояние.
Я наоборот посмотрю что будет до конца этого года и помайню на том что есть.

кефир копает сейчас 8 милионов видеокарт примерно. если он сменит алгоритм, то топовые видюхи никогда не окупятся
Да, клин на эфире не сошелся. У меня например 2080 майнят kawpow. Я тоже не сильно расширяюсь,уже чуть осталось до края потребления по квартире в kw/h
Это верно. Пока есть эфир, его копают красные. А так kawpow неплохо майнится и на АМД. Не так хорошо, возможно, но когда эфир кончится, выиграет тот, у кого свет нулевой.
Я копаю эфир с зиликой в дуале.
Как и все обленился и переключаться лишний раз желания нет Smiley
5340  Local / Майнеры / Re: Падение хешреита GTX 1080 ti on: June 25, 2020, 12:49:34 PM
3080? которая выйдет  на рынок к концу года и будет стоить состояние.
Я наоборот посмотрю что будет до конца этого года и помайню на том что есть.

кефир копает сейчас 8 милионов видеокарт примерно. если он сменит алгоритм, то топовые видюхи никогда не окупятся
Pages: « 1 ... 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 [267] 268 269 270 271 272 273 274 275 276 277 278 279 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!