GP 8: Extend pool limits for KYC'd users
Proposal was confirmed and executed: https://polygonscan.com/tx/0xd1f394e880ac56f1929f93d49b98b7b318b80544040ffe3009191f46ce438fb3
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. 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 protocol.
KnowYourCat Protocol
Information about BAB token ownership can be transferred from BNB Smart Chain to additional chains using the KnowYourCat 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, as referenced in the KnowYourCat documentation.
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.
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.
The transaction contains 2 actions:
Action 1
setLimits
(the selector is 0xe8fd02e4
) is called from the zkBobPool contract (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.
The zkBobPool
contract is upgraded to reflect these changes. (0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB).
The new implementation 0x0eDcE5CAf830c6b845503001D8378b0d4F3b89bB is applied through the upgradeTo
call (the selector is 0x3659cfe6
).
Action 2
setKycProvidersManager
(the selector 790c3a33) is called from the zkBobPool contract (0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB).
This method configures the contract 0xb8580ea6312dd2311d72bc932b0354a07d974138 as the KYC Provider Manager.
Verification
Proposal execution can be verified in the zkBobPool contract:
The method
kycProvidersManager
must return0xb8580ea6312dd2311d72bc932b0354a07d974138
The method
getLimitsFor
for an account synchronised with BAB token ownership information through the KnowYourCat protocol should display new limits. For example, one could use the account0x813399e5b08Bb50b038AA7dF6347b6AF2D161828
.
Last updated