Uplink client
createFiniteChannel
Create a new finite channel
Check out the sdk quickstart guide for help setting up your client.
Usage
Returns
{
contractAddress: Address, // address of the created channel
event: Log
}
Parameters
uri
- type:
string
The metadata URI of the channel
const { contractAddress } = await uplinkClient.createFiniteChannel({
uri: 'ipfs://xyz',
...
})
name
- type:
string
The name of the channel
const { contractAddress } = await uplinkClient.createFiniteChannel({
name: 'My new channel',
...
})
defaultAdmin
- type:
string
The address of the default admin. Admins can update channel metadata, fees, and logic and add or remove managers.
const { contractAddress } = await uplinkClient.createFiniteChannel({
defaultAdmin: '0xedcC867bc8B5FEBd0459af17a6f134F41f422f0C',
...
})
managers
- type:
string[]
An array of manager addresses. Managers can update channel metadata, fees, and logic.
const { contractAddress } = await uplinkClient.createFiniteChannel({
managers: ['0x1234567890123456789012345678901234567890'],
...
})
setupActions
- type:
SetupAction[]
An array of channel fee and logic configurations
const { contractAddress } = await uplinkClient.createFiniteChannel({
setupActions: [
{
feeContract: CUSTOM_FEES,
feeArgs: {
channelTreasury: '0x1234567890123456789012345678901234567890',
uplinkPercentage: 10,
channelPercentage: 15,
creatorPercentage: 60,
mintReferralPercentage: 5,
sponsorPercentage: 10,
ethMintPrice: parseEther('0.000666'),
erc20MintPrice: parseEther('0.000666'),
erc20Contract: baseSepoliaWETH
}
},
{
logicContract: DYNAMIC_LOGIC,
creatorLogic: [new UniformInteractionPower(BigInt(10)).ifResultOf(baseSepoliaWETH, '0x70a08231', erc20BalanceOfData).gt(BigInt(1))],
minterLogic: [new UniformInteractionPower(BigInt(10)).ifResultOf(baseSepoliaWETH, '0x70a08231', erc20BalanceOfData).gt(BigInt(1))]
}
],
...
})
transportLayer
- type:
FiniteTransportLayer
The transport layer configuration. Set the timing and reward criteria for the channel.
const { contractAddress } = await uplinkClient.createFiniteChannel({
transportLayer: {
createStartInSeconds: blockTimestamp,
mintStartInSeconds: blockTimestamp + 30,
mintEndInSeconds: blockTimestamp + 60,
rewards: {
ranks: [1],
allocations: [parseEther('0.000666')],
totalAllocation: parseEther('0.000666'),
token: NATIVE_TOKEN
}
},
...
})
transactionOverrides (optional)
- type:
TransactionOverrides
type TransactionOverrides = {
accessList?: AccessList
gas?: bigint
maxFeePerGas?: bigint
maxPriorityFeePerGas?: bigint
nonce?: number
value?: bigint
}
Overrides for the transaction
const { contractAddress } = await uplinkClient.createFiniteChannel({
...
transactionOverrides: {
gas: 1000000n
}
})
Calldata
generate calldata for the transaction
const { address, data } = await uplinkClient.calldata.createFiniteChannel({...})
Returns
{
address: string, // address of the target contract
data: string // calldata for the transaction
}
Gas Estimation
Estimate gas for the transaction
const gas = await uplinkClient.estimateGas.createFiniteChannel({...})
Returns
bigint // gas estimate in wei