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/lucid/mod.ts";
Web
<script type="module">
import { Lucid } from "https://unpkg.com/lucid-cardano/web/mod.js"
// ...
</script>
Build from Source
Build NPM and Web target
deno task build
Outputs a dist
folder.
Examples
You can check out the examples folder.
See sample-ada-transfer for end-to-end browser integration usage.
Basic usage
import { Blockfrost, Lucid } from "lucid-cardano"; // NPM
// import { Blockfrost, Lucid } from "https://deno.land/x/lucid/mod.ts"; Deno
const lucid = await Lucid.new(
new Blockfrost("https://cardano-testnet.blockfrost.io/api/v0", "<projectId>"),
"Testnet",
);
// 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);
Test
deno task test
Docs
You can generate documentation with:
deno doc
Compatibilty
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.
This library is built on top of a customized version of the serialization-lib (cardano-multiplatform-lib).
Documentation for cardano-multiplatform-lib: https://cardano-lucid.readthedocs.io/en/latest
Link: https://github.com/Berry-Pool/cardano-multiplatform-lib/tree/vasil
Branch: vasil
Commit hash: 9891966de6cbd82ff509c80e6440586af64a2278