The Decentralized and Scaled Blockchain

Related tags

Cryptography massa
Overview

Massa: The Decentralized and Scaled Blockchain

Massa is a truly decentralized blockchain controlled by thousands of people. With the breakthrough multithreaded technology, we're set for mass adoption.

CI Bors enabled Coverage Status

Introduction

Massa is a new blockchain reaching a high transaction throughput in a decentralized network. Our research is published in this technical paper. It shows that throughput of 10'000 transactions per second is reached even in a fully decentralized network with thousands of nodes.

An easy-to-read blog post introduction with videos is written here.

We are now releasing the Massa testnet in this Gitlab repository, with its explorer available at https://test.massa.net.

Testnet Incentives

As decentralization is our core value, we would like to help you start and run a Massa node. Running a node during the testnet phase also helps us find bugs and improve usability, so it will be rewarded with real Massa on mainnet launch.

The mechanics of those rewards are described in the Testnet rules.

Testnet Discussions

Please come to our Discord for testnet discussions, in the testnet channel.

For project announcements, we mainly use Telegram.

Tutorials to follow to join the testnet

More tutorials

FAQ and Troubleshooting

You'll find answers to common issues and questions regarding the Massa protocol in the FAQ.

Don't hesitate to ask questions in the Discord testnet channel.

