Einrichten eines Tezos Smart Rollups in 5 Schritten
von Thomas Letan und Chris Pinnock
Ein Rollup ist ein Mittel, um Transaktionen außerhalb der Hauptblockchain zu verarbeiten, sie „aufzurollen“ und später wieder einzuspeisen. Tezos‘ neues Upgrade Mumbai wird die Smart-Rollup-Funktion ins Mainnet bringen . Ein Smart Rollup ist ein Rollup, das von einem WebAssembly-Programm (Wasm) verwaltet wird und zur Implementierung einer Vielzahl von Anwendungsfällen verwendet werden kann.
Zu den Anwendungen gehören:
• Verbesserte Leistung und erhöhter Durchsatz, da Unternehmen ihre Transaktionen in einem Rollup verwalten können;
• Ausführen von Code außerhalb der Kette, um die Belastung der primären Blockchain zu reduzieren;
• Bereitstellung einer virtuellen Maschinenumgebung, die mit anderen Blockchain-Smart-Contract-Sprachen (z. B. Ethereum ) kompatibel ist und so einen Migrationspfad für Entwickler von anderen Blockchains bietet.
Dieser kurze Artikel zeigt Ihnen, wie Sie mit einem Rollup im Mumbai-Testnetzwerk beginnen. Unter der Annahme, dass das Mumbai-Protokoll akzeptiert wird, sollte der hier beschriebene Prozess im April 2023 im Mainnet funktionieren , aber bitte seien Sie vorsichtig – jedes Tezos-Wallet, das Sie im Mainnet verwalten , sollte gut geschützt sein. Außerdem wird der als Teil von Octez v16 veröffentlichte Smart-Rollup-Knoten zu Testzwecken bereitgestellt. Der erste produktionsbereite Smart-Rollup-Knoten, der für eine Mainnet- Bereitstellung geeignet ist, wird voraussichtlich als Teil von Octez v17 veröffentlicht.
Wir gehen nicht auf die technischen Details ein. Weitere Informationen finden Sie in der Smart Rollup Developer Documentation . Wir gehen von folgenden Voraussetzungen aus:
• Eine funktionierende Debian- oder Ubuntu-Linux-Maschine, auf der ein rollender Tezos-Knoten mit Octez v16.0rc3 oder höher ausgeführt wird.
• Um einen Smart Rollup-Daemon auszuführen, müssen Sie mindestens 10.000 Pfund reservieren, die als Kaution eingefroren werden. Darüber hinaus sollten einige Mittel für die Bezahlung der Gebühren des Layer-1-Betriebs reserviert werden.
Beginnen wir damit, diese einzurichten, einschließlich der Einrichtung einer Wallet auf Mumbai .
1 – Einrichten des Knotens
Sie können die Octez-Software einrichten, indem Sie sie aus dem Quellcode erstellen . Alternativ können Sie einen Artikel eines der Autoren verwenden, um einen Knoten einzurichten. Für intelligente Rollups müssen Sie die Pakete v16.0rc3 auf der Download-Site anstelle von v15.1 verwenden.
Der Artikel schlägt vor, einen dedizierten Benutzer Tezos zum Ausführen der Software zu verwenden, und wir gehen in diesem Artikel davon aus. Stellen Sie sicher, dass Sie den Knoten für Mumbai einrichten und einen Mumbai- Snapshot verwenden. Wenn Sie beispielsweise den Knoten konfigurieren, verwenden Sie Folgendes:
sudo su - tezos
octez-node config init --data-dir /var/tezos/node \
--network mumbainet \
--history-mode=rolling \
--net-addr="[::]:9732" \
--rpc-addr="127.0.0.1:8732"
Installieren Sie dann als Root die Smart Rollup-Daemons und installieren Sie alle identifizierten Abhängigkeiten. Zum Beispiel unter Ubuntu Linux:
```
apt install libgmpxx4ldbl
dpkg -i octez-ubt220-unoff-smartrollups_16.0rc3-1_amd64.deb
```
Sie können wie folgt ein Wallet auf dem Automaten einrichten und 10.000 Testmünzen erhalten. Dieses Verfahren wird im Mainnet nicht empfohlen, wo Sie Ihre Schlüssel schützen sollten. Wir gehen davon aus, dass Sie in einem Testnetzwerk arbeiten. Erstellen Sie zunächst eine Brieftasche mit dem Alias „ operator“ .
sudo su - tezos
octez-client gen keys operator
octez-client list known addresses
operator: tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm (unencrypted sk known)
$ octez-client get balance for operator
12002 ꜩ
Für das Mumbai-Testnetzwerk empfiehlt und stellt das Entwicklungsteam einen experimentellen Kernel bereit. Dieser Kernel ist ein einfacher „Echo-Kernel“, der alle empfangenen Transaktionen an die Layer-1-Kette zurücksendet. Die Smart Rollup Developer Documentation verwendet es, um die verschiedenen Interaktionen zu demonstrieren, die Benutzer mit einem Smart Rollup haben können. Laden Sie das Shell-Skript herunter , das es enthält.
wget
https://tezos.gitlab.io/_downloads/3dc4fd44d97861f183e18fda0ee8a9ae/sr_boot_kernel.sh
source sr_boot_kernel.sh
echo ${KERNEL}
4 – Erstellen des Rollups und Konfigurieren der Rollup-Daemons
Unter der Annahme, dass die lokale Wallet „operator“ heißt , initiieren Sie das Rollup mit dem Befehl „octez-client“ (als tezos ):
octez-client originate smart rollup from operator \
of kind wasm_2_0_0 \
of type bytes \
with kernel "${KERNEL}" \
--burn-cap 999
Vorausgesetzt, dass die Erstellung erfolgreich ist, wird in der Ausgabe eine Zeile mit der Smart-Rollup-Adresse angezeigt. Die Adresse beginnt mit sr1 und in unserer Beispielausgabe unten lautet sie sr16sXnn7syKanQyVdXJ2h1VxKxmSE52NNsv.
Estimated gas: 2748.229 units (will add 100 for safety)
Estimated storage: 6552 bytes added (will add 20 for safety)
Operation successfully injected in the node.
Operation hash is 'ooU5aURNgPGcvuHrSxtWJ61NoBMdD5H6nh8smStGV8JhE1ip8Ac'
Waiting for the operation to be included...
Operation found in block: BMA1mBzZZfra2cAhYVUQ5G2d7qWNrr62UGzE4PnM4rMhr2v5SYm (pass: 3, off
This sequence of operations was run:
Manager signed operations:
From: tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm
Fee to the baker: tz0.001054
Expected counter: 285427
Gas limit: 2849
Storage limit: 6572 bytes
Balance updates:
tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm ... -tz0.001054
payload fees(the block proposer) +tz0.001054
Smart rollup origination: Kind: wasm_2_0_0
Parameter type: bytes
Kernel Blake2B hash:
'24df9e3c520dd9a9c49b447766e8a604d31138c1aacb4a67532499c6a8b348c
This smart rollup origination was successfully applied
Consumed gas: 2748.269
Storage size: 6552 bytes
Address: sr16sXnn7syKanQyVdXJ2h1VxKxmSE52NNsv
Genesis commitment hash:
src148CUpWBSWdiACxJU7qmM83EPSwJUnGXvT3UoR1wMskb7qDn9o8
Balance updates:
tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm ... -tz1.638
storage fees +tz1.638
The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
octez-client wait for ooU5aURNgPGcvuHrSxtWJ61NoBMdD5H6nh8smStGV8JhE1ip8Ac
to be included --confirmations 1 --branch
BLkRNr2dgMbmpxvmmohneG4Q6zAGv6AperavsgdDJzYzTfuHrYJ
and/or an external block explorer.
Erstellen Sie ein Arbeitsverzeichnis. Verwenden Sie dann die Smart-Rollup-Adresse und die Wallet-Adresse, um die Rollup-Daemons mithilfe des aktuell aktiven Protokolls wie folgt zu konfigurieren:
Tabulate: mkdir -p /var/tezos/smartrollup
octez-smart-rollup-node-PtMumbai --base-dir "/var/tezos/node" \
init operator config for "sr16sXnn7syKanQyVdXJ2h1VxKxmSE52NNsv" \
with operators "tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm" \
--data-dir "/var/tezos/smartrollup"
5 – Ausführen der Rollup-Daemons
Wenn Sie die oben genannten Pakete verwenden, können Sie die Smart-Rollup-Daemons mit systemctl als Root ausführen. Sie können so eingerichtet werden, dass sie beim Booten starten. Überprüfen Sie vor der Ausführung, ob /etc/octez/smartrollup.conf für Ihre Umgebung geeignet ist.
systemctl enable octez-smartrollup
systemctl start octez-smartrollup
octez-smart-rollup-node-PtMumbai run --data-dir /var/tezos/smartrollup
Um das Rollup zu testen, können Sie schließlich eine einfache Nachricht einfügen. Wir schlüsseln das Beispiel auf der Entwicklungsseite auf . Die Einzelheiten würden den Rahmen dieses Artikels sprengen. Erstellen Sie zunächst wie folgt einen Vertrag auf der Blockchain:
Tabulate: sudo su - tezos
octez-client originate contract testcontract transferring 1 from operator \
running 'parameter string; storage string; code {CAR; NIL operation; PAIR};' \
--init '""' --burn-cap 0.4
...
New contract KT1ABda79D6zcmRvKPoTYsqddDhrhWCqjCzr originated.
MESSAGE='[ { "destination" : "KT1ABda79D6zcmRvKPoTYsqddDhrhWCqjCzr",
"parameters" : "\"Hello Tezos Commons\"",
"entrypoint" : "%default" } ]'
EMESSAGE=`octez-smart-rollup-client-PtMumbai encode outbox message "$MESSAGE"`
octez-client send smart rollup message "hex:[ \"${EMESSAGE}\" ]" from operator
wget http://YOURNODE:8732/chains/main/blocks/BLOCK_ID
[
{
"protocol": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK",
"chain_id": "NetXzfS4qFhir8c",
"hash": "onjf4VukkZ2BYkhbnjtKMia35xzTkQwoYctrYZ8sNwBh2BRgDSq",
"branch": "BMDnbi8TKyDbNR4144Um15jCoLGEh2WejS5j2iM68SPTVcRqZZc",
"contents": [
{
"kind": "smart_rollup_publish",
"source": "tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm",
"fee": "963",
"counter": "3941",
"gas_limit": "6418",
"storage_limit": "0",
"rollup": "sr1Hp6fvRDkKUsFsdLXoFiAn1tVCjkpmSygb",
"commitment": {
"compressed_state": "srs12QdRrhCEj8N8HjbsZNQVd8x4EVzfT9SBCfzNSHqS97i6yWVXA9",
"inbox_level": 8958,
"predecessor": "src13eN6KaiGH66HDYRsoXdZBiQ1GT24qjDusgCuEkrEiL2MUxEGA3",
"number_of_ticks": "880000000000"
},
"metadata": {
"balance_updates": [
{
"kind": "contract",
"contract": "tz1gUp6L56GvuLVk3ZFoFZ6bqckFZf6XgYsm",
"change": "-963",
"origin": "block"
},
{
"kind": "accumulator",
"category": "block fees",
"change": "963",
"origin": "block"
}
],
"operation_result": {
"status": "applied",
"consumed_milligas": "6317837",
"staked_hash": "src12cod31ux6yxPBEhhWSX7nW3bodNRxdMHnzMjLNYVRfLCG3dXNp",
"published_at_level": 8961,
"balance_updates": []
}
}
}
],
Beachten Sie, dass dieses letzte Beispiel auf Mondaynet statt auf Mumbainet durchgeführt wurde. Sie können Mondaynet auch für Ihre Smart-Rollup-Tests verwenden, müssen jedoch die richtige Entwicklungsversion von Octez verwenden, die zum Netzwerk passt.
Danksagungen
Vielen Dank an John Newby für einige nützliche Diskussionen während der Erstellung dieses Papiers.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































