Skip to content

[Contracts] RemittanceNFT transfer moves seized/default state to recipient, enabling reputation laundering #12

Description

@grantfox-oss

Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0

Why this matters

transfer in remittance_nft/src/lib.rs copies Metadata, ScoreHistory, DefaultCount, and Seized to the destination but a seized borrower can still call transfer (only from.require_auth() and not-paused are required; is_seized is never checked). The seized borrower can offload the NFT, and conversely the score/seized flags are not tied to outstanding loans in loan_manager, so transfer can move credit standing in ways the lending logic does not expect.

Acceptance criteria

  • Decide and enforce whether seized or NFTs with active loans may be transferred; block transfer when is_seized or when an active loan references the holder
  • Ensure DefaultCount/Seized cannot be shed by transferring to a fresh address
  • Add tests for transfer attempts by seized users and by users with active loans
  • Document transfer eligibility rules alongside the seize_collateral doc comment

Files to touch

  • remittance_nft/src/lib.rs
  • loan_manager/src/lib.rs

Out of scope

  • Making the NFT non-transferable entirely (unless chosen as the fix)
  • Cross-contract active-loan registry redesign

Activity

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

Metadata

Metadata

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official CampaignbugSomething isn't workinghardAdvanced / high-difficulty issue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions