TypeScript Python Go Rust Java Solidity

Java SDK

foundation.l3rs1:l3rs1-sdk - Maven Central - Java 21+
mvn dependency:get -Dartifact=foundation.l3rs1:l3rs1-sdk:1.0.0
Pure JDK - no external runtime dependencies. Java 21 records.

Maven Dependency

<dependency>
  <groupId>foundation.l3rs1</groupId>
  <artifactId>l3rs1-sdk</artifactId>
  <version>1.0.0</version>
</dependency>

Quick Example

import foundation.l3rs1.crypto.L3rsCrypto;
import foundation.l3rs1.modules.L3rsModules;
import foundation.l3rs1.modules.L3rsModules.*;

String id = L3rsCrypto.constructAssetId(
    "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    1740355200L, "0000000000000001");

StateTransitionResult r = L3rsModules.applyStateTransition(AssetState.ISSUED, "ACTIVATION");
// r.success() == true, r.newState() == ACTIVE

API Reference

Function/Method§Description
constructAssetId / ConstructAssetID2.2H(pk_issuer ∥ ts ∥ nonce)
constructCID / ConstructCID8.3CID = H(I ∥ SH ∥ CH ∥ GH ∥ t)
constructTxId / ConstructTxID9.6TxID = H(sender ∥ receiver ∥ amount ∥ nonce ∥ ts)
canonicalize13.11Sorted-key JSON, no whitespace
applyStateTransition2.5Deterministic state machine, Invariant I1
evaluateCompliance4.3C: E to {0,1}, O(n), Invariant I2
validateFeeModule6.12Allocations must sum to 10000 bp
identityStatus3.6VALID / EXPIRED / REVOKED
isReplay9.6Replay protection via TxID/nonce

State Transition Matrix

FromTriggerTo
ISSUEDACTIVATIONACTIVE
ACTIVEBREACHRESTRICTED
ACTIVEFREEZEFROZEN
RESTRICTEDCLEAREDACTIVE
FROZENRELEASEACTIVE
ACTIVEREDEMPTIONREDEEMED
REDEEMEDFINALIZATIONBURNED (terminal)
ACTIVESUSPENSIONSUSPENDED
SUSPENDEDREINSTATEMENTACTIVE