SignedQuoteRiskModule
Last updated
Last updated
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.
The specific roles and functions of the contract are as follows:
Role | Global* | Description | Methods Accessible |
---|---|---|---|
( * ) 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.
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.
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}
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}
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 |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
RESOLVER_ROLE
Resolves policies.
resolvePolicy: Resolves a policy.
resolvePolicyFullPayout: Resolves a policy with full payout.
POLICY_CREATOR_ROLE
Creates new policies.
newPolicy: Creates a policy.
newPolicyFull: Creates a new policy.
newPolicyPaidByHolder: Creates a new policy.
PRICER_ROLE
Prices policies
newPolicy: Creates a policy.
newPolicyFull: Creates a new policy.
newPolicyPaidByHolder: Creates a new policy.
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
[0]
uint256
Returns the id of the created policy
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
createdPolicy
struct Policy.PolicyData
Returns the created policy
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
[0]
uint256
Returns the id of the created policy