Nomadic Labs
Nomadic Labs

Archives

On “Defending Against Malicious Reorgs in Tezos Proof-of-Stake”

We are happy to note a new paper on Emmy+: “Defending Against Malicious Reorgs in Tezos Proof-of-Stake” by Michael Neuder, Daniel J. Moroz, Rithvik Rao, and David C. Parkes in the ACM Advances in Financial Technologies 2020 conference. We are delighted that Tezos and Emmy+ are stimulating independent research activity, and we hope to see much more of this in the future. The paper mainly studies the rate at which malicious forks can occur, developing on ideas put forward in our...

Delphi: official release

Delphi This is a joint post from Nomadic Labs, Metastate and Gabriel Alfour. We’re happy to announce that we have compiled a Tezos protocol proposal we’re dubbing “Delphi”, with hash PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo. Delphi contains a number of small bug fixes, but, more importantly, it makes substantial improvements to the performance of the Michelson interpreter and to the gas model, and thus dramatically improves gas costs. In addition, it reduces storage costs by a factor of 4 to reflect...

Delphi: changelog

007 Delphi Changelog Getting the source code of the proposal The source code of this proposal is available in this tar archive: https://blog.nomadic-labs.com/files/delphi_007_PsDELPH1.tar. To compute the hash, you can use the tezos-protocol-compiler as follows. The result should be PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo. mkdir proposal && cd proposal curl https://blog.nomadic-labs.com/files/delphi_007_PsDELPH1.tar | tar -x tezos-protocol-compiler -hash-only delphi_007_PsDELPH1 If you want to directly investigate how Delphi differs from the current protocol, you can use diff against folder proto_006_PsCARTHA of the mainnet source code....

Measuring test coverage

As we have discussed earlier on this blog, notably in the post on regression testing, testing is an important complement to formal verification. A critical task when testing is to ensure a high degree on test coverage. In this post we discuss how we measure test coverage of the OCaml implementation of tezos using bisect_ppx, and our work towards ensuring that the Michelson interpreter of the node is fully covered by tests. Test coverage Testing is simpler to set up than formal verification but...

Editor’s Note on Emmy+ Analysis

Prompted by a discussion initiated by Michael Neuder from University of Colorado Boulder, we have revised the estimated number of confirmations in a particular scenario from the analysis of Emmy+. Please refer to the first paragraph for details....

Meanwhile at Nomadic Labs #8

Let’s talk about what’s been going on at Nomadic Labs for the past two months. Despite the global pandemic, we’ve stayed hard at work for the Tezos Community. We published an in-depth look on how we use regression testing to catch bugs in Tezos: Catching sneaky regressions with pytest-regtest. Marco Stronati gave a speech about the integration of Sapling in Tezos for privacy and compliance at the Ready Layer One conference. May was a big...

Meanwhile at Nomadic Labs #7

It’s time to talk about what has been going on at Nomadic Labs for the past two months. Many of you might know that a lot of us at Nomadic Labs already work remotely on a regular basis. That being said, the situation with the coronavirus hasn’t had a chance to disrupt our work. Some Conferences were rescheduled, others are held remotely and our work at Nomadic Labs continues as usual. The month of February was packed...

Catching sneaky regressions with pytest-regtest

Testing is an important complement to formal methods that we use through out Tezos to ensure software quality. In this blog post we discuss how we use regression testing, through the pytest-regtest tool. Regression testing Regression testing is a coarse-grained testing method for detecting unintended changes in the behavior of the system under test. We have applied regression testing to the tezos-client, notably to smart-contract type checking and execution. Globally, regression testing consists of two components. First, a way of running and storing the...

Meanwhile at Nomadic Labs #6

It’s time for yet another post in the “meanwhile at Nomadic Labs” series, and we have a lot to talk about. Dive in to find out what you might have missed in January! Nomadic Labs partnered with the IMDEA Software Institute, a leading research institute in Madrid. You can read more about the partnership here or in our press release. A new research program dedicated...

How to write a Tezos protocol - part 2

This is the second post of a tutorial series on how to implement a Tezos protocol. In the first post, we saw how to write, compile, register, activate and use an extremely simple protocol. We also looked at the interface between the protocol and the shell. In this post, we consider a new protocol called demo_counter which extends demo_noops from the first post in several ways. Blocks can contain simple operations, whose effects update the blockchain state. It is parameterized by protocol parameters passed at activation time. It defines...

