Step 3: Run an Octez DAL node
The DAL node is responsible for temporarily storing data and providing it to bakers and Smart Rollups.
-
Ensure that the port that the DAL node runs on (by default, 11732) is accessible from outside its system. You may need to adapt your firewall rules or set up network address translation (NAT) to direct external traffic to the DAL node. For more information, see Running a DAL attester node in the Octez documentation.
-
Initialize the DAL node by running its
config init
command, passing the address of youroctez-node
instance and your baker's address. For example, this command initializes the DAL node with the address of a localoctez-node
instance on port 8732 and stores data in the default DAL node directory (~/.tezos-dal-node
):octez-dal-node config init --endpoint http://127.0.0.1:8732 --attester-profiles="$MY_ADDRESS"
where
MY_ADDRESS
is the account address of the baker, starting withtz
. -
Start the DAL node by running this command:
octez-dal-node run >> "$HOME/octez-dal-node.log" 2>&1
This, too, may take some time to launch the first time because it needs to generate a new identity file, this time for the DAL network.
To set the address and port that the node listens on, pass the
--net-addr
argument. By default, it listens on port 11732 on all available network interfaces, equivalent to--net-addr 0.0.0.0:11732
. -
Verify that the DAL node is connected to the DAL network by running this command:
curl http://localhost:10732/p2p/points/info
where
10732
is the port on which the DAL node serves RPC calls.The response lists the network connections that the DAL node has, as in this example:
[
{
"point": "46.137.127.32:11732",
"info": {
"trusted": true,
"state": {
"event_kind": "running",
"p2p_peer_id": "idrpUzezw7VJ4NU6phQYuxh88RiU1t"
},
"p2p_peer_id": "idrpUzezw7VJ4NU6phQYuxh88RiU1t",
"last_established_connection": [
"idrpUzezw7VJ4NU6phQYuxh88RiU1t",
"2024-10-24T15:02:31.549-00:00"
],
"last_seen": [
"idrpUzezw7VJ4NU6phQYuxh88RiU1t",
"2024-10-24T15:02:31.549-00:00"
]
}
},
{
"point": "52.31.26.230:11732",
"info": {
"trusted": true,
"state": {
"event_kind": "running",
"p2p_peer_id": "idqrcQybXbKwWk42bn1XjeZ33xgduC"
},
"p2p_peer_id": "idqrcQybXbKwWk42bn1XjeZ33xgduC",
"last_established_connection": [
"idqrcQybXbKwWk42bn1XjeZ33xgduC",
"2024-10-24T15:02:31.666-00:00"
],
"last_seen": [
"idqrcQybXbKwWk42bn1XjeZ33xgduC",
"2024-10-24T15:02:31.666-00:00"
]
}
}
]It may take a few minutes for the node to connect to the DAL network.
You can also verify that the DAL node is connected by viewing its log. When the node is bootstrapped it logs messages that look like this:
Aug 12 17:44:19.985: started tracking layer 1's node
Aug 12 17:44:24.418: layer 1 node's block at level 7538687, round 0 is final
Aug 12 17:44:29.328: layer 1 node's block at level 7538688, round 0 is finalThe DAL node waits for blocks to be finalized, so this log lags 2 blocks behind the layer 1 node's log.
Now the DAL node is connected to the DAL network but it is not yet receiving data.
-
Ensure that the DAL node runs persistently. Look up how to run programs persistently in the documentation for your operating system. You can also refer to Run a persistent baking node on opentezos.com.
For example, if your operating system uses the
systemd
software suite, your service file might look like this example:[Unit]
Description=Octez DAL node
Wants = network-online.target
After = network-online.target
Requires = octez-node.service
[Install]
WantedBy=multi-user.target
RequiredBy = octez-baker.service
[Service]
Type=simple
User=mybaker
ExecStart=/usr/bin/octez-dal-node run --data-dir /opt/dal
WorkingDirectory=/opt/dal
Restart=on-failure
RestartSec=5
StandardOutput=append:/opt/dal/octez-dal-node.log
StandardError=append:/opt/dal/octez-dal-node.log
SyslogIdentifier=%n
Now that you have a DAL node running, you can start a baking daemon that uses that DAL node. Continue to Step 4: Run an Octez baking daemon.