Problem
PaybeamEscrow::appeal_link is currently stubbed to return Error::NotImplemented (see contracts/stellink-escrow/src/lib.rs). The on-chain registry has no way to mark a link as appealed, even though the frontend already exposes the appeal action.
Proposal
Implement appeal_link so that either the link's creator OR a recipient address committed to the link record can mark a registered link as Appealed. Subsequent get_link calls return the appealed flag so off-chain UIs can suspend further state transitions.
Acceptance criteria
Files involved
contracts/stellink-escrow/src/lib.rs
contracts/stellink-escrow/src/test.rs
Notes
resolve_appeal is a separate issue (#6) — this issue only flips the flag. Resolution is the arbiter's job.
Problem
PaybeamEscrow::appeal_linkis currently stubbed to returnError::NotImplemented(seecontracts/stellink-escrow/src/lib.rs). The on-chain registry has no way to mark a link as appealed, even though the frontend already exposes the appeal action.Proposal
Implement
appeal_linkso that either the link's creator OR a recipient address committed to the link record can mark a registered link asAppealed. Subsequentget_linkcalls return the appealed flag so off-chain UIs can suspend further state transitions.Acceptance criteria
appealed: boolfield toLinkRecord. Defaultfalseonregister_link.recipient: Option<Address>field toLinkRecord(set at registration time, used as one of the authorised appellants).register_linkaccepts the recipient address as a new parameter.appeal_link(env, link_id, caller):caller.require_auth().Error::LinkNotFoundif the link doesn't exist.Error::Unauthorisedunlesscaller == record.creator || Some(caller) == record.recipient.record.appealed = trueand writes back to storage.APPEALevent with(caller, link_id).appeal_linkon an already-appealed link is a no-op (idempotent), not an error.Files involved
contracts/stellink-escrow/src/lib.rscontracts/stellink-escrow/src/test.rsNotes
resolve_appealis a separate issue (#6) — this issue only flips the flag. Resolution is the arbiter's job.