Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#518] Update rollup binaries #740

Merged
merged 2 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ tezos-setup
You can also read [the dedicated article](./docs/baking.md) to find out more about
this setup, the binaries, and the services used.

For setting up experimental transaction rollup node, see [this doc](./docs/tx-rollup.md).
For setting up experimental smart rollup node, see [this doc](./docs/smart-rollup.md).

#### Voting on Ubuntu

Expand Down
8 changes: 4 additions & 4 deletions docker/package/defaults/tezos-rollup-node.conf
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

# shellcheck disable=SC2034
TEZOS_CLIENT_DIR="/var/lib/tezos/.tezos-client"
NODE_RPC_SCHEME="http"
NODE_RPC_ADDR="localhost:8732"
ROLLUP_NODE_RPC_ENDPOINT="127.0.0.1:8472"
ROLLUP_MODE="observer"
NODE_RPC_ENDPOINT="http://localhost:8732"
ROLLUP_MODE="operator"
ROLLUP_ALIAS="rollup"
ROLLUP_OPERATORS="baker"
ROLLUP_DATA_DIR="/var/lib/tezos/rollup"
94 changes: 45 additions & 49 deletions docker/package/packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,78 +506,74 @@ def mk_node_unit(
)


def mk_rollup_packages(*protos):
def mk_units(proto):
startup_script = f"/usr/bin/tezos-sc-rollup-node-{proto}-start"
service_file = ServiceFile(
Unit(after=["network.target"], description=f"Tezos smart rollup node"),
Service(
environment_files=[f"/etc/default/tezos-smart-rollup-node-{proto}"],
environment=[f"PROTOCOL={proto}", f"TYPE=sc"],
exec_start_pre=[
"+/usr/bin/setfacl -m u:tezos:rwx /run/systemd/ask-password"
],
exec_start=startup_script,
exec_stop_post=[
"+/usr/bin/setfacl -x u:tezos /run/systemd/ask-password"
],
state_directory="tezos",
user="tezos",
type_="forking",
krendelhoff2 marked this conversation as resolved.
Show resolved Hide resolved
keyring_mode="shared",
),
Install(wanted_by=["multi-user.target"]),
)
return [
SystemdUnit(
service_file=service_file,
startup_script=startup_script.split("/")[-1],
startup_script_source="tezos-rollup-node-start",
config_file="tezos-rollup-node.conf",
),
]
def mk_rollup_node():
startup_script = f"/usr/bin/tezos-smart-rollup-node-start"
service_file = ServiceFile(
Unit(after=["network.target"], description=f"Tezos smart rollup node"),
Service(
environment_files=[f"/etc/default/tezos-smart-rollup-node"],
exec_start_pre=[
"+/usr/bin/setfacl -m u:tezos:rwx /run/systemd/ask-password"
],
exec_start=startup_script,
exec_stop_post=["+/usr/bin/setfacl -x u:tezos /run/systemd/ask-password"],
state_directory="tezos",
user="tezos",
type_="simple",
keyring_mode="shared",
),
Install(wanted_by=["multi-user.target"]),
)
systemd_units = [
SystemdUnit(
service_file=service_file,
startup_script=startup_script.split("/")[-1],
startup_script_source="tezos-rollup-node-start",
config_file="tezos-rollup-node.conf",
),
]

