Carbon Workflows
Carbon tokens are native, VM-less assets. For NFTs, Carbon provides fast token creation, series creation, and minting using specialized chain calls.
Prerequisites
Symbol must be uppercase A-Z (for example
MYNFT).Token metadata is required and must include
name,icon,url,description.iconmust be a base64 data URI (PNG/JPEG/SVG).NFT tokens require schemas (series, ROM, RAM) via
TokenSchemasBuilder.
1) Create a Carbon Token (NFT)
import {
Bytes32,
CreateTokenFeeOptions,
CreateTokenTxHelper,
IntX,
PhantasmaAPI,
PhantasmaKeys,
TokenInfoBuilder,
TokenMetadataBuilder,
TokenSchemasBuilder,
} from "phantasma-sdk-ts";
async function main() {
const keys = PhantasmaKeys.fromWIF("YOUR_WIF");
const creatorPk = new Bytes32(keys.PublicKey);
const tokenSchemas = TokenSchemasBuilder.prepareStandard(true);
const metadata = TokenMetadataBuilder.buildAndSerialize({
name: "My NFT",
description: "Example NFT",
icon: "data:image/png;base64,...",
url: "https://example.com",
});
const tokenInfo = TokenInfoBuilder.build(
"MYNFT",
IntX.fromBigInt(0n),
true,
0,
creatorPk,
metadata,
tokenSchemas,
);
const feeOptions = new CreateTokenFeeOptions();
const maxData = 1_000_000_000n;
const txHex = CreateTokenTxHelper.buildTxAndSignHex(
tokenInfo,
keys,
feeOptions,
maxData,
);
const rpc = new PhantasmaAPI("https://testnet.phantasma.info/rpc", undefined as any, "testnet");
const txHash = await rpc.sendCarbonTransaction(txHex);
const txInfo = await rpc.getTransaction(txHash);
const carbonTokenId = BigInt(CreateTokenTxHelper.parseResult(txInfo.result));
console.log("Carbon token id:", carbonTokenId.toString());
}
main().catch(console.error);2) Create a Token Series
3) Mint a Carbon NFT
Wallet Signing (Frontend)
For frontend flows, build a TxMsg using the same helpers and sign with:
PhantasmaLink.signCarbonTxAndBroadcast(txMsg, ...)EasyConnect.signCarbonTransaction(txMsg, ...)
These require a wallet that supports Phantasma Link v4.
Last updated