March 8, 2022

dApp'ка которая принесет мне лям $$ (чсть 1)

хаха думали я больше ничего не напишу сюда и вообще я не настоящий true degen solidity developer?? вы еще никогда так не ошибались..... в общем, учить солидити я начал по этому видосику, посмотрел 7 часов и надоело ну оно и понятно ведь НАДО ДЕЙСТВОВАТЬ.

в видео рассматривали как сделать лоттерейку по билетикам и знаете что я вспомнил...? чудную пору рулеток по кс_очке... как же было приятно лутать по 50 долларовых копеек за рефералку и бежать ставить их на красное/кидать кучу ширпа из инвентаря на рулетку в надежде отжать у других челов их скинчики. ну вот моя САМАЯ ЛУЧШАЯ dApp'ка и будет что-то вроде рулетки по кс, только со ставками в крипте.

такс что я хочу от своего детища:

  1. начинается "фаза ставочек", все кидают свою крипту
  2. через некоторое время "фаза ставочек" заканчивается
  3. как-то случайно выбирается победитель
  4. ему переводятся депы всех участников
  5. перейти на шаг 1

самое сложное тут было генерировать случайное число (для выбора победителя) потому что оказывается такое делать на блокчейнике нельзя((( но не расстраивайтесь, не может же мое детище просто так умереть на этапе планирования. оказывается Chainlink который монета еще и имеет каких-то гениев в разработчиках и они грубо говоря сделали этот randomNumberGenerator (за который платить кстати надо еще ну капец)

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

и так, зачем я вас всех сегодня тут собрал - гениальный контракт на тестнете эфира
(и его код)

вкратце что делать чтобы не поломать ничего:

0. пополнить контракт чейнлинка и верифнуть свой контракт у них

1. вызываем startRoulette() чтобы ну старт рулетте как бы

2. теперь можно кидать бабки через функцию deposit() и каждый депозит сохраняется в виде адреса отправителя, первого и последнего билетов.

вы спросите "какие билеты откуда билеты там уже взялись ээээ" и тут я расскажу, что в контракте 1 билет = 1 wei отправленный в депозит(1 eth = 1000000000000000000 wei для бездарей). например, первый человек депозитит 0.001 ETH и получает за него билеты от 1 до 1000000000000000, следующий человек, допустим, депозитит 0.003 ETH и получает за них билеты от 1000000000000001 до 4000000000000000 и так далее. прикольно,  мне нравиться.

3. вызываем endRoulette() чтобы больше нельзя было делать депозит + с этой функцией идет запрос на получение случайного числа на контракт чейнлинка

4. ждем ответа от чейнлинка, он приходит в виде вызова функции fulfillRandomWords(). в этой же функции с помощью остатка от деления получаем случайное число в диапазоне количества билетов

5. вызываем sendWinnings() чтобы найти победителя по номеру билета и отправляем ему бабос + вызывается clearPreviousRound() которая чистит все эти грязные дела

все ура победа была проведена 1000% честная рулетка ура ура ура

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

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

пописуйтесь сюда https://t.me/lilitchdev