Idena Go

Golang implementation of the Idena network node

Build Status

Building the source

Building idena-go required a Go (version 1.16 or later) and a C compiler. idena-go uses Go modules as a dependency manager. Once the dependencies are installed, run

go build

Running idena-go

To connect to idena experimental mainnet network run executable without parameters. idena-go uses go-ipfs and private ipfs network to store data.

CLI parameters

JSON config

Custom json configuration can be used if --config=<config file name> parameter is specified. Use server IPFS profile if you run idena-go on VPS to prevent local network scanning.

{
  "DataDir": "datadir",
  "P2P": {
    "MaxInboundPeers": 12,
    "MaxOutboundPeers": 6
  },
  "RPC": {
    "HTTPHost": "localhost",
    "HTTPPort": 9009
  },
  "IpfsConf": {
    "Profile": "server",
    "IpfsPort": 40405,
    "BlockPinThreshold": 0.3,
    "FlipPinThreshold": 0.5
  },
  "Sync": {
    "FastSync": true
  }
}

By default, blocks and flips are pinned in local ipfs storage with 30% and 50% probability respectively. If you want to pin (save) locally all blocks and flips, set 1 for BlockPinThreshold and FlipPinThreshold.

Local automine node

Config

For debug purposes you can run local automine node with this config.

{
  "IpfsConf": {
    "BootNodes": [],
    "Profile": "server",
    "IpfsPort": 60606
  },
  "RPC": {
    "HTTPHost": "localhost",
    "HTTPPort": 9111
  },
  "GenesisConf": {
    "GodAddress": "0x0000000000000000000000000000000000000000",
    "FirstCeremonyTime": 1700000000
  },
  "Consensus": {
    "Automine": true
  },
  "Validation": {
    "ValidationInterval": 300000000000,
    "FlipLotteryDuration": 10000000000,
    "ShortSessionDuration": 40000000000,
    "LongSessionDuration": 40000000000,
    "AfterLongSessionDuration": 10000000000
  },
  "Network": 3
}
Description

For more detailed configuration please see config structure