Skip to content

Simple prototype to make all game transactions transparent

Notifications You must be signed in to change notification settings

5z3f/lastchaos-blockchain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Last Chaos Blockchain

very simple prototype to make all game transactions transparent

features

  • block is created every 10s by default (there must be at least 1 pending transaction)
  • proof of work
  • chain validation
  • binary/plain (json) block mode
  • wallet
    • generate
    • sign/verify transaction
    • check for currency balance (gold, cash) and inventory items

Routes

GET /

simple blockchain explorer

preview

preview

GET /chain

get whole chain

response
{
  "name": "mainnet",
  "valid": true,
  "block_mined_every": 10,
  "txs_pending": [
    // ...   
  ],
  "blocks": [
    // ...
  ]
}

GET /block/<index>

get block details by index

response
{
    "index": 1,
    "prevhash": "4c43b2177fe9ca2094a36e58cc3f42a2d7cdd2fadb2d634e69fc35f5c92b6cc0",
    "hash": "4c43536e090e527d986f4cf2cc4c0a09557860644a33273e0b2f1b2f00e59813",
    "proof": 24913,
    "transactions": [
        {
            "txid": "972decd5fcde135fda31cd6b451d6bfc5de56d8f7035a8820ec4688c6111797a",
            "sender": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
            "recipient": "lc1NbwD67HEaRcbrJHczmY5XeR1QGpLy6b9",
            "data": {
                "type": "transfer",
                "entity": "gold",
                "amount": 550000
            },
            "publicKey": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d",
            "signature": "c0ffecaf44be8d6ec274a673d8409044c2560bd7bd7fd057cea0fc7d5f63bcdbf38a0d682760c170a5e7d13674e966b3c0e8bc6cd07f01aba1f340592494a5e8",
            "timestamp": 1653273032802
        },
        {
            "txid": "d345aa89a93f62de6830dbf98924be25cd629e1122474a21497054565e24fa54",
            "sender": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
            "recipient": "lc1NbwD67HEaRcbrJHczmY5XeR1QGpLy6b9",
            "data": {
                "type": "transfer",
                "entity": "gold",
                "amount": 200000
            },
            "publicKey": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d",
            "signature": "2474ab1830b3b6b60863364d27590021f267f340275900bcbc040fb6d2d6d5ac3013d718018287c2ec94199fd6af6931dc0772cd146f4482d86a39b1eb975baa",
            "timestamp": 1653273032802
        }
    ],
    "timestamp": 1653273032925
}

GET /tx/<txid>

get transaction details by transaction id

response
{
    "txid": "972decd5fcde135fda31cd6b451d6bfc5de56d8f7035a8820ec4688c6111797a",
    "sender": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
    "recipient": "lc1NbwD67HEaRcbrJHczmY5XeR1QGpLy6b9",
    "data": {
        "type": "transfer",
        "entity": "gold",
        "amount": 550000
    },
    "publicKey": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d",
    "signature": "c0ffecaf44be8d6ec274a673d8409044c2560bd7bd7fd057cea0fc7d5f63bcdbf38a0d682760c170a5e7d13674e966b3c0e8bc6cd07f01aba1f340592494a5e8",
    "timestamp": 1653273032802
}

GET /tx/pending

get transactions that will be included in next block

response
{
	"message": "Will be included in the next block",
	"blockId": 3,
	"transactions": []
}

POST /tx/add

add transaction to pending transactions

payload
{
  "sender": {
    "address": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
    "publicKey": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d", 
    // sign(privateKey, message=sha256("senderAddress:receiverAddress:json(data)"))
    "signature": "c0ffecaf44be8d6ec274a673d8409044c2560bd7bd7fd057cea0fc7d5f63bcdbf38a0d682760c170a5e7d13674e966b3c0e8bc6cd07f01aba1f340592494a5e8"
	},
  "recipient": "lc1NbwD67HEaRcbrJHczmY5XeR1QGpLy6b9", // receiver wallet address
  "data": {
      "type": "transfer", // not used yet
      "entity": "gold",   // gold / cash / item
      "amount": 550000
  }
}
response
{
  "success": true,
  "message": "transaction added",
  "tx": {
    "txid": "972decd5fcde135fda31cd6b451d6bfc5de56d8f7035a8820ec4688c6111797a",
    "sender": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
    "recipient": "lc1NbwD67HEaRcbrJHczmY5XeR1QGpLy6b9",
    "data": {
        "type": "transfer",
        "entity": "gold",
        "amount": 550000
    },
    "publicKey": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d",
    "signature": "c0ffecaf44be8d6ec274a673d8409044c2560bd7bd7fd057cea0fc7d5f63bcdbf38a0d682760c170a5e7d13674e966b3c0e8bc6cd07f01aba1f340592494a5e8",
    "timestamp": 1653273032802
  }
}

GET /wallet/generate

generate new wallet

response
{
  "private_key": "85175d1ce944c01e44afcdbaf49c840cabc72974c741aecfbfa249a41f67b185",
  "public_key": "1ee1808321d18b73b3979ab3cc1604b5471606bfa297c48eb5a7f5e70a79dbff5a114dbaccf7616fb4b1aa724ac5ba1613b249af0a31e8240e1736b14cc5628d",
  "address": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr"
}

GET /wallet/<address>

get all transactions for given address

response
[
  {
    "txid": "8f09d193ce25854de7bcd92100b153a799552f73b4ed725401491f7c273fc72d",
    "sender": "genesis",
    "recipient": "lc1NL4s5cguoPXS8PLNSnMDvLPR1sBpWBbdr",
    "data": {
      "type": "transfer",
      "entity": "gold",
      "amount": 1000000
    },
    "publicKey": "",
    "signature": "",
    "timestamp": 1653272976844
  },
  // ...
]

GET /wallet/<address>/balance

get address balance

response
{
  "gold": 603293,
  "cash": 800
}

GET /wallet/<address>/inventory

get all items in the inventory for given address

response
[
  {
    "id": 614,
    "uuid": "a582d7a7-b47b-47f7-804e-ecab4ee29526",
    "source": {
      "type": "player",
      "id": 1,
      "localization": {
        "zone": 0,
        "x": 644,
        "y": 201,
      },
      "timestamp": 1653272980888
    }
  }
  // ...
]

GET /wallet/<address>/assets

show all assets assigned to given address

response
{
  "currency": {
    "gold": 396707,
    "cash": 200
  },
  "inventory": [
    {
      "id": 614,
      "uuid": "d46ff7d6-cd96-4416-b57c-c29899a4a592",
      "source": {
        "type": "player",
        "id": 1,
        "localization": {
          "zone": 0,
          "x": 644,
          "y": 201
        },
        "timestamp": 1653298314107
      }
    }
  ]
}

About

Simple prototype to make all game transactions transparent

Topics

Resources

Stars

Watchers

Forks