Cadence Generation

Using the NFT Catalog, you can generate common scripts and transactions to be run against the Flow Blockchain to support your application.

How-to generate scripts and transactions

From JavaScript

Installation

1
npm install @onflow/fcl
2
npm install flow-catalog

or

1
yarn add @onflow/fcl
2
yarn add flow-catalog

Usage

1. Retrieve a list of transactions available for code generation: NOTE: In order to properly bootstrap the method, you will need to run and await on the getAddressMaps() method, passing it into all of the methods as shown below.

1
import { getAddressMaps, scripts } from "flow-catalog";
2
import * as fcl from "@onflow/fcl"
3
4
const main = async () => {
5
const addressMap = await getAddressMaps();
6
console.log(await scripts.getSupportedGeneratedTransactions(addressMap));
7
};
8
9
main();

2. Provide a Catalog collection identifier to generate code

1
const getTemplatedTransactionCode = async function() {
2
const catalogAddressMap = await getAddressMaps()
3
const result = await cadence.scripts.genTx({
4
5
/*
6
'CollectionInitialization' is one of the available transactions from step 1.
7
'Flunks' is the collection identifier in this case
8
'Flow' is a fungible token identifier (if applicable to the transaction being used)
9
*/
10
11
args: ['CollectionInitialization', 'Flunks', 'flow'],
12
addressMap: catalogAddressMap
13
})
14
return result
15
}

3. Use the generated code in a transaction

1
const txId = await fcl.mutate({
2
cadence: await getTemplatedTransactionCode()[0],
3
limit: 9999,
4
args: (arg: any, t: any) => []
5
});
6
const transaction = await fcl.tx(txId).onceSealed()
7
return transaction

From non-javascript environments

Cadence scripts and transactions can be generated directly on-chain via scripts. You will need to be able to run cadence scripts to continue.

1. Retrieve a list of transactions available for code generation

Run the following script to retrieve available code generation methods: https://github.com/dapperlabs/nft-catalog/blob/main/cadence/scripts/get_supported_generated_transactions.cdc

2. Provide a catalog collection identifier to generate code

You may use the following script to generate code: https://github.com/dapperlabs/nft-catalog/blob/main/cadence/scripts/gen_tx.cdc

For example, from the CLI this may be run like the following: flow -n mainnet scripts execute ./get_tx.cdc CollectionInitialization Flunks flow

In the above example, CollectionInitialization is one of the supported transactions returned from step 1, Flunks is the name of an entry on the catalog (https://www.flow-nft-catalog.com/catalog/mainnet/Flunks), and flow is a fungible token identifier.