⚠️ The old lucid is not longer maintain, please checkout lucid-evolution
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.
npm install lucid-cardano
For JavaScript and TypeScript
import { Lucid } from "https://deno.land/x/[email protected]/mod.ts";
<script type="module">
import { Lucid } from "https://unpkg.com/[email protected]/web/mod.js"
// ...
</script>
Build NPM and Web target
deno task build
Outputs a dist
folder
// 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);
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
deno task test
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
deno task test:core
You can generate documentation with:
deno doc
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.
Contributions and PRs are welcome!
The contribution instructions.
Join us on Discord!
use-cardano a React context, hook and set of components built on top of Lucid.
Cardano Starter Kit a Next.js starter kit for building Cardano dApps.