Skip to content

EDS - Add BurnMintFactory support - #855

Merged
friedemannf merged 4 commits into
mainfrom
eds-burnmintfactory
Aug 13, 2026
Merged

EDS - Add BurnMintFactory support#855
friedemannf merged 4 commits into
mainfrom
eds-burnmintfactory

Conversation

@friedemannf

@friedemannf friedemannf commented Aug 7, 2026

Copy link
Copy Markdown
Member

This adds proper support for getting disclosures for a token pool's factory from an URL backed by either the Token Standard or the DA Registry Backend API.

  • Config: Unify TransferFactory and BurnMintFactory into a single Factory setting, now that they have equal fields
  • Config: Introduce a new urlRequests factory type for the BurnMint factory that uses the DA Registry /mint/request and /burn/request instead of /burn-mint-factory
  • EDS: update the factory getters to differentiate between the send/execute flows, as the urlRequests type uses two different endpoints
  • OAPI: Add sender and receiver fields to the OpenAPI spec wherever needed
  • EDS: Forward these sender and receiver parties when querying the disclosures, as the backend has to return the correct values in its choice context, depending on these parties (e.g. blocklist, or preapprovals)
  • Tests/CLI: Populate sender and receiver in all requests to EDS

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown

Invalid CODEOWNERS file detected - @friedemannf.

1 error(s) were found in the CODEOWNERS file.

See the workflow summary and PR annotations for more information.

}

resp, err := f.daRegistryClient.GetBurnMintFactoryWithResponse(ctx, daRegistry.GetBurnMintFactoryRequest{
InstrumentId: daRegistry.InstrumentId{

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

/burn-mint-factory endpoint - currently returns issuer-credentials: [] because it doesn't accept a holder parameter so had to resort to /mint/v0/request.

So once we start supporting issuerRequirements, holderRequirements how do we plan on getting those values?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

IIUC the plan is to add full support for credentials to the BurnMintFactory endpoint eventually, this will not stay that way.
Until then, the urlRequests type should provide a workaround


// TODO: for backward-compatibility, use poolOwner as receiver if not specified
if receiver == "" {
receiver = f.poolOwner

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Wondering about the poolOwner fallback here. If I'm following right, receiver/sender aren't the mint destination (that's set on-ledger from the CCIP message), they tell DA's backend whose blocklist shards / credentials to resolve. So if receiver is empty and we fall back to poolOwner, the on-ledger checkBlockList/credential checks would validate poolOwner instead of the actual receiver meaning a blocklisted or uncredentialed receiver passes because poolOwner is clean.

Wouldn't that defeat the whole point of the field once blocklist/holderRequirements are enabled?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yeah, this is really just to keep the current behavior in case a client isn't updated yet to pass the additional fields.

On-chain that isn't how the blocklist/credentials works though - the registry will always check the actual holder of the minted output. I.e. if we make the API request for poolOwner and then try to mint to the actual receiver, the worst that could happen is that the mint will fail - it will not just pass because of missing/wrong blocklist shards/credentials being provided.

Outputs: []daRegistry.MintOutput{
{
// TODO: Amount should be taken from message.TokenTransfer, but would have to be properly scaled by the TP's decimals
Amount: "1.0",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

are the disclosed contracts/contexts ever amount dependent? tried calling with various amount value but got the same result

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It seems they are not, but the field is there and it might be used some time in the future

@friedemannf
friedemannf marked this pull request as ready for review August 13, 2026 16:25
@friedemannf
friedemannf merged commit 21c8e4e into main Aug 13, 2026
38 of 39 checks passed
@friedemannf
friedemannf deleted the eds-burnmintfactory branch August 13, 2026 16:41
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.

2 participants