Skip to main content

Limitations and honest status

Kurabase is experimental developer infrastructure. Use its local stack and tests to evaluate the design, not as a claim of production readiness.

Not provided​

  • PostgreSQL wire compatibility or complete PostgreSQL behavior.
  • Full SQL:2023 conformance.
  • Production high availability, backups, or operational guarantees.
  • Realtime subscriptions or object storage.
  • A hosted, general-purpose authentication provider.
  • A Supabase-compatible auth.* schema or user-management API. The narrow kura_auth_users / kura_auth_identities catalog is pseudonymous, chain-public, and not an authentication authority.
  • Cross-chain access.
  • Privacy for public-chain records.
  • A general-purpose smart-contract audit.
  • A live bundled Privy/ZeroDev tenant, paymaster policy, KMS/HSM session-key adapter, or public-network EIP-7702/4337 acceptance. The repository proves the account-owned, gateway-attested calldata path against Anvil; operators must complete those provider and network checks before production use.
  • In this release, the GatewayPlan ABI includes its originating session digest so individual session revocation cancels a pending plan. Deploy the gateway and matching contract artifact together; older instance contracts are intentionally incompatible with this AA path.

SQL functions​

SQL-language RPC supports scalar, table-returning, and atomic mutating functions. Procedural functions and unsupported SQL return an explicit error.

V2 additionally ships a bounded EXECUTION ON CHAIN profile for an address-keyed uint256 relation: a direct point lookup or a caller-debit / address-parameter-credit mutation. It also supports the explicitly bounded kura_erc20 six-function package: zero-address anchored supply, address balances, composite (owner, spender) allowances, transfer, approve, and atomic transferFrom, with ERC-165 capability installation and standard Transfer / Approval logs. These functions are directly callable at the instance ABI and never fall back to gateway RPC.

Arbitrary mutation shapes, loops, scans, joins, aggregates, dynamic ABI types, mint/burn or fee logic, external calls, and cross-instance on-chain writes are not implemented; they reject explicitly. ENS remains a read-only external SQL schema feature for application reads, not a cross-instance EVM-call mechanism. The distinct same-chain management DML route requires target-side privileged gateway delegation. Address-bound external foreign keys are available for integrity checks and logical-NULL reads, but do not add cascading behaviour.

Filter boundaries​

JSONB containment and contained-by filters are supported. One-dimensional integer[], text[], boolean[], and uuid[] columns support the overlaps filter on the native REST path. Ranges, multidimensional or bounded arrays, array containment/equality/order filters, and JSONB overlap remain unsupported. Relational or administrative DataFusion SELECT expressions over JSON or array-bearing tables remain intentionally limited.

Canonical scalar boundaries​

date, time(p), timestamp(p), timestamptz(p), and bytea are admitted cell types. Temporal precision p is zero through six; values are validated before a chain write, timestamp is stored without a zone, and timestamptz is normalized to UTC RFC3339. bytea accepts only PostgreSQL \\x hexadecimal input and is stored as lowercase hexadecimal. The same canonical codec applies to RLS/CHECK predicates, SQL BETWEEN / IN comparisons, and string-literal casts such as '2024-03-01T00:30:00+01:00'::timestamptz.

varchar(n) enforces a Unicode character-count limit. character(n) / CHAR(n) also uses that limit, then stores a trailing-space-padded canonical value. A literal compared with a CHAR(n) column is normalized through the same codec, so WHERE code = 'A' matches stored CHAR(3) value A··.

User-defined enums are catalog types: CREATE TYPE post_state AS ENUM ('draft', 'published') records an ordered, bounded label list in the same chain-replayed catalog as tables and functions. Writes, SQL-function arguments/returns, equality/inequality, IN, and a string-literal enum cast validate labels before execution. ALTER TYPE, enum ordering/range predicates (>, <, BETWEEN), and enum ORDER BY currently return UnsupportedFeature rather than accidentally applying string ordering.

Decimal boundary​

numeric(p,s) and decimal(p,s) are exact fixed-scale values when p is 1 through 70 and s is between zero and p. They are returned as strings so a browser never loses precision, including in normal queries such as amount > 1.00. Unqualified numeric, precision above 70, and uint256 arithmetic/range filtering are not implemented.

Production checklist​

Before treating an EVM deployment as production, separately assess custody, key management, privacy, transaction fees, indexer integrity, gateway availability, rate limits, monitoring, incident response, and an independent security review.