funded
Griffin: A Substrate node that supports Plutus by TxPipe
Current Project Status
In Progress
Amount
Received
₳31,800
Amount
Requested
₳198,750
Percentage
Received
16.00%
Solution

A reference implementation of a Substrate node that uses an UTxO-based ledger and a Plutus VM, allowing the execution of Cardano-like dApps in Substrate-based networks.

Problem

Griffin

Substrate is an SDK to build use-case specific blockchains. It’s a very flexible tool that fulfills a role complementary to Cardano, but it lacks support for running Plutus validators.

Impact Alignment
Feasibility
Value for Money

txpipe

2 members

Griffin: A Substrate node that supports Plutus by TxPipe

Please describe your proposed solution

Cardano uses the Ouroboros Praos consensus mechanism, which is designed to be secure and reliable even in adversarial scenarios. This mechanism is one of the key features of Cardano that makes it robust against various kinds of attacks and failures.

We argue that there're scenarios, like semi-permissioned networks, where transaction throughput and block finality is favored over protection to adversarial conditions.

The Substrate framework allows developers to build use-case specific blockchain networks. Different consensus and ledger components can be integrated to build a system that follows a specific tradeoff strategy.

The Cardano developer community has made huge strides in terms of best-practices and patterns that leverage the eUTxO model and the Plutus VM in particular.

We want to provide the tools for Cardano developers to leverage their Plutus experience when building

We'll build a Substrate-compatible runtime with the following special capabilities:

  • UTxO-based ledger: this ledger will resemble as much as possible the Cardano ledger, with the exception of any stacking, delegation or governance primitives.
  • Extended UTxO primitives: we'll replicate the programability primitives around UTxO (datums, redeemers, scripts, etc) so that these concepts remains analogous to Cardano.
  • Plutus VM: we'll integrate a virtual machine capable of executing Plutus scripts that can be created using existing Plutus tooling and languages, such as Aiken.

We'll also build a client node reference implementation using Substrate that integrates the following components:

  • RPC interface: a mechanism to interact with the node using a network RPC interface, used for extrinsic event submission and management operations.
  • Aura consensus: a proof-of-authority (PoA) consensus protocol where only approved nodes are allowed to create new blocks.
  • Grandpa block finality: a Byzantine fault tolerant finality gadget that provides deterministic finality.
  • Libp2p networking: a battle-tested peer-to-peer networking library providing transport, discovery and routing mechanism.

Please define the positive impact your project will have on the wider Cardano community

Substrate is an SDK to build use-case specific blockchains. By adding support for a UTxO-based ledger and a Plutus validators, we're allowing the Cardano community to leverage the existing knowledge, best-practices and patterns on UTxO programability to easily build new networks with different consensus and performance tradeoffs.

What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?

TxPipe is an active member of the Cardano ecosystem

TxPipe has been developing open-source tools for the Cardano ecosystem for over 2 years and we're committed to continue on this path. Evidence of our commitment can be found by evaluating the continuous activity of our public code repositories.

Experience developing in the Cardano ecosystem

TxPipe has helped developed several dApps, infrastructure components and tooling for the Cardano ecosystem. This experience allows us to evaluate the feasibility of the project and its potential benefit from a developer's perspective.

Succesful Catalyst proposals

We have successfully completed 2 prior Catalyst proposals. This may serve as evidence that our team has the required capabilities to fulfill these type of projects.

Development process will be public and open-source

Both the output and the development process will be public and open-source. This approach provides an easy way for the Catalyst team and the Cardano community to evaluate the progress at each step of the process.

What are the key milestones you need to achieve in order to complete your project successfully?

Milestone 1: Scaffolding

Milestone outputs

  • Publicly available source-code containing the project scaffold
  • A stub of the Substrate runtime that will hold the UTxO ledger and Plutus VM
  • A scaffold of the Substrate node that includes the stub for the new runtime

Acceptance criteria

  • The interface for the new Substrate runtime matches the feature requirements
  • The Substrate node scaffold can be started and remain idle

