This week, we learned of an issue related to a payment setting feature known as “partial payments” that existed in the legacy code base of the Stellar protocol. As it exists in the Ripple code base, partial payments allow a user to send a small part of a payment rather than the entire payment. For example, the sender could tell the anchor that s/he was sending 10 BTC while actually only sending .0001 BTC. This feature is rarely, if ever, used in practice. Normally, an anchor must check the “Amount” field to determine how much they received as it is the only field returned. However, in the case of a partial payment transaction, the “DeliveredAmount” field appears and the anchor must check the “DeliveredAmount” field instead. If an anchor or other entity is unaware of this setting, it could result in loss of funds.
On Oct 8, we informed all known anchors of this issue then updated the Stellar code base to remove this feature, as it added unnecessary complexity for little value on a protocol level. This particular issue no longer exists on the Stellar network.
We are in the process of preparing integration documents for Stellar. If you have any feedback or suggestions for things we should include, please feel free to send them along to us at email@example.com or via issues on our Github for documentation.