From ae60987f58b999eab175aaafe025b4c5dc2e8e86 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Tue, 16 Aug 2016 12:45:35 -0300 Subject: [PATCH] refactor and document PullPaymentCapable --- contracts/PullPaymentCapable.sol | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/contracts/PullPaymentCapable.sol b/contracts/PullPaymentCapable.sol index 5a5244214..637a24277 100644 --- a/contracts/PullPaymentCapable.sol +++ b/contracts/PullPaymentCapable.sol @@ -1,15 +1,22 @@ +/* + * PullPaymentCapable + * Base contract supporting async send for pull payments. + * Inherit from this contract and use asyncSend instead of send. + */ contract PullPaymentCapable { - mapping(address => uint) refunds; + mapping(address => uint) payments; + // store sent amount as credit to be pulled, called by payer function asyncSend(address dest, uint amount) internal { - refunds[dest] += amount; + payments[dest] += amount; } - function withdrawRefund() external { - uint refund = refunds[msg.sender]; - refunds[msg.sender] = 0; - if (!msg.sender.send(refund)) { - refunds[msg.sender] = refund; + // withdraw accumulated balance, called by payee + function withdrawPayments() external { + uint payment = payments[msg.sender]; + payments[msg.sender] = 0; + if (!msg.sender.send(payment)) { + payments[msg.sender] = payment; } } }