Staking Protocoltransfersinputerc1155

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

event CampaignInputConfigured(uint256 campaignId, address[] tokenAddresses, uint256[] tokenIds, uint256[] amountOfTokensPerPacket)

Emitted at setCampaignTransferInput().

CampaignInputPacketsTransferred

event CampaignInputPacketsTransferred(uint256 campaignId, address from, address to, uint256 amountOfPackets)

Emitted at transferInput().

setCampaignTransferInput

function setCampaignTransferInput(uint256 campaignId, bytes campaignTransferInputData) external

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 and amountOfTokensPerPacket 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

NameTypeDescription
campaignIduint256The unique identifier of the targeted staking campaign.
campaignTransferInputDatabytesThe 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

function transferInput(uint256 campaignId, address from, address to, uint256 amountOfPackets) external

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

NameTypeDescription
campaignIduint256The unique identifier of the targeted staking campaign.
fromaddressThe address from which the ERC1155 assets encapsulated by the specified number of input packets to be transferred.
toaddressThe address to receive the ERC1155 assets encapsulated by the specified number of input packets.
amountOfPacketsuint256The number of input packets to account for.

On this page