def mk_rollup_package(name, proto):
proto_snake_case = protocol_numbers[proto] + "_" + proto
return TezosBinaryPackage(
f"tezos-smart-rollup-{name}-{proto}",
f"Tezos smart rollup {name} using {proto}",
return {
f"tezos-smart-rollup-node": TezosBinaryPackage(
f"tezos-smart-rollup-node",
f"Tezos smart rollup node",
meta=packages_meta,
systemd_units=mk_units(proto) if name == "node" else [],
target_proto=proto,
systemd_units=systemd_units,
additional_native_deps=[
"tezos-client",
"tezos-node",
"tezos-sapling-params",
],
postinst_steps=daemon_postinst_common,
dune_filepath=f"src/proto_{proto_snake_case}/bin_sc_rollup_{name}/main_sc_rollup_{name}_{proto_snake_case}.exe",
dune_filepath="src/bin_smart_rollup_node/main_smart_rollup_node.exe",
)
}


def mk_node_package():
def mk_rollup_clients(*protos):
def mk_rollup_client_package(proto):
proto_snake_case = protocol_numbers[proto] + "_" + proto
return TezosBinaryPackage(
f"tezos-smart-rollup-node",
f"Tezos smart rollup node",
f"tezos-smart-rollup-client-{proto}",
f"Tezos smart rollup client using {proto}",
meta=packages_meta,
systemd_units=[],
target_proto=proto,
additional_native_deps=[
"tezos-client",
"tezos-node",
"tezos-sapling-params",
],
postinst_steps=daemon_postinst_common,
dune_filepath="src/bin_smart_rollup_node/main_smart_rollup_node.exe",
dune_filepath=f"src/proto_{proto_snake_case}/bin_sc_rollup_client/main_sc_rollup_client_{proto_snake_case}.exe",
)

packages = ["client"]
# FIXME with #740 PR
return [
{f"tezos-smart-rollup-{name}-{proto}": mk_rollup_package(name, proto)}
for name in packages
{f"tezos-smart-rollup-client-{proto}": mk_rollup_client_package(proto)}
for proto in protos
] + [{f"tezos-smart-rollup-node": mk_node_package()}]
]


packages.extend(mk_rollup_packages("PtNairob", "Proxford"))
packages.append(mk_rollup_node())
packages.extend(mk_rollup_clients("PtNairob", "Proxford"))

packages = dict(ChainMap(*packages))
13 changes: 8 additions & 5 deletions docker/package/scripts/tezos-rollup-node-start
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ set -euo pipefail

# Note: the 'TEZOS_CLIENT_DIR' env var is expected and used by the rollup node

# $PROTOCOL should be defined in the system unit environment
node="/usr/bin/octez-$TYPE-rollup-node-$PROTOCOL"
node="/usr/bin/octez-smart-rollup-node"

"$node" init "$ROLLUP_MODE" config \
for "$ROLLUP_ALIAS" \
--rpc-addr "$ROLLUP_NODE_RPC_ENDPOINT" \
with operators \
"$ROLLUP_OPERATORS" \
--data-dir "$ROLLUP_DATA_DIR" \
--force

