All fund from Teller contract can be drained because a malicious receiver can call reclaim repeatedly
All fund from Teller contract can be drained because a malicious receiver can call reclaim repeatedly\\nWhen mint an option token, the user is required to transfer the payout token for a call option or quote token for a put option\\nif after the expiration, the receiver can call reclaim to claim the payout token if the option type is call or claim the quote token if the option type is put\\nhowever, the root cause is when reclaim the token, the corresponding option is not burnt (code)\\n```\\n       // Revert if caller is not receiver\\n        if (msg.sender != receiver) revert Teller_NotAuthorized();\\n\\n        // Transfer remaining collateral to receiver\\n        uint256 amount = optionToken.totalSupply();\\n        if (call) {\\n            payoutToken.safeTransfer(receiver, amount);\\n        } else {\\n            // Calculate amount of quote tokens equivalent to amount at strike price\\n            uint256 quoteAmount = amount.mulDiv(strikePrice, 10 ** payoutToken.decimals());\\n            quoteToken.safeTransfer(receiver, quoteAmount);\\n        }\\n```\\n\\nthe Teller contract is likely to hold fund from multiple option token\\na malicious actor can create call Teller#deploy and set a receiver address that can control by himself\\nand then wait for the option expiry and repeated call reclaim to steal the fund from the Teller contract
Burn the corresponding option burn when reclaim the fund
All fund from Teller contract can be drained because a malicious receiver can call reclaim repeatedly
```\\n       // Revert if caller is not receiver\\n        if (msg.sender != receiver) revert Teller_NotAuthorized();\\n\\n        // Transfer remaining collateral to receiver\\n        uint256 amount = optionToken.totalSupply();\\n        if (call) {\\n            payoutToken.safeTransfer(receiver, amount);\\n        } else {\\n            // Calculate amount of quote tokens equivalent to amount at strike price\\n            uint256 quoteAmount = amount.mulDiv(strikePrice, 10 ** payoutToken.decimals());\\n            quoteToken.safeTransfer(receiver, quoteAmount);\\n        }\\n```\\n