change Vault to LPVault and comment

This commit is contained in:
Arthur L Lunn 2017-10-31 17:00:34 -04:00
parent ee8e2b777b
commit 7982f9ca1b
3 changed files with 46 additions and 7 deletions

View File

@ -9,8 +9,8 @@ pragma solidity ^0.4.11;
/// to allow for an optional escape hatch to be implemented
import "./Owned.sol";
/// @dev This is declares a few functions from `LiquidPledging` so that the
/// `Vault` contract can interface with the `LiquidPledging` contract
/// @dev `LiquidPledging` is a basic interface to allow the `Vault` contract
/// to confirm and cancel payments in the `LiquidPledging` contract.
contract LiquidPledging {
function confirmPayment(uint64 idNote, uint amount);
function cancelPayment(uint64 idNote, uint amount);
@ -19,7 +19,7 @@ contract LiquidPledging {
/// @dev `Vault` is a higher level contract built off of the `Owned`
/// contract that holds funds for the liquid pledging system.
contract Vault is Owned {
contract LPVault is Owned {
LiquidPledging public liquidPledging; // liquidPledging contract's address
bool public autoPay; // if false, payments will take 2 txs to be completed
@ -57,16 +57,30 @@ contract Vault is Owned {
}
/// @notice `setLiquidPledging` is used to attach a specific liquid pledging
/// instance to this vault. Keep in mind this isn't a single pledge but
/// instead an entire liquid pledging contract.
/// @param _newLiquidPledging A full liquid pledging contract
function setLiquidPledging(address _newLiquidPledging) onlyOwner {
require(address(liquidPledging) == 0x0);
liquidPledging = LiquidPledging(_newLiquidPledging);
}
/// @notice `setAutopay` is used to toggle whether the vault will
/// automatically confirm a payment after the payment has been authorized.
/// @param _automatic If true payments will confirm automatically
function setAutopay(bool _automatic) onlyOwner {
autoPay = _automatic;
}
/// @notice `authorizePayment` is used in order to approve a payment
/// from the liquid pledging contract. Whenever a project or other address
/// needs to receve a payment it needs to be authorized with this contract.
/// @param _ref This parameter is used to reference details about the
/// payment from another conttract.
/// @param _dest This is the address that payments will end up being sent to
/// @param _amount This is the amount that the payment is being authorized
/// for.
function authorizePayment(bytes32 _ref, address _dest, uint _amount) onlyLiquidPledging returns (uint) {
uint idPayment = payments.length;
payments.length ++;
@ -82,10 +96,20 @@ contract Vault is Owned {
return idPayment;
}
/// @notice `confirmPayment` is a basic function used to allow the
/// owner of the vault to initiate a payment confirmation. Since
/// `authorizePayment` is the only pay to populate the `payments` array
/// this is generally used when `autopay` is `false` after a payment has
/// has been authorized.
/// @param _idPayment Array lookup for the payment.
function confirmPayment(uint _idPayment) onlyOwner {
doConfirmPayment(_idPayment);
}
/// @notice `doConfirmPayment` is used to actually initiate a payment
/// to the final destination. All of the payment information should be
/// set before calling this function.
/// @param _idPayment Array lookup for the payment.
function doConfirmPayment(uint _idPayment) internal {
require(_idPayment < payments.length);
Payment storage p = payments[_idPayment];
@ -99,10 +123,16 @@ contract Vault is Owned {
ConfirmPayment(_idPayment);
}
/// @notice `cancelPayment` is used when `autopay` is `false` in order
/// to allow the owner to cancel a payment instead of confirming it.
/// @param _idPayment Array lookup for the payment.
function cancelPayment(uint _idPayment) onlyOwner {
doCancelPayment(_idPayment);
}
/// @notice `doCancelPayment` This carries out the task of actually
/// canceling a payment instead of confirming it.
/// @param _idPayment Array lookup for the payment.
function doCancelPayment(uint _idPayment) internal {
require(_idPayment < payments.length);
Payment storage p = payments[_idPayment];
@ -116,18 +146,27 @@ contract Vault is Owned {
}
/// @notice `multiConfirm` allows for more efficient confirmation of
/// multiple payments.
/// @param _idPayments An array of multiple payment ids
function multiConfirm(uint[] _idPayments) onlyOwner {
for (uint i=0; i < _idPayments.length; i++) {
doConfirmPayment(_idPayments[i]);
}
}
/// @notice `multiCancel` allows for more efficient cancellation of
/// multiple payments.
/// @param _idPayments An array of multiple payment ids
function multiCancel(uint[] _idPayments) onlyOwner {
for (uint i=0; i < _idPayments.length; i++) {
doCancelPayment(_idPayments[i]);
}
}
/// @notice `nPayments` Basic getter to return the number of payments
/// currently held in the system. Since payments are not removed from
/// the array this represents all payments over all time.
function nPayments() constant returns (uint) {
return payments.length;
}

View File

@ -21,7 +21,7 @@ import "./ILiquidPledgingPlugin.sol";
/// @dev `Vault` serves as an interface to allow the `LiquidPledgingBase`
/// contract to interface with a `Vault` contract
contract Vault {
contract LPVault {
function authorizePayment(bytes32 _ref, address _dest, uint _amount);
function () payable;
}

View File

@ -1,5 +1,5 @@
const VaultAbi = require('../build/Vault.sol').VaultAbi;
const VaultByteCode = require('../build/Vault.sol').VaultByteCode;
const VaultAbi = require('../build/LPVault.sol').VaultAbi;
const VaultByteCode = require('../build/LPVault.sol').VaultByteCode;
const generateClass = require('eth-contract-class').default;
module.exports = generateClass(VaultAbi, VaultByteCode);