Skip to content

Add Flare and Songbird native currency metadata - #15

Merged
llbartekll merged 1 commit into
llbartekll:mainfrom
fassko:flare-native-currency
Sep 25, 2026
Merged

llbartekll merged 1 commit into
llbartekll:mainfrom
fassko:flare-native-currency

Conversation

@fassko

@fassko fassko commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

native_token_meta has no entry for the Flare networks, so it falls through to the ("ETH", "Ether") default. Every format: amount field on those chains — including @.value — renders as ETH:

Reward Amount = 1 ETH     # chain 14, should be 1 FLR
Executor Fee  = 0 ETH     # chain 14, should be 0 FLR

This adds Flare (14), Songbird (19) and the two Coston testnets (114, 16), plus the two mainnets to chain_name. Symbols and names are taken from chainid.network, which the Sourcify TS runner already resolves against — so the two runners currently disagree on these chains, and this brings them in line.

Found while adding descriptors for Flare in Clear Signing https://github.com/ethereum/clear-signing-erc7730-registry, where the Sourcify tests pass and the Rust tests fail on exactly these fields.

Test plan

  • cargo test -p clear-signing --lib — 138 passed
  • Extended test_native_token_meta / test_chain_name with the new chains; the unknown-chain ETH fallback assertion still holds
  • Built cs-test and ran it against registry/flare/testsv2/calldata-WNat-Flare.tests.json from the registry PR: 11/11 pass (2 of them failed on the ETH symbol before this change)

native_token_meta fell through to the ETH default for Flare (14),
Songbird (19) and their Coston testnets, so every `amount` field on
those chains rendered as ETH instead of FLR/SGB. Symbols and names
match chainid.network, which the Sourcify runner already resolves
against — this brings the Rust runner in line.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 14, 2026
The rebase brought in the new selector-coverage check, which requires a
test for every function of a changed descriptor. Adds the missing cases:
both propose() overloads on PollingFoundation, setAllowedExecutor and
transfer on MintingTagManager, and redeemWithTag, redemptionPaymentDefault,
executeDirectMinting and executeDirectMintingWithData on AssetManager —
the last three carrying hand-encoded FDC Merkle proofs.

DistributionToDelegators and ValidatorRewardManager keep "Flare Labs" in
their expectations, because the attestation on those descriptors blocks
the owner rename until an auditor re-signs them.

The Executor Fee expectations read FLR/SGB rather than the ETH the Rust
runner prints today; llbartekll/clear-signing#15 adds the missing chain
entries that make it so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 14, 2026
…TagManager

Introduces calldata descriptors for AssetManager, FAsset, and
MintingTagManager for both Flare and Songbird, with test cases for
each. PollingFoundation (unrelated governance contract) moved to its
own PR.

Also adds the coverage tests the registry's new selector-coverage
check requires for two already-attested descriptors this PR does not
otherwise touch, DistributionToDelegators-Flare and
ValidatorRewardManager-Flare, keeping their expectations at
"Flare Labs" since that's what their attestation covers.

Executor Fee / Reservation Fee fields expect FLR/SGB rather than the
ETH the Rust test runner prints today for chains 14/19;
llbartekll/clear-signing#15 adds the missing native-currency entries
that make it so.

Not included: RewardManager-{Flare,Songbird}. Both are attested and
render blank in the Sourcify runner (nested field groups are
unsupported), and the index disallows a second descriptor at the same
address, so there's no way to land a fix here — needs a maintainer
decision on how to replace an attested-but-unrenderable descriptor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@camfairchild camfairchild left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Wondering if I can piggyback on this to add TAO's EVM as well (Subtensor EVM).
Same problem as you with the registry

assert_eq!(native_token_meta(137).symbol, "MATIC");
assert_eq!(native_token_meta(56).symbol, "BNB");
assert_eq!(native_token_meta(14).symbol, "FLR");
assert_eq!(native_token_meta(19).symbol, "SGB");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
assert_eq!(native_token_meta(19).symbol, "SGB");
assert_eq!(native_token_meta(19).symbol, "SGB");
assert_eq!(native_token_meta(964).symbol, "TAO");

assert_eq!(chain_name(1), "Ethereum");
assert_eq!(chain_name(137), "Polygon");
assert_eq!(chain_name(14), "Flare");
assert_eq!(chain_name(19), "Songbird");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
assert_eq!(chain_name(19), "Songbird");
assert_eq!(chain_name(19), "Songbird");
assert_eq!(chain_name(964), "Subtensor EVM");

