2019-02-14 02:06:35 -02:00
|
|
|
pragma solidity >=0.5.0 <0.6.0;
|
2018-08-08 07:02:03 -03:00
|
|
|
|
2019-02-21 01:43:41 -03:00
|
|
|
import "../../deploy/InstanceFactory.sol";
|
|
|
|
import "../../deploy/Instance.sol";
|
2019-02-20 22:09:59 -03:00
|
|
|
import "./DelegationAbstract.sol";
|
2018-08-08 07:02:03 -03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @title DelegationFactory
|
|
|
|
* @author Ricardo Guilherme Schmidt (Status Research & Development GmbH)
|
|
|
|
* @dev Upgradable delegation proxy factory
|
|
|
|
*/
|
2019-02-14 10:41:11 -02:00
|
|
|
contract DelegationFactory is InstanceFactory {
|
2018-08-08 07:02:03 -03:00
|
|
|
|
2019-02-26 01:30:02 -03:00
|
|
|
constructor(DelegationAbstract _base, DelegationAbstract _init, DelegationAbstract _emergency)
|
2019-02-14 10:41:11 -02:00
|
|
|
InstanceFactory(_base, _init, _emergency)
|
|
|
|
public
|
2018-08-08 07:02:03 -03:00
|
|
|
{ }
|
|
|
|
|
2019-02-14 10:41:11 -02:00
|
|
|
function createDelegation(
|
2019-02-20 22:09:59 -03:00
|
|
|
Delegation _parent
|
2019-02-14 10:41:11 -02:00
|
|
|
)
|
2018-08-08 07:02:03 -03:00
|
|
|
external
|
2019-02-20 22:09:59 -03:00
|
|
|
returns (DelegationAbstract instance)
|
2019-02-14 10:41:11 -02:00
|
|
|
{
|
2019-02-26 01:30:02 -03:00
|
|
|
instance = DelegationAbstract(address(new Instance(base, prototypes[address(base)].init, msg.data)));
|
2019-02-14 10:41:11 -02:00
|
|
|
emit InstanceCreated(instance);
|
2018-08-08 07:02:03 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|