Erc1155InputFacet
This facet handles the configuration of input packets for staking campaigns and facilitates the transfer of these input packets.
_This implementation is designed for use in staking campaigns where the input packet is constructed solely from ERC1155 tokens.
IMPORTANT:
- An input packet can encapsulate one (e.g., tokenA of ID X) or more (e.g., tokenA of ID X, tokenA of ID Y, ..., tokenX of ID Z) ERC1155 tokens._
CampaignInputConfigured
Emitted at setCampaignTransferInput()
.
CampaignInputPacketsTransferred
Emitted at transferInput()
.
setCampaignTransferInput
Setter function for configuring the input packet for the specified staking campaign.
_Setter functions are executed during the creation process of campaigns (see CampaignCreationSkeleton.sol
).
This setter function configures the input packet for a campaign, where only ERC1155 tokens should be included.
Requirements:
- The
tokenAddresses
,tokenIds
andamountOfTokensPerPacket
arrays must have the same length. tokenAddresses
must contain valid, non-zero ERC1155 token addresses.amountOfTokensPerPacket
must contain non-zero values.
Emits a {CampaignInputConfigured}
event.
IMPORTANT:
- The values in
amountOfTokensPerPacket
should be in whole units, since ERC1155 tokens do not have decimal places. ----------------------------------------------------------------------------------------------------------------_
Parameters
Name | Type | Description |
---|---|---|
campaignId | uint256 | The unique identifier of the targeted staking campaign. |
campaignTransferInputData | bytes | The ABI-encoded data containing the following: - tokenAddresses : An address array containing the addresses of the ERC1155 tokens encapsulated by the input packet. - tokenIds : A uint256 array specifying the ID for each corresponding token in tokenAddresses . - amountOfTokensPerPacket : A uint256 array specifying the amount for each corresponding token in tokenAddresses . |
transferInput
Transfers the specified amount of a given campaign's input packets from the from
address
to the to
address.
_This function iteratively executes transfers for all respective amounts of ERC1155 tokens defined
in the campaign's input packet (see setCampaignTransferInput()
) in a single transaction.
The amounts to be transferred are calculated as
amountOfTokensPerPacket[i] * amountOfPackets
for each token in the input packet, where i
is the index of the token in the tokenAddresses
array. The transfer is performed using
the safeTransferFrom
method of the ERC1155 token interface.
Emits a {CampaignInputPacketsTransferred}
event._
Parameters
Name | Type | Description |
---|---|---|
campaignId | uint256 | The unique identifier of the targeted staking campaign. |
from | address | The address from which the ERC1155 assets encapsulated by the specified number of input packets to be transferred. |
to | address | The address to receive the ERC1155 assets encapsulated by the specified number of input packets. |
amountOfPackets | uint256 | The number of input packets to account for. |