bitpro가 원문에서 글자만 모은 내용이에요. 표·그림·수식은 빠지거나 깨질 수 있어요. 전체 36쪽 중 33쪽
-------- | ----------------------------------------------------------------------------------------------------------- |
| amount | uint96 | Amount of tokens to seize from each signing group member. |
| rewardMultiplier | uint256 | Fraction of the staking contract notifiers reward the notifier should receive; should be between \[0, 100]. |
| notifier | address | Address of the misbehavior notifier. |
| walletID | bytes32 | ID of the wallet. |
| walletMembersIDs | uint32\[] | Identifiers of the wallet signing group members. |
### isDkgResultValid
```solidity
function isDkgResultValid(struct EcdsaDkg.Result result) external view returns (bool, string)
```
Checks if DKG result is valid for the current DKG.
#### Parameters
| Name | Type | Description |
| ------ | ---------------------- | ----------- |
| result | struct EcdsaDkg.Result | DKG result. |
#### Return Values
| Name | Type | Description |
| ---- | ------ | -------------------------------------------------------------------------------------------- |
| \[0] | bool | True if the result is valid. If the result is invalid it returns false and an error message. |
| \[1] | string | |
### getWalletCreationState
```solidity
function getWalletCreationState() external view returns (enum EcdsaDkg.State)
```
Check current wallet creation state.
### isWalletMember
```solidity
function isWalletMember(bytes32 walletID, uint32[] walletMembersIDs, address operator, uint256 walletMemberIndex) external view returns (bool)
```
Checks whether the given operator is a member of the given wallet signing group.
Requirements:
* The `operator` parameter must be an actual sortition pool operator.
* The expression `keccak256(abi.encode(walletMembersIDs))` must be exactly the same as the hash stored under `membersIdsHash` for the given `walletID`. Those IDs are not directly stored in the contract for gas efficiency purposes but they can be read from appropriate `DkgResultSubmitted` and `DkgResultApproved` events.
* The `walletMemberIndex` must be in range \[1, walletMembersIDs.length]
#### Parameters
| Name | Type | Description |
| ----------------- | --------- | ------------------------------------------------------------------ |
| walletID | bytes32 | ID of the wallet. |
| walletMembersIDs | uint32\[] | Identifiers of the wallet signing group members. |
| operator | address | Address of the checked operator. |
| walletMemberIndex | uint256 | Position of the operator in the wallet signing group members list. |
#### Return Values
| Name | Type | Description |
| ---- | ---- | ---------------------------------------------------------------------------------------- |
| \[0] | bool | True - if the operator is a member of the given wallet signing group. False - otherwise. |
### hasSeedTimedOut
```solidity
function hasSeedTimedOut() external view returns (bool)
```
Checks if awaiting seed timed out.
#### Return Values
| Name | Type | Description |
| ---- | ---- | ------------------------------------------------- |
| \[0] | bool | True if awaiting seed timed out, false otherwise. |
### hasDkgTimedOut
```solidity
function hasDkgTimedOut() external view returns (bool)
```
Checks if DKG timed out. The DKG timeout period includes time required for off-chain protocol execution and time for the result publication for all group members. After this time result cannot be submitted and DKG can be notified about the timeout.
#### Return Values
| Name | Type | Description |
| ---- | ---- | --------------------------------------- |
| \[0] | bool | True if DKG timed out, false otherwise. |
### getWallet
```solidity
function getWallet(bytes32 walletID) external view returns (struct Wallets.Wallet)
```
### getWalletPublicKey
```solidity
function getWalletPublicKey(bytes32 walletID) external view returns (bytes)
```
Gets public key of a wallet with a given wallet ID. The public key is returned in an uncompressed format as a 64-byte concatenation of X and Y coordinates.
#### Parameters
| Name | Type | Description |
| -------- | ------- | ----------------- |
| walletID | bytes32 | ID of the wallet. |
#### Return Values
| Name | Type | Description |
| ---- | ----- | -------------------------------------- |
| \[0] | bytes | Uncompressed public key of the wallet. |
### isWalletRegistered
```solidity
function isWalletRegistered(bytes32 walletID) external view returns (bool)
```
Checks if a wallet with the given ID is registered.
#### Parameters
| Name | Type | Description |
| -------- | ------- | ------------ |
| walletID | bytes32 | Wallet's ID. |
#### Return Values
| Name | Type | Description |
| ---- | ---- | ---------------------------------------------- |
| \[0] | bool | True if wallet is registered, false otherwise. |
### minimumAuthorization
```solidity
function minimumAuthorization() external view returns (uint96)
```
The minimum authorization amount required so that operator can participate in ECDSA Wallet operations.
### eligibleStake
```solidity
function eligibleStake(address stakingProvider) external view returns (uint96)
```
Returns the current value of the staking provider's eligible stake. Eligible stake is defined as the currently authorized stake minus the pending authorization decrease. Eligible stake is what is used for operator's weight in the sortition pool. If the authorized stake minus the pending authorization decrease is below the minimum authorization, eligible stake is 0.
### availableRewards
```solidity
function availableRewards(address stakingProvider) external view returns (uint96)
```
Returns the amount of rewards available for withdrawal for the given staking provider. Reverts if staking provider has not registered the operator address.
### pendingAuthorizationDecrease
```solidity
function pendingAuthorizationDecrease(address stakingProvider) external view returns (uint96)
```
Returns the amount of stake that is pending authorization decrease for the given staking provider. If no authorization decrease has been requested, returns zero.
### remainingAuthorizationDecreaseDelay
```solidity
function remainingAuthorizationDecreaseDelay(address stakingProvider) external view returns (uint64)
```
Returns the remaining time in seconds that needs to pass before the requested authorization decrease can be approved. If the sortition pool state was not updated yet by the operator after requesting the authorization decrease, returns `type(uint64).max`.
### stakingProviderToOperator
```solidity
function stakingProviderToOperator(address stakingProvider) public view returns (address)
```
Returns operator registered for the given staking provider.
### operatorToStakingProvider
```solidity
function operatorToStakingProvider(address operator) public view returns (address)
```
Returns staking provider of the given operator.
### isOperatorUpToDate
```solidity
function isOperatorUpToDate(address operator) external view returns (bool)
```
Checks if the operator's authorized stake is in sync with operator's weight in the sortition pool. If the operator is not in the sortition pool and their authorized stake is non-zero, function returns false.
### isOperatorInPool
```solidity
function isOperatorInPool(address operator) external view returns (bool)
```
Returns true if the given operator is in the sortition pool. Otherwise, returns false.
### selectGroup
```solidity
function selectGroup() external view returns (uint32[])
```
Selects a new group of operators. Can only be called when DKG is in progress and the pool is locked. At least one operator has to be registered in the pool, otherwise the function fails reverting the transaction.
#### Return Values
| Name | Type | Description |
| ---- | --------- | ------------------------------ |
| \[0] | uint32\[] | IDs of selected group members. |
### dkgParameters
```solidity
function dkgParameters() external view returns (struct EcdsaDkg.Parameters)
```
Retrieves dkg parameters that were set in DKG library.
### authorizationParameters
```solidity
function authorizationParameters() external view returns (uint96 minimumAuthorization, uint64 authorizationDecreaseDelay, uint64 authorizationDecreaseChangePeriod)
```
Returns authorization-related parameters.
The minimum authorization is also returned by `minimumAuthorization()` function, as a requirement of `IApplication` interface.
#### Return Values
| Name | Type | Description |
| --------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| minimumAuthorization | uint96 | The minimum authorization amount required so that operator can participate in the random beacon. This amount is required to execute slashing for providing a malicious DKG result or when a relay entry times out. |
| authorizationDecreaseDelay | uint64 | Delay in seconds that needs to pass between the time authorization decrease is requested and the time that request gets approved. Protects against free-riders earning rewards and not being active in the network. |
| authorizationDecreaseChangePeriod | uint64 | Authorization decrease change period in seconds. It is the time, before authorization decrease delay end, during which the pending authorization decrease request can be overwritten. If set to 0, pending authorization decrease request can not be overwritten until the entire `authorizationDecreaseDelay` ends. If set to value equal `authorizationDecreaseDelay`, request can always be overwritten. |
### rewardParameters
```solidity
function rewardParameters() external view returns (uint256 maliciousDkgResultNotificationRewardMultiplier, uint256 sortitionPoolRewardsBanDuration)
```
Retrieves reward-related parameters.
#### Return Values
| Name | Type | Description |
| ---------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| maliciousDkgResultNotificationRewardMultiplier | uint256 | Percentage of the staking contract malicious behavior notification reward which will be transferred to the notifier reporting about a malicious DKG result. Notifiers are rewarded from a notifiers treasury pool. For example, if notification reward is 1000 and the value of the multiplier is 5, the notifier will receive: 5% of 1000 = 50 per each operator affected. |
| sortitionPoolRewardsBanDuration | uint256 | Duration of the sortition pool rewards ban imposed on operators who missed their turn for DKG result submission or who failed a heartbeat. |
### slashingParameters
```solidity
function slashingParameters() external view returns (uint96 maliciousDkgResultSlashingAmount)
```
Retrieves slashing-related parameters.
#### Return Values
| Name | Type | Description |
| -------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| maliciousDkgResultSlashingAmount | uint96 | Slashing amount for submitting a malicious DKG result. Every DKG result submitted can be challenged for the time of `dkg.resultChallengePeriodLength`. If the DKG result submitted is challenged and proven to be malicious, the operator who submitted the malicious result is slashed for `_maliciousDkgResultSlashingAmount`. |
### gasParameters
```solidity
function gasParameters() external view returns (uint256 dkgResultSubmissionGas, uint256 dkgResultApprovalGasOffset, uint256 notifyOperatorInactivityGasOffset, uint256 notifySeedTimeoutGasOffset, uint256 notifyDkgTimeoutNegativeGasOffset)
```
Retrieves gas-related parameters.
#### Return Values
| Name | Type | Description |
| --------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dkgResultSubmissionGas | uint256 | Calculated max gas cost for submitting a DKG result. This will be refunded as part of the DKG approval process. It is in the submitter's interest to not skip his priority turn on the approval, otherwise the refund of the DKG submission will be refunded to another group member that will call the DKG approve function. |
| dkgResultApprovalGasOffset | uint256 | Gas that is meant to balance the DKG result approval's overall cost. It can be updated by the governance based on the current market conditions. |
| notifyOperatorInactivityGasOffset | uint256 | Gas that is meant to balance the notification of an operator inactivity. It can be updated by the governance based on the current market conditions. |
| notifySeedTimeoutGasOffset | uint256 | Gas that is meant to balance the notification of a seed for DKG delivery timeout. It can be updated by the governance based on the current market conditions. |
| notifyDkgTimeoutNegativeGasOffset | uint256 | Gas that is meant to balance the notification of a DKG protocol execution timeout. It can be updated by the governance based on the current market conditions. |
# WalletRegistryGovernance
## WalletRegistryGovernance
Owns the `WalletRegistry` contract and is responsible for updating its governable parameters in respect to the governance delay.
### newGovernanceDelay
```solidity
uint256 newGovernanceDelay
```
### governanceDelayChangeInitiated
```solidity
uint256 governanceDelayChangeInitiated
```
### newWalletRegistryGovernance
```solidity
address newWalletRegistryGovernance
```
### walletRegistryGovernanceTransferInitiated
```solidity
uint256 walletRegistryGovernanceTransferInitiated
```
### newWalletOwner
```solidity
address newWalletOwner
```
### walletOwnerChangeInitiated
```solidity
uint256 walletOwnerChangeInitiated
```
### newMinimumAuthorization
```solidity
uint96 newMinimumAuthorization
```
### minimumAuthorizationChangeInitiated
```solidity
uint256 minimumAuthorizationChangeInitiated
```
### newAuthorizationDecreaseDelay
```solidity
uint64 newAuthorizationDecreaseDelay
```
### authorizationDecreaseDelayChangeInitiated
```solidity
uint256 authorizationDecreaseDelayChangeInitiated
```
### newAuthorizationDecreaseChangePeriod
```solidity
uint64 newAuthorizationDecreaseChangePeriod
```
### authorizationDecreaseChangePeriodChangeInitiated
```solidity
uint256 authorizationDecreaseChangePeriodChangeInitiated
```
### newMaliciousDkgResultSlashingAmount
```solidity
uint96 newMaliciousDkgResultSlashingAmount
```
### maliciousDkgResultSlashingAmountChangeInitiated
```solidity
uint256 maliciousDkgResultSlashingAmountChangeInitiated
```
### newMaliciousDkgResultNotificationRewardMultiplier
```solidity
uint256 newMaliciousDkgResultNotificationRewardMultiplier
```
### maliciousDkgResultNotificationRewardMultiplierChangeInitiated
```solidity
uint256 maliciousDkgResultNotificationRewardMultiplierChangeInitiated
```
### newSortitionPoolRewardsBanDuration
```solidity
uint256 newSortitionPoolRewardsBanDuration
```
### sortitionPoolRewardsBanDurationChangeInitiated
```solidity
uint256 sortitionPoolRewardsBanDurationChangeInitiated
```
### newDkgSeedTimeout
```solidity
uint256 newDkgSeedTimeout
```
### dkgSeedTimeoutChangeInitiated
```solidity
uint256 dkgSeedTimeoutChangeInitiated
```
### newDkgResultChallengePeriodLength
```solidity
uint256 newDkgResultChallengePeriodLength
```
### dkgResultChallengePeriodLengthChangeInitiated
```solidity
uint256 dkgResultChallengePeriodLengthChangeInitiated
```
### newDkgResultChallengeExtraGas
```solidity
uint256 newDkgResultChallengeExtraGas
```
### dkgResultChallengeExtraGasChangeInitiated
```solidity
uint256 dkgResultChallengeExtraGasChangeInitiated
```
### newDkgResultSubmissionTimeout
```solidity
uint256 newDkgResultSubmissionTimeout
```
### dkgResultSubmissionTimeoutChangeInitiated
```solidity
uint256 dkgResultSubmissionTimeoutChangeInitiated
```
### newSubmitterPrecedencePeriodLength
```solidity
uint256 newSubmitterPrecedencePeriodLength
```
### dkgSubmitterPrecedencePeriodLengthChangeInitiated
```solidity
uint256 dkgSubmitterPrecedencePeriodLengthChangeInitiated
```
### newDkgResultSubmissionGas
```solidity
uint256 newDkgResultSubmissionGas
```
### dkgResultSubmissionGasChangeInitiated
```solidity
uint256 dkgResultSubmissionGasChangeInitiated
```
### newDkgResultApprovalGasOffset
```solidity
uint256 newDkgResultApprovalGasOffset
```
### dkgResultApprovalGasOffsetChangeInitiated
```solidity
uint256 dkgResultApprovalGasOffsetChangeInitiated
```
### newNotifyOperatorInactivityGasOffset
```solidity
uint256 newNotifyOperatorInactivityGasOffset
```
### notifyOperatorInactivityGasOffsetChangeInitiated
```solidity
uint256 notifyOperatorInactivityGasOffsetChangeInitiated
```
### newNotifySeedTimeoutGasOffset
```solidity
uint256 newNotifySeedTimeoutGasOffset
```
### notifySeedTimeoutGasOffsetChangeInitiated
```solidity
uint256 notifySeedTimeoutGasOffsetChangeInitiated
```
### newNotifyDkgTimeoutNegativeGasOffset
```solidity
uint256 newNotifyDkgTimeoutNegativeGasOffset
```
### notifyDkgTimeoutNegativeGasOffsetChangeInitiated
```solidity
uint256 notifyDkgTimeoutNegativeGasOffsetChangeInitiated
```
### newReimbursementPool
```solidity
address payable newReimbursementPool
```
### reimbursementPoolChangeInitiated
```solidity
uint256 reimbursementPoolChangeInitiated
```
### walletRegistry
```solidity
contract WalletRegistry walletRegistry
```
### governanceDelay
```solidity
uint256 governanceDelay
```
### GovernanceDelayUpdateStarted
```solidity
event GovernanceDelayUpdateStarted(uint256 governanceDelay, uint256 timestamp)
```
### GovernanceDelayUpdated
```solidity
event GovernanceDelayUpdated(uint256 governanceDelay)
```
### WalletRegistryGovernanceTransferStarted
```solidity
event WalletRegistryGovernanceTransferStarted(address newWalletRegistryGovernance, uint256 timestamp)
```
### WalletRegistryGovernanceTransferred
```solidity
event WalletRegistryGovernanceTransferred(address newWalletRegistryGovernance)
```
### WalletOwnerUpdateStarted
```solidity
event WalletOwnerUpdateStarted(address walletOwner, uint256 timestamp)
```
### WalletOwnerUpdated
```solidity
event WalletOwnerUpdated(address walletOwner)
```
### MinimumAuthorizationUpdateStarted
```solidity
event MinimumAuthorizationUpdateStarted(uint96 minimumAuthorization, uint256 timestamp)
```
### MinimumAuthorizationUpdated
```solidity
event MinimumAuthorizationUpdated(uint96 minimumAuthorization)
```
### AuthorizationDecreaseDelayUpdateStarted
```solidity
event AuthorizationDecreaseDelayUpdateStarted(uint64 authorizationDecreaseDelay, uint256 timestamp)
```
### AuthorizationDecreaseDelayUpdated
```solidity
event AuthorizationDecreaseDelayUpdated(uint64 authorizationDecreaseDelay)
```
### AuthorizationDecreaseChangePeriodUpdateStarted
```solidity
event AuthorizationDecreaseChangePeriodUpdateStarted(uint64 authorizationDecreaseChangePeriod, uint256 timestamp)
```
### AuthorizationDecreaseChangePeriodUpdated
```solidity
event AuthorizationDecreaseChangePeriodUpdated(uint64 authorizationDecreaseC프로젝트로 돌아가기