What services go into the stack between a running Node (backend) and a User interface (frontend)?

Hi, wonder if someone can shed some light on the architecture / technology stack that will be available when Goguen goes live and we can start using Plutus on the mainnet. I appreciate that there is quite a bit that the dev team still needs to work through, but a bit of colour on what technologies one will be able to deploy and interact with a plutus smart contracts would be really helpful, so that we can have some idea of what can be prepped in advance

I am coming from angle of someone who is running a node and and also building the full stack app.

Example:

  • on the back end I have a node running that is processing transitions
    .
    .
  • on the front end I have a React JS app that is ready to interact via REST, graphql …

What will go in between those 2 extremes? At a very high level please

From what I gather I can launch a “cardano-wallet” and the “cardano-graphql” services in the background, expose them on a port on a relay node and have the front-end talk to them to them via HTTP to get wallet and other chain data

Question 1: will cardano-graphql expose the read methods of a plutus contracts, or will there be something else
Question 2: with what will the front end interact with the contracts. Is there another plutus service that will need to be deployed on the node

I think most helpful would be a about 10 to 20 bullet points of what goes in between the two edges of the stack and how they talk to each other.

Thanks

6 Likes

I believe this is a great question to ask on our next devnet checkin. Have you joined the dev community in slack?

I dialled into the last call hosted by Ben O’Hanlon a few days ago. Most of the discussion was focused on the Mary go live, but will raise it at the next call which I think is in couple of weeks.

Hi @dstratio, I was researching a similar question on how to build web applications on Cardano today, and I have some overlapping questions/answers. Here’s what I have:

Web application backend:

Web application frontend:

All of the above appears to be available today, so one can build multi-asset wallets and explorers.

One would not generally use cardano-wallet for getting wallet data from the chain, because it’s designed to help programs manage their own wallet funds (it requires the user submit to it their private key mnemonic), which is useful for Daedalus wallet, but not made for use as a generic javascript wallet management library.

Regarding how Plutus will fit into this picture, I would hope that cardano-graphql exposes smart contract information, but I have no privileged information here.

8 Likes

Great list of resources, very helpful.

So if I’m understanding correctly, Plutus is currently just available to develop with the playground or locally, there isn’t any way of deploying contracts yet?

2 Likes

Great question and hoping for some answers/clarity.

I’ve been groping around … set up Plutus Playground, going thru the Pioneer vids online, installed mallet and the plutus-starter, which allows one to interact with PAB (Platform Application Backend ) via a web interface.

The PAB seems to be some middle where that runs the offchain code and can communicate with the wallet back-end and nodes but not sure.

1 Like

I found this on cardano-launcher

cardano-launcher

Question is how does this change to support Plutus?

2 Likes

I think that @johnny-nuuma is right about the PAB (Platform Application Backend).

Since your on-chain/off-chain code is written in Haskell, you have to somehow execute the off-chain part ‘yourself’. This is the role of the PAB?

When reading the architecture document, it look like you can instantiate (currently using a simulated blockchain that support plutus) a contract and call its endpoints using an HTTP API. From my understanding, it’s like a sandbox that run your off-chain code and automatically exposes the according HTTP endpoints.

I have found the following documents quite enlightening (the second one is a draft, I don’t know if it’s the latest version available…):

Note: I’m quite new to the blokchain ecosystem, but familiar with Haskell ecosystem. Please correct me if any information I provided is misleading.