If the winner is a smart contract implementing account abstraction, it might not be able to claim the prize as they might not own the same address in Ethereum mainnet.
Account abstraction wallets can have different addresses in different chains. A smart contract address implementing account abstraction in Avalanche might not be owned by the same person in Ethereum mainnet.
Does not apply.
Does not apply.
- AA (Account Abstraction) wallet buys points and they are minted to
msg.sender
. - AA wallet wins a prize.
- The prize is
propagateRaffleWinner()
which will use as winner themsg.sender
saved on_ticketOwnership
map on theWinnablesTicket
contract to set that address as the winner on Ethereum through CCIP. - CCIP is successful and the winner is set on Ethereum. However that address might be owned by no-one or someone else.
Someone else wins the lottery or even worse funds are stuck there forever until someone manages to figure out a way of getting that address in Ethereum. This can be forever.
The winner in propagateRaffleWinner()
is taken from the _ticketOwnership
map on the WinnablesTicket
contract trhough the ownerOf()
. See here, then here, and then here.
This value was set as msg.sender
when minting the tokens through the buyTickets()
here. See minting function here.
Allow the winner to chose a destination address before propagating.