Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

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

ServiceEndpointCheck
core-jitPOST /offers/createSSI.isVerified(identity) === true
core-lendingPOST /loan/requestCreditScoring.maxLtvBps > 0 (UNRATED blocked)
core-lendingPOST /collateral/openCreditScoring.maxLtvBps > 0
core-rwaPOST /rwa/createSSI.userToIdentity(owner) must exist
core-rwaRWA compliance modulesCountryRestrictModule 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.

ContractSSI Identity
ShikaLending Diamond0xFc38926563CD4421377bfd3C1616BB26D97465E6
JITRebalancer0x7463BE655FfeE985D71B7799Df2F012fE11B027D
RouterHook0xD2AE27D69AC765139B89227D876D6B85612444ed
P2POfferBook0xc7a994aa311FA8AcCdC6248ce13d6cDDA91bD5Bb