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:
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}
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
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}
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
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}
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
resolvePolicy
resolvePolicyFullPayout
Last updated