Welcome to our meanwhile series, the ongoing story of Nomadic Labs’ amazing adventures in the Tezos blockchain space. This post is a recap of our activities in the second quarter of 2021, following on from our 2020 recap and our 2021 first-quarter Meanwhile. As always, you can find out more about us here:
Twitter @LabosNomades ~ Website ~ LinkedIn ~ Technical blog ~ GitLab repo
So here’s what we’ve been up to these past three months:
- Octez
- Adoption and Support
- Training
- Umami
- Announcing: a new logo and website
- Culture and growth
- Announcing: PhD student, Intern, and apprentice interviews
- Protocol upgrade: Florence activated, Granada proposed
- The Florence upgrade
- The Granada upgrade proposal
- Tenderbakenet
- Testing
- Interviews and Papers
- NL research seminars
- Tezos is 3
- À la prochaine
Octez
We are pleased to announce Octez. Octez is a new name for a veteran implementation of Tezos which had previously been known just by its version number and by a GitLab repo.
At time of writing, the latest version of Octez is Octez Version 9.4, and the latest release candidate is Octez Version 10.0~rc1.
Here is the Octez GitLab repo. Feel free to get the Octez Tezos implementation and join the Tezos blockchain!
Adoption and Support
Our adoption and support teams1 have been hard at work developing relationships, and thanks to their dilligence we are proud to announce that:
- On 15 April 2021 Forge Capital Markets (a subsidiary of Société Générale) created a structured product on Tezos public blockchain. This five million Euro pilot scheme is designed in particular to demonstrate the legal, regulatory, and operational feasibility of issuing complex financial instruments (structured products) on a public blockchain.
- On 20 April 2021 Ubisoft (a leading computer gaming company) became an institutional baker via its Strategic Innovation Lab, whose mission is to help prepare Ubisoft for the future by exploring innovative technologies. As a Tezos corporate baker, Ubisoft will experiment with the liquid proof-of-stake consensus algorithm and research the potential of blockchain technology for the future of gaming.2
- Nomadic Labs has been helping Arteïa to sell artworks as non-fungible tokens on the hic et nunc platform (case study here). On May 8, a number of artworks by Benjamin Spark were “dropped” on the platform.
- On 10 May, Nomadic Labs was re-elected as a board member of the association ADAN (an industry federation in the crypto-asset and blockchain sector in France and across Europe).
- On 3 June 2021 Nomadic Labs joined WalChain, a Wallonian business network of blockchain startups, investment funds, clusters, research centres, and Wallonian universities. As Oana Ladret Piciorus, Managing Director of Nomadic Labs said: “We are happy to join WalChain and hope to bring to this ecosystem our extensive knowledge of the Tezos protocol and of course offer our support to companies in this region looking to explore it.”
- In June 2021 the association Pour Que Marseille Vive! and Equisafe deployed the first non-fungible token (NFT) of a physical work of art (by the Marseille artist Deniz Doruk) on the Tezos public blockchain. You can view it here. Watch this space!
- MacLaren is working on Tezos NFTs with our adoption team. See this NFT, it’s as easy as 1-2-3 howto (dated 17 June).
- We have an ongoing collaboration with BlockStart, the Blockchain Partnership Programme, and we are pleased to announce that on June 17, Thibault Chessé, Alexia Mertinel, and Hadrien Zerah became blockchain mentors with Blockstart, helping to mentor blockchain start-ups during the Prototype and Pilot stages.
Training
Training is key to uptake and adoption and in May/June 2021 Nomadic Labs, in collaboration with colleagues from the SmartPy, Ligo and Archetype language teams, organised two online training sessions on Smart Contract programming (in French: “Développer des Smart Contrats sur Tezos”) for a total of just over thirty developers from various French companies interested in doing projects based on the Tezos blockchain.
The courses were well-received and we plan to continue to run training courses in both French and English. If you’re interested, please just send us an e-mail at training@nomadic-labs.com.
Umami
The Umami Team at Nomadic Labs released the Beta version of the Umami wallet in April 2021. This Tezos cryptocurrency wallet is designed as a power tool, built by OCaml developers for OCaml developers using ReasonML, and supporting all the native features of the Tezos protocol, including multiple accounts, tokens, batch transactions, and delegation — with more features in the pipeline.
You can download Umami here. For more information see:
- A Umami Wallet page on Medium.
- A short essay on the purpose of Umami.
- The Umami GitLab repo.
- The list of Umami releases.
Announcing: a new logo and website
Nomadic Labs is happy to introduce to the world its new logo and its new modern and accessible website.
Since our team formed in 2018, the Tezos project has grown considerably, and our own identity has grown along with it. While we remain primarily an OCaml programming house, we have seen our activities diversify with the addition of teams dedicated to adoption, support, and training. Our new image encapsulates our dedication to technical excellence, community and commitment, which are the core values for our activities.
Our 2018 look | Our new 2021 look | |
---|---|---|
Culture and growth
Since April 2021 we are delighted to have been joined by five new hires and four interns (see next item), bringing our count of full-time employees to 67.
Announcing: PhD student, Intern, and apprentice interviews
It’s the people in a workplace that make it a good place for people to work in.
Thus we are extremely pleased at Nomadic Labs to host interns (stagiaires) and apprentices (apprentis), and to supervise some PhD students in collaboration with the local universities in Paris: our contribution to educating the next generation and to getting fresh perspectives on our own work.
Our interns, apprentices, and PhD students come from many backgrounds, and each has their own unique story to tell, so we’ve introduced a ‘people’ category to the Nomadic Labs blog to host interviews with our valued guests. Interviews so far have included:
- Corentin Calmels, an intern working with the adoption team on new business solutions.
- Paul Laforgue, a PhD student working with the Shell team on specification and verification of message-passing distributed systems using choreographies.
- Guillaume Bau, a PhD student working on abstract interpretation for Michelson smart contracts.
- Colin Gonzalez, a PhD student working on spreadsheet-like paradigms for practical smart contract programming languages.
Protocol upgrade: Florence activated, Granada proposed
On 11 May 2021 Florence was activated, and on 25 May 2021 Granada was proposed.
The Tezos protocol environment enjoys regular performance and security upgrades.3 How this happens concretely is that a self-amendment mechanism is activated to propose an upgrade the protocol — and because Tezos is an open community, protocol upgrades are approved by community vote. This means that upgrades can only happen when you, the Tezos community, vote that it be so; which is why you’ll notice we only ever talk about us making upgrade proposals.
Most recently,
- Delphi was activated on 12 November 2020 (block height 1,212,417; cycle 296; changelog; significance of the upgrade), and
- Edo was activated on 13 February 2020 (block height 1,343,489; cycle 328; changelog).
We are pleased to announce of 2021 Quarter 2 that:
- Florence was activated on 11 May 2021 (block height 1,466,368; cycle 357; changelog).
- Granada was proposed (ongoing election; changelog) — and approved as this article went to press on July 20.
The Florence upgrade
You can find out more about the Florence upgrade here:
- Florence, Tezos’ Sixth Protocol Upgrade Goes Live, Bringing Further Gas Optimizations & More (on TQ Tezos).
- Florence, the latest Tezos upgrade, is LIVE
- Florence changelog (on Tezos Developer Resources).
Substantive Florence upgrades include:
- Gas optimisations using saturation arithmetic (so you get more smart contract execution for your gas). Our benchmarks indicate a tenfold speedup of gas computation, and a 35% speedup of the execution cycle of the smart contract Michelson interpreter in Florence overall.
- The maximum operation size is doubled, meaning that the maximum length of a smart contract is doubled.
- Tezos calling convention has migrated from Breadth-First to Depth-First Order (BFS to DFS), making smart contract development more intuitive and less liable to bugs (see also a discussion of the code design).
- Florence drops the Test Chain feature of the Economic Protocol, because in practice it wasn’t needed.
For more reading see:
The Granada upgrade proposal
As per a detailed blogpost on the Granada upgrade proposal, Granada proposes the following changes:
-
A switch from Emmy+ consensus to Emmy*. Emmy* halves block time from 60 to 30 seconds (doubling transactions per second), increases the number of endorsement slots from 32 to 256 (increasing stability and participation), and provides a special fast consensus path for when the network is operating normally. All this makes Emmy* significantly faster than Emmy+.
-
Liquidity Baking promotes low-slippage exchange between tez and other currencies using wrapped tokens.
-
The improvements to gas consumption continue. Empirically, we observed gas consumption decrease by a factor of three to six in the execution of already-deployed contracts.
-
Regrettably, Granada also contains a non-critical bug. We expect this to be corrected in the following “H”-named upgrade proposal. In the meantime, we will provide a linting tool to help developers detect the bug-affected pattern in any new smart-contract code.
For further reading, see:
Tenderbakenet
We plan to upgrade our consensus algorithm to Tenderbake in the near future. To this end, we are pleased to announce Tenderbakenet, an experimental Tezos blockchain based on Tenderbake.
- See the TzKT block explorer for Tenderbakenet (many thanks to Baking Bad), and
- the instructions for joining Tenderbakenet.
Further information is in an article on “Rapid Innovation: Tezos Tenderbake Testnet Spawned”.
Testing
We continue to improve our home-grown Tezt framework. One substantive new feature is the ability to run tests on remote hosts (see merge request).
How is this substantive? Tezt was originally a tool for running a test suite of local unit and integration tests on your local machine. This new functionality makes it convenient to run tests on remote hosts; Tezt-ing by remote control, so to speak. This opens up possibilities to administer unit and integration Tezts at scale on clusters of remote nodes.
We’re also investing heavily in property-based testing (see also our previous blog post). For example:
-
We have completed a migration from crowbar property-based testing framework to the more mature QCheck framework. In particular, our friends at Tweag have developed a new version QCheck2, which includes integrated shrinking, which means that QCheck2 automatically searches for minimal counterexamples,4 without requiring the programmer to write a shrinker by hand.5
-
In March 2021 Valentin Chaboche started an internship on enabling large-scale light-weight specification and testing using QCheck. His development consists of
- a ppx to derive generators and
- a ppx to transform annotation-based function specifications to property-based tests.
ppx is an OCaml metaprogramming framework, and a generator is a program to generate test cases e.g. for QCheck or QCheck2; so that makes a ppx to derive generators an “OCaml metaprogram for a programmer to programmatically generate generators to test code the programmer generated”. Similarly a ppx to transform specifications to property-based tests means more metaprogramming, for even more automatic test generation. All in all, this means: lots and lots of new tests, many of which are generated by the computer itself with minimal or no further programmer input.
To most effectively take advantage of these advances in tooling, we’re refactoring our code to expose and thus test interfaces in the codebase (more details in our official “better testing through refactoring” milestone). We’re concentrating on hardening a set of critical code layers in the shell: the peer-to-peer layer, the distributed database, and the mempool.
This effort is complemented by the development of an adversarial testing tool by Functori. The tool, currently in design, is intended to enable the specification and execution of network attack scenarios, thus enabling early detection of security issues in Octez (an implementation of the Tezos blockchain in OCaml).6
Finally, the better to check the coverage of our test suite, we’re working on improving our usage of test coverage reports. This happens mainly through the switch to a newer version of bisect_ppx and forthcoming usability and automation improvements in our continuous integration environment.
Interviews and Papers
We are delighted to report that:
- On 9 April our head of adoption Hadrien Zerah was interviewed in Le Point magazine (in French) about “L’irrésistible Ascension des Cryptomonnaies” (the irresistable rise of cryptocurrencies).
- On 13 May, Tezos Ukraine interviewed Hadrien Zerah.
- You may be interested in this interview with Vincent Botbol, Research and Development Architect at Nomadic Labs.
We commissioned a report by INRIA on “Possible evolutions of the voting system in Tezos”, which was released on April 14. See also the discussion on Tezos Agora.
We are also delighted to announce that:
- Richard Bonichon et al’s paper on “Search-Based Local Black-Box Deobfuscation: Understand, Improve, and Mitigate” (see also author’s pdf) was accepted to the ACM CCS 2021 conference (15-19 November 2021). Well done Richard!
- Richard Bonichon et al’s paper on “Program Protection Through Software-Based Hardware Abstraction” (see also author’s pdf) was accepted and presented at Secrypt 2021 (6-8 July 2021). Well done again Richard!
- Lăcrămioara Astefănoaei, Pierre Chambart, Eugen Zălinescu, et al’s paper on “Tenderbake - A Solution to Dynamic Repeated Consensus for Blockchains” was presented at the Fourth International Symoposium on Foundations and Applications of Blockchain (FAB‘21). Well done Lacra, Pierre, and Eugen!
NL research seminars
Our series of Nomadic Labs research seminars continues apace. In Q2 we saw:
- Helmholtz - A Verifier for Tezos Smart Contracts Based on Refinement Types (20 April 2021)
- Information Extraction from Graphs and the TezQuery Tool (13 April 2021)
- Verifiable Delay Functions and Groups of Unknown Order (27 April 2021)
- On Oracles and Contract Modules (11 May 2021)
- TLA+ Formal Specification of Bootstrapping (25 May 2021)
- Package Tezos as a MirageOS Unikernel (08 June 2021)
- Prototype of a Typical Smart Contract Agency (22 June 2021)
Click here for full list of talks.
Tezos is 3
Tezos is three years old! Specifically, June 30 2021 — just at the end of Q2 2021 — was the three-year anniversary of the Tezos genesis block, which was baked on June 30 2018. See the video on Twitter.
À la prochaine
And that’s what we’ve been up to in Quarter 2 of 2021: three months of Nomadic Labs building and testing software and extending public understanding and adoption of blockchain technology. Thanks for reading, and do check in again for the next Meanwhile for Quarter 3 of 2021.
-
We have two teams: adoption cultivates relationships with new users; support helps existing users to implement solutions. A third team focusses on training. ↩
-
A baker is a block validator on the Tezos blockchain. An institutional baker is a corporate institution that sets up one or more validating nodes on the Tezos blockchain. More information on bakers here. ↩
-
Technically it’s a library of cryptographic primitives and other functions, packaged as an OCaml module. ↩
-
Inputs that break correctness assertions, i.e. inputs that suggest errors either in the program, or in the programmer’s understanding of their program’s correctness. Also see next footnote. ↩
-
Some context: in property-based testing, the programmer states desired correctness properties and then leverages the computer itself to generate (thousands, tens of thousands, or even millions of) test cases for their code with respect to their desired correctness properties.
In practice this is very effective — but it is important for subsequent debugging that counterexamples be small and so easy to understand; for a given bug, a small and precise counterexample to trigger it is far easier to trace than a large and redundant one. Thus, while a property-based testing tool may find a counterexample, it is the job of a shrinker to input a possibly large counterexample and find a small one that a programmer can quickly dispatch.
It’s suboptimal if a programmer has to write shrinkers by hand, since then we may just be replacing the problem of writing bug-free code with the problem of writing bug-free shrinkers for code! This might still be a worthwhile tradeoff, but it would be better and also safer if it could happen automagically. This is the burden of which QCheck2 relieves the programmer, relative to QCheck, and doing this is possible because shrinking tends to be a heuristic process: an “integrated shrinker” is a bundle of heuristics which, in practice, tends to automatically generate effective shrinkers that find small counterexamples from large ones. ↩
-
Think: a penetration testing tool, applied to give us efficient white-hat hacker testing of our releases. ↩