Skip to content

Commit

Permalink
Merge pull request #740 from serokell/PruStephan/#518-package-smart-c…
Browse files Browse the repository at this point in the history
…ontract-rollup

[#518] Update rollup binaries
  • Loading branch information
krendelhoff2 authored Nov 24, 2023
2 parents f10411c + 00aee93 commit f73bc8c
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 90 deletions.
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",
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>
```
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.

0 comments on commit f73bc8c

Please sign in to comment.