14 => ("FLR", "Flare"),
19 => ("SGB", "Songbird"),
114 => ("C2FLR", "Coston2 Flare"),
16 => ("CFLR", "Coston Flare"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
16 => ("CFLR", "Coston Flare"),
16 => ("CFLR", "Coston Flare"),
964 => ("TAO", "TAO"),

42170 => "Arbitrum Nova".to_string(),
43114 => "Avalanche".to_string(),
14 => "Flare".to_string(),
19 => "Songbird".to_string(),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
19 => "Songbird".to_string(),
19 => "Songbird".to_string(),
964 => "Subtensor EVM".to_string(),

@fassko

fassko commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

@llbartekll can you please take a look so I can move forward with the Clearn Signing PR? Thanks

@llbartekll
llbartekll merged commit dc158b1 into llbartekll:main Sep 25, 2026
@fassko

fassko commented Sep 25, 2026

Copy link
Copy Markdown
Contributor Author

Thank you @llbartekll

Can you please release a new version? Thanks

kuzdogan pushed a commit to ethereum/clear-signing-erc7730-registry that referenced this pull request Sep 28, 2026
Picks up llbartekll/clear-signing#15 (Flare/Songbird native currency
metadata, so amount fields on chains 14/19/114/16 render FLR/SGB instead
of ETH) and #13 (numeric mustMatch/ifNotIn comparison, hidden bundle
slots kept).

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 28, 2026
Introduces calldata descriptors for WNat-Flare and WNat-Songbird,
including contract metadata and transaction formats for wrapping,
unwrapping, and transferring tokens. Test cases validate transaction
intents and expected outputs across both networks.

Amount fields expect FLR/SGB rather than the ETH the Rust test runner
prints today for chains 14/19; llbartekll/clear-signing#15 adds the
missing native-currency entries that make it so.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 28, 2026
…TagManager

Introduces calldata descriptors for AssetManager, FAsset, and
MintingTagManager for both Flare and Songbird, with test cases for
each. PollingFoundation (unrelated governance contract) moved to its
own PR.

Also adds the coverage tests the registry's new selector-coverage
check requires for two already-attested descriptors this PR does not
otherwise touch, DistributionToDelegators-Flare and
ValidatorRewardManager-Flare, keeping their expectations at
"Flare Labs" since that's what their attestation covers.

Executor Fee / Reservation Fee fields expect FLR/SGB rather than the
ETH the Rust test runner prints today for chains 14/19;
llbartekll/clear-signing#15 adds the missing native-currency entries
that make it so.

Not included: RewardManager-{Flare,Songbird}. Both are attested and
render blank in the Sourcify runner (nested field groups are
unsupported), and the index disallows a second descriptor at the same
address, so there's no way to land a fix here — needs a maintainer
decision on how to replace an attested-but-unrenderable descriptor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 28, 2026
…TagManager

Introduces calldata descriptors for AssetManager, FAsset, and
MintingTagManager for both Flare and Songbird, with test cases for
each. PollingFoundation (unrelated governance contract) moved to its
own PR.

Also adds the coverage tests the registry's new selector-coverage
check requires for two already-attested descriptors this PR does not
otherwise touch, DistributionToDelegators-Flare and
ValidatorRewardManager-Flare, keeping their expectations at
"Flare Labs" since that's what their attestation covers.

Executor Fee / Reservation Fee fields expect FLR/SGB rather than the
ETH the Rust test runner prints today for chains 14/19;
llbartekll/clear-signing#15 adds the missing native-currency entries
that make it so.

Not included: RewardManager-{Flare,Songbird}. Both are attested and
render blank in the Sourcify runner (nested field groups are
unsupported), and the index disallows a second descriptor at the same
address, so there's no way to land a fix here — needs a maintainer
decision on how to replace an attested-but-unrenderable descriptor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fassko added a commit to fassko/clear-signing-erc7730-registry that referenced this pull request Sep 28, 2026
…TagManager

Introduces calldata descriptors for AssetManager, FAsset, and
MintingTagManager for both Flare and Songbird, with test cases for
each. PollingFoundation (unrelated governance contract) moved to its
own PR.

Also adds the coverage tests the registry's new selector-coverage
check requires for two already-attested descriptors this PR does not
otherwise touch, DistributionToDelegators-Flare and
ValidatorRewardManager-Flare, keeping their expectations at
"Flare Labs" since that's what their attestation covers.

Executor Fee / Reservation Fee fields expect FLR/SGB rather than the
ETH the Rust test runner prints today for chains 14/19;
llbartekll/clear-signing#15 adds the missing native-currency entries
that make it so.

Not included: RewardManager-{Flare,Songbird}. Both are attested and
render blank in the Sourcify runner (nested field groups are
unsupported), and the index disallows a second descriptor at the same
address, so there's no way to land a fix here — needs a maintainer
decision on how to replace an attested-but-unrenderable descriptor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

3 participants