Dmitry Pichulin, known by his nickname “deemru”, won the game Fhloston Paradise , developed by Tradisys on the Waves blockchain.
To win the game , the player had to make the most recent bet during the 60-block period — before the other player would bet, thereby resetting the counter. The winner got all the money put by other players.
')
Victory Dmitry brought his created bot Patrollo . Dmitry made only eight bets on one WAVES and as a result won 4700 WAVES (836300 rub.). In an interview, Dmitry spoke about his bot and the prospects for games on the blockchain. Tell us a little about yourself. What do you do? When interested in blockchain technology?I am an information security developer. I came to the blockchain with the “HYIP” of 2017, figured out the technology and stayed for the sake of technology.
What was the main motivation to participate in the game?First of all - technical interest. I wanted to figure out how it works, find vulnerabilities, do not let the game end, and of course, “troll” the other players.
Have you already decided how to spend the winnings? What will you keep it if you decide not to spend it yet?I did not think of what to do with the win. I did not expect it, so there are no plans. While it will lie as it is. Maybe in some project on Waves will spill over.
Why did you decide to take part in the game using a bot? How did the idea of Patrollo come? Could you tell us more about its development?Vulnerabilities failed. I “picked up” the game in the test network, played with myself, tried all the options, but everything turned out to be “irony”, there are no vulnerabilities in the contract. It became clear that this path did not win.
How did you search for vulnerabilities? What were your hypotheses? Could you give me some sample code?There were two hypotheses. First, an attack on data type checks in date-transaction records. For example, I expected bad coding to bypass the transaction ID reuse check. The second is an integer overflow attack. I figured there was a way to set too high or negative heights and try to be in the past.
$ tx = $ wk-> txBroadcast ($ wk-> txSign ($ wk-> txData (['heightToGetMoney' => -9223372036854775807])));
What did you do when you saw that expectations for vulnerabilities were not confirmed?In his telegram chat, Tradisys complained that as long as everything is quiet on the network, the game will be eternal, but in the confusion (with updates to nodes or unforeseen forks), the chances of good bots increase. In the same place, in a chat, I accepted the challenge of writing a good bot, which I did in a couple of days. I wrote the Patrollo code in PHP, based on my
WavesKit framework, in which I try to fix all the best techniques for working with the blockchain.
I checked the work in the test network, put the code on github, launched the bot in the main network and forgot about it.
My Patrollo configuration had to solve two problems: make bets as little as possible and work as reliably as possible.
The first is decided by extremely risky rates, preferably in the very last block. In the end, I still put the bot on the penultimate block, but with an additional delay of 29 seconds. This allowed to make only eight bets for the entire game.
Why exactly 29 seconds? How did you come to this number?29 seconds appeared gradually. At first there was no delay, but I noticed that there were cases of simultaneous bets on the penultimate block — that is, there was no point in betting. Then there was a delay - it seems, in 17 seconds, but it did not help: there were still simultaneous bets. Then I decided to risk harder, but certainly not to have simultaneous bets. Why 17, 29, etc.? Just love the prime numbers. 24, 25, 26, 27, 28, 30 - all composite. And more than 30 seconds would have been completely risky.
How was the reliability issue solved?Reliability was decided mainly by the mechanism for selecting the work node and, to a lesser extent, by conducting a transfer transaction for the rate in advance so that the rate in the date-data already accurately refers to the transaction existing in the blockchain.
During each cycle cycle, all the nodes specified in the configuration were polled for their current height, the node with the highest current height was selected, and further interaction occurred with it. In my understanding, this was supposed to protect against forks, inaccessibility, caching, and possible errors on the nodes. There is confidence that it is this simple mechanism that led to the victory.
What, in your opinion, are the main features and advantages of games on the blockchain? How promising are public blockchains for game development in general, and the Waves blockchain in particular?The main advantages are well-known, fixed and not changing rules of the game, plus equal conditions of access to the game from anywhere in the world.
Cash games outside the blockchain must die.
Waves has a rich technical functionality, but there are nuances both inherent to any blockchain and specific. And those and others are not yet well reflected in existing developer tools.
For example, if you tried to respond to transactions in real time, and not at a distance of 5-10 confirmations, you would learn about rare, but occurring phenomena: jumping over transactions from block to block, missing transactions in some blocks and appearing in others. All this is critical for the speed and reliability of any applications and should be solved in a general way, but for now each developer reaches the level of reliability he needs on his own. Over time, of course, all this will be resolved, but so far there is a certain, rather high, threshold of entry and fear of the specifics of the work of truly decentralized blockchains in general.
How does the FOMO game differ from other games known to you on the blockchain? What are its advantages and disadvantages?
This is a game for now. Interest in such games grows with the magnitude of the gain, and the magnitude of the gain increases with time.
Ideal if the game never ends. When the game ends - it's sad ...
Fhloston Paradise 2 has recently been launched . Do you plan to take part in it?Yes, if there is time and interest, I will take the same steps: analysis of vulnerabilities, playing with myself in the test network, bot, open source, etc.
In conclusion, please tell us about your plans as a developer.I am interested in solving unsolved problems, and in the blockchain topic there are many unsolved problems. This is a real challenge! And he is accepted.