# GP 8: Extend pool limits for KYC'd users

{% hint style="success" %}
Proposal was confirmed and executed: \
<https://polygonscan.com/tx/0xd1f394e880ac56f1929f93d49b98b7b318b80544040ffe3009191f46ce438fb3>
{% endhint %}

## Objective

Allow KYC'd users to deposit additional funds into zkBOB. An additional tier is added to increase limits to 20,000 BOB per day for users who hold a BAB NFT on Binance Chain.

### BAB NFTs

In 2022, Binance introduced soulbound tokens known as [Binance Account Bound (BAB) tokens](https://www.binance.com/en/support/faq/frequently-asked-questions-on-binance-account-bound-bab-token-adbd05fe149344d59a348f82d5bf359d). These tokens serve as identity credentials for Binance users who have completed KYC verification. These credentials can be extended to other chains using the [KnowYourCat](https://docs.knowyourcat.id/) protocol.

### KnowYourCat Protocol

Information about BAB token ownership can be transferred from BNB Smart Chain to additional chains using the [KnowYourCat](https://docs.knowyourcat.id/) protocol. This protocol creates a cryptographic proof that a user possesses the token on BSC and lets users provide this proof to other supported chains. A user's BAB token status can be obtained from an NFT-compatible contract. The official KnowYourCat contract on Polygon is at [0xE3c6Fd631043A0a1927c4681C736b778aA8F8feF](https://polygonscan.com/address/0xE3c6Fd631043A0a1927c4681C736b778aA8F8feF), as referenced in the [KnowYourCat documentation](https://docs.knowyourcat.id/for-developers/knowyourcat-protocol/contract-addresses).

## Mechanism

To extend limits for BAB token holders, this proposal creates a new tier limit in the zkBob pool and configures a KYC Provider Manager which checks the status of BAB token ownership on the KnowYourCat NFT contract.

The KYC Provider Manager manager is deployed at [0xb8580ea6312dd2311d72bc932b0354a07d974138](https://polygonscan.com/address/0xb8580ea6312dd2311d72bc932b0354a07d974138).&#x20;

This manager contract introduces the method `getIfKYCpassedAndTier` to access the limit tier for a user owning a BAB token. The manager provides `254` as the tier id for users who hold a BAB NFT.

The manager is configured so that each time a user requests a deposit, the account is checked to see if it has its own tier limit. If it does not, the manager is asked to return the tier and default limits apply.

## Proposal breakdown

The corresponding transaction in the governance safe is[ transaction #28](https://app.safe.global/matic:0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8/transactions/tx?id=multisig_0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8_0x313f81393765ffe7f9353306248891380ad4c14f95a270ef05dbbe520c48acab).

The transaction contains 2 actions:

### Action 1

`setLimits` (the selector is `0xe8fd02e4`) is called from the zkBobPool contract ([0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB](https://polygonscan.com/address/0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB)). The method is called to configure limits for tier `254` which is associated with BAB token owners. The limits for this tier differ from tier `0` where `dailyUserDepositCap` and `depositCap` are both 10,000 BOB.

```
tvlCap: 1'000'000 BOB
dailyDepositCap: 300'000 BOB
dailyWithdrawalCap: 100'000 BOB
dailyUserDepositCap: 20'000 BOB
depositCap: 20'000 BOB
dailyUserDirectDepositCap: 10'000 BOB
directDepositCap: 1'000 BOB
```

The `zkBobPool` contract is upgraded to reflect these changes. ([0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB](https://polygonscan.com/address/0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB)).&#x20;

The new implementation [0x0eDcE5CAf830c6b845503001D8378b0d4F3b89bB](https://polygonscan.com/address/0x0eDcE5CAf830c6b845503001D8378b0d4F3b89bB) is applied through the `upgradeTo` call (the selector is `0x3659cfe6`).

### Action 2

`setKycProvidersManager` (the selector 790c3a33) is called from the zkBobPool contract ([0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB](https://polygonscan.com/address/0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB)).&#x20;

This method configures the contract [0xb8580ea6312dd2311d72bc932b0354a07d974138](https://polygonscan.com/address/0xb8580ea6312dd2311d72bc932b0354a07d974138) as the KYC Provider Manager.

## Verification

Proposal execution can be verified in the [zkBobPool contract](https://polygonscan.com/address/0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB#readProxyContract):

1. The method `kycProvidersManager` must return `0xb8580ea6312dd2311d72bc932b0354a07d974138`
2. The method `getLimitsFor` for an account synchronised with BAB token ownership information through [the KnowYourCat protocol](https://knowyourcat.id/) should display new limits. For example, one could use the account `0x813399e5b08Bb50b038AA7dF6347b6AF2D161828`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bob-docs.zkbob.com/bob-dao/governance/protocol-governance/gp-8-extend-pool-limits-for-kycd-users.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
