Skip to content

Commit 52f54bb

Browse files
committed
fix: prevent loss of claim deposit for already relayed tickets
1 parent 823c713 commit 52f54bb

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

contracts/src/bridge/FastBridgeReceiverOnEthereum.sol

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,12 @@ contract FastBridgeReceiverOnEthereum is SafeBridgeReceiverOnEthereum, IFastBrid
7676
// ************************************* //
7777

7878
function claim(uint256 _ticketID, bytes32 _messageHash) external payable override {
79+
Ticket storage ticket = tickets[_ticketID];
80+
require(ticket.claim.bridger == address(0), "Claim already made");
81+
require(ticket.relayed == false, "Claim already relayed"); // already relayed via verifyAndRelaySafe() without claim.
7982
require(msg.value >= claimDeposit, "Not enough claim deposit");
80-
require(tickets[_ticketID].claim.bridger == address(0), "Claim already made");
8183

82-
tickets[_ticketID].claim = Claim({
84+
ticket.claim = Claim({
8385
messageHash: _messageHash,
8486
bridger: msg.sender,
8587
claimedAt: block.timestamp,
@@ -94,8 +96,8 @@ contract FastBridgeReceiverOnEthereum is SafeBridgeReceiverOnEthereum, IFastBrid
9496
Ticket storage ticket = tickets[_ticketID];
9597
require(ticket.claim.bridger != address(0), "Claim does not exist");
9698
require(block.timestamp - ticket.claim.claimedAt < challengeDuration, "Challenge period over");
97-
require(msg.value >= challengeDeposit, "Not enough challenge deposit");
9899
require(ticket.challenge.challenger == address(0), "Claim already challenged");
100+
require(msg.value >= challengeDeposit, "Not enough challenge deposit");
99101

100102
ticket.challenge = Challenge({
101103
challenger: msg.sender,

0 commit comments

Comments
 (0)