mirror of
https://github.com/luxfi/liquid.git
synced 2026-10-30 16:21:07 +00:00
Replace the ad-hoc whitelist/KYC-level table with pure delegation to the
T-REX IIdentityRegistry and ONCHAINID claims:
canRedeem(account, vault) :=
registry.isVerified(account)
&& !blockedCountry[registry.investorCountry(account)]
&& every requiredTopic[i] resolves to a non-empty claim set
on registry.identity(account)
Per-vault config:
setVaultRegistry(vault, IIdentityRegistry)
setRequiredTopics(vault, uint256[] topicIds)
setCountryBlock(vault, uint16 countryCode, bool)
No local KYC state, no shadow whitelists. Deletes the old
approve/whitelisted/kycLevel/requiredLevel surface entirely.
Adds:
lib/erc-3643 (luxfi/erc-3643)
lib/onchain-id (luxfi/onchain-id)
remappings:
@luxfi/oz/ → lib/openzeppelin-contracts/contracts/
@luxfi/oz-upgradeable/ → lib/openzeppelin-contracts-upgradeable/contracts/
@luxfi/erc-3643/ → lib/erc-3643/
@luxfi/onchain-id/ → lib/onchain-id/
@onchain-id/solidity/ → lib/onchain-id/ (transitive imports inside T-REX)
Tests rewritten (7/7 pass) using mock IIdentityRegistry + IIdentity to
exercise: unconfigured-vault block, verified+no-topics pass, unverified
block, country block, required-topic present pass, required-topic missing
block, owner-only configuration.
DeployLocal.s.sol no longer calls gate.approve() — gates start unconfigured
and need a real Identity Registry wired per vault before redemptions work.
12 lines
525 B
Plaintext
12 lines
525 B
Plaintext
ds-test/=../lib/ds-test/src/
|
|
forge-std/=lib/forge-std/src/
|
|
@permit2=lib/permit2/src/
|
|
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
|
|
openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
|
|
@chainlink/contracts/=lib/chainlink-brownie-contracts/contracts/
|
|
@luxfi/oz/=lib/openzeppelin-contracts/contracts/
|
|
@luxfi/oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
|
|
@luxfi/erc-3643/=lib/erc-3643/
|
|
@luxfi/onchain-id/=lib/onchain-id/
|
|
@onchain-id/solidity/=lib/onchain-id/
|