Skip to content

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

@grantfox-oss

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

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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions