• Stars
    star
    151
  • Rank 246,057 (Top 5 %)
  • Language
    Go
  • License
    GNU Lesser Genera...
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Idena node

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

  • --config Use custom configuration file
  • --datadir Node data directory (default datadir)
  • --rpcaddr RPC listening address (default localhost)
  • --rpcport RPC listening port (default 9009)
  • --ipfsport IPFS P2P port (default 40405)
  • --ipfsportstatic Prevent changing IPFS port (default false)
  • --ipfsbootnode Set custom bootstrap node
  • --fast Use fast sync (default true)
  • --verbosity Log verbosity (default 3 - Info)
  • --nodiscovery Do not discover another nodes (default false)
  • --profile=lowpower Reduce bandwidth usage
  • --apikey Set RPC API key
  • --logfilesize Set maximum log file size in KB (default 10240)

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
  • GodAddress - the address which refers to private key in nodekey file. So, when you are running automine node, you should see log in console Coinbase address addr=<addr> with this address. This address will mine coins if network has 0 valid identities;
  • FirstCeremonyTime - timestamp of first validation ceremony;
  • Validation section - duration of each validation period in nanoseconds;
  • Network - should be different from 1 or 2, any uint32 number
  • Ipfs bootnodes - array of bootstrap nodes in case of running multiple local nodes

For more detailed configuration please see config structure