Splice.Util.Token.Wallet.MergeDelegation
Delegation from users to wallet operators allowing them to merge their token standard holdings; and optionally transfer tokens from the operator to the user as part of the merge operation, e.g., for efficiently implementing extraTransfers.
The main reasons for using this merge delegation infrastructure are:
- keeping the number of holdings low to reduce storage and compute cost on the validator node hosting them
- batching operations to execute them more efficiently both in terms of traffic spend and throughput
Templates
template BatchMergeUtility
Utility contract for a operator to execute a batch of merge calls with proper threading of the operator’s change holdings between the calls that involve extra transfers. Signatory: operator
- Choice Archive Controller: operator Returns: () (no fields)
Choice BatchMergeUtility_BatchMergeController: operator Returns: BatchMergeUtility_BatchMergeResult
template MergeDelegation
The right for a operator like the wallet app operator to merge token standard holdings on behalf of a token owner. Signatory: owner, operator
- Choice Archive Controller: owner, operator Returns: () (no fields)
Choice MergeDelegation_MergeController: operator Returns: MergeDelegation_MergeResult Choice MergeDelegation_RejectController: operator Returns: MergeDelegation_RejectResult (no fields) Choice MergeDelegation_WithdrawController: owner Returns: MergeDelegation_WithdrawResult (no fields)
template MergeDelegationProposal
Proposal by the user to setup a merge delegation. Signatory: (DA.Internal.Record.getField @“owner” delegation)
- Choice Archive Controller: (DA.Internal.Record.getField @“owner” delegation) Returns: () (no fields)
Choice MergeDelegationProposal_AcceptController: (DA.Internal.Record.getField @“operator” delegation) Returns: MergeDelegationProposal_AcceptResult (no fields) Choice MergeDelegationProposal_RejectController: (DA.Internal.Record.getField @“operator” delegation) Returns: MergeDelegationProposal_RejectResult (no fields) Choice MergeDelegationProposal_WithdrawController: (DA.Internal.Record.getField @“owner” delegation) Returns: MergeDelegationProposal_WithdrawResult (no fields)
Data Types
data BatchMergeUtility_BatchMergeResult
BatchMergeUtility_BatchMergeResultinstance Eq BatchMergeUtility_BatchMergeResult instance Show BatchMergeUtility_BatchMergeResult instance GetField “operatorChangeMap” BatchMergeUtility_BatchMergeResult InstrumentHoldingMap instance GetField “results” BatchMergeUtility_BatchMergeResult [MergeDelegation_MergeResult] instance SetField “operatorChangeMap” BatchMergeUtility_BatchMergeResult InstrumentHoldingMap instance SetField “results” BatchMergeUtility_BatchMergeResult [MergeDelegation_MergeResult] instance HasExercise BatchMergeUtility BatchMergeUtility_BatchMerge BatchMergeUtility_BatchMergeResult instance HasFromAnyChoice BatchMergeUtility BatchMergeUtility_BatchMerge BatchMergeUtility_BatchMergeResult instance HasToAnyChoice BatchMergeUtility BatchMergeUtility_BatchMerge BatchMergeUtility_BatchMergeResult
data FeaturedAppRightCall
A call to create featured app markers using a featured app right.FeaturedAppRightCallinstance Eq FeaturedAppRightCall instance Show FeaturedAppRightCall instance GetField “appRightCid” FeaturedAppRightCall (ContractId FeaturedAppRight) instance GetField “beneficiaries” FeaturedAppRightCall [AppRewardBeneficiary] instance GetField “optFeaturedAppRight” MergeDelegation_Merge (Optional FeaturedAppRightCall) instance SetField “appRightCid” FeaturedAppRightCall (ContractId FeaturedAppRight) instance SetField “beneficiaries” FeaturedAppRightCall [AppRewardBeneficiary] instance SetField “optFeaturedAppRight” MergeDelegation_Merge (Optional FeaturedAppRightCall)
type InstrumentHoldingMap
= Map InstrumentId [ContractId Holding]instance GetField “operatorChangeMap” BatchMergeUtility_BatchMergeResult InstrumentHoldingMapinstance SetField “operatorChangeMap” BatchMergeUtility_BatchMergeResult InstrumentHoldingMap
data MergeDelegationCall
MergeDelegationCallinstance Eq MergeDelegationCall instance Show MergeDelegationCall instance GetField “choiceArg” MergeDelegationCall MergeDelegation_Merge instance GetField “delegationCid” MergeDelegationCall (ContractId MergeDelegation) instance GetField “mergeCalls” BatchMergeUtility_BatchMerge [MergeDelegationCall] instance SetField “choiceArg” MergeDelegationCall MergeDelegation_Merge instance SetField “delegationCid” MergeDelegationCall (ContractId MergeDelegation) instance SetField “mergeCalls” BatchMergeUtility_BatchMerge [MergeDelegationCall]
data MergeDelegationProposal_AcceptResult
MergeDelegationProposal_AcceptResultinstance Eq MergeDelegationProposal_AcceptResult instance Show MergeDelegationProposal_AcceptResult instance GetField “mergeDelegationCid” MergeDelegationProposal_AcceptResult (ContractId MergeDelegation) instance SetField “mergeDelegationCid” MergeDelegationProposal_AcceptResult (ContractId MergeDelegation) instance HasExercise MergeDelegationProposal MergeDelegationProposal_Accept MergeDelegationProposal_AcceptResult instance HasFromAnyChoice MergeDelegationProposal MergeDelegationProposal_Accept MergeDelegationProposal_AcceptResult instance HasToAnyChoice MergeDelegationProposal MergeDelegationProposal_Accept MergeDelegationProposal_AcceptResult
data MergeDelegationProposal_RejectResult
Dedicated record type to simplify upgradingMergeDelegationProposal_RejectResultinstance Eq MergeDelegationProposal_RejectResult instance Show MergeDelegationProposal_RejectResult instance GetField “result” MergeDelegationProposal_RejectResult () instance SetField “result” MergeDelegationProposal_RejectResult () instance HasExercise MergeDelegationProposal MergeDelegationProposal_Reject MergeDelegationProposal_RejectResult instance HasFromAnyChoice MergeDelegationProposal MergeDelegationProposal_Reject MergeDelegationProposal_RejectResult instance HasToAnyChoice MergeDelegationProposal MergeDelegationProposal_Reject MergeDelegationProposal_RejectResult
data MergeDelegationProposal_WithdrawResult
Dedicated record type to simplify upgradingMergeDelegationProposal_WithdrawResultinstance Eq MergeDelegationProposal_WithdrawResult instance Show MergeDelegationProposal_WithdrawResult instance GetField “result” MergeDelegationProposal_WithdrawResult () instance SetField “result” MergeDelegationProposal_WithdrawResult () instance HasExercise MergeDelegationProposal MergeDelegationProposal_Withdraw MergeDelegationProposal_WithdrawResult instance HasFromAnyChoice MergeDelegationProposal MergeDelegationProposal_Withdraw MergeDelegationProposal_WithdrawResult instance HasToAnyChoice MergeDelegationProposal MergeDelegationProposal_Withdraw MergeDelegationProposal_WithdrawResult
data MergeDelegation_MergeResult
MergeDelegation_MergeResultinstance Eq MergeDelegation_MergeResult instance Show MergeDelegation_MergeResult instance GetField “optExtraTransferResult” MergeDelegation_MergeResult (Optional TransferInstructionResult) instance GetField “optMergeTransferResult” MergeDelegation_MergeResult (Optional TransferInstructionResult) instance GetField “results” BatchMergeUtility_BatchMergeResult [MergeDelegation_MergeResult] instance SetField “optExtraTransferResult” MergeDelegation_MergeResult (Optional TransferInstructionResult) instance SetField “optMergeTransferResult” MergeDelegation_MergeResult (Optional TransferInstructionResult) instance SetField “results” BatchMergeUtility_BatchMergeResult [MergeDelegation_MergeResult] instance HasExercise MergeDelegation MergeDelegation_Merge MergeDelegation_MergeResult instance HasFromAnyChoice MergeDelegation MergeDelegation_Merge MergeDelegation_MergeResult instance HasToAnyChoice MergeDelegation MergeDelegation_Merge MergeDelegation_MergeResult
data MergeDelegation_RejectResult
Dedicated record type to simplify upgradingMergeDelegation_RejectResultinstance Eq MergeDelegation_RejectResult instance Show MergeDelegation_RejectResult instance GetField “result” MergeDelegation_RejectResult () instance SetField “result” MergeDelegation_RejectResult () instance HasExercise MergeDelegation MergeDelegation_Reject MergeDelegation_RejectResult instance HasFromAnyChoice MergeDelegation MergeDelegation_Reject MergeDelegation_RejectResult instance HasToAnyChoice MergeDelegation MergeDelegation_Reject MergeDelegation_RejectResult
data MergeDelegation_WithdrawResult
Dedicated record type to simplify upgradingMergeDelegation_WithdrawResultinstance Eq MergeDelegation_WithdrawResult instance Show MergeDelegation_WithdrawResult instance GetField “result” MergeDelegation_WithdrawResult () instance SetField “result” MergeDelegation_WithdrawResult () instance HasExercise MergeDelegation MergeDelegation_Withdraw MergeDelegation_WithdrawResult instance HasFromAnyChoice MergeDelegation MergeDelegation_Withdraw MergeDelegation_WithdrawResult instance HasToAnyChoice MergeDelegation MergeDelegation_Withdraw MergeDelegation_WithdrawResult
data TransferCall
A call to perform a transfer using a transfer factory.TransferCallinstance Eq TransferCall instance Show TransferCall instance GetField “choiceArg” TransferCall TransferFactory_Transfer instance GetField “factoryCid” TransferCall (ContractId TransferFactory) instance GetField “optExtraTransfer” MergeDelegation_Merge (Optional TransferCall) instance GetField “optMergeTransfer” MergeDelegation_Merge (Optional TransferCall) instance SetField “choiceArg” TransferCall TransferFactory_Transfer instance SetField “factoryCid” TransferCall (ContractId TransferFactory) instance SetField “optExtraTransfer” MergeDelegation_Merge (Optional TransferCall) instance SetField “optMergeTransfer” MergeDelegation_Merge (Optional TransferCall)