SSI & Claims
Who it's for: Service developers building any Shika product that needs to confirm a user is verified before allowing them to borrow, trade, or hold assets. Why it matters: A single on-chain credential check replaces every per-product identity gate — compliance is automatic and consistent across the entire protocol.
Reading Identity On-Chain
Any service can verify a user's KYC status directly from SSIComposable:
// Get a user's on-chain identity contract address
address identity = ssi.userToIdentity(userAddress);
// Check if the identity holds a valid KYC claim (topic 666)
bool verified = ssi.isVerified(identity);SSI ABI Fragments Used Across Services
// Shared across core-jit, core-lending, core-rwa
const SSI_ABI = [
{
name: 'userToIdentity',
type: 'function',
inputs: [{ name: 'user', type: 'address' }],
outputs: [{ type: 'address' }],
stateMutability: 'view',
},
{
name: 'isVerified',
type: 'function',
inputs: [{ name: 'identity', type: 'address' }],
outputs: [{ type: 'bool' }],
stateMutability: 'view',
},
]Where SSI Is Enforced
| Service | Endpoint | Check |
|---|---|---|
| core-jit | POST /offers/create | SSI.isVerified(identity) === true |
| core-lending | POST /loan/request | CreditScoring.maxLtvBps > 0 (UNRATED blocked) |
| core-lending | POST /collateral/open | CreditScoring.maxLtvBps > 0 |
| core-rwa | POST /rwa/create | SSI.userToIdentity(owner) must exist |
| core-rwa | RWA compliance modules | CountryRestrictModule reads from SSI |
Protocol Contract Identities
Smart contracts themselves also have SSI identities — this allows them to hold compliant RWA tokens and be whitelisted as agents.
| Contract | SSI Identity |
|---|---|
| ShikaLending Diamond | 0xFc38926563CD4421377bfd3C1616BB26D97465E6 |
| JITRebalancer | 0x7463BE655FfeE985D71B7799Df2F012fE11B027D |
| RouterHook | 0xD2AE27D69AC765139B89227D876D6B85612444ed |
| P2POfferBook | 0xc7a994aa311FA8AcCdC6248ce13d6cDDA91bD5Bb |