Nomadic Labs
Nomadic Labs

Meanwhile at Nomadic Labs #12

A summary of Nomadic Labs activities in Q2 2021

Meanwhile...

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

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:

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:

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
2018 logo New logo

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:

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,

We are pleased to announce of 2021 Quarter 2 that:

The Florence upgrade

You can find out more about the Florence upgrade here:

Substantive Florence upgrades include:

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.

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

    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:

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:

NL research seminars

Our series of Nomadic Labs research seminars continues apace. In Q2 we saw:

  1. Helmholtz - A Verifier for Tezos Smart Contracts Based on Refinement Types (20 April 2021)
  2. Information Extraction from Graphs and the TezQuery Tool (13 April 2021)
  3. Verifiable Delay Functions and Groups of Unknown Order (27 April 2021)
  4. On Oracles and Contract Modules (11 May 2021)
  5. TLA+ Formal Specification of Bootstrapping (25 May 2021)
  6. Package Tezos as a MirageOS Unikernel (08 June 2021)
  7. 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.


  1. We have two teams: adoption cultivates relationships with new users; support helps existing users to implement solutions. A third team focusses on training

  2. 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

  3. Technically it’s a library of cryptographic primitives and other functions, packaged as an OCaml module

  4. 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. 

  5. 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. 

  6. Think: a penetration testing tool, applied to give us efficient white-hat hacker testing of our releases.