From b668a2bdf9bfb43d7c3a34520229f28450c61852 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 4 Jun 2024 09:55:29 -0400 Subject: [PATCH 1/9] Clarify connection between contract and IPFS (#404) --- docs/unity/sample-game.md | 3 ++- .../unity/sample-game-architecture-play.png | Bin 21178 -> 21558 bytes static/img/unity/sample-game-architecture.png | Bin 13508 -> 13267 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/unity/sample-game.md b/docs/unity/sample-game.md index 51d60cc85..376f08af7 100644 --- a/docs/unity/sample-game.md +++ b/docs/unity/sample-game.md @@ -2,7 +2,7 @@ title: Sample game authors: Tim McMackin last_update: - date: 22 May 2024 + date: 3 June 2024 --- The sample game for the Unity SDK is a single-player third-person shooter with survival elements. @@ -55,6 +55,7 @@ The sample game uses a custom contract, but you can use the SDK's built-in FA2-c You can view and interact with the contract on a block explorer, such as tzkt.io: https://tzkt.io/KT1TSZfPJ5uZW1GjcnXmvt1npAQ2nh5S1FAj/operations. - The **Interplanetary File System (IPFS)** stores metadata for the tokens, including pictures and descriptions. +Links in the smart contract point to this metadata. This diagram shows the basic interaction between these components: diff --git a/static/img/unity/sample-game-architecture-play.png b/static/img/unity/sample-game-architecture-play.png index d0a76d96994985fe6f0659704400076c424803e8..5d410254cb16269aa6d84009060daa2ea8846696 100644 GIT binary patch literal 21558 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 diff --git a/static/img/unity/sample-game-architecture.png b/static/img/unity/sample-game-architecture.png index 5413e55edcb86a5649fdae185b771e15cf48c45a..b7207798c711e26c1eadf2b33b0d62021d40c2d4 100644 GIT binary patch literal 13267 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 B)NB9% literal 13508 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 Y Date: Fri, 7 Jun 2024 14:50:11 -0400 Subject: [PATCH 2/9] Release notes for Oxford and Paris (#405) * Release notes for Oxford and Paris * Just Oxford, not "the Oxford 2 proposal" Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> * More info on throughput on Smart Rollups Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> * More info on adaptive features Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> * Remove the 2 Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> * Remove the 2 Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> --------- Co-authored-by: NicNomadic <148877430+NicNomadic@users.noreply.github.com> --- .../governance/amendment-history.md | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/docs/architecture/governance/amendment-history.md b/docs/architecture/governance/amendment-history.md index 8234c565c..e9f4258ae 100644 --- a/docs/architecture/governance/amendment-history.md +++ b/docs/architecture/governance/amendment-history.md @@ -1,8 +1,8 @@ --- title: History of amendments -authors: 'Thomas Zoughebi, Aymeric Bethencourt, and Maxime Fernandez' +authors: 'Thomas Zoughebi, Aymeric Bethencourt, Maxime Fernandez, and Tim McMackin' last_update: - date: 14 February 2024 + date: 6 June 2024 --- As presented in [Governance](../governance), the Tezos blockchain is constantly evolving, through new amendments. @@ -209,3 +209,31 @@ Nairobi's main changes are: * Smart Rollups can now be aware of protocol updates happening on the L1. For more information, see the blog post from [Nomadic Labs](https://research-development.nomadic-labs.com/nairobi-announcement.html) and the [reference documentation](https://tezos.gitlab.io/protocols/017_nairobi.html). + +## [Oxford](https://tezos.gitlab.io/protocols/018_oxford.html) (Proxford) + +*Oxford* was autonomously [activated](https://tzkt.io/5070849) on 9 February 2024. + +Oxford's main changes are: + +* [Refinement of Tezos PoS](https://research-development.nomadic-labs.com/oxford2-announcement.html#automated-staking): Oxford introduces changes to [slashing](https://research-development.nomadic-labs.com/oxford2-announcement.html#refined-slashing) and an [automated staking mechanism for bakers](https://research-development.nomadic-labs.com/oxford2-announcement.html#automated-staking). +The latter aims to smoothen the transition towards a new staked funds management API and avoids manual bookkeeping to counter over-delegation. +* [Private rollups](https://research-development.nomadic-labs.com/oxford2-announcement.html): Oxford introduces private Smart Rollups, allowing developers to choose between permissionless or permissioned deployments. +Additionally, Oxford [simplifies the deployment of rollups](https://research-development.nomadic-labs.com/oxford2-announcement.html#introducing-private-rollups-and-other-improvements-to-smart-rollups) both on protocol and periodic test networks, as well as on ad-hoc dedicated ones. +* [Timelocks are re-enabled](https://research-development.nomadic-labs.com/timelocks-are-re-enabled): a new design and implementation of Timelocks addresses security concerns that led to their temporary deactivation in a previous protocol upgrade. + +For more information, see the blog post from [Nomadic Labs](https://research-development.nomadic-labs.com/oxford-announcement.html) and the [reference documentation](https://tezos.gitlab.io/protocols/018_oxford.html). + +## [Paris](https://tezos.gitlab.io/protocols/019_paris.html) (PtParisB) + +*Paris* was autonomously [activated](https://tzkt.io/5726209) on 5 June 2024. + +Paris's main changes are: + +* [10-second block time](https://research-development.nomadic-labs.com/10-second-blocktime.html): Lower latency and faster finality on layer 1 without compromising decentralization or security. +* [Data availability layer](https://research-development.nomadic-labs.com/paris-announcement.html#the-dal-activates-on-mainnet-boosting-smart-rollups-capacity): Boosting throughput and scalability of Smart Rollups. +It enables Tezos Layer 1 to attest the publication of data living outside Layer 1 blocks, increasing by orders of magnitude the bandwidth of data attested by the Layer 1. +* [Adaptive issuance, staking, and adaptive slashing](https://research-development.nomadic-labs.com/adaptive-issuance-paris.html): A major overhaul of Tezos Proof-of-Stake, adapting the economics of tez to fit better with real-world usage, and to increase the chain security. The proposed mechanism ties the protocol’s regular issuance of tez to the ratio of staked tez over the total supply, in order to nudge the staked fund ratio towards a protocol-defined target. +* [Further proof-of-stake refinements](https://research-development.nomadic-labs.com/paris-announcement.html#further-proof-of-stake-refinements): Simplified computation and faster updates of consensus rights. + +For more information, see the blog post from [Nomadic Labs](https://research-development.nomadic-labs.com/paris-announcement.html) and the [reference documentation](https://tezos.gitlab.io/protocols/019_paris.html). From 237cd7a29e8ffb7abca05cf4d16add049311bc64 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 10 Jun 2024 09:40:03 -0400 Subject: [PATCH 3/9] DAL is now available on weeklynet (#407) --- docs/architecture/data-availability-layer.md | 7 +------ docs/tutorials/build-files-archive-with-dal.md | 9 ++------- docs/tutorials/join-dal-baker.md | 7 +------ 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/docs/architecture/data-availability-layer.md b/docs/architecture/data-availability-layer.md index 82a0b6f4f..ee8e26f46 100644 --- a/docs/architecture/data-availability-layer.md +++ b/docs/architecture/data-availability-layer.md @@ -2,14 +2,9 @@ title: The Data Availability Layer authors: "Tim McMackin" last_update: - date: 7 February 2024 + date: 10 June 2024 --- -:::note Experimental -The Data Availability Layer is an experimental feature that is not yet available on Tezos Mainnet. -The way the DAL works may change significantly before it is generally available. -::: - The Data Availability Layer (DAL) is a companion peer-to-peer network for the Tezos blockchain, designed to provide additional data bandwidth to Smart Rollups. It allows users to share large amounts of data in a way that is decentralized and permissionless, because anyone can join the network and post and read data on it. diff --git a/docs/tutorials/build-files-archive-with-dal.md b/docs/tutorials/build-files-archive-with-dal.md index 16cb73393..5d097dae1 100644 --- a/docs/tutorials/build-files-archive-with-dal.md +++ b/docs/tutorials/build-files-archive-with-dal.md @@ -2,14 +2,9 @@ title: Implement a file archive with the DAL and a Smart Rollup authors: 'Tezos Core Developers' last_update: - date: 9 February 2024 + date: 10 June 2024 --- -:::note Experimental -The Data Availability Layer is an experimental feature that is not yet available on Tezos Mainnet. -The way the DAL works may change significantly before it is generally available. -::: - The Data Availability Layer (DAL) is a companion peer-to-peer network for the Tezos blockchain, designed to provide additional data bandwidth to Smart Rollups. It allows users to share large amounts of data in a way that is decentralized and permissionless, because anyone can join the network and post and read data on it. @@ -21,7 +16,7 @@ You will learn: - How to host a DAL node - How to publish data and files with the DAL -Because the DAL is not yet available on Tezos Mainnet, this tutorial uses the [Weeklynet test network](https://teztnets.com/weeklynet-about), which runs on a newer version of the protocol that includes the DAL. +This tutorial uses the [Weeklynet test network](https://teztnets.com/weeklynet-about). Weeklynet runs just like other Tezos networks like Mainnet and Ghostnet, with its own nodes, bakers, and accusers, so you don't need to run your own nodes and bakers. See these links for more information about the DAL: diff --git a/docs/tutorials/join-dal-baker.md b/docs/tutorials/join-dal-baker.md index 496019ef1..829e74cbb 100644 --- a/docs/tutorials/join-dal-baker.md +++ b/docs/tutorials/join-dal-baker.md @@ -2,17 +2,12 @@ title: Join the DAL as a baker, in 5 steps authors: Tezos core developers last_update: - date: 7 February 2024 + date: 10 June 2024 --- The Tezos data availability layer (DAL) is a key component for the scalability of Tezos. In a nutshell, the DAL increases the data bandwidth available for Tezos Smart Rollups by providing a peer-to-peer network that they can use to fetch data without compromising security. -:::note Experimental -The data availability layer is an experimental feature that is not yet available on Tezos Mainnet. -The way the DAL works may change significantly before it is generally available. -::: - Just like layer 1, Tezos bakers ensure the security of the DAL. Bakers not only produce blocks but also attest that other bakers' blocks are valid and properly published on layer 1. In the same way, bakers attest that data published to the DAL is available. From baf050124f6e681c027690730afd7f9aafd421f6 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 10 Jun 2024 15:02:42 -0400 Subject: [PATCH 4/9] An unclosed comment was hiding info (#409) --- docs/architecture/smart-rollups.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/smart-rollups.md b/docs/architecture/smart-rollups.md index 449e9b203..b3de62112 100644 --- a/docs/architecture/smart-rollups.md +++ b/docs/architecture/smart-rollups.md @@ -25,7 +25,7 @@ For reference on Smart Rollups, see [Smart Optimistic Rollups](https://tezos.git This diagram shows a high-level view of how Smart Rollups interact with layer 1: ![Diagram of Smart Rollup architecture](/img/architecture/smart-rollup-architecture.png) - ## Uses for Smart Rollups From 16781767bd97d8b72633adfb6cbeee5d96ed9e1b Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 11 Jun 2024 07:49:08 -0400 Subject: [PATCH 5/9] Info about protocol constants (#408) --- docs/architecture.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index 998b648b5..7db03db85 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -2,7 +2,7 @@ title: Architecture authors: Tim McMackin last_update: - date: 6 February 2024 + date: 10 June 2024 --- The Tezos blockchain is composed of many Tezos nodes running around the world, complemented by other running daemons, such as bakers and accusers. @@ -76,7 +76,19 @@ It also provides the logic that identifies erroneous blocks. Updates to the protocol can change this logic through a voting process, using dedicated voting operations such as protocol proposals or protocol upvotes. For information about the voting process, see [Governance](./architecture/governance). -## The shell +The protocol has constants such as the time between blocks and the amount of tez that an account must stake to be a baker. +These constants can be different for different Tezos networks. + +To get the constants for a network, call the `GET /chains/main/blocks/head/context/constants` RPC endpoint. +For example, to get the constants of the network that the Octez client is currently connected to, run this command: + +```bash +octez-client rpc get /chains/main/blocks/head/context/constants +``` + +For more information about constants, see [Protocol constants](https://tezos.gitlab.io/alpha/protocol_overview.html#protocol-constants) in the Octez documentation. + +### The shell The shell is responsible for the fundamental functions of a distributed software application, including: From 3ba9b7dda44ec9ce00ee1c23960377a4affb992e Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 17 Jun 2024 06:26:06 -0400 Subject: [PATCH 6/9] Show the math for the length of the refutation period (#411) --- docs/architecture/smart-rollups.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/architecture/smart-rollups.md b/docs/architecture/smart-rollups.md index b3de62112..3316a7256 100644 --- a/docs/architecture/smart-rollups.md +++ b/docs/architecture/smart-rollups.md @@ -156,7 +156,10 @@ This kind of Smart Rollup is called a Smart Optimistic Rollup because the commit When there is only one commitment left, either because all nodes published identical commitments during the whole refutation period or because this commitment won the refutation games and eliminated all other commitments, then this correct commitment can be _cemented_ by a dedicated layer 1 operation and becomes final and unchangeable. The commitments for the next commitment period build on the last cemented commitment. -The refutation period lasts 2 weeks on Mainnet; it can be different on other networks. +The refutation period lasts for a set number of blocks based on the `smart_rollup_challenge_window_in_blocks` protocol constant. +For example, currently the refutation period lasts 120,960 blocks on Mainnet. +Mainnet has 10 seconds between blocks as of the Paris protocol upgrade, which means that the refutation period lasts 2 weeks. +Ghostnet has 5 seconds between blocks but its refutation period is twice as many blocks, so its refutation period is also two weeks long. ### Triggering outbox messages From 3b5f48f554d8db25de8381c314d70fc234c2e775 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 17 Jun 2024 07:24:56 -0400 Subject: [PATCH 7/9] Info about the unit type (#401) * Info about the unit type * Move unit to complex types * Add note on where to get all types for languages * Clarify * Examples of the unit type * Don't define unit as a case of option --- .../data-types/complex-data-types.md | 36 ++++++++++++++++++- .../data-types/primitive-data-types.md | 10 +++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/docs/smart-contracts/data-types/complex-data-types.md b/docs/smart-contracts/data-types/complex-data-types.md index c120d688f..a3ef804cb 100644 --- a/docs/smart-contracts/data-types/complex-data-types.md +++ b/docs/smart-contracts/data-types/complex-data-types.md @@ -2,7 +2,7 @@ title: Complex data types authors: 'Mathias Hiron (Nomadic Labs), Sasha Aldrick (TriliTech), Tim McMackin (TriliTech)' last_update: - date: 5 October 2023 + date: 17 June 2024 --- Tezos contracts support these complex data types. @@ -17,6 +17,15 @@ The high-level languages may implement these data types slightly differently, bu - [Variants and Unions](#variants) - [Lambdas](#lambdas) - [Tickets](#tickets) +- [Unit](#unit) + +This list is intended for general information for developers and is not intended to be comprehensive. +For a complete list of data types that are available, see the reference information for the language that you are using: + +- Michelson: [Types](https://tezos.gitlab.io/michelson-reference/#types) +- LIGO: [Introduction](https://ligolang.org/docs/intro/introduction?lang=jsligo) +- Archetype: [Types](https://archetype-lang.org/docs/reference/types) +- SmartPy: [Overview](https://smartpy.io/manual/syntax/overview) ## Pairs {#pairs} @@ -456,3 +465,28 @@ Contracts can run these operations on tickets: - LIGO: [Tickets](https://ligolang.org/docs/reference/current-reference#tickets) - Archetype: [create_ticket and related](https://archetype-lang.org/docs/reference/expressions/builtins/#create_ticket%28s%20:%20T,%20n%20:%20nat%29) - SmartPy: [Tickets](https://smartpy.io/manual/syntax/tickets) + +## Unit {#unit} + +In Tezos, the `unit` type contains a single value that holds no information. +Smart contracts use unit values as placeholders where a variable is required but no other information is needed. +It is the input type of functions taking no input, the output type of functions producing no output, and the storage type of contracts storing no information. + +For example, if a LIGO entrypoint receives no parameter, the data type of the entrypoint's parameter is `unit`: + +```jsligo +@entry +const myentrypoint = (_unusedParameter: unit, store: storageType): returnType => { + // ... +} +``` + +Similarly, if you call this entrypoint with the Octez client and omit the `--arg` argument to pass no parameter, the client passes unit in the background. + +Unit is a concept that Tezos inherits from OCaml; see [Side-Effects and the unit Type](https://ocaml.org/docs/tour-of-ocaml#side-effects-and-the-unit-type) in the OCaml documentation. + +### Implementation details + +- LIGO: [Unit](https://ligolang.org/docs/variants/unit/?lang=jsligo) +- Archetype: [Unit](https://archetype-lang.org/docs/reference/types/#unit) +- SmartPy: [Unit](https://smartpy.io/manual/syntax/unit) diff --git a/docs/smart-contracts/data-types/primitive-data-types.md b/docs/smart-contracts/data-types/primitive-data-types.md index 629d5cfce..2ef3f15e0 100644 --- a/docs/smart-contracts/data-types/primitive-data-types.md +++ b/docs/smart-contracts/data-types/primitive-data-types.md @@ -2,7 +2,7 @@ title: Primitive data types authors: 'Mathias Hiron (Nomadic Labs), Sasha Aldrick (TriliTech), Tim McMackin (TriliTech)' last_update: - date: 4 October 2023 + date: 4 June 2024 --- Tezos contracts support these primitive data types. @@ -16,6 +16,14 @@ The high-level languages may implement these data types slightly differently, bu - [Timestamps](#timestamps) - [Addresses](#addresses) +This list is intended for general information for developers and is not intended to be comprehensive. +For a complete list of data types that are available, see the reference information for the language that you are using: + +- Michelson: [Types](https://tezos.gitlab.io/michelson-reference/#types) +- LIGO: [Introduction](https://ligolang.org/docs/intro/introduction?lang=jsligo) +- Archetype: [Types](https://archetype-lang.org/docs/reference/types) +- SmartPy: [Overview](https://smartpy.io/manual/syntax/overview) + ## Numeric data types: `int` and `nat` {#numeric} Integers (`int`) are whole numbers that can be positive or negative. From c20adab44cc2897af6aa683b2b6e5e46421a2220 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 05:51:14 -0400 Subject: [PATCH 8/9] Bump braces from 3.0.2 to 3.0.3 (#412) Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9120df49c..22a53fb3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4961,11 +4961,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -7573,9 +7573,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, From 769594d385f8c0a3f4a0562fe4f58c455ea60a84 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 21 Jun 2024 05:53:09 -0400 Subject: [PATCH 9/9] Add DAL to the list of info sources for Smart Rollups (#410) * Add DAL to the list of info sources for Smart Rollups * grammar --- docs/architecture/smart-rollups.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/architecture/smart-rollups.md b/docs/architecture/smart-rollups.md index 3316a7256..d98d8d6fe 100644 --- a/docs/architecture/smart-rollups.md +++ b/docs/architecture/smart-rollups.md @@ -2,7 +2,7 @@ title: Smart Rollups authors: 'Nomadic Labs, TriliTech, Tim McMackin' last_update: - date: 11 March 2024 + date: 10 June 2024 --- Smart Rollups play a crucial part in providing high scalability on Tezos. @@ -42,9 +42,14 @@ For example, Smart Rollups enable [Etherlink](https://www.etherlink.com/), which ## Communication -Smart Rollups have access to two sources of information: the rollup inbox and the reveal data channel. +Smart Rollups are limited to information from these sources: + +- The Smart Rollup inbox, which contains messages from layer 1 to all rollups +- The reveal data channel, which allows Smart Rollups to request information from outside sources +- The [Data availability layer](./data-availability-layer) + These are the only sources of information that rollups can use. -In particular, Smart Rollup nodes cannot communicate directly with each other; they do not have a peer-ro-peer communication channel like layer 1 nodes. +In particular, Smart Rollup nodes cannot communicate directly with each other; they do not have a peer-to-peer communication channel like layer 1 nodes. ### Rollup inbox