CryptoBotWars or How to Build Shitty Demos and Why

Tokens, Robots, Payment Channels and Live Streams

Behind the scenes

Why? … I had some questions:

  1. Is it easy to build something on top of Raiden right now? Do we lack anything that is fairly easy to change?
  2. How would Raiden work right now for one-to-many & many-to-one payments, cases frequently related to businesses
  3. Would people find bugs in Raiden? The best testers are the clueless, newly onboarded testers.
  4. Would Raiden behave nicely with high throughput?
  5. Would payments be successfully mediated (various locations & system setups)
Dark Vader and Blue Yoda. Soup bowl & ping-pong Santa Hat! Looks great! … from 4m away 😛

How did the idea come about?

Robots Want Crypto

  1. I and my partner, who actually built the Devcon3 RC Car, really like robots. And he already brought an army of them in the house … it’s the wild robowest for people who don’t want to grow up.
  2. Robots are fun and cute (🤖 vs. 😼 meme duel now!)
  3. I put my Yoda voice to work! (the beginning of yet another career..)
  4. But actually robots give us a sense of what the future could be 🚀.

How did I start building?

  1. Dark Vader RobotServer & Blue Yoda RobotServer
  2. GameGuardianServer
  3. GameGuardianRaidenNode
  4. GameClient
  5. Live Stream on Twitch
export const GameState = {
null: 0, // No current game running
open: 1, // During game time, users can make moves closed: 2, // During game resolution time, users wait for results and payments resolved: 3, // Game and resolution has ended.}
moves = await moveController.find({where: {gameId: id}, order: ["_id ASC"]});raidenPayments = await this.getRaidenPayments(TOKEN)moves.forEach(sentMove => {
if (
sentMove.amount &&
sentMove.move &&
sentMove.amount >= game.move_amount
) {
raidenPayment = raidenPayments[0].find((payment) => {
return payment.identifier === sentMove.paymentIdentifier;
if (raidenPayment) {
total_amount += sentMove.amount;
move_count[sentMove.playerId][sentMove.move] += 1;

sorted_moves_1 = Object.entries(move_count['1']).sort((a: any, b: any) => {return a[1] - b[1]});
sorted_moves_2 = Object.entries(move_count['2']).sort((a: any, b: any) => {return a[1] - b[1]});
move1 = sorted_moves_1[2][1] > 0 ? sorted_moves_1[2][0] : null;
move2 = sorted_moves_2[2][1] > 0 ? sorted_moves_2[2][0] : RockPaperScissorsGetLoser[move1];
// If we have one player, make sure he wins
if (!move1) {
move1 = RockPaperScissorsGetLoser[move2];
winningMove = RockPaperScissorsGetLoser[move1] === move2 ? move1 : move2;
validMoves.forEach((move) => {
// We reward both players if their final moves are the same
if (move.move === winningMove) {
guardian_amount = total_amount / 10;
total_amount -= guardian_amount;
winner_amount = total_amount / winningMoves.length;
gameUpdate = {
player1: <PlayerResult> {
count: sorted_moves_1[0][1] + sorted_moves_1[1][1] + sorted_moves_1[2][1],
move: move1,
move_count: move_count['1'],
player2: <PlayerResult> {
count: sorted_moves_2[0][1] + sorted_moves_2[1][1] + sorted_moves_2[2][1],
move: move2,
move_count: move_count['2'],
amount: winner_amount,
amountGuardian: guardian_amount,
players: moves.length,

this.updateById(id, gameUpdate);
// Make Raiden payments to winners
winningMoves.forEach((move) => {
this.sendRobotCommands(move1, move2, winningMove);





Building bricks for the World Computer #ethereum #Pipeline #dType #EIP1900,

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Check out our listing on ICO Rate

Is Your Private Life Really Private? Meet CEO of ADAMANT — The Most Private Messenger

What is NFT? (Non-Fungible Token)

Image by <a href=”;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=6850535">Pete Linforth</a> from <a href=”;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=6850535">Pixabay</a>

CoinEx | What Causes 90% of Forced Liquidations among Newbie Futures Traders?

Crypto Coin vs. Crypto Token

Wisdom of the Crowd

The Next Crypto Punks

Calculating Cryptocurrency Cost Basis for US Tax Filing

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Loredana Cirstea

Loredana Cirstea

Building bricks for the World Computer #ethereum #Pipeline #dType #EIP1900,

More from Medium

Understanding Blockchain Speed

How One Airline Is Using AR to Enhance Operations

The Assemblage Project

Assemblage #0, a visual remix of CryptoPunk #1477

How to Develop Dapp on Solana And why Solana-based Dapp Development is in trend?