Skip to content

Conversation

@colll78
Copy link
Collaborator

@colll78 colll78 commented Oct 25, 2025

On-chain implementation that introduces support for third party transfer logic across multiple UTxOs in a single transaction.

Copy link
Collaborator

@j-mueller j-mueller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, couple of minor comments. The documentation on multi-seize is good, but I think this would be a great feature for some property tests.

ensure that the specific issuer logic stake script witness is included in the
final transaction.
NOTE: Seems the issuer is only able to seize 1 UTxO at a time.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This note can be deleted now

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks.

MonadBuildTx era m
) =>
UTxODat era ProgrammableLogicGlobalParams ->
[UTxODat era a] ->
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haddocks on the parameters would be nice

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added

-- Finds the index of the first output to the programmable logic base credential
firstSeizeContinuationOutputIndex txBody =
fromIntegral @Int @Integer $
fromJust $
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this returns Nothing then tx balancing will fail with a weird error. We could use fromMaybe (error "seizingInputIndex not found") instead of fromJust to make it slightly better

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed as suggested.

addOutput $ payToAddressTxOut destinationAddress seizedVal

-- This function should probably accept the programmable token policy which we want to seize as a parameter.
-- As of now, it just assumes that the first non-ada token in the seizing inputs is the token we want to seize.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't toSeizePolicyId the policy which we want to seize?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, removed.

}

-- TODO: Implement efficient comparison of all fields of TxOut except value.
-- pconstructExpectedOutputWithOutputDatum :: Term s PAddress -> Term s (PAsData (PValue 'Sorted 'Positive)) -> Term s POutputDatum -> Term s (PAsData PTxOut)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete dead code

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added more details, left as a future optimization.




-- pif (pfromData inputValueEntryCS #== pfromData (pfstBuiltin # outputValueEntry))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dead code

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@colll78
Copy link
Collaborator Author

colll78 commented Nov 15, 2025

Expanded the web-app to allow anyone to mint, transfer, and manage their own programmable token under the freeze & seize substandard.

@nemo83
Copy link

nemo83 commented Nov 17, 2025

One of the use case for bulk seize was for instance, in case the programmable token was a security, to pay dividends w/o having to spend minutxo, does the current implementation support that?
Thanks

@colll78
Copy link
Collaborator Author

colll78 commented Nov 17, 2025

One of the use case for bulk seize was for instance, in case the programmable token was a security, to pay dividends w/o having to spend minutxo, does the current implementation support that? Thanks

Yes, the contracts as implemented should support that. The programmable token example used in the frontend currently (freeze & seize) does not have this functionality; however, I'll try to add it to the frontend demo as-well.

@j-mueller
Copy link
Collaborator

I updated the generated files, but there are still some Typescript errors in frontend/src/app/store/store.tsx (the createStore function)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants