added comments
This commit is contained in:
parent
1f0c5fd987
commit
f781649355
|
@ -1,37 +1,54 @@
|
||||||
pragma solidity ^0.4.11;
|
pragma solidity ^0.4.11;
|
||||||
|
|
||||||
|
/// @title Vault
|
||||||
|
/// @author Jordi Baylina
|
||||||
|
/// @notice This contract holds ether securely for liquid pledging systems. For
|
||||||
|
/// this iteration the funds will come straight from the Giveth Multisig as a
|
||||||
|
/// safety precaution, but once fully tested and optimized this contract will
|
||||||
|
/// be a safe place to store funds equipped with optional variable time delays
|
||||||
|
/// to allow for an optional escape hatch to be implemented
|
||||||
import "./Owned.sol";
|
import "./Owned.sol";
|
||||||
|
|
||||||
|
/// @dev This is declares a few functions from `LiquidPledging` so that the
|
||||||
|
/// `Vault` contract can interface with the `LiquidPledging` contract
|
||||||
contract LiquidPledging {
|
contract LiquidPledging {
|
||||||
function confirmPayment(uint64 idNote, uint amount);
|
function confirmPayment(uint64 idNote, uint amount);
|
||||||
function cancelPayment(uint64 idNote, uint amount);
|
function cancelPayment(uint64 idNote, uint amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// @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 Vault is Owned {
|
||||||
|
|
||||||
LiquidPledging public liquidPledging;
|
LiquidPledging public liquidPledging; // liquidPledging contract's address
|
||||||
bool public autoPay;
|
bool public autoPay; // if false, payments will take 2 txs to be completed
|
||||||
|
|
||||||
enum PaymentState {
|
enum PaymentState {
|
||||||
Pending,
|
Pending, // means the payment is awaiting confirmation
|
||||||
Paid,
|
Paid, // means the payment has been sent
|
||||||
Canceled
|
Canceled // means the payment will never be sent
|
||||||
}
|
}
|
||||||
|
/// @dev `Payment` is a public structure that describes the details of
|
||||||
|
/// each payment the `ref` param makes it easy to track the movements of
|
||||||
|
/// funds transparently by its connection to other `Payment` structs
|
||||||
struct Payment {
|
struct Payment {
|
||||||
PaymentState state;
|
PaymentState state; //
|
||||||
bytes32 ref;
|
bytes32 ref; // a hash that references details from other contracts
|
||||||
address dest;
|
address dest; // recipient of the ETH
|
||||||
uint amount;
|
uint amount; // amount of ETH (in wei) to be sent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @dev An array that contains all the payments for this Vault
|
||||||
Payment[] public payments;
|
Payment[] public payments;
|
||||||
|
|
||||||
|
// @dev `liquidPledging` is the only address that can call a function with
|
||||||
|
/// this modifier
|
||||||
modifier onlyLiquidPledging() {
|
modifier onlyLiquidPledging() {
|
||||||
require(msg.sender == address(liquidPledging));
|
require(msg.sender == address(liquidPledging));
|
||||||
_;
|
_;
|
||||||
}
|
}
|
||||||
|
/// @dev USED FOR TESTING???
|
||||||
function VaultMock() {
|
function VaultMock() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -74,7 +91,7 @@ contract Vault is Owned {
|
||||||
require(p.state == PaymentState.Pending);
|
require(p.state == PaymentState.Pending);
|
||||||
|
|
||||||
p.state = PaymentState.Paid;
|
p.state = PaymentState.Paid;
|
||||||
p.dest.transfer(p.amount);
|
p.dest.transfer(p.amount); // only ETH denominated in wei
|
||||||
|
|
||||||
liquidPledging.confirmPayment(uint64(p.ref), p.amount);
|
liquidPledging.confirmPayment(uint64(p.ref), p.amount);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue