---
# System prepended metadata

title: Vault 12 Guardians
tags: [audit]

---

###### tags: `audit`
# Vault 12 Guardians

## MigrationContract

1. [`53    function oracle() external view returns (address) {`]( https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L53)
    
    **Severity**: Minor
    
    **Description**: This function is not needed. Just rename _oracleAddress to oracle and make it public.

2. [`61    function isContractCreationDisabled() external view returns(bool) {`](https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L61)

    **Severity**: Minor
    
    **Description**: This function is not needed as contractCreationDisabled is already public.

3. [`82    function hasNewVersion() external view returns(bool) {`](https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L82)

    **Severity**: Minor
    
    **Decsription**: Make function public as it is used in inherited contract.


## MigrationInterface

1. [`112 contract MigrationInterface is MigrationContract {`](https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L112)

    **Severety**: Minor
    
    **Description**: Change contract to interface and remove inheritance from MigrationContract.

## EscrowContractsStore

1. [`166    address _dateConverterAddress;`](https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L166)

    **Severety**: Minor
    
    **Description**: Provide explicit visibility.
    
    
2. [`267     function getContractsWith() external view returns(address[] memory owners, address[] memory custodians) {`](https://github.com/vault12/vault12_guardians/blob/0437a07aec2220f55aa691e3304ea73327f6f931/EscrowContract.sol#L267-270)

    **Severity**: Major

    **Description**: Owners and Custodians messed up.

------
168    address[] public contractOwnerAddress;
168    address[] public contractCustodianAddress;

Какая-то хуйня бесполезная, нахуй это нужно?

------

229     function migrateContractData(

Нахуя эта функция здесь реализована?

------

276         uint amount = 0;

Сука ну ебаный рот этого казино

------

569        uint price = escrowMemory.price.mul(escrowMemory.duration);

Нейминг заебись. Что будет если price умножить на duration? PRICE!

-------

568        uint totalPaymentsDays = now.sub(paidToDate);

Да идите вы нахуй. Как можно из одного таймстемпа вычесть другой и получить что-то измеряемое в днях????

-------

289    function cancelEscrowContract(address custodian) public isActive {

Нет проверок, что контракт не истек. Наверн все ебнется на истекшем контракте.

-------

Комменты к функциям, я ебал, настолько релевантные, что это просто пиздец.

-------

363    function changeCustodianAddress(address custodian, address newCustodian) external isActive {

Схерали там в updatedDate выставляется now? Никаких же выплат не было.

------

387     function increaseDuration(address custodian, uint duration) public payable isActive {


Тут надо иначе играться с memory/storage для оптимизации газа

------

507     function deleteConractDependens(address owner, address custodian) private {

БЛЯДЬ БЛЯДЬ БЛЯДЬ НУ КАК ТАК МОЖНО УДАЛЯТЬ ИЗ КОНЦА МАССИВА СУКА ЕБАНЫЙ РОТ

------

Не смотрел еще:

324    function changeContractPrice(address custodian, uint price) external payable isActive {

415     function renewContract(address custodian) public payable isActive {

457     function withdraw(address owner) external isActive {
