IPack
The thirdweb Pack
contract is a lootbox mechanism. An account can bundle up arbitrary ERC20, ERC721 and ERC1155 tokens into a set of packs. A pack can then be opened in return for a selection of the tokens in the pack. The selection of tokens distributed on opening a pack depends on the relative supply of all tokens in the packs.
Methods
createPack
function createPack(ITokenBundle.Token[] contents, uint256[] numOfRewardUnits, string packUri, uint128 openStartTimestamp, uint128 amountDistributedPerOpen, address recipient) external payable returns (uint256 packId, uint256 packTotalSupply)
Creates a pack with the stated contents.
Parameters
Name | Type | Description |
---|---|---|
contents | ITokenBundle.Token[] | The reward units to pack in the packs. |
numOfRewardUnits | uint256[] | The number of reward units to create, for each asset specified in contents . |
packUri | string | The (metadata) URI assigned to the packs created. |
openStartTimestamp | uint128 | The timestamp after which packs can be opened. |
amountDistributedPerOpen | uint128 | The number of reward units distributed per open. |
recipient | address | The recipient of the packs created. |
Returns
Name | Type | Description |
---|---|---|
packId | uint256 | The unique identifer of the created set of packs. |
packTotalSupply | uint256 | The total number of packs created. |
openPack
function openPack(uint256 packId, uint256 amountToOpen) external nonpayable returns (struct ITokenBundle.Token[])
Lets a pack owner open a pack and receive the pack's reward unit.
Parameters
Name | Type | Description |
---|---|---|
packId | uint256 | The identifier of the pack to open. |
amountToOpen | uint256 | The number of packs to open at once. |
Returns
Name | Type | Description |
---|---|---|
_0 | ITokenBundle.Token[] | undefined |
Events
PackCreated
event PackCreated(uint256 indexed packId, address indexed packCreator, address recipient, uint256 totalPacksCreated)
Emitted when a set of packs is created.
Parameters
Name | Type | Description |
---|---|---|
packId indexed | uint256 | undefined |
packCreator indexed | address | undefined |
recipient | address | undefined |
totalPacksCreated | uint256 | undefined |
PackOpened
event PackOpened(uint256 indexed packId, address indexed opener, uint256 numOfPacksOpened, ITokenBundle.Token[] rewardUnitsDistributed)
Emitted when a pack is opened.
Parameters
Name | Type | Description |
---|---|---|
packId indexed | uint256 | undefined |
opener indexed | address | undefined |
numOfPacksOpened | uint256 | undefined |
rewardUnitsDistributed | ITokenBundle.Token[] | undefined |