Added vault transfer function

This commit is contained in:
Thrilok Kumar 2020-06-21 01:26:42 +05:30
parent e87a70e4db
commit 076a836c03

View File

@ -81,6 +81,10 @@ interface EventInterface {
function emitEvent(uint _connectorType, uint _connectorID, bytes32 _eventCode, bytes calldata _eventData) external;
}
interface AccountInterface {
function isAuth(address _user) external view returns (bool);
}
contract DSMath {
uint256 constant RAY = 10 ** 27;
@ -333,6 +337,7 @@ contract MakerHelpers is MakerMCDAddresses {
contract BasicResolver is MakerHelpers {
event LogOpen(uint256 indexed vault, bytes32 indexed ilk);
event LogClose(uint256 indexed vault, bytes32 indexed ilk);
event LogTransfer(uint256 indexed vault, bytes32 indexed ilk, address newOwner);
event LogDeposit(uint256 indexed vault, bytes32 indexed ilk, uint256 tokenAmt, uint256 getId, uint256 setId);
event LogWithdraw(uint256 indexed vault, bytes32 indexed ilk, uint256 tokenAmt, uint256 getId, uint256 setId);
event LogBorrow(uint256 indexed vault, bytes32 indexed ilk, uint256 tokenAmt, uint256 getId, uint256 setId);
@ -377,6 +382,29 @@ contract BasicResolver is MakerHelpers {
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
}
/**
* @dev Transfer Vault
* @param vault Vault ID to transfer.
*/
function transfer(uint vault, address nextOwner) external payable {
require(AccountInterface(address(this)).isAuth(nextOwner), "nextOwner-is-not-auth");
ManagerLike managerContract = ManagerLike(getMcdManager());
uint _vault = getVault(managerContract, vault);
(bytes32 ilk,) = getVaultData(managerContract, _vault);
require(managerContract.owns(_vault) == address(this), "not-owner");
managerContract.give(_vault, nextOwner);
emit LogTransfer(_vault, ilk, nextOwner);
bytes32 _eventCode = keccak256("LogTransfer(uint256,bytes32,address)");
bytes memory _eventParam = abi.encode(_vault, ilk, nextOwner);
(uint _type, uint _id) = connectorID();
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
}
/**
* @dev Deposit ETH/ERC20_Token Collateral.
* @param vault Vault ID.