2016-11-22 18:10:50 +00:00
|
|
|
.. _log4j2: http://logging.apache.org/log4j/2.x/
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2018-03-16 16:07:39 +00:00
|
|
|
Setting up a Corda network
|
|
|
|
==========================
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2018-07-09 14:21:47 +00:00
|
|
|
.. contents::
|
|
|
|
|
2017-11-22 12:07:53 +00:00
|
|
|
A Corda network consists of a number of machines running nodes. These nodes communicate using persistent protocols in
|
|
|
|
order to create and validate transactions.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2017-12-07 14:48:31 +00:00
|
|
|
There are three broader categories of functionality one such node may have. These pieces of functionality are provided
|
2017-11-22 12:07:53 +00:00
|
|
|
as services, and one node may run several of them.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2017-11-22 12:07:53 +00:00
|
|
|
* Notary: Nodes running a notary service witness state spends and have the final say in whether a transaction is a
|
|
|
|
double-spend or not
|
|
|
|
* Oracle: Network services that link the ledger to the outside world by providing facts that affect the validity of
|
|
|
|
transactions
|
|
|
|
* Regular node: All nodes have a vault and may start protocols communicating with other nodes, notaries and oracles and
|
|
|
|
evolve their private ledger
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Setting up your own network
|
2017-01-06 11:05:37 +00:00
|
|
|
---------------------------
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Certificates
|
2017-01-06 11:05:37 +00:00
|
|
|
~~~~~~~~~~~~
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2017-11-22 12:07:53 +00:00
|
|
|
Every node in a given Corda network must have an identity certificate signed by the network's root CA. See
|
|
|
|
:doc:`permissioning` for more information.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Configuration
|
2017-01-06 11:05:37 +00:00
|
|
|
~~~~~~~~~~~~~
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2016-11-29 11:36:42 +00:00
|
|
|
A node can be configured by adding/editing ``node.conf`` in the node's directory. For details see :doc:`corda-configuration-file`.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
An example configuration:
|
|
|
|
|
|
|
|
.. literalinclude:: example-code/src/main/resources/example-node.conf
|
|
|
|
:language: cfg
|
|
|
|
|
|
|
|
The most important fields regarding network configuration are:
|
|
|
|
|
2017-03-17 10:32:14 +00:00
|
|
|
* ``p2pAddress``: This specifies a host and port to which Artemis will bind for messaging with other nodes. Note that the
|
|
|
|
address bound will **NOT** be ``my-corda-node``, but rather ``::`` (all addresses on all network interfaces). The hostname specified
|
|
|
|
is the hostname *that must be externally resolvable by other nodes in the network*. In the above configuration this is the
|
|
|
|
resolvable name of a machine in a VPN.
|
|
|
|
* ``rpcAddress``: The address to which Artemis will bind for RPC calls.
|
2018-05-30 14:47:40 +00:00
|
|
|
* ``notary.serviceLegalName``: The name of the notary service, required to setup distributed notaries with the network-bootstrapper.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Starting the nodes
|
2017-01-06 11:05:37 +00:00
|
|
|
~~~~~~~~~~~~~~~~~~
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2018-06-23 10:36:10 +00:00
|
|
|
You will first need to create the local network by bootstrapping it with the bootstrapper. Details of how to do that can
|
|
|
|
be found in :doc:`network-bootstrapper`.
|
|
|
|
|
|
|
|
Once that's done you may now start the nodes in any order. You should see a banner, some log lines and eventually
|
|
|
|
``Node started up and registered``, indicating that the node is fully started.
|
2016-11-22 18:10:50 +00:00
|
|
|
|
2017-01-30 11:15:23 +00:00
|
|
|
In terms of process management there is no prescribed method. You may start the jars by hand or perhaps use systemd and friends.
|
2016-11-22 18:10:50 +00:00
|
|
|
|
|
|
|
Logging
|
2017-01-06 11:05:37 +00:00
|
|
|
~~~~~~~
|
2016-11-22 18:10:50 +00:00
|
|
|
|
|
|
|
Only a handful of important lines are printed to the console. For
|
|
|
|
details/diagnosing problems check the logs.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2016-11-22 18:10:50 +00:00
|
|
|
Logging is standard log4j2_ and may be configured accordingly. Logs
|
|
|
|
are by default redirected to files in ``NODE_DIRECTORY/logs/``.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Connecting to the nodes
|
2017-01-06 11:05:37 +00:00
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2016-11-29 11:36:42 +00:00
|
|
|
Once a node has started up successfully you may connect to it as a client to initiate protocols/query state etc.
|
|
|
|
Depending on your network setup you may need to tunnel to do this remotely.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
2016-11-22 18:10:50 +00:00
|
|
|
See the :doc:`tutorial-clientrpc-api` on how to establish an RPC link.
|
2016-11-21 16:39:46 +00:00
|
|
|
|
|
|
|
Sidenote: A client is always associated with a single node with a single identity, which only sees their part of the ledger.
|