Please help me to understand what the Migrations contract in the truffle suite does. Are we supposed to inherit from it? What if I'm using OpenZepp's Ownable? Or does this file allow for long term migrations added to the contracts from early on? Thank you.
contracts/Migrations.sol
pragma solidity ^0.4.24;
contract Migrations {
address public owner;
uint public last_completed_migration;
modifier restricted() {
if (msg.sender == owner) _;
}
constructor() public {
owner = msg.sender;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) public restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}