Transactions
Your first transaction
A couple of fundamentals to remember are that in Cardano's eUTxO model, a transaction can consume one or more UTxOs as inputs, create one or more UTxOs as outputs, and must be balanced (sum of inputs = sum of outputs + fees).
1. Build
Let's create a simple transaction where we send 5 ada
to two recipients each:
const tx = await lucid
.newTx()
.pay.ToAddress("addr_testa...", { lovelace: 5000000n })
.pay.ToAddress("addr_testb...", { lovelace: 5000000n })
.complete();
To balance the transaction and initiate coin selection, transactions always
need to end with .complete()
2. Sign
const signedTx = await tx.sign.withWallet().complete();
You could also choose to sign the transaction with a private key:
const signedTx = await tx.sign.withPrivateKey(privateKey).complete();
3. Submit
Lastly we submit the transaction:
const txHash = await signedTx.submit();
console.log(txHash);
The wallet selection methods we discussed in the previous section should be implemented before building the transaction.
Putting everything together
import { Lucid, Blockfrost } from "@lucid-evolution/lucid";
// Initialize Lucid with a provider
const lucid = await Lucid(
new Blockfrost("https://cardano-preprod.blockfrost.io/api/v0", "<projectId>"),
"Preprod"
);
// Select a wallet for signing - in this case we're using a private key
lucid.selectWallet.fromPrivateKey(privateKey);
// Build, sign and submit transaction
const tx = await lucid
.newTx()
.pay.ToAddress("addr_testa...", { lovelace: 5000000n }) // Pay 5 ada to addr_testa
.complete(); // Balances the transaction and initiates coin selection
const signedTx = await tx.sign.withWallet().complete();
const txHash = await signedTx.submit();
console.log(txHash);
You want to learn more?
Next Steps
Explore the following sections to learn more about Lucid Evolution:
- Under the hood - Understand how Evolution library works
- Deep dives - Follow this series in order to step-by-step understand how to build your own off-chain code for different/advanced use cases
Video Tutorial
Resources
You now have all you need to start playing around with Lucid Evolution. If you have any questions, please refer to the library's Discord community.