SignedQuoteRiskModule
This is an implementation of the RiskModule that relays fully on trusted accounts to price and resolve the policies. The pricing of the policy is done off-chain and provided as a cryptographically signed quote. This signature has to be later provided by the user creating the policy.
Roles
The specific roles and functions of the contract are as follows:
Role | Global* | Description | Methods Accessible |
---|---|---|---|
RESOLVER_ROLE | Resolves policies. |
| |
POLICY_CREATOR_ROLE | Creates new policies. |
| |
PRICER_ROLE | Prices policies |
|
( * ) Global means that the role can be delegated to a user at the protocol level (for all components) or only for a specific component. Non-global roles can only be granted for a specific component.
Note on risk module roles
The PRICER_ROLE is normally granted to a Service EOA (i.e., an account used by a service as opposed to a human user) that produces signed quotes for a risk partner. Given that these are services exposed to the internet, they may require regular or emergency private key rotation for security reasons.
Usually, the role admin for the PRICER_ROLE is globally changed from the DEFAULT_ADMIN_ROLE to a specific PRICER_ROLE_ADMIN role that's granted to an operational Multisig with no timelocks, or to a timelock with a lower delay.
The same applies to the role admin for RESOLVER_ROLE and POLICY_CREATOR_ROL.
External Methods
newPolicy
Creates a new Policy using a signed quote. The caller is the payer of the policy.
Requirements:
The caller approved the spending of the premium to the PolicyPool
The quote has been signed by an address with the component role PRICER_ROLE
Emits:
{PolicyPool.NewPolicy}
{NewSignedPolicy}
Name | Type | Description |
---|---|---|
payout | uint256 | The exposure (maximum payout) of the policy |
premium | uint256 | The premium that will be paid by the payer |
lossProb | uint256 | The probability of having to pay the maximum payout (wad) |
expiration | uint40 | The expiration of the policy (timestamp) |
onBehalfOf | address | The policy holder |
policyData | bytes32 | A hash of the private details of the policy. The last 96 bits will be used as internalId |
quoteSignatureR | bytes32 | The signature of the quote. R component (EIP-2098 signature) |
quoteSignatureVS | bytes32 | The signature of the quote. VS component (EIP-2098 signature) |
quoteValidUntil | uint40 | The expiration of the quote |
Name | Type | Description |
---|---|---|
[0] | uint256 | Returns the id of the created policy |
newPolicyFull
Creates a new Policy using a signed quote. The caller is the payer of the policy. Returns all the struct, not just the id.
Requirements:
The caller approved the spending of the premium to the PolicyPool
The quote has been signed by an address with the component role PRICER_ROLE
Emits:
{PolicyPool.NewPolicy}
{NewSignedPolicy}
Name | Type | Description |
---|---|---|
payout | uint256 | The exposure (maximum payout) of the policy |
premium | uint256 | The premium that will be paid by the payer |
lossProb | uint256 | The probability of having to pay the maximum payout (wad) |
expiration | uint40 | The expiration of the policy (timestamp) |
onBehalfOf | address | The policy holder |
policyData | bytes32 | A hash of the private details of the policy. The last 96 bits will be used as internalId |
quoteSignatureR | bytes32 | The signature of the quote. R component (EIP-2098 signature) |
quoteSignatureVS | bytes32 | The signature of the quote. VS component (EIP-2098 signature) |
quoteValidUntil | uint40 | The expiration of the quote |
Name | Type | Description |
---|---|---|
createdPolicy | struct Policy.PolicyData | Returns the created policy |
newPolicyPaidByHolder
Creates a new Policy using a signed quote. The payer is the policy holder
Requirements:
currency().allowance(onBehalfOf, _msgSender()) > 0
The quote has been signed by an address with the component role PRICER_ROLE
Emits:
{PolicyPool.NewPolicy}
{NewSignedPolicy}
Name | Type | Description |
---|---|---|
payout | uint256 | The exposure (maximum payout) of the policy |
premium | uint256 | The premium that will be paid by the payer |
lossProb | uint256 | The probability of having to pay the maximum payout (wad) |
expiration | uint40 | The expiration of the policy (timestamp) |
onBehalfOf | address | The policy holder |
policyData | bytes32 | A hash of the private details of the policy. The last 96 bits will be used as internalId |
quoteSignatureR | bytes32 | The signature of the quote. R component (EIP-2098 signature) |
quoteSignatureVS | bytes32 | The signature of the quote. VS component (EIP-2098 signature) |
quoteValidUntil | uint40 | The expiration of the quote |
Name | Type | Description |
---|---|---|
[0] | uint256 | Returns the id of the created policy |
resolvePolicy
resolvePolicyFullPayout
Last updated