Plutonomicon / cardano-transaction-lib

A Purescript library for building smart contract transactions on Cardano
https://plutonomicon.github.io/cardano-transaction-lib/
MIT License
93 stars 50 forks source link

[Metatask] Plutip integration #426

Closed t1lde closed 2 years ago

t1lde commented 2 years ago

What's the situation here? iirc there was something blocking private testnet usage. Is that right?

See also: plutip integration

klntsky commented 2 years ago

I am going to try setting up private testnet and using it with CTL. Will report here and in the channel.

klntsky commented 2 years ago

Context update: I'm working on a new plutip-server binary exposing HTTP endpoint that will allow:

marijanp commented 2 years ago

Context update: I'm working on a new plutip-server binary exposing HTTP endpoint that will allow:

* starting local cluster

* ~sending transactions~ UPD: we will submit through ogmios

* stopping local cluster

@klntsky I'm also interested in integrating plutip. What has your research/ work shown so far, what do you think are the necessary changes to plutip and to ctl to make things work?

My proposal looks like this:

I would be happy to help you with this issue.

klntsky commented 2 years ago

plutip: make it return data (socket the node listens on, wallet pkh, wallet address) in a more structured way e.g. json

This has already been done in my stash, expect a PR soon.

add more return data: we will need a signing key for the generated value to be able to send funds in a testing scenario

Yep, I've done that already in my prototype.

we will probably also need a way to generate new wallets for more interesting test-cases

What do you mean by generate? We can pre-allocate enough funds and move them as we wish on the client, so that's up to the client-side (CTL).

modify buildCtlRuntime and launchCtlRuntime such that we we replace the cardano-node container with the local cluster through an configuration option and additionally make sure that the other instances like ogmios are configured properly.

I decided to go the other route. I made another monadic wrapper over Contract that is interpreted into Aff (cluster startup is its effect). The interpreter provides correct configs for the inner Contract runner. The reason why we need another wrapper is because we want to separate CTL+plutip use scenario from CTL-only use, because of the need to bundle for the browser.

marijanp commented 2 years ago

What do you mean by generate? We can pre-allocate enough funds and move them as we wish on the client, so that's up to the client-side (CTL).

True, one wallet is enough.

I decided to go the other route. I made another monadic wrapper over Contract that is interpreted into Aff (cluster startup is it's effect). The interpreter provides correct configs for the inner Contract runner. The reason why we need another wrapper is because we want to separate CTL+plutip use scenario from CTL-only use, because of the need to bundle for the browser.

Great, this would have been my follow-up proposal. The thing I suggested was rather a quick solution to somehow obtain a local "runtime".

Thanks for your efforts, this sounds promising.

klntsky commented 2 years ago

Update on plutip-server efforts:

Eventually these two branches will contain a working integration. I will split the remaining things into smaller tasks soon.

peter-mlabs commented 2 years ago

Very happy to see this merged @klntsky! Great work!