bitpro가 원문에서 글자만 모은 내용이에요. 표·그림·수식은 빠지거나 깨질 수 있어요. 전체 36쪽 중 35쪽
he contract owner.
#### Parameters
| Name | Type | Description |
| ------------------------------------ | ------- | ---------------------------------------------------- |
| \_newSubmitterPrecedencePeriodLength | uint256 | New DKG submitter precedence period length in blocks |
### finalizeDkgSubmitterPrecedencePeriodLengthUpdate
```solidity
function finalizeDkgSubmitterPrecedencePeriodLengthUpdate() external
```
Finalizes the DKG submitter precedence period length update process.
Can be called only by the contract owner, after the governance delay elapses.
### withdrawIneligibleRewards
```solidity
function withdrawIneligibleRewards(address recipient) external
```
Withdraws rewards belonging to operators marked as ineligible for sortition pool rewards.
Can be called only by the contract owner.
#### Parameters
| Name | Type | Description |
| --------- | ------- | ------------------------------- |
| recipient | address | Recipient of withdrawn rewards. |
### getRemainingGovernanceDelayUpdateTime
```solidity
function getRemainingGovernanceDelayUpdateTime() external view returns (uint256)
```
Get the time remaining until the governance delay can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingWalletRegistryGovernanceTransferDelayTime
```solidity
function getRemainingWalletRegistryGovernanceTransferDelayTime() external view returns (uint256)
```
Get the time remaining until the wallet registry governance can be transferred.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingMimimumAuthorizationUpdateTime
```solidity
function getRemainingMimimumAuthorizationUpdateTime() external view returns (uint256)
```
Get the time remaining until the minimum authorization amount can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingAuthorizationDecreaseDelayUpdateTime
```solidity
function getRemainingAuthorizationDecreaseDelayUpdateTime() external view returns (uint256)
```
Get the time remaining until the authorization decrease delay can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingAuthorizationDecreaseChangePeriodUpdateTime
```solidity
function getRemainingAuthorizationDecreaseChangePeriodUpdateTime() external view returns (uint256)
```
Get the time remaining until the authorization decrease change period can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingMaliciousDkgResultSlashingAmountUpdateTime
```solidity
function getRemainingMaliciousDkgResultSlashingAmountUpdateTime() external view returns (uint256)
```
Get the time remaining until the malicious DKG result slashing amount can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingMaliciousDkgResultNotificationRewardMultiplierUpdateTime
```solidity
function getRemainingMaliciousDkgResultNotificationRewardMultiplierUpdateTime() external view returns (uint256)
```
Get the time remaining until the DKG malicious result notification reward multiplier duration can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingSortitionPoolRewardsBanDurationUpdateTime
```solidity
function getRemainingSortitionPoolRewardsBanDurationUpdateTime() external view returns (uint256)
```
Get the time remaining until the sortition pool rewards ban duration can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgSeedTimeoutUpdateTime
```solidity
function getRemainingDkgSeedTimeoutUpdateTime() external view returns (uint256)
```
Get the time remaining until the DKG seed timeout can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgResultChallengePeriodLengthUpdateTime
```solidity
function getRemainingDkgResultChallengePeriodLengthUpdateTime() external view returns (uint256)
```
Get the time remaining until the DKG result challenge period length can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgResultChallengeExtraGasUpdateTime
```solidity
function getRemainingDkgResultChallengeExtraGasUpdateTime() external view returns (uint256)
```
### getRemainingDkgResultSubmissionTimeoutUpdateTime
```solidity
function getRemainingDkgResultSubmissionTimeoutUpdateTime() external view returns (uint256)
```
Get the time remaining until the DKG result submission timeout can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingWalletOwnerUpdateTime
```solidity
function getRemainingWalletOwnerUpdateTime() external view returns (uint256)
```
Get the time remaining until the wallet owner can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgSubmitterPrecedencePeriodLengthUpdateTime
```solidity
function getRemainingDkgSubmitterPrecedencePeriodLengthUpdateTime() external view returns (uint256)
```
Get the time remaining until the wallet owner can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgResultSubmissionGasUpdateTime
```solidity
function getRemainingDkgResultSubmissionGasUpdateTime() external view returns (uint256)
```
Get the time remaining until the dkg result submission gas can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingDkgResultApprovalGasOffsetUpdateTime
```solidity
function getRemainingDkgResultApprovalGasOffsetUpdateTime() external view returns (uint256)
```
Get the time remaining until the dkg result approval gas offset can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingNotifyOperatorInactivityGasOffsetUpdateTime
```solidity
function getRemainingNotifyOperatorInactivityGasOffsetUpdateTime() external view returns (uint256)
```
Get the time remaining until the operator inactivity gas offset can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingNotifySeedTimeoutGasOffsetUpdateTime
```solidity
function getRemainingNotifySeedTimeoutGasOffsetUpdateTime() external view returns (uint256)
```
Get the time remaining until the seed for DKG delivery timeout gas offset can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingNotifyDkgTimeoutNegativeGasOffsetUpdateTime
```solidity
function getRemainingNotifyDkgTimeoutNegativeGasOffsetUpdateTime() external view returns (uint256)
```
Get the time remaining until the DKG timeout negative gas offset can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingReimbursementPoolUpdateTime
```solidity
function getRemainingReimbursementPoolUpdateTime() external view returns (uint256)
```
Get the time remaining until reimbursement pool can be updated.
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
### getRemainingChangeTime
```solidity
function getRemainingChangeTime(uint256 changeTimestamp) internal view returns (uint256)
```
Gets the time remaining until the governable parameter update can be committed.
#### Parameters
| Name | Type | Description |
| --------------- | ------- | ------------------------------------------------- |
| changeTimestamp | uint256 | Timestamp indicating the beginning of the change. |
#### Return Values
| Name | Type | Description |
| ---- | ------- | -------------------------- |
| \[0] | uint256 | Remaining time in seconds. |
# Wallets
## Wallets
### Wallet
```solidity
struct Wallet {
bytes32 membersIdsHash;
bytes32 publicKeyX;
bytes32 publicKeyY;
}
```
### Data
```solidity
struct Data {
mapping(bytes32 => struct Wallets.Wallet) registry;
uint256[49] __gap;
}
```
### validatePublicKey
```solidity
function validatePublicKey(struct Wallets.Data self, bytes publicKey) internal view
```
Performs preliminary validation of a new group public key. The group public key must be unique and have 64 bytes in length. If the validation fails, the function reverts. This function must be called first for a public key of a wallet added with `addWallet` function.
#### Parameters
| Name | Type | Description |
| --------- | ------------------- | ---------------------------------------- |
| self | struct Wallets.Data | |
| publicKey | bytes | Uncompressed public key of a new wallet. |
### addWallet
```solidity
function addWallet(struct Wallets.Data self, bytes32 membersIdsHash, bytes publicKey) internal returns (bytes32 walletID, bytes32 publicKeyX, bytes32 publicKeyY)
```
Registers a new wallet. This function does not validate parameters. The code calling this function must call `validatePublicKey` first.
Uses a public key hash as a unique identifier of a wallet.
#### Parameters
| Name | Type | Description |
| -------------- | ------------------- | ------------------------------------------------- |
| self | struct Wallets.Data | |
| membersIdsHash | bytes32 | Keccak256 hash of group members identifiers array |
| publicKey | bytes | Uncompressed public key |
#### Return Values
| Name | Type | Description |
| ---------- | ------- | ---------------------------------- |
| walletID | bytes32 | Wallet's ID |
| publicKeyX | bytes32 | Wallet's public key's X coordinate |
| publicKeyY | bytes32 | Wallet's public key's Y coordinate |
### deleteWallet
```solidity
function deleteWallet(struct Wallets.Data self, bytes32 walletID) internal
```
Deletes wallet with the given ID from the registry. Reverts if wallet with the given ID has not been registered or if it has already been closed.
### isWalletRegistered
```solidity
function isWalletRegistered(struct Wallets.Data self, bytes32 walletID) internal view returns (bool)
```
Checks if a wallet with the given ID is registered.
#### Parameters
| Name | Type | Description |
| -------- | ------------------- | ----------- |
| self | struct Wallets.Data | |
| walletID | bytes32 | Wallet's ID |
#### Return Values
| Name | Type | Description |
| ---- | ---- | ----------------------------------------------- |
| \[0] | bool | True if a wallet is registered, false otherwise |
### getWalletMembersIdsHash
```solidity
function getWalletMembersIdsHash(struct Wallets.Data self, bytes32 walletID) internal view returns (bytes32)
```
Returns Keccak256 hash of the wallet signing group members identifiers array. Group members do not include operators selected by the sortition pool that misbehaved during DKG. Reverts if wallet with the given ID is not registered.
#### Parameters
| Name | Type | Description |
| -------- | ------------------- | ---------------- |
| self | struct Wallets.Data | |
| walletID | bytes32 | ID of the wallet |
#### Return Values
| Name | Type | Description |
| ---- | ------- | --------------------------------- |
| \[0] | bytes32 | Wallet signing group members hash |
### getWalletPublicKeyCoordinates
```solidity
function getWalletPublicKeyCoordinates(struct Wallets.Data self, bytes32 walletID) internal view returns (bytes32 x, bytes32 y)
```
Gets public key of a wallet with the given wallet ID. The public key is returned as X and Y coordinates. Reverts if wallet with the given ID is not registered.
#### Parameters
| Name | Type | Description |
| -------- | ------------------- | ---------------- |
| self | struct Wallets.Data | |
| walletID | bytes32 | ID of the wallet |
#### Return Values
| Name | Type | Description |
| ---- | ------- | ----------------------- |
| x | bytes32 | Public key X coordinate |
| y | bytes32 | Public key Y coordinate |
### getWalletPublicKey
```solidity
function getWalletPublicKey(struct Wallets.Data self, bytes32 walletID) internal view returns (bytes)
```
Gets public key of a wallet with the given wallet ID. The public key is returned in an uncompressed format as a 64-byte concatenation of X and Y coordinates. Reverts if wallet with the given ID is not registered.
#### Parameters
| Name | Type | Description |
| -------- | ------------------- | ---------------- |
| self | struct Wallets.Data | |
| walletID | bytes32 | ID of the wallet |
#### Return Values
| Name | Type | Description |
| ---- | ----- | ------------------------------------- |
| \[0] | bytes | Uncompressed public key of the wallet |
# Mainnet
## Threshold Contracts (Ethereum L1)
Delivered in `@threshold-network/solidity-contracts@1.2.1` package.
<table><thead><tr><th width="249.54782383508018">Contract</th><th>Address</th></tr></thead><tbody><tr><td>T Token</td><td><a href="https://etherscan.io/address/0xCdF7028ceAB81fA0C6971208e83fa7872994beE5">0xCdF7028ceAB81fA0C6971208e83fa7872994beE5</a></td></tr><tr><td>Governor Bravo Timelock Controller</td><td><a href="https://etherscan.io/address/0x87F005317692D05BAA4193AB0c961c69e175f45f">0x87F005317692D05BAA4193AB0c961c69e175f45f</a></td></tr></tbody></table>
## tBTC Application Contracts (Ethereum L1)
Delivered in `@keep-network/random-beacon@2.0.0`, `@keep-network/ecdsa@2.0.0` and `@keep-network/tbtc-v2@1.6.0` packages.
| Contract | Address |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Bridge | [0x5e4861a80B55f035D899f66772117F00FA0E8e7B](https://etherscan.io/address/0x5e4861a80B55f035D899f66772117F00FA0E8e7B) |
| RebateStaking | [0x0184739C32edc3471D3e4860c8E39a5f3Ff85A45](https://etherscan.io/address/0x0184739C32edc3471D3e4860c8E39a5f3Ff85A45) |
| Timelock Controller | [0x92f2d8b72a7F6a551Be60b9aa4194248E9B4913D](https://etherscan.io/address/0x92f2d8b72a7F6a551Be60b9aa4194248E9B4913D#code) |
| RandomBeacon | [0x5499f54b4A1CB4816eefCf78962040461be3D80b](https://etherscan.io/address/0x5499f54b4A1CB4816eefCf78962040461be3D80b) |
| TBTC | [0x18084fbA666a33d37592fA2633fD49a74DD93a88](https://etherscan.io/address/0x18084fbA666a33d37592fA2633fD49a74DD93a88) |
| TBTCVault | [0x9C070027cdC9dc8F82416B2e5314E11DFb4FE3CD](https://etherscan.io/address/0x9C070027cdC9dc8F82416B2e5314E11DFb4FE3CD) |
| VendingMachineV3 | [0x7570a2350183b4BdF7CA74faD3Fc19048E6437e6](https://etherscan.io/address/0x7570a2350183b4BdF7CA74faD3Fc19048E6437e6) |
| WalletRegistry | [0x46d52E41C2F300BC82217Ce22b920c34995204eb](https://etherscan.io/address/0x46d52E41C2F300BC82217Ce22b920c34995204eb) |
| WalletProposalValidator | [0x30019D85a86ABD3cDA1167F4C052690c32FBDEc2](https://etherscan.io/address/0x30019D85a86ABD3cDA1167F4C052690c32FBDEc2) |
| RedemptionWatchtower | [0xB8dF0A949aC45ff8f401553A1dcb742Feb38E6D3](https://etherscan.io/address/0xB8dF0A949aC45ff8f401553A1dcb742Feb38E6D3) |
| CoveragePool | [0x7D7B622C07f216d99eFc3EfB9Cf71872F46D811A](https://etherscan.io/address/0x7D7B622C07f216d99eFc3EfB9Cf71872F46D811A) |
| Relayer Bot | [0x45332eee9b495b1dda896fd53112eaacc10b2c19](https://etherscan.io/address/0x45332eee9b495b1dda896fd53112eaacc10b2c19) |
| L1BitcoinDepositor (Arbitrum) | [0x75A6e4A7C8fAa162192FAD6C1F7A6d48992c619A](https://etherscan.io/address/0x75A6e4A7C8fAa162192FAD6C1F7A6d48992c619A) |
| L1BitcoinDepositor (Base) | [0x186D048097c7406C64EfB0537886E3CaE100a1fe](https://etherscan.io/address/0x186D048097c7406C64EfB0537886E3CaE100a1fe) |
| L1BTCRedeemerProxy | [0x5D4d83aaB53B7E7cA915AEB2d4d3f4e03823DbDe](https://etherscan.io/address/0x5D4d83aaB53B7E7cA915AEB2d4d3f4e03823DbDe) |
| LockReleaseTokenPoolUpgradeable | [0x03E342731c08FDDc34cFb43E91cB3a7e424ee0F6](https://etherscan.io/address/0x03E342731c08FDDc34cFb43E91cB3a7e424ee0F6#readProxyContract) |
| CCIP Router (BOB) | [0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D](mailto:undefined) |
## L2/Other tBTC Application Contracts
### Arbitrum One (chain ID: 42161)
| Contract | Address |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------- |
| ArbitrumTBTC | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://arbiscan.io/address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) |
| ArbitrumWormholeGateway | [0x1293a54e160D1cd7075487898d65266081A15458](https://arbiscan.io/address/0x1293a54e160D1cd7075487898d65266081A15458) |
| L2BitcoinDepositor | [0x1C8d7b744b474c080faADd5BF9AD965Be4258F9e](https://arbiscan.io/address/0x1C8d7b744b474c080faADd5BF9AD965Be4258F9e) |
| L2BTCRedeemerProxy | [0xd7Cd996a47b3293d4FEc2dBcF49692370334d9b7](https://arbiscan.io/address/0xd7Cd996a47b3293d4FEc2dBcF49692370334d9b7) |
### Base (chain ID: 8453)
| Contract | Address |
| ------------------- | --------------------------------------------------------------------------------------------------------------------- |
| BaseTBTC | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://basescan.org/token/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b) |
| BaseWormholeGateway | [0x09959798B95d00a3183d20FaC298E4594E599eab](https://basescan.org/address/0x09959798b95d00a3183d20fac298e4594e599eab) |
| L2BitcoinDepositor | [0xa2A81d9445b4F898b028c96D164bcd6c8C8C512E](https://basescan.org/address/0xa2A81d9445b4F898b028c96D164bcd6c8C8C512E) |
| L2BTCRedeemerProxy | [0xe931F1Ac6B00400E1dAD153E184afeE164d2D88B](https://basescan.org/address/0xe931F1Ac6B00400E1dAD153E184afeE164d2D88B) |
### Optimism (chain ID: 10)
| Contract | Address |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| OptimismTBTC | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://optimistic.etherscan.io/address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) |
| OptimismWormholeGateway | [0x1293a54e160D1cd7075487898d65266081A15458](https://optimistic.etherscan.io/address/0x1293a54e160D1cd7075487898d65266081A15458) |
### Polygon PoS (chain ID: 137)
<table><thead><tr><th width="373">Contract</th><th>Address</th></tr></thead><tbody><tr><td>PolygonTBTC</td><td><a href="https://polygonscan.com/address/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b">0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b</a></td></tr><tr><td>PolygonWormholeGateway</td><td><a href="https://polygonscan.com/address/0x09959798B95d00a3183d20FaC298E4594E599eab">0x09959798B95d00a3183d20FaC298E4594E599eab</a></td></tr></tbody></table>
### Solana
<table><thead><tr><th width="373">Contract</th><th>Address</th></tr></thead><tbody><tr><td>SolanaTBTC (Token)</td><td><a href="https://solscan.io/token/6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C프로젝트로 돌아가기