Author: Mike Hearn 2014-03-28 11:07:04
Published on: 2014-03-28T11:07:04+00:00
Modern devices like smartphones and tablets lack swap files to ensure a responsive, fluid UI. However, this design creates ripples that impact everything else, including the inability to store all keys or transactions in memory permanently. While BIP 70 has an expiry field for PaymentRequests to stop loading those keys into RAM eventually, there is no equivalent for refund addresses. The output structure was reused to define refunds, but PaymentDetails were not, making it hard to implement refunds on phones without a time limit. To address this problem, a new refund field embedding a PaymentDetails structure could be added instead of just a list of outputs. Alternatively, a wallet-specific swapping process could be done internally by caching filters for old parts of the key chain on disk and calculating Bloom filters without holding all keys in memory at once. However, the resulting huge Bloom filters would hurt efficiency in other ways, making key expiry fundamental to scalability. Despite the reluctance to redesign this part of BIP 70, adding a refund feature with a time limit seems necessary to avoid wallets having to look out for refunds for payments made years ago.
Updated on: 2023-06-08T16:51:37.737606+00:00