# Design Principles

The following design principles serve as general practice to address both functional and non-functional requirements of NUTS Platform.

## Financial Instrument-Centered

The goal of NUTS Platform is to serve FSPs and help them build marketplace that serves makers and takers. Each marketplace is built on top of one financial instrument, so NUTS Platform should be centered on financial instrument.

* Each financial instrument should form an isolated management domain.
  * All data and assets of one financial instrument are kept and managed in its domain;
  * No cross-domain operation(if any) should be allowed without going through NUTS Platform;
  * Domain upgrade are currently done by NUTS Platform admin. This might change in the future by shifting each domain into a DAO.
* The NUTS Platform, minus the isolated domain for individual financial instrument,  should be thin and flexible.
  * NUTS Platform should not hold any financial instrument assets;
  * NUTS Platform should hold minimum data about financial instrument;
  * NUTS Platform should be a registry for financial instrument and its issuances;
  * NUTS Platform should manage NUTS token.

## Isolation

Between financial instruments,

* All financial instruments are isolated;
* Cross-instrument operation, if any, should go though NUTS platform.

Inside financial instruments,

* The data of individual issuance should be isolated;
* The asset of individual issuance should be isolated;
* Cross-issuance operation, such as data or asset migration, are allowed within one financial instrument if it's supported by the instrument.

## Reliability

All data and asset mutation in NUTS Platform should be either of the following cases:

* Triggered by FSPs/makers/takers through NUTS Platform API;
* Triggered by Oracle through NUTS Platform API.

In a word, no mutation is allowed without going through NUTS Platform API.

## Forward Compatible

NUTS Platform should be upgradeable in order to both fix bugs and address additional feature requirements.

* Existing financial instrument management domain should be upgradeable;
* NUTS Platform, minus the instrument management domain, should also be upgradeable;
* NUTS Platform should be able to introduce new implementation of financial instrument management domain.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nuts.finance/master/architecture-overview/design-principles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