"$node" --endpoint "$NODE_RPC_SCHEME://$NODE_RPC_ADDR" \
run "$ROLLUP_MODE" for "$ROLLUP_ALIAS" &
exec "$node" --endpoint "$NODE_RPC_ENDPOINT" \
run "$ROLLUP_MODE" for "$ROLLUP_ALIAS" \
with operators "$ROLLUP_OPERATORS" \
--data-dir "$ROLLUP_DATA_DIR"
14 changes: 8 additions & 6 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,11 @@ aware of the change as well.
| `PORT` | `tezos-signer-tcp` | Listening TCP port for the signer, e.g. `7732` | `tezos-signer-tcp` |
| `TIMEOUT` | `tezos-signer-tcp` | Timeout used by the signer to close client connections (in seconds), e.g. `8` | `tezos-signer-tcp` |
| `SOCKET` | `tezos-signer-unix` | Path to the local socket file, e.g. `/var/lib/tezos/.tezos-signer/socket` | `tezos-signer-unix` |
| `TEZOS_CLIENT_DIR` | `tezos-tx-rollup-node-<proto>` | Path to the tezos client data directory, e.g. `/var/lib/tezos/.tezos-client` | `tezos-tx-rollup-node-<proto>` |
| `NODE_RPC_SCHEME` | `tezos-tx-rollup-node-<proto>` | Scheme of the node RPC endpoint, e.g. `http`, `https` | `tezos-tx-rollup-node-<proto>` |
| `NODE_RPC_ADDR` | `tezos-tx-rollup-node-<proto>` | Address of the node RPC endpoint, e.g. `localhost:8732`, `node.example.org:8732` | `tezos-tx-rollup-node-<proto>` |
| `ROLLUP_NODE_RPC_ENDPOINT` | `tezos-tx-rollup-node-<proto>` | Address of this rollup node RPC endpoint, e.g. `127.0.0.1:8472` | `tezos-tx-rollup-node-<proto>` |
| `ROLLUP_MODE` | `tezos-tx-rollup-node-<proto>` | Rollup mode used by this node, e.g. `accuser`, `observer`, `batcher` | `tezos-tx-rollup-node-<proto>` |
| `ROLLUP_ALIAS` | `tezos-tx-rollup-node-<proto>` | Alias of the address to be used for rollup, e.g. `rollup` | `tezos-tx-rollup-node-<proto>` |
| `TEZOS_CLIENT_DIR` | `tezos-smart-rollup-node-<proto>` | Path to the tezos client data directory, e.g. `/var/lib/tezos/.tezos-client` | `tezos-smart-rollup-node-<proto>` |
| `NODE_RPC_SCHEME` | `tezos-smart-rollup-node-<proto>` | Scheme of the node RPC endpoint, e.g. `http`, `https` | `tezos-smart-rollup-node-<proto>` |
| `NODE_RPC_ADDR` | `tezos-smart-rollup-node-<proto>` | Address of the node RPC endpoint, e.g. `localhost:8732`, `node.example.org:8732` | `tezos-smart-rollup-node-<proto>` |
| `ROLLUP_NODE_RPC_ENDPOINT` | `tezos-smart-rollup-node-<proto>` | Address of this rollup node RPC endpoint, e.g. `127.0.0.1:8472` | `tezos-smart-rollup-node-<proto>` |
| `ROLLUP_MODE` | `tezos-smart-rollup-node-<proto>` | Rollup mode used by this node, e.g. `accuser`, `observer`, `batcher` | `tezos-smart-rollup-node-<proto>` |
| `ROLLUP_ALIAS` | `tezos-smart-rollup-node-<proto>` | Alias of the address to be used for rollup, e.g. `rollup` | `tezos-smart-rollup-node-<proto>` |
| `ROLLUP_OPERATORS` | `tezos-smart-rollup-node-<proto>` | Operator address or alias for node operations in non-observer modes |`tezos-smart-rollup-node-<proto>`|
| `ROLLUP_DATA_DIR`| `tezos-smart-rollup-node-<proto>` | Directory to store rollup data | `tezos-smart-rollup-node-<proto>` |
44 changes: 44 additions & 0 deletions docs/smart-rollup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!--
- SPDX-FileCopyrightText: 2022 Oxhead Alpha
- SPDX-License-Identifier: LicenseRef-MIT-OA
-->

# Setting up smart rollup node on Ubuntu

At first you should originate rollup with the provided alias for some implicit account:
```
sudo -u tezos tezos-client originate smart rollup <ROLLUP_ALIAS> from <IMPLICIT_ACCOUNT_ALIAS> of kind <SMART_ROLLUP_KIND> of type <ROLLUP_PARAMETER_TYPE> with kernel <KERNEL>
krendelhoff2 marked this conversation as resolved.
Show resolved Hide resolved
```
Here:
* `ROLLUP_ALIAS` - Name for a new smart rollup
* `IMPLICIT_ACCOUNT_ALIAS` - Name of the account originating smart rollup
* `SMART_ROLLUP_KIND` - Kind of proof-generating virtual machine (PVM)
* `ROLLUP_PARAMETER_TYPE` - The interface of smart rollup (with entrypoints and signatures)
* `KERNEL` - The kernel of smart rollup that PVM can interpret

For more information on smart rollup origination, please check [official documentation](https://tezos.gitlab.io/alpha/smart_rollups.html#origination).

You can use the following command this way:

```
octez-client originate smart rollup "my-rollup" \
from "bob" \
of kind wasm_2_0_0 \
of type unit \
with kernel "file:kernel.hex"
```

For more extended step-by-step example, please proceed to this [tutorial](https://www.marigold.dev/post/originating-a-smart-rollup).

After that, with the active `tezos-node` service available with the provided uri, run the following command
```
systemctl start tezos-smart-rollup-node.service
```

For further details, see [the upstream documentation on smart rollups](http://tezos.gitlab.io/active/smart_rollups.html).

## Options and defaults

As any other `systemd` services ditributed here, rollup binaries have settable
options, see [the dedicated documentation](./configuration.md) to see their
default values and how to change these.
25 changes: 0 additions & 25 deletions docs/tx-rollup.md

This file was deleted.

Loading