buy1155OnSecondary
The buy1155OnSecondary
function on the collectorClient
allows you to purchase ERC1155 tokens on the secondary market. This function prepares a transaction with slippage protection for buying a specified quantity of 1155 tokens using ETH.
Important Limitations
Before using this function, ensure that the following conditions are met:
- The ERC1155 token must be configured to use the ZoraTimedSaleStrategy.
- The primary mint period for the token must have ended.
- The secondary market for the token must have been launched.
- There must be sufficient liquidity in the pool for the swap.
- The buyer must have enough ETH to cover the purchase price, including any slippage.
If any of these conditions are not met, the function will return an error and the transaction cannot be executed. Always check the error
field in the returned object before proceeding with the transaction.
Usage
import {
useAccount,
useChainId,
usePublicClient,
useWriteContract,
} from "wagmi";
import { createCollectorClient } from "@zoralabs/protocol-sdk";
const chainId = useChainId();
const publicClient = usePublicClient()!;
const { address } = useAccount();
const collectorClient = createCollectorClient({ chainId, publicClient });
// Prepare the buy transaction
const { parameters, price, error } = await collectorClient.buy1155OnSecondary({
// 1155 contract address
contract: "0xCD860870DE521cDb0C5ae89E80bBa057Cd30Bf8C",
// 1155 token id to buy
tokenId: 1n,
// quantity of tokens to buy
quantity: 3n,
// account that will execute the buy transaction
account: address!,
// (optional) comment to add to the swap
comment: "test comment",
});
if (error) {
throw new Error(error);
}
console.log("Price per token (wei):", price!.wei.perToken);
console.log("Total price (wei):", price!.wei.total);
const { writeContract } = useWriteContract();
// Write the buy transaction to the network
writeContract(parameters);
Returns
{ error?: string, parameters?: SimulateContractParameters, price: QuotePrice }
error
- Type:
string | undefined
An error message if the operation cannot be completed. This could be due to reasons such as insufficient balance, market not being active, or other contract-specific issues.
parameters
- Type:
SimulateContractParameters | undefined
Prepared parameters for simulating/writing a transaction using viem/wagmi. This will be undefined if there's an error.
price
- Type:
QuotePrice
Detailed information about the price breakdown for the purchase. This includes:
- wei: Price breakdown in wei
- perToken: Price per individual token in wei
- total: Total price for all tokens in wei
- sparks: Price breakdown in sparks
- perToken: Price per individual token in sparks
- total: Total price for all tokens in sparks
- usdc: Async function that returns the price breakdown in USDC
- perToken: Price per individual token in USDC
- total: Total price in USDC
Parameters
contract
- Type:
Address
The address of the ERC1155 contract to buy an 1155 of.
tokenId
- Type:
bigint
The ID of the ERC1155 token to buy.
quantity
- Type:
bigint
The quantity of 1155 tokens to buy.
account
- Type:
Address | Account
The account to use for the transaction. This can be either an Ethereum address or a full Account object. This account will use its ETH balance to complete the purchase.
slippage (optional)
- Type:
number
- Default:
0.005
(0.5%)
The maximum acceptable slippage percentage for the transaction. This helps protect against price movements between the time the transaction is submitted and when it's executed. Slippage protection when buying ensures that the desired quantity of ERC1155 is received. Additional ETH will be sent to account for slippage, and any excess ETH will be refunded at the end of the transaction.
recipient (optional)
- Type:
Address
The address that will receive the purchased 1155 tokens. If not specified, the tokens will be sent to the account
address.