Skip to content

Configuration files for the node services

The different services used in a private deployment needs to be configured for the specific architecture of the deployment.

The following page describes the different configuration files for the services.

Block producer node

The block producer nodes each need to be configured to have the correct network setup for the initial deployment. The configuration for a block producer node is shown in the json code below.

  • blockchain, holds the information for the network setup of the node and the list of initial peers, the other block producer node should run the blockchain with.
    • externalListenerPort, is the port the block producer node listens for TCP connections on. This is the port an MPC node uses for connecting to the companion block producer node.
    • floodingPort, is used for the flooding network between block producer nodes. This is the port that is in the peer list of the other block producer nodes.
    • storage, field is the directory in the running node, used as persistent storage of the state of blockchain.
    • peers, the list of the other Block producer nodes in the initial network. Each entry is the endpoint used for the flooding network by a block producer node.
  • enableReaderNode, flag for starting the reader REST server, to serve chain data through.
  • restPort, the port that the REST server listens on for requests.
  • producer, the configuration of the block producer node used for the network. Depending on the consensus protocol used
    • networkDelay, the expected time that the network will delay messages between parties.
    • producerBlsKey, BLS secret key, used for signing blocks.
    • producerKey, the private key for the producer, used for signing transactions from the node.
    • timeout, the time between blocks where there are no transactions and events.
  • genesisFile, the file containing the initial state of the chain.
Click here to view: Block Producer - Example configuration
{
  "blockchain": {
    "externalListenerPort": 9111,
    "floodingPort": 8999,
    "storage": "target/storage0",
    "peers": [
      "bc-node-3:8999",
      "bc-node-2:8999",
      "bc-node-1:8999"
    ]
  },
  "enableReaderNode": true,
  "restPort": 9432,
  "producer": {
    "fastTrackConfig": {
      "networkDelay": "2000",
      "producerBlsKey": "AAA",
      "producerKey": "AAA",
      "timeout": "90000"
    }
  },
  "genesisFile": "genesis-conf/genesis.zip"
}

Reader Node

The configuration of a reader node, is like the Block producer node, but since the reader is not a part of producing blocks, it does not have a producer configuration.

Click here to view: Reader Node - Example configuration
{
  "blockchain": {
    "externalListenerPort": 9111,
    "floodingPort": 8999,
    "storage": "target/reader",
    "peers": [
      "bc-node-0:8999",
      "bc-node-1:8999",
      "bc-node-2:8999",
      "bc-node-3:8999"
    ]
  },
  "enableReaderNode": true,
  "restPort": 9432,
  "genesisFile": "genesis-conf/genesis.zip"
}

MPC node

  • linkedBlockProducer

    • tcpEndpoint, the TCP endpoint, where the block producer can deliver updates whenever there are changes to the state of the chain.
    • restEndpoint, the REST endpoint the MPC node sends transactions to during runtime. The endpoint is exposed by the companion Block producer node.
  • mpcNetworkListeningAddress, the address to listen for TCP connections used for the MPC node network.

  • secretKeyNetwork, the MPC node network key used for signing payloads sent between nodes.
  • secretKeyAccount, the private key used for signing transactions on the chain.
  • port, the port the MPC node listens on for outside requests. The endpoint is used for Off-chain inputs and fetching secrets directly from the MPC node.
  • shards, the list of shards running on the Blockchain.
  • evmOracleChainConfigs, the configuration for the oracles listening on an EVM chain.
  • realPeers the list of MPC node peers, each entry is another MPC node running secret computations and receiving secret shares to use in a computation. Each node is identified by the public key, written in Base64, with the endpoint that the node is listening on for connections with other MPC nodes, to create the network of MPC nodes. The expected format of the endpoint is "{host}:{port}". The list must contain at least 3 entries, because at least 4 MPC nodes are required by the REAL protocol to work.
  • storageDirectory, the path to the folder used for storing states of the chain and the secret shares the node has received from user, or created during a computation.
Click here to view: MPC Node - Example configuration
{
  "linkedBlockProducer": {
    "tcpEndpoint": "bc-node-0:9111",
    "restEndpoint": "http://bc-node-0:9432"
  },
  "mpcNetworkListeningAddress": "mpc-node-0:10100",
  "secretKeyNetwork": "AAA",
  "secretKeyAccount": "AAAA",
  "port": 8180,
  "shards": [],
  "evmOracleChainConfigs": [],
  "realPeers": {
    "A+VHax6pm2oIg3MVQno3Ubg9aFs0rMUgHlnptiOsS2lB": "mpc-node-1:10100",
    "AmIteYoNeF0x0z9GDaTMjHy4SNkkYEotA3VyFaZxPXBq": "mpc-node-2:10100",
    "AwQW3N+zofC+Gj/WrVL7HANOJNSMzzTRiefe3qa2WnpK": "mpc-node-3:10100"
  },
  "storageDirectory": "target/mpcnode0"
}

Partisia All Rights Reserved © 2023