Configuration Overview

A .json file including required configuration details must be provided using the -configfile command-line property when starting Tessera.

Many configuration options can be overridden using the command-line. See the Using CLI to override config page for more information.

Configuration options

The configuration options are explained in more detail in this section. Configuration options that require more than a brief explanation are covered in separate pages.

Whitelist

If set to true, the peers list will be used as the whitelisted URLs for the Tessera node:

"useWhiteList": false,

Database

Tessera's database uses JDBC to connect to an external database. Any valid JDBC URL may be specified, refer to your providers' details to construct a valid JDBC URL.

"jdbc": {
"url": "[JDBC URL]",
"username": "[JDBC Username]",
"password": "[JDBC Password]"
}

Server

For Tessera versions prior to 0.9:

To allow for a greater level of control, Tessera's API has been separated into distinct groups. Each group is only accessible over a specific server type. Tessera can be started with different combinations of these servers depending on the functionality required. This is defined in the configuration and determines the APIs that are available and how they are accessed.

The possible server types are:

  • P2P - Tessera uses this server to communicate with other Transaction Managers (the URI for this server can be shared with other nodes to be used in their peer list - see below)

  • Q2T - This server is used for communications between Tessera and its corresponding Ledgerium Core node

  • ENCLAVE - If using a remote enclave, this defines the connection details for the remote enclave server (see the Enclave docs for more info)

  • ThirdParty - This server is used to expose certain Transaction Manager functionality to external services such as Quorum.js

  • ADMIN - This server is used for configuration management. It is intended for use by the administrator of the Tessera node and is not recommended to be advertised publicly

The servers to be started are provided as a list:

"serverConfigs": [
...<server settings>...
]

Each server is individually configurable and can advertise over HTTP, HTTPS or a Unix Socket.

Server configuration

HTTP:

{
"app": "<app type>",
"enabled": <boolean>,
"serverAddress":"http://[host]:[port]/[path]
"communicationType" : <enum>, // "REST" or "GRPC"
}

HTTPS:

{
"app": "<app type>",
"enabled": <boolean>,
"serverAddress":"https://[host]:[port]/[path]
"communicationType" : <enum>, // "REST" or "GRPC"
"sslConfig": {
...<SSL settings, see below>...
}
}

Unix Socket:

{
"app": "<app type>",
"enabled": <boolean>,
"serverAddress":"unix://[path],
"communicationType" : "REST"
}

TLS/SSL: server sub-config

See TLS/SSL page.

Peers

A list of URLs used by Tessera to communicate with other nodes. Peer info is shared between nodes during runtime (however, please note the section on Peer Discovery below).

"peer": [
{
"url": "http://myhost.com:10000"
},
{
"url": "http://myhost.com:10001"
},
{
"url": "http://myhost.com:10002"
}
]

Disabling peer discovery

If peer discovery is disabled, then only peers defined in the configuration file will be communicated with; any peers notified by other nodes will be ignored. This allows nodes to be 'locked down' if desired.

"disablePeerDiscovery": true

Always-send-to

It is possible to configure a node that will be sent a copy of every transaction, even if it is not specified as a party to the transaction. This could be used, for example, to send a copy of every transaction to a node for audit purposes. Specify the public keys to forward transactions onto, and these will be included as if you had specified them on the privateFor field to start with.

"alwaysSendTo":["<public key 1>", "<public key 2>"]

chainId

If chainId parameter is added to p2p config, it is possible to filter out other nodes which are part of different blockchain from the list of peers and serves as an enabler for running multiple block chains with isolated TMs in the same network.

"chainId":"2018