Issues
  • Resolve

    Resolve "Reboot mode" - [merged]

    In GitLab by @AureliaDolo

    Merges 178-reboot-mode -> master

    Closes #178

    From @damip's comment

    • [x] create a new crate called "bootstrap" with a "bootstrap" config section in the config file that defines a single bootstrap node (IP, port, public key) and an optional local listen port. Bootstrap has its own "binders.rs" and "messages.rs" but reuses models.
      • [x] config.rs
      • [x] message.rs: see follow up: #205
        • BootstrapHandshakeInitiation(random_numbers)
        • BootstrapHandshakeReply(Signature)
        • ConsensusState(ConsensusState)
      • [x] binders.rs (a lot of copy pasta from network binders
      • [x] lib.rs
        • [x] get_state()
        • [x] server(consensus_command_sender)

    • [x] when our node starts, before launching any controller, it first calls bootstrap.get_state().await which:
      • [x] synchronously connects to the bootstrap IP/port
      • [x] sends 32 bytes of randomnes
      • [x] wait for bootstrap node's signature of our 32 randomnes.
      • [x] wait for ConsensusState message from bootstrap node. It contains:
        • payload_length
        • payload: ConsensusState
        • signature of [our_randomnes + payload]
      • [x] if something fails, we wait 5 seconds, reconnect and retry from scratch + show an error message
      • [x] close the connection.
      • [x] return active and final blocks.
    • [x] we launch the normal node controllers, and provide the Consensus controller with the returned blocks as an initial state.

    • [x] If the local listen port is not None, We also launch let bootstrap_srv = bootstrap.server(consensus_command_sender).await which:
      • [x] listens on the bootstrap port, and when a node arrives:
        • [x] handshakes with incoming nodes as described above
        • [x] calls consensus_command_sender.get_consensus_state() and sends all the active + final blocks in it, with their statuses
        • [x] sends a Finished message and closes the connection
    • [x] when closing the node, bootstrap_srv.stop() if it was launched in the first place

    Modifications

    • [x] Add Option<ConsensusState> in ConsensusWorker::new() and BlockGraph::new() to be able to take an initial state.
    • [x] Update massa-node::main()
      • [x] before starting any controller:
        • if the current time is lower than genesis_time + bootstrap_time_after_genesis, start consensus without bootstrapping (get_state returns None and consensus is initialized with genesis blocks like currently)
        • if the current time is higher, start by bootstrapping and provide the output of get_state() = Some(..) to consensus as an initial state
      • [x] once everything is ok: start bootstrap server
    • [x] add get_consensus_state() method and associated command that returns :
      • block_statuses with only active blocks
      • latest_final_blocks_periods
      • best_parents
      • gi_head
      • max_cliques
    • [x] Implement BootsrapableGraph de-serialization (see #205)
    module: bootstrap gitlab merge request 
    opened by massa-bot 149
  • Resolve

    Resolve "Integrate storage with Consensus, Protocol and API" - [merged]

    In GitLab by @AureliaDolo

    Merges 141-integrate-storage-with-consensus-protocol-and-api -> 98-storage-store-blocks-as-long-as-there-is-space

    Closes #141

    developing gitlab merge request 
    opened by massa-bot 106
  • Implement ban nodes/notify attack attempt concepts - [merged]

    Implement ban nodes/notify attack attempt concepts - [merged]

    In GitLab by @gterzian

    Merges implement_ban_nodes_workflow -> master

    Close https://gitlab.com/massalabs/massa-network/-/issues/159

    gitlab merge request 
    opened by massa-bot 102
  • Resolve

    Resolve "Implement ask for block workflow" - [merged]

    In GitLab by @AureliaDolo

    Merges 165-implement-ask-for-block-workflow-2 -> master

    Closes #165

    gitlab merge request 
    opened by massa-bot 82
  • Draft: Resolve

    Draft: Resolve "Peer db: add new_nodes method" - [closed]

    In GitLab by @flipchan

    Merges 9-peer-db-add-new_nodes-method-2 -> master

    Closes #9

    p2 gitlab merge request 
    opened by massa-bot 74
  • Propagate headers not block - [merged]

    Propagate headers not block - [merged]

    In GitLab by @gterzian

    Merges propagate_headers_not_block -> master

    pClose https://gitlab.com/massalabs/massa-network/-/issues/94 Close https://gitlab.com/massalabs/massa-network/-/issues/109 Close https://gitlab.com/massalabs/massa-network/-/issues/111

    review requested gitlab merge request 
    opened by massa-bot 72
  • Resolve

    Resolve "Test Consensus Rules" - [merged]

    In GitLab by @damip

    Merges 91-test-consensus-rules -> 77-update-block-receive-process

    Closes #91

    module: consensus gitlab merge request 
    opened by massa-bot 71
  • Cache operations - [merged]

    Cache operations - [merged]

    In GitLab by @gterzian

    Merges cache_operations -> dev

    Close https://gitlab.com/massalabs/massa/-/issues/181

    gitlab merge request 
    opened by massa-bot 69
  • Resolve

    Resolve "Crypto wrapper" - [merged]

    In GitLab by @AureliaDolo

    Merges 15-crypto-wrapper -> master

    Closes #15

    gitlab merge request 
    opened by massa-bot 69
  • Add test scenarios for consensus - [merged]

    Add test scenarios for consensus - [merged]

    In GitLab by @gterzian

    Merges add_tests_consensus -> master

    Close https://gitlab.com/massalabs/massa-network/-/issues/175

    gitlab merge request 
    opened by massa-bot 68
  • [FIX] Wrong markdown link to FAQ in install.md

    [FIX] Wrong markdown link to FAQ in install.md

    Fix a wrong link that has been merged without being updated.

    opened by adrien-zinger 0
  • Fix issue #1277: make PROTOCOL related config const or static ref in binary rather than loaded from config.toml

    Fix issue #1277: make PROTOCOL related config const or static ref in binary rather than loaded from config.toml

    The nice side effect of this issue is that it helps to easily get rid of SerializationContext :)

    opened by yvan-sraka 0
  • [OPTI] Fix warnings in consensus/block_graph

    [OPTI] Fix warnings in consensus/block_graph

    null

    opened by adrien-zinger 0
  • Add an integration test for the client

    Add an integration test for the client

    Now we can check if commands crashed or not with a real node running.

    Use a config path set by the env. Really run a node and try commands

    opened by adrien-zinger 0
  • Review pruning process

    Review pruning process

    Due to storage removal, we don't keep final blocks in consensus for the same reason and the prune_active method should be reviewed.

    Follow up on #1820

    enhancement todo 
    opened by AureliaDolo 0
  • Study alternative crypto schemes

    Study alternative crypto schemes

    Rationale

    We are still using the now-quite-old and feature-lacking sha256 hash and secp256k1 signature. The goal of this issue is to study modern alternatives.

    Hashing functions

    requirements

    • security
    • speed
    • small hash size <= 256bits

    candidates

    • BLAKE3:
      • apparently 10x faster than sha256: https://nextjournal.com/mk/BLAKE3
      • has an official rust implementation: https://docs.rs/blake3/1.2.0/blake3/ with various SIMD optimizations

    signature algorithms

    requirements

    • small public key (or with efficient compression/decompression)
    • small signature
    • signature verification speed
    • bonus: m-of-n / multisig capabilities

    candidates

    • Schnorr

      • https://medium.com/bitbees/what-the-heck-is-schnorr-52ef5dba289f
      • TODO
    • BLS

      • https://medium.com/cryptoadvance/bls-signatures-better-than-schnorr-5a7fe30ea716
      • good: small signature size
      • bad: larger public key size
      • good: signature aggregation (all the signatures in the block can be compacted into a single one !)
      • good: m-of-n signature capabilities
      • bad: slower but optimizable: https://www.dash.org/blog/bls-is-it-really-that-slow/
    crypto discussion 
    opened by damip 0
  • One git submodule per rust crate modules?

    One git submodule per rust crate modules?

    When the project will be a bit more stabilized it would be nice to have this kind of splitting :)

    opened by yvan-sraka 0
  • Adding VM to skeleton

    Adding VM to skeleton

    Part of https://github.com/massalabs/massa/issues/1830

    opened by gterzian 1
  • Delete/archive GitLab repositories

    Delete/archive GitLab repositories

    null

    blocked 
    opened by yvan-sraka 1
  • How do we manage syscalls retrocompatibility

    How do we manage syscalls retrocompatibility

    what happens when a smart contract defined at slot s1 is called at slot s3 and uses a syscall that was deprecated at slot s2 with s1<s2<s3 ?

    discussion smart-contracts 
    opened by AureliaDolo 1
Dank - The Internet Computer Decentralized Bank - A collection of Open Internet Services - Including the Cycles Token (XTC)

Dank - The Internet Computer Decentralized Bank Dank is a collection of Open Internet Services for users and developers on the Internet Computer. In t

Psychedelic 36 Nov 21, 2021
Microunit is a decentralized unit orchestration framework.

Microunit is a decentralized unit orchestration framework.

Engula 13 Oct 10, 2021
cashio is a decentralized stablecoin made for the people, by the people.

cashio is a decentralized stablecoin made for the people, by the people. We're in active development. For the latest updates, please join our c

Cashio App 8 Nov 26, 2021
Subsocial full node with Substrate/Polkadot pallets for decentralized communities: blogs, posts, comments, likes, reputation.

Subsocial Node by DappForce Subsocial is a set of Substrate pallets with web UI that allows anyone to launch their own decentralized censorship-resist

DappForce 51 Nov 25, 2021
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 916 Nov 29, 2021
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 224 Nov 23, 2021
Local blockchain for Free TON DApp development and testing.

TON OS Startup Edition Local blockchain for Free TON DApp development and testing. Have a question? Get quick help in our channel: TON OS Startup Edit

TON Labs 24 Nov 8, 2021
A value transfer bridge between the Monero blockchain and the Secret Network.

Secret-Monero-Bridge A value transfer bridge between the Monero blockchain and the Secret Network. Proof-of-Concept Video Demonstration: https://ipfs.

null 24 Oct 4, 2021
HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

null 926 Nov 28, 2021
A lightweight and flexible framework to build your tailored blockchain applications.

TRINCI Blockchain Core A lightweight and flexible framework to build your tailored blockchain applications. Requirements The required dependencies to

Affidaty S.p.A. 8 Nov 18, 2021
An Ethereum compatible Substrate blockchain for bounties and governance for the Devcash community.

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

null 1 Nov 23, 2021
A high performance blockchain kernel for enterprise users.

English | 简体中文 What is CITA CITA is a fast and scalable blockchain kernel for enterprises. CITA supports both native contract and EVM contract, by whi

CITAHub 1.2k Nov 23, 2021
Substrate: The platform for blockchain innovators

Substrate · Substrate is a next-generation framework for blockchain innovation ?? . Trying it out Simply go to substrate.dev and follow the installati

Parity Technologies 6.1k Nov 23, 2021
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.1k Nov 23, 2021
C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

null 1.5k Dec 1, 2021
🌍 The Earth Blockchain on Polkadot (archived)

Social Network Blockchain · The Social Network blockchain is a next-generation governance, economic, and social system for humanity built on Polkadot

social.network 16 Oct 16, 2021
High Performance Blockchain Deserializer

bitcoin-explorer bitcoin_explorer is an efficient library for reading bitcoin-core binary blockchain file as a database (utilising multi-threading). D

Congyu 5 Nov 10, 2021
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021