From 395a98a640e8edb1afcb5c4aa819206116686043 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 17 Jun 2021 23:36:34 +0530 Subject: [PATCH] Added Vault Transfer function --- .../mainnet/connectors/makerdao/main.sol | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/contracts/mainnet/connectors/makerdao/main.sol b/contracts/mainnet/connectors/makerdao/main.sol index 9e7f8a0f..a6d73cc8 100644 --- a/contracts/mainnet/connectors/makerdao/main.sol +++ b/contracts/mainnet/connectors/makerdao/main.sol @@ -5,7 +5,7 @@ pragma solidity ^0.7.0; * @dev Collateralized Borrowing. */ -import { TokenInterface } from "../../common/interfaces.sol"; +import { TokenInterface, AccountInterface } from "../../common/interfaces.sol"; import { Helpers } from "./helpers.sol"; import { Events } from "./events.sol"; import { VatLike, TokenJoinInterface } from "./interface.sol"; @@ -44,6 +44,29 @@ abstract contract MakerResolver is Helpers, Events { _eventParam = abi.encode(_vault, ilk); } + /** + * @dev Transfer Vault + * @notice Transfer a MakerDAO Vault to "nextOwner" + * @param vault Vault ID to close. + * @param nextOwner Address of the next owner of the vault. + */ + function transfer( + uint vault, + address nextOwner + ) external payable returns (string memory _eventName, bytes memory _eventParam) { + require(AccountInterface(address(this)).isAuth(nextOwner), "nextOwner-is-not-auth"); + + uint256 _vault = getVault(vault); + (bytes32 ilk,) = getVaultData(_vault); + + require(managerContract.owns(_vault) == address(this), "not-owner"); + + managerContract.give(_vault, nextOwner); + + _eventName = "LogTransfer(uint256,bytes32,address)"; + _eventParam = abi.encode(_vault, ilk, nextOwner); + } + /** * @dev Deposit ETH/ERC20_Token Collateral. * @notice Deposit collateral to a MakerDAO vault