Skip to content

Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript, Deno and Node.js.

License

Notifications You must be signed in to change notification settings

Anastasia-Labs/lucid

 
 

Repository files navigation

⚠️ The old lucid is not longer maintain, please checkout lucid-evolution


Lucid

Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript, Deno and Node.js.

Get started

NPM

npm install lucid-cardano

Deno 🦕

For JavaScript and TypeScript

import { Lucid } from "https://deno.land/x/[email protected]/mod.ts";

Web

<script type="module">
import { Lucid } from "https://unpkg.com/[email protected]/web/mod.js"
// ...
</script>

Build from source

Build NPM and Web target

deno task build

Outputs a dist folder

Examples

Basic usage

// import { Blockfrost, Lucid } from "https://deno.land/x/[email protected]/mod.ts"; Deno
import { Blockfrost, Lucid } from "lucid-cardano"; // NPM

const lucid = await Lucid.new(
  new Blockfrost("https://cardano-preview.blockfrost.io/api/v0", "<projectId>"),
  "Preview",
);

// Assumes you are in a browser environment
const api = await window.cardano.nami.enable();
lucid.selectWallet(api);

const tx = await lucid.newTx()
  .payToAddress("addr...", { lovelace: 5000000n })
  .complete();

const signedTx = await tx.sign().complete();

const txHash = await signedTx.submit();

console.log(txHash);

Tx Chaining

const tx1 = await lucid.newTx()
  .payToAddress("addr...", { lovelace: 5000000n })
  .complete();

const tx2 = tx1
  // select tx1 outputs that shall become inputs for tx2
  .chain((outputs) => outputs.filter(output => output.address === 'addr...'))
  .payToAddress("addr...", { lovelace: 2500000n })
  .complete();

// sign tx1 & tx2, submit them

Test

deno task test

Build Core

This library is built on top of a customized version of the serialization-lib (cardano-multiplatform-lib) and on top of the message-signing library, which are written in Rust.

deno task build:core

Test Core

deno task test:core

Docs

View docs 📖

You can generate documentation with:

deno doc

Compatibility

Lucid is an ES Module, so to run it in the browser any bundler which allows for top level await and WebAssembly is recommended. If you use Webpack 5 enable in the webpack.config.js:

experiments: {
    asyncWebAssembly: true,
    topLevelAwait: true,
    layers: true // optional, with some bundlers/frameworks it doesn't work without
  }

To run the library in Node.js you need to set {"type" : "module"} in your project's package.json. Otherwise you will get import issues.

Contributing

Contributions and PRs are welcome!
The contribution instructions.

Join us on Discord!

Use Lucid with React

use-cardano a React context, hook and set of components built on top of Lucid.

Use Lucid with Next.js

Cardano Starter Kit a Next.js starter kit for building Cardano dApps.

About

Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript, Deno and Node.js.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 81.7%
  • TypeScript 18.3%