- Setting up the Action
- Setting up the Incentives
- Deploying the Boost
OpenAllowList, which allows anyone to participate.
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Learn how to deploy a Boost using the Boost SDK
OpenAllowList, which allows anyone to participate.
import { BoostCore } from "@boostxyz/sdk";
import { config } from "./config";
import { eventActionPayload } from "./eventAction";
const core = new BoostCore(config);
const budget = core.ManagedBudget('0x...');
const action = core.EventAction(eventActionPayload);
const incentives: [
core.ERC20Incentive({
asset: '0x...',
reward: parseEther('0.5'),
limit: 10n,
strategy: StrategyType.POOL,
manager: '0x...',
}),
]
(async () => {
await core.deployBoost(
{
maxParticipants: 10n,
budget,
action,
incentives,
allowList: core.OpenAllowList(),
},
)
})();
import {
ActionStep,
SignatureType,
FilterType,
PrimitiveType,
ActionClaimant,
} from "@boostxyz/sdk/Actions/EventAction";
import { selectors as funcSelectors } from "@boostxyz/signatures/functions";
import { Hex, toHex } from "viem";
import { zora } from "viem/chains";
const targetContract = "0x777777722d078c97c6ad07d9f36801e653e356ae"; // Zora TimedSalesStrategy
const mintSelector = funcSelectors[
"mint(address mintTo,uint256 quantity,address collection,uint256 tokenId,address mintReferral,string comment)"
] as Hex;
const commonParams = {
chainid: zora.id,
signature: mintSelector,
signatureType: SignatureType.FUNC,
targetContract: targetContract,
} as const;
const collectionActionStep: ActionStep = {
...commonParams,
actionParameter: {
filterType: FilterType.EQUAL,
fieldType: PrimitiveType.ADDRESS,
fieldIndex: 2, // collection
filterData: "0x3263023c87502f1676f00df902b1237f93da26a9",
},
};
const tokenIdActionStep: ActionStep = {
...commonParams,
actionParameter: {
filterType: FilterType.EQUAL,
fieldType: PrimitiveType.UINT,
fieldIndex: 3, // tokenId
filterData: toHex(1),
},
};
const quantityActionStep: ActionStep = {
...commonParams,
actionParameter: {
filterType: FilterType.GREATER_THAN_OR_EQUAL,
fieldType: PrimitiveType.UINT,
fieldIndex: 1, // quantity
filterData: toHex(1),
},
};
const actionClaimant: ActionClaimant = {
...commonParams,
fieldIndex: 0, // mintTo
};
export const eventActionPayload = {
actionClaimant,
actionSteps: [collectionActionStep, tokenIdActionStep, quantityActionStep],
};
import { http, createConfig } from '@wagmi/core'
import { mainnet, sepolia } from '@wagmi/core/chains'
export const config = createConfig({
chains: [mainnet, sepolia],
transports: {
[mainnet.id]: http(),
[sepolia.id]: http(),
},
})