Formally Verifying a Critical Smart Contract

One of the main goals of Nomadic Labs is the development and applications of formal methods in the domain of distributed software, blockchains and smart contracts. In particular for the Tezos blockchain, for which we also develop the Cortez smartphone wallet (Android, iPhone). This wallet helps Tezos users manage their account and funds in a safe and secure manner. How can the user be...

Meanwhile at Nomadic Labs #5

In this fifth series of ‘’Meanwhile at Nomadic Labs’’, we discuss recent achievements including some projects we have been working on. December was a demanding month with a lot of ongoing development. Like we briefly mentioned last month, Arvid Jakobsson and Zaynah Dargaye worked on formally verifying the spending limit contract within the Cortez Wallet. We are proud announce that the contract has been formally verified and an updated version of Cortez has gone live...

Sapling integration in Tezos - Tech Preview

We are happy to announce a first technology preview of our integration in Tezos of the core of the Sapling protocol developed by the ZCash project. By extending the Michelson smart contract language, this work allows for the exchange of digital assets in a privacy preserving way. Why Sapling? In recent years, we’ve seen much progress towards enabling privacy-preserving payments on public ledgers, both in academic research and in the real world deployement with projects such as Zcash, Monero, or Aztec. In...

A new reward formula for Carthage

Note: This analysis was done with the help of Arthur Breitman and Bruno Blanchet (Inria). The code used for the analysis can be found at this url. A new reward formula for Carthage In this article, we present a new reward formula that we propose for inclusion in Carthage. This new formula is designed to make the network more robust to non-cooperative baking strategies. It does so without changing the total amount of rewards earned by bakers...

Meanwhile at Nomadic Labs #4

This is the fourth blog post of our ‘’Meanwhile at Nomadic Labs’’ series. We will discuss what we have been working on the past month, in particular about events that we organized or participated in. Babylon successfully activated around one month ago. A more detailed list of changes can be found in our recent Babylon Blogpost. With all of these new features, Babylon was a way larger protocol change than Athens which was mostly...

Carthage: changelog and testnet

We are happy to announce a new protocol proposal code-named Carthage, developed together with Cryptium Labs. After the feature rich Babylon, Carthage is a much needed housekeeping release. Carthage contains exclusively fixes and small improvements across the board, the more relevant being a corrected formula for rewards. The only “novelty” is an increase in the gas limit which will allow to execute more smart contracts. A testnet called carthagenet has already been running Babylon since last week and will amend to Carthage in the next...

Lessons Learned from the Babylon Protocol Upgrade: A Retrospective

Babylon (aka protocol 005), the second Tezos protocol amendment jointly developed by Nomadic Labs and Cryptium Labs, was successfully activated on block 655361. Since then, we’ve continued analysing and monitoring the new features, but have also engaged in a deeper reflection on the upgrade process from its development period, pre-injection, to the period following the activation. This article summarises the lessons learned in five parts: the development of Babylon, the proposal period, continued testing during...

Mainnet release to patch Babylon

During the testing phase of protocol Babylon 005_PsBABY5H, we discovered a bug affecting bigmaps in Michelson smart contracts. The bug is corrected in a new version of Babylon, 005_PsBabyM1. How to proceed The bug is not critical but causes a significant performance degradation for newly created smart contracts and an incorrect behavior for existing ones using big maps. More details on the nature and effects of the bug can be found in the protocol documentation page. During the upcoming promotion vote period, we propose...

Cortez security by using the Spending Limit contract

My wallet, my crypto When holding a cryptocurrency, one needs a safe and secure wallet to store it. Wallets are used to store, receive, or spend cryptocurrencies. They work by keeping private keys to themselves and using them to sign transaction from the corresponding public keys. A public key is used to send assets to the corresponding destination, whereas a private key is used to send assets from your corresponding wallet. Addresses are uniquely defined as a...

Babylon update instructions for delegation wallet developers

Introduction Tezos wallets usually feature management of scriptless originated (aka KT1) accounts used to delegate tokens. This document details the steps needed for wallet developers to update their applications in anticipation to the breaking changes in the Babylon protocol update. See also cryptium’s migration guidelines and Babylon’s documentation for more technical details on the Babylon update. The Babylon protocol update brings two big changes to the way delegation can be implemented. First, implicit (aka tz) accounts can now directly delegate their tokens (see relevant...

Babylon: Proposal Injected!

EDIT (August 2, 2019): The updated Babylon proposal has been injected by Cryptium Labs. Its hash is PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU. The instructions contained in this post have been updated accordingly. Cryptium Labs just injected the hash of our new joint proposal: Babylon. This triggers the beginning of the third on-chain vote to amend Tezos. This process could end in the successful migration from current protocol Athens in about three months, if the participants decide so. This update is joint work with Cryptium Labs, with contributions from...

Michelson updates in 005

Changes in Michelson As hinted at in a previous blog post, we’ve been working on improving different parts of the protocol, including our favourite smart contract language: Michelson. The changes made to Michelson in this proposal intend to simplify smart contract development by making the code of complex contracts simpler and cleaner. In particular: smart contracts now support entrypoints contracts can now create, store and transmit as many big_maps as they want comparable types are now closed under products (i.e. the pair constructor) a new instruction, CHAIN_ID, allows...

Analysis of Emmy+

04/6/2020 update: After a discussion with Michael Neuder (University of Colorado Boulder), who noticed a discrepancy between his analysis of Emmy+ and ours, we identified a bug in the script used to generate the data for the plot in the “Forks starting now” section. We have therefore updated the plot. The number of confirmations has changed from 6, 12, 44 to 7, 16, 67 for attacker stake fractions of 0.2, 0.3, 0.4, respectively. The...

An indexer for Tezos

We are happy to announce that the indexer for Tezos we have been working on is ready for beta-testing and available here. But first… What is an indexer, and what is it useful for? Mainly, indexers fill a void by providing information that’s not directly available from the node’s RPC interface. But then why don’t nodes provide these RPCs in the first place? That’s simply because when you design and implement your node, you want to provide just what is necessary, focus...

Meanwhile at Nomadic Labs #3

Another update on the many projects we have been busy working on. Most of the following topics will be subject of more in-depth posts of their own. Protocol The consensus team is finishing their analysis of selfish baking on Emmy+ and tweaking the constants of the protocol accordingly. At the same time work on our version of Tendermint is progressing to the point of having a proof of concept protocol to play with. The protocol team has been steadily reviewing and testing...

How to write a Tezos protocol

A Tezos node is parameterized by a software component called an economic protocol (or protocol for short). Different protocol implementations can be used to implement different types of blockchains. This is the first post of a tutorial series on how to implement such a protocol. We will see how to write, compile, register, activate and use an extremely simple protocol. By doing so, we will also start to explore the interface between the protocol and the node (more specifically the shell component of...

Emmy+: an improved consensus algorithm

Underlying the Tezos network is a consensus algorithm, which, for the ease of reference, we will call Emmy. Consensus ensures that participants agree on the same blockchain and on its state. The ideas behind Emmy are described in the white paper and the specifics to its implementation can be found in the documentation. We recall that Emmy is a PoS based consensus with a use of endorsements to speed-up confirmation times and reduce...

Release of Mainnet May

Today we are proud to announce a new release of the Tezos node and client. The main features present in this release are: node support for snapshots (boot and synchronize a node in minutes), node support for new history modes (not everyone needs to be an archive), client integration for a multi-signature contract. Remember that besides major features there are always a myriad of smaller improvements, have a look at the changelog. We encourage bakers to switch to history mode “full” using a snapshot before the activation of...

Athens on the testchain

The quorum for the second voting phase has been reached, with a supermajority of Yays! This means that the voting procedure can proceed to its third stage: the test chain for Athens is going to be launched soon, approximately Friday April 12th. To accompany that, we just released a new version of the Tezos node and its baking daemons. This release includes many improvements, most notably a new --enable-testchain option. Users who want to participate in the test chain should upgrade...

Meanwhile at Nomadic Labs #2

The last few weeks have been pretty intense at Nomadic with the preparation of the first community voted upgrade! The team has been working hard on some special future improvements to Tezos… Improvements to the consensus layer Tezos has the unique ability to amend itself which allows us to propose state of the art research to the network at any time. This is not a far fetched ideal and will happen sooner rather than later in a series of new efforts...

Athens: Second Voting Period

As we approach the completion of the first active voting period, the proposal period, we would like to describe what’s to come during the second voting period. The first voting period saw the Athens protocols injection and bakers upvoted Athens A and/or Athens B, with Athens A, the most popular proposal, promoted for the second voting phase: the test voting period. In this new period, participants are asked to vote on whether to advance Athens A to the next stage: the...

Athens: Proposals Injected!

Today marks an important milestone for Tezos. We just triggered the beginning of the first on-chain vote for self amendment. This process could end in the successful migration from current protocol alpha to Athens in about three months, if the participants decide so. As advertised in the last meanwhile at Nomadic and as detailed in our previous post, we injected the hashes of two proposals. Both include the same enhancements except for one: the decreased amount in the number of tokens needed to...

Athens: Our Proposals for the First Voted Amendment

This blog post is a preview of Athens: our protocol proposal for the first voted upgrade of Tezos. As announced in the last meanwhile at Nomadic, we shall propose two upgrades: one lowers the roll size to 8,000 tez, the other leaves it unchanged at 10,000 tez. Both alternatives will include an increase of the gas limit. The hashes of both versions will be proposed on mainnet later this week, now that a new proposal period has begun. Later this week, we will publish a...

Amendments at Work in Tezos

We are now on the verge of submitting a protocol upgrade to a vote, and it seems like a good opportunity to explain in details the way in which Tezos node handles amendment in practice. Brace yourselves, this article is quite technical, as are all articles in our in-depth category. Still, as we did in the previous one on snapshots, we’ll try to explain the stakes and announcements and give a brief summary in a short foreword understandable even by non-programmers. The original whitepaper...

Introducing Snapshots and History Modes for the Tezos Node

In this article, we introduce two new features for the Tezos node: snapshots and history modes. A snapshot is a file that contains everything necessary to restore the state of a node at a given block. A node restored via a snapshot can synchronise and help other nodes synchronise in the existing network. The only difference is that you cannot query the chain context (balances, baking rights, etc.) before the restoration point, but you can still get the full chain history. In conjunction, we also...

Nomadic Labs at Fosdem 2019

Fosdem is of the largest gatherings of Free and Open Source Developers in Europe. It’s held every year in Brussels during the first weekend of February. This year Nomadic Labs is involved in the organization of the “Blockchain and Crypto-currencies devroom”, a one day workshop to present Blockchain projects to the FOSS community. We strongly believe in open source and we want to share our work with the FOSS community at large. We will also present our work on the Tezos project,...

Meanwhile at Nomadic Labs #1

This post is the first of a series covering the on-going work at Nomadic Labs. In these posts, we focus on our current top priorities, but of course we have many more projects in the works. Preparing Our First Amendment Proposals Tezos is capable, by design, of automatically amending its economic protocol without the need for a manual update or hard-fork. The current protocol is designed to amend itself only after a successful voting procedure, ensuring that there is awareness and consensus in...

Study, Learn and Work with Nomadic Labs

Nomadic Labs is opening its doors to students from all around the world to join our internship program. We are interested in many research and practical projects ranging from parallel programming using hardware accelerators, to verification of Michelson contracts, creation of ReasonML/Michelson decentralized applications and privacy analysis of the Tezos network. Internships are tailored to Master’s students. Some proposals have already been submitted to a few European universities. They will typically run for a maximum of six months. We will happily receive and evaluate applications from...

Nomadic Labs at Popl 2019

POPL is one of the most prominent conferences in Programming Languages, this year held in Portugal. Programming Language Theory is at the core of the Tezos project as demonstrated by the sponsoring of the Tezos Foundation for the conference. Nomadic Labs is happy to attend the conference and looking forward to meeting researchers and industrial partners interested in advancing the state of the art in blockchain technology. The program is available on the POPL website....

Hello, world!

We’re a team built around lead architects of the Tezos seed protocol, Benjamin “klakplok”, Grégoire “hnrgrgr” and Pierre “chambart” of OCamlPro with the help of the Tezos Foundation. After a busy year and the successful launch of Tezos our team finally has a home: Nomadic Labs. In the last year, our team has grown rapidly to more than 30 permanent developers, coming from both academia and industry - many of whom hold a PhD in computer science fields. Among them, Pierre Boutillier,...

Receive Updates

ATOM

Contacts