Factory contract to create and register new instances of perpetual contracts.
Responsible for constraining the parameters used to construct a new perpetual. This creator contains a number of constraints
that are applied to newly created contract. These constraints can evolve over time and are
initially constrained to conservative values in this first iteration. Technically there is nothing in the
Perpetual contract requiring these constraints. However, because
createPerpetual() is intended
to be the only way to create valid financial contracts that are registered with the DVM (via _registerContract),
we can enforce deployment configurations here.
constructor(address _finderAddress, address _tokenFactoryAddress, address _timerAddress) (public)
Constructs the Perpetual contract.
- _finderAddress: UMA protocol Finder used to discover other protocol contracts.
- _tokenFactoryAddress: ERC20 token factory used to deploy synthetic token instances.
- _timerAddress: Contract that stores the current time in a testing environment.
createPerpetual(struct PerpetualCreator.Params params, struct ConfigStoreInterface.ConfigSettings configSettings) → address (public)
Creates an instance of perpetual and registers it within the registry.
- params: is a
ConstructorParamsobject from Perpetual.
_getSyntheticDecimals(address _collateralAddress) → uint8 decimals (public)
setCurrentTime(uint256 time) (external)
Sets the current time.
Will revert if not running in test mode.
- time: timestamp to set current Testable time to.
getCurrentTime() → uint256 (public)
Gets the current time. Will return the last time set in
setCurrentTime if running in test mode.
Otherwise, it will return the block timestamp.
_requireWhitelistedCollateral(address collateralAddress) (internal)
_registerContract(address parties, address contractToRegister) (internal)
CreatedPerpetual(address perpetualAddress, address deployerAddress)
CreatedConfigStore(address configStoreAddress, address ownerAddress)
Prevents a contract from calling itself, directly or indirectly.
nonReentrant function from another
nonReentrant function is not supported. It is possible to
prevent this from happening by making the
nonReentrant function external, and making it call a
function that does the actual state modification.
Designed to prevent a view-only method from being re-entered during a call to a
nonReentrant() state-changing method.
Reverts if not running in test mode.