Fractal Logo

Tokenization infrastructure for African real assets. Issuers, investors, and operators on one shared operational layer.

Platform

HomeOfferingsDocumentationAPI ReferenceIssuer PortalInvestor Portal

Legal

Privacy PolicyTerms of ServiceCookie Policy

© 2026 Fractal. All rights reserved.

Investments involve risk. Past performance is not indicative of future results. Not financial advice.

Fractal Logo
DocsSign upLogin
DocsSign upLogin

Docs Navigation

Current: Blockchain & Contracts

Open all sections

Overview

IntroductionHow Fractal WorksPlatform LifecycleKey Concepts

Getting Started

For IssuersFor InvestorsFor OperatorsFor ProfessionalsFor Admins

Role Guides

Issuer GuideInvestor GuideOperator GuideProfessional GuideAdmin Guide

Compliance & Trust

Compliance ModelBlockchain & Contracts

Developer Reference

API OverviewAuthenticationEndpointsWebhooksSmart ContractsError Codes

More

GlossaryFAQ

Documentation

Overview

IntroductionHow Fractal WorksPlatform LifecycleKey Concepts

Getting Started

For IssuersFor InvestorsFor OperatorsFor ProfessionalsFor Admins

Role Guides

Issuer GuideInvestor GuideOperator GuideProfessional GuideAdmin Guide

Compliance & Trust

Compliance ModelBlockchain & Contracts

Developer Reference

API OverviewAuthenticationEndpointsWebhooksSmart ContractsError Codes

More

GlossaryFAQ

Home / Documentation / Blockchain & Contracts

Blockchain & Smart Contract Architecture

This page explains how Fractal's on-chain contracts are interconnected, how state moves across modules, and how platform actions map to contract calls.

This reference is based on the current contract suite in packages/contracts. It documents current behavior, including optional modules that are deployed but not automatically wired into token transfer execution.

System Interconnection Map

Identity Layer
  IdentityRegistryStorage <-> IdentityRegistry <-> ClaimIssuer <-> Identity (per investor)

Operational Authority Layer
  AgentRegistry (roles + any-role agent flag)

Tokenization Layer
  TokenFactory -> FractalSecurityToken7518 (one per offering)

Distribution Audit Layer
  FractalYieldDistributor (declaration record)

Optional Compliance Modules
  TransferAgent (daily limits, cap table)
  Rule144 (holding periods, affiliate limits)

Contract Dependency Matrix

ContractPrimary RoleReadsWritesPlatform Interconnection
IdentityPer-investor identity contract storing KYC claimsClaim IDs by topicClaims and claim-issuer authorizationsWritten by ClaimIssuer; referenced by IdentityRegistry
ClaimIssuerVerifies backend signatures and issues/revokes KYC claimsclaimSigningKey, signature replay mapKYC claim status + expiryCalled by platform admin backend
IdentityRegistry + StorageWallet-to-identity registry and KYC verification lookupStored identity mapping + ClaimIssuer verificationIdentity mappings (via storage agent access)Operational source of wallet identity status
AgentRegistryPermission root for operational agent walletsRole state and any-role flagAgent grants/revocationsChecked by token via `isAgent`
TokenFactoryDeploys one token contract per offeringAgentRegistry and USDT addressOffering-to-token deployment recordsUsed by platform deploy pipeline
FractalSecurityToken7518Core ERC-1155-based security token with compliance controlsWhitelist, tier, lock, freeze, cap, and partition stateBalances, locks, freeze flags, distribution claim statePrimary contract touched during mint/transfer/payout
FractalYieldDistributorAudit-only distribution declaration registryDistribution recordsImmutable distribution declaration entriesComplementary to token payout execution
TransferAgent (optional module)Transfer approval, daily limits, and holder registryDaily volume and approvalsCap table and transfer approval recordsStandalone today; not auto-invoked by token transfer path
Rule144 (optional module)Holding-period and affiliate volume rule enforcementAcquisition timestamps, affiliate flagsQuarterly volume + compliance configStandalone today; can be queried by compliance layer

Lifecycle Interconnection (Off-chain ↔ On-chain)

PhaseOff-chain ResponsibilityOn-chain CallsExpected Outcome
Investor identity onboardingBackend verifies identity, signs claim payload, and initiates mapping of wallet to identity contract.IdentityRegistryStorage.storeIdentity -> IdentityRegistry.registerWallet -> ClaimIssuer.issueKycClaim -> Identity.addClaimWallet can be resolved to an identity and a valid KYC claim with expiry.
Offering token deploymentOperator/admin triggers deploy with offering metadata and compliance caps.TokenFactory.deployToken -> new FractalSecurityToken7518 -> setMaxBalance/setRetailCap -> ownership transferDedicated token contract per offering with initial compliance parameters.
Allocation and issuancePlatform settles subscriptions and computes final token allocations.token.batchWhitelist -> token.batchMint -> token.batchLockTokens (optional lockup)Investor balances created on partition and lock schedules enforced.
Transfer lifecycleUI/API initiates ERC-1155 transfer from wallet.FractalSecurityToken7518._update -> _canTransfer checks -> transfer executes or reverts with reasonTransfer only succeeds when all compliance gates pass.
Distribution servicingOperator funds token contract with payout token and computes distribution rounds.token.createDistribution + token.payoutForDistribution OR token.batchPayout; optional audit declaration on FractalYieldDistributor.declareDistributionCashflow distribution execution plus immutable audit declaration trail.
Incident responseCompliance incident, lost wallet, or regulatory intervention raised.freezeAddress / forceTransfer / recoveryAddress / restrictTransfer / pauseControlled containment and recovery while preserving auditability.

Deep Dive: FractalSecurityToken7518

State Model

  • ERC-1155 partition model (default partition ID = 1).
  • Per-partition supply tracking via internal _totalSupply.
  • Array-based lock entries per account+partition with release timestamps.
  • Address-level freeze flags and partition-level transfer restriction flags.
  • Per-partition max balance and retail cap controls plus investor tier mapping.

Execution Paths

  • Mint path: batchMint (agent-only, whitelisted recipients).
  • Lock path: lockTokens / batchLockTokens.
  • Transfer path: ERC-1155 _update with compliance checks.
  • Recovery path: freeze + recoveryAddress lock-state migration.
  • Payout path: direct payout and distribution-linked pro-rata payout functions.

Transfer Compliance Execution Order

  1. Contract paused state
  2. Partition-level transfer restriction
  3. Sender and recipient freeze status
  4. Transferable (unlocked) balance sufficiency
  5. Sender and recipient whitelist status
  6. Max-balance cap for recipient (if configured)
  7. Retail-cap limit for tier-0 recipient (if configured)
  8. Voucher signature validation if compliance signer and voucher data are provided

Note on vouchers: voucher verification logic exists in _canTransfer when data is supplied. The default ERC-1155 transfer path calls _canTransfer(..., ""), so voucher-based checks are only active in flows that explicitly provide voucher payloads.

Current Wiring vs Optional Modules

Directly Wired Today

  • Token contract authorization via AgentRegistry.isAgent.
  • Token factory deployment pipeline and compliance cap initialization.
  • On-token payout mechanics and distribution claim state.
  • Identity stack (Identity + ClaimIssuer + Registry) for on-chain KYC state records.

Available but Not Auto-Enforced in Token Path

  • TransferAgent daily-volume and explicit transfer approval checks.
  • Rule144 holding-period and affiliate volume constraints.
  • Automatic coupling between token payout execution and distributor declaration.
  • Direct token call to IdentityRegistry during transfer checks (whitelist is the enforced gate today).

Audit and Reconciliation Event Trail

EventEmitted ByWhy It Matters
TokensMintedFractalSecurityToken7518Allocation/issuance reconciliation with subscription IDs
TokensLocked / TokensUnlockedFractalSecurityToken7518Lockup evidence and release monitoring
AddressFrozen / ForcedTransferFractalSecurityToken7518Compliance incident response and recovery tracking
DistributionCreated / DistributionPayoutFractalSecurityToken7518Distribution execution and recipient payout trace
DistributionDeclaredFractalYieldDistributorRegulatory-friendly audit declaration of payout rounds
AgentRoleGranted / AgentRoleRevokedAgentRegistryOperational authority changes over time
KycClaimIssued / KycClaimRevokedClaimIssuerIdentity compliance state transitions

Integration Cross-Links

API Smart Contract ReferenceAPI EndpointsCompliance Model