Evidence of milestone completion

  • Source-code available in the Github repository
  • Binary releases available in Github release section

Milestone 2: UTxO Ledger

Milestone outputs

  • publicly available source-code of a UTxO ledger compatible with Substrate
  • publicly available documentation of the module's interface
  • results from integration testing

Acceptance criteria

  • The implemented ledger resembles the Cardano ledger, with the exception of any stacking, delegation or governance primitives.
  • The implemented ledger contains the primitives required for UTxO programmability (datums, redeemers, scripts, etc).

Evidence of milestone completion

  • Source-code available in the Github repository
  • Rust crate published at crates.io
  • Documentation published at docs.rs

Milestone 3: Plutus VM

Milestone outputs

  • publicly available source-code of a Plutus VM integrated with Substrate
  • publicly available documentation of the module's interface
  • results from integration testing

Acceptance criteria

  • the integrated Plutus VM is capable of executing Plutus scripts that can be created using existing Plutus tooling and languages, such as Aiken.
  • the system is able to process transactions that require Plutus script as part of the validation.

Evidence of milestone completion

  • Source-code available in the Github repository
  • Rust crate published at crates.io
  • Documentation published at docs.rs

Milestone 4: End-to-end Application

Milestone outputs

  • A working end-to-end application built using the newly created Substrate runtime.
  • Publicly available source-code of the end-to-end application.

Acceptance criteria

  • the application is built using the Substrate framework and runs as a custom network.
  • the application uses an UTxO-based ledger
  • the application relies on Plutus script for validation of some transactions

Evidence of milestone completion

  • Source-code available in the Github repository
  • Documentation published at custom website
  • Binary releases available in Github release section

Final Milestone: Final report

Milestone outputs

  • publicly available source-code of the new runtime
  • publicly available source-code of the client reference implementation
  • publicly available source-code of the end-to-end application
  • binary releases of the client reference implementation
  • binary releases of the end-to-end application
  • publicly available documentation
  • a video showcasing the final output of the project
  • a final report describing the project process and outcome

Acceptance criteria

  • the newly created Substrate runtime uses an UTxO ledger and runs Plutus scripts
  • the client reference application is able to run custom Substrate-based networks
  • the final video complies with Catalyst requirements
  • the final report complies with Catalyst requirements

Evidence of milestone completion

  • Source-code available in the Github repository
  • Rust crate published at crates.io
  • Documentation published at docs.rs
  • Final video uploaded to Google drive
  • Final report uploaded to Google drive

Who is in the project team and what are their roles?

  • Santiago Carmuega - TxPipe : Rust Developer /Tech Lead - Github
  • Federico Weill - TxPipe : Project Manager - Linkedin
  • Alejandro Avagnina - TxPipe : Site Reliability Engineer - Github
  • Alexsander Falcucci - TxPipe: Rust Developer - Github
  • Maico Leberle - TxPipe: Rust and Haskell Developer/Tech Writer - Github
  • Clark Alesna - TxPipe: Rust and Aiken Developer - Github
  • Alejandro Gadea - TxPipe : Aiken developer - LinkedIn

Please provide a cost breakdown of the proposed work and resources

FTE = Full-time equivalent

Total budget = ₳ 198,750

Software development

  • Rust developer: 2 FTE x 3.5 months = ₳ 157,500
  • Aiken Developer: 1 FTE x 1 months = ₳ 22,500
  • Technical Writer: 1/2 FTE x 2 months = ₳ 7,500

Project Management

  • Project Manager: 1/4 FTE x 6 months = ₳ 11,250

No dependencies.

How does the cost of the project represent value for money for the Cardano ecosystem?

The bulk of the budget falls under the software development category. TxPipe has extensive experience in the field, allowing it to provide good value for money. The hourly rates are defined using fair market prices. The estimation for the level of effort takes into account all of the optimizations that our team is capable of providing after years of experience developing software solutions in the Cardano ecosystem.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00