mirror of
https://github.com/logos-storage/logos-storage-contracts-eth.git
synced 2026-01-05 14:53:08 +00:00
vault: reorder functions
in roughly chronological order
This commit is contained in:
parent
6e531f2087
commit
f64c373e8f
@ -30,24 +30,28 @@ contract Vault is VaultBase {
|
||||
return _getLock(controller, context);
|
||||
}
|
||||
|
||||
function lock(Context context, Timestamp expiry, Timestamp maximum) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_lock(controller, context, expiry, maximum);
|
||||
}
|
||||
|
||||
function extendLock(Context context, Timestamp expiry) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_extendLock(controller, context, expiry);
|
||||
}
|
||||
|
||||
function deposit(Context context, address from, uint128 amount) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_deposit(controller, context, from, amount);
|
||||
}
|
||||
|
||||
function withdraw(Context context, Recipient recipient) public {
|
||||
function designate(
|
||||
Context context,
|
||||
Recipient recipient,
|
||||
uint128 amount
|
||||
) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_withdraw(controller, context, recipient);
|
||||
}
|
||||
|
||||
function withdrawByRecipient(Controller controller, Context context) public {
|
||||
Recipient recipient = Recipient.wrap(msg.sender);
|
||||
_withdraw(controller, context, recipient);
|
||||
}
|
||||
|
||||
function burn(Context context, Recipient recipient) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_burn(controller, context, recipient);
|
||||
_designate(controller, context, recipient, amount);
|
||||
}
|
||||
|
||||
function transfer(
|
||||
@ -60,25 +64,6 @@ contract Vault is VaultBase {
|
||||
_transfer(controller, context, from, to, amount);
|
||||
}
|
||||
|
||||
function designate(
|
||||
Context context,
|
||||
Recipient recipient,
|
||||
uint128 amount
|
||||
) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_designate(controller, context, recipient, amount);
|
||||
}
|
||||
|
||||
function lock(Context context, Timestamp expiry, Timestamp maximum) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_lockup(controller, context, expiry, maximum);
|
||||
}
|
||||
|
||||
function extendLock(Context context, Timestamp expiry) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_extendLock(controller, context, expiry);
|
||||
}
|
||||
|
||||
function flow(
|
||||
Context context,
|
||||
Recipient from,
|
||||
@ -88,4 +73,19 @@ contract Vault is VaultBase {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_flow(controller, context, from, to, rate);
|
||||
}
|
||||
|
||||
function burn(Context context, Recipient recipient) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_burn(controller, context, recipient);
|
||||
}
|
||||
|
||||
function withdraw(Context context, Recipient recipient) public {
|
||||
Controller controller = Controller.wrap(msg.sender);
|
||||
_withdraw(controller, context, recipient);
|
||||
}
|
||||
|
||||
function withdrawByRecipient(Controller controller, Context context) public {
|
||||
Recipient recipient = Recipient.wrap(msg.sender);
|
||||
_withdraw(controller, context, recipient);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,132 +73,7 @@ abstract contract VaultBase {
|
||||
return _locks[controller][context];
|
||||
}
|
||||
|
||||
function _deposit(
|
||||
Controller controller,
|
||||
Context context,
|
||||
address from,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Recipient recipient = Recipient.wrap(from);
|
||||
Balance memory balance = _balances[controller][context][recipient];
|
||||
|
||||
balance.available += amount;
|
||||
lock.value += amount;
|
||||
|
||||
_balances[controller][context][recipient] = balance;
|
||||
_locks[controller][context] = lock;
|
||||
|
||||
_token.safeTransferFrom(from, address(this), amount);
|
||||
}
|
||||
|
||||
function _delete(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) private {
|
||||
delete _balances[controller][context][recipient];
|
||||
delete _flows[controller][context][recipient];
|
||||
}
|
||||
|
||||
function _withdraw(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(!lock.isLocked(), Locked());
|
||||
|
||||
Balance memory balance = _getBalance(controller, context, recipient);
|
||||
uint128 amount = balance.available + balance.designated;
|
||||
|
||||
lock.value -= amount;
|
||||
|
||||
if (lock.value == 0) {
|
||||
delete _locks[controller][context];
|
||||
} else {
|
||||
_locks[controller][context] = lock;
|
||||
}
|
||||
|
||||
_delete(controller, context, recipient);
|
||||
_token.safeTransfer(Recipient.unwrap(recipient), amount);
|
||||
}
|
||||
|
||||
function _burn(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Flow memory flow = _flows[controller][context][recipient];
|
||||
require(flow.rate == TokensPerSecond.wrap(0), CannotBurnFlowingTokens());
|
||||
|
||||
Balance memory balance = _getBalance(controller, context, recipient);
|
||||
uint128 amount = balance.available + balance.designated;
|
||||
|
||||
lock.value -= amount;
|
||||
|
||||
if (lock.value == 0) {
|
||||
delete _locks[controller][context];
|
||||
} else {
|
||||
_locks[controller][context] = lock;
|
||||
}
|
||||
|
||||
_delete(controller, context, recipient);
|
||||
|
||||
_token.safeTransfer(address(0xdead), amount);
|
||||
}
|
||||
|
||||
function _transfer(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient from,
|
||||
Recipient to,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Balance memory senderBalance = _getBalance(controller, context, from);
|
||||
Balance memory receiverBalance = _getBalance(controller, context, to);
|
||||
require(amount <= senderBalance.available, InsufficientBalance());
|
||||
|
||||
senderBalance.available -= amount;
|
||||
receiverBalance.available += amount;
|
||||
|
||||
Flow memory senderFlow = _flows[controller][context][from];
|
||||
_checkFlowInvariant(senderBalance, lock, senderFlow);
|
||||
|
||||
_balances[controller][context][from] = senderBalance;
|
||||
_balances[controller][context][to] = receiverBalance;
|
||||
}
|
||||
|
||||
function _designate(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Balance memory balance = _balances[controller][context][recipient];
|
||||
require(amount <= balance.available, InsufficientBalance());
|
||||
|
||||
balance.available -= amount;
|
||||
balance.designated += amount;
|
||||
|
||||
Flow memory flow = _flows[controller][context][recipient];
|
||||
_checkFlowInvariant(balance, lock, flow);
|
||||
|
||||
_balances[controller][context][recipient] = balance;
|
||||
}
|
||||
|
||||
function _lockup(
|
||||
function _lock(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Timestamp expiry,
|
||||
@ -225,6 +100,72 @@ abstract contract VaultBase {
|
||||
_locks[controller][context] = lock;
|
||||
}
|
||||
|
||||
function _deposit(
|
||||
Controller controller,
|
||||
Context context,
|
||||
address from,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Recipient recipient = Recipient.wrap(from);
|
||||
Balance memory balance = _balances[controller][context][recipient];
|
||||
|
||||
balance.available += amount;
|
||||
lock.value += amount;
|
||||
|
||||
_balances[controller][context][recipient] = balance;
|
||||
_locks[controller][context] = lock;
|
||||
|
||||
_token.safeTransferFrom(from, address(this), amount);
|
||||
}
|
||||
|
||||
function _designate(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Balance memory balance = _balances[controller][context][recipient];
|
||||
require(amount <= balance.available, InsufficientBalance());
|
||||
|
||||
balance.available -= amount;
|
||||
balance.designated += amount;
|
||||
|
||||
Flow memory flow = _flows[controller][context][recipient];
|
||||
_checkFlowInvariant(balance, lock, flow);
|
||||
|
||||
_balances[controller][context][recipient] = balance;
|
||||
}
|
||||
|
||||
function _transfer(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient from,
|
||||
Recipient to,
|
||||
uint128 amount
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Balance memory senderBalance = _getBalance(controller, context, from);
|
||||
Balance memory receiverBalance = _getBalance(controller, context, to);
|
||||
require(amount <= senderBalance.available, InsufficientBalance());
|
||||
|
||||
senderBalance.available -= amount;
|
||||
receiverBalance.available += amount;
|
||||
|
||||
Flow memory senderFlow = _flows[controller][context][from];
|
||||
_checkFlowInvariant(senderBalance, lock, senderFlow);
|
||||
|
||||
_balances[controller][context][from] = senderBalance;
|
||||
_balances[controller][context][to] = receiverBalance;
|
||||
}
|
||||
|
||||
function _flow(
|
||||
Controller controller,
|
||||
Context context,
|
||||
@ -256,6 +197,65 @@ abstract contract VaultBase {
|
||||
_flows[controller][context][to] = receiverFlow;
|
||||
}
|
||||
|
||||
function _burn(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(lock.isLocked(), LockRequired());
|
||||
|
||||
Flow memory flow = _flows[controller][context][recipient];
|
||||
require(flow.rate == TokensPerSecond.wrap(0), CannotBurnFlowingTokens());
|
||||
|
||||
Balance memory balance = _getBalance(controller, context, recipient);
|
||||
uint128 amount = balance.available + balance.designated;
|
||||
|
||||
lock.value -= amount;
|
||||
|
||||
if (lock.value == 0) {
|
||||
delete _locks[controller][context];
|
||||
} else {
|
||||
_locks[controller][context] = lock;
|
||||
}
|
||||
|
||||
_delete(controller, context, recipient);
|
||||
|
||||
_token.safeTransfer(address(0xdead), amount);
|
||||
}
|
||||
|
||||
function _withdraw(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) internal {
|
||||
Lock memory lock = _locks[controller][context];
|
||||
require(!lock.isLocked(), Locked());
|
||||
|
||||
Balance memory balance = _getBalance(controller, context, recipient);
|
||||
uint128 amount = balance.available + balance.designated;
|
||||
|
||||
lock.value -= amount;
|
||||
|
||||
if (lock.value == 0) {
|
||||
delete _locks[controller][context];
|
||||
} else {
|
||||
_locks[controller][context] = lock;
|
||||
}
|
||||
|
||||
_delete(controller, context, recipient);
|
||||
_token.safeTransfer(Recipient.unwrap(recipient), amount);
|
||||
}
|
||||
|
||||
function _delete(
|
||||
Controller controller,
|
||||
Context context,
|
||||
Recipient recipient
|
||||
) private {
|
||||
delete _balances[controller][context][recipient];
|
||||
delete _flows[controller][context][recipient];
|
||||
}
|
||||
|
||||
function _checkLockInvariant(Lock memory lock) private pure {
|
||||
require(lock.expiry <= lock.maximum, ExpiryPastMaximum());
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user