Skip to content

Instantly share code, notes, and snippets.

View merlox's full-sized avatar
😄
Building great things together!

merlox merlox

😄
Building great things together!
View GitHub Profile
require('babel-polyfill')
const html = require('html-webpack-plugin')
const path = require('path')
module.exports = {
entry: ['babel-polyfill', './src/index.js'],
output: {
filename: 'bundle.js',
path: path.join(__dirname, 'dist')
},
pragma solidity 0.5.0;
contract Example {
uint256 counter;
modifier onlyOwner {}
constructor() {}
function doSomething() {}
}
const express = require('express')
const bodyParser = require('body-parser')
const path = require('path')
const app = express()
const http = require('http').createServer(app)
const io = require('socket.io')(http)
const ethereumjs = require('ethereumjs-abi')
const ethereumjsUtil = require('ethereumjs-util')
const port = 4000
// On finish send the 2 latest messages which are contained in the last element.
socket.on('finish', () => {
let messages = games.slice(-1)
io.to(socket.id).emit('finish-2-messages', messages[0])
})
let activeDice = 0
let game = {}
let isThisPlayer1 = false
let isThisPlayer2 = false
let sequence = 1
start()
// In the start we get the initial data needed to get the contract address
async function start() {
body {
font-family: sans-serif;
}
.hidden {
display: none;
}
.main-container-game {
margin: auto;
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="game.css">
<title>Dice ethereum game</title>
</head>
<body>
<div class="main-container-game">
<h1>Ethereum Dice</h1>
@merlox
merlox / Dice.sol
Last active October 26, 2018 20:16
pragma solidity 0.4.25;
contract Dice {
address public player1;
address public player2;
uint256 public player1Escrow;
uint256 public player2Escrow;
uint256 public player1Balance;
uint256 public player2Balance;
/// @notice To verify and save the player balance to distribute it later when the game is completed. The addressOfMessage is important to decide which balance is being updated
function verifyPlayerBalance(bytes playerMessage, uint256 playerCall, uint256 playerBet, uint256 playerBalance, uint256 playerNonce, uint256 playerSequence, address addressOfMessage) public {
require(player2 != address(0), '#1 The address of the player is invalid');
require(playerMessage.length == 65, '#2 The length of the message is invalid');
require(addressOfMessage == player1 || addressOfMessage == player2, '#3 You must use a valid address of one of the players');
uint256 escrowToUse = player1Escrow;
if(addressOfMessage == player2) escrowToUse = player2Escrow;
// Recreate the signed message for the first player to verify that the parameters are correct
pragma solidity 0.4.25;
contract Dice {
address public player1;
address public player2;
uint256 public player1Escrow;
uint256 public player2Escrow;
constructor () public payable {
require(msg.value > 0);