jacko06v / go-merkle

merkle tree in golang for a specific project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-merkle

create a merkle tree with GO lang to be used with solidity

this is not useful itself since i used and built it for a specific purpose in a project, but it can be useful as a reference for creating merkle trees in go

scripts

  • convert_int_string.js - convert all the numbers in json to strings
  • checkHash.js - check the hash of the merkle tree if is the same in JS(and solidity)
  • sampleCOntract.sol - solidity contract to create the nodes and check the hash
  • merkle.go - create the merkle tree and save it to a json file

merkle.go take a json file like

[
  {
    "int_it": "631359070595067400",
    "renting": "3"
  },
  {
    "int_it": "631507570671499300",
    "renting": "5"
  },
  {
    "int_it": "630950076210238000",
    "renting": "5"
  },
  {
    "int_it": "631254397440568800",
    "renting": "3"
  },
  {
    "int_it": "633917065299962900",
    "renting": "1"
  }
]

and create a json file like

{
  "root": "0x3097752e39f8dfa07e1715d4876d4e8439e2a26332f8cd19060b3a7f3029d038",
  "proof": [
    {
      "leaf": "0x8cc628095351985de68ca79a948c500a851880ab495a54dbee7ff84c9c9195ba",
      "proof": [
        "0x9804d704fd9690226772119d69e97b6ac4a4e028a9d1a90d8ea04e91d036ea46",
        "0x0caaaa27f3ddeedd3bfc1c480a0e0a010654e6e3a21e9c1e98089608ed3d8503",
        "0x014a12586340e71b17316863b9e613def46b85632679cddd2bfffc5c026cf51d"
      ],
      "clearData": ["631359070595067391", "3"]
    },
    {
      "leaf": "0xbbc7b3f7222badbaeecce2d69bc704dee2d97181cc6204316465706628606704",
      "proof": [
        "0xc9b94f6c48fe9d7646961cf0c682b04422d503389be67d54b949e2c2dc7e2399",
        "0x344911bd6afd524f0cf2eae75c82499cfc9a7789321fa7744c26218114f2107e",
        "0x3bbb19b48564eae693e1eb5edd95f33974c34a0e5dc70b6f69d152994801fa22"
      ],
      "clearData": ["631507570671499263", "5"]
    },
    {
      "leaf": "0x027fe8442ae2b2d8e5224891a798c2342ffd71985197e7edaa2c9c904c396a6f",
      "proof": [
        "0x78c42edb06e6ffe9af47ca5281eb55d53cab022a2c8cb68a73ca005a53501da1",
        "0xb8e7329263a4a61c352416c71bbf808f3125451be027f95a6fe79e1d5d25aec4",
        "0x014a12586340e71b17316863b9e613def46b85632679cddd2bfffc5c026cf51d"
      ],
      "clearData": ["630950076210237951", "5"]
    },
    {
      "leaf": "0x78c42edb06e6ffe9af47ca5281eb55d53cab022a2c8cb68a73ca005a53501da1",
      "proof": [
        "0x027fe8442ae2b2d8e5224891a798c2342ffd71985197e7edaa2c9c904c396a6f",
        "0xb8e7329263a4a61c352416c71bbf808f3125451be027f95a6fe79e1d5d25aec4",
        "0x014a12586340e71b17316863b9e613def46b85632679cddd2bfffc5c026cf51d"
      ],
      "clearData": ["631254397440568831", "3"]
    },
    {
      "leaf": "0xc9b94f6c48fe9d7646961cf0c682b04422d503389be67d54b949e2c2dc7e2399",
      "proof": [
        "0xbbc7b3f7222badbaeecce2d69bc704dee2d97181cc6204316465706628606704",
        "0x344911bd6afd524f0cf2eae75c82499cfc9a7789321fa7744c26218114f2107e",
        "0x3bbb19b48564eae693e1eb5edd95f33974c34a0e5dc70b6f69d152994801fa22"
      ],
      "clearData": ["633917065299962879", "1"]
    }
  ]
}

About

merkle tree in golang for a specific project


Languages

Language:Go 69.2%Language:Solidity 18.2%Language:JavaScript 12.6%