---
title: "System Layer"
path: "/contents/tech/core-protocols/system-layer"
version: "1.1.1"
author: "Hydrate"
createdAt: "2026-05-03T09:53:55.614Z"
updatedAt: "2026-08-02T07:12:09.110Z"
---

# System Layer

<Infobox>
| Engine – System |
| Engine Layer |
| `radix-engine, radix-engine-interface` |
| [radixdlt-scrypto](https://github.com/radixdlt/radixdlt-scrypto) |
</Infobox>

## Introduction

The system layer implements the engine's high-level abstractions – objects, blueprints, packages, modules (Metadata, Royalty, Role Assignment), and the resource model – on top of the lower-level kernel. It is the layer at which application code interacts with the engine and where [access rules](/contents/tech/core-concepts/access-rules-and-auth-zones) are enforced. Type definitions for this layer live in `radix-engine-interface`.

## What the System Layer Provides

The system layer’s surface to running blueprint code is the set of API traits in [`radix-engine-interface/src/api`](https://github.com/radixdlt/radixdlt-scrypto/tree/main/radix-engine-interface/src/api), implemented by [`radix-engine/src/system`](https://github.com/radixdlt/radixdlt-scrypto/tree/main/radix-engine/src/system). They divide along what a call is addressing. `actor_api` covers the calling actor itself; `object_api` creates, invokes and drops objects; `field_api` reads and writes an object’s fields; `key_value_store_api` and `key_value_entry_api` handle owned key-value state, with `actor_index_api` and `actor_sorted_index_api` for the indexed and sorted collections the [consensus manager](/contents/tech/core-concepts/consensus-manager) and pools rely on; `blueprint_api` exposes package and blueprint type information; and `costing_api`, `transaction_runtime_api` and `execution_trace_api` reach the metering, transaction-runtime and tracing facilities. A blueprint never touches the [kernel](/contents/tech/core-protocols/kernel-layer) directly – every one of these calls is mediated here, which is where [access rules](/contents/tech/core-concepts/access-rules-and-auth-zones) are checked.

## Object Modules

Three [object modules](https://github.com/radixdlt/radixdlt-scrypto/tree/main/radix-engine-interface/src/object_modules) can be attached to any object, and they are defined at this layer rather than being blueprint code: [Metadata](/contents/tech/core-concepts/metadata-module), which carries the typed key-value data wallets and explorers read; Royalty, which attaches per-method fees payable to a component or package owner; and [Role Assignment](/contents/tech/core-concepts/role-assignment-module), which binds named roles to the [badges](/contents/tech/core-concepts/badges) that satisfy them. Attaching behaviour as modules rather than inheriting it is what lets every object – native or user-defined – carry the same metadata, royalty and authorisation semantics.

## Native Blueprints

The engine’s built-in blueprints are declared at the system layer in [`radix-engine-interface/src/blueprints`](https://github.com/radixdlt/radixdlt-scrypto/tree/main/radix-engine-interface/src/blueprints) and executed natively rather than as WebAssembly. They include the resource and [component](/contents/tech/core-concepts/components) primitives; Account and Identity; Package; [Pool](/contents/tech/core-concepts/radix-pools); [ConsensusManager](/contents/tech/core-concepts/consensus-manager); [AccessController](/contents/tech/core-concepts/access-controller); [Locker](/contents/tech/core-concepts/locker-blueprint); and the [TransactionProcessor](/contents/tech/core-concepts/transaction-processor) and [TransactionTracker](/contents/tech/core-concepts/transaction-tracker) that turn a submitted manifest into engine calls and record what has already been seen. Because they are ordinary blueprints from the caller’s point of view, [Scrypto](/contents/tech/core-protocols/scrypto-programming-language) code composes with them exactly as it composes with user-authored ones.

## External Links

- [radix-engine-interface](https://github.com/radixdlt/radixdlt-scrypto/tree/main/radix-engine-interface)

- [Radix Engine docs](https://docs.radixdlt.com/docs/engine-tech-docs)