# Core Concepts

Event enables you to employ both *encoded* and *unencoded* [**‡**](/nchain-event/overview/configuration-symbols.md) records.

Records can be written to, read from, and verified [**†**](/nchain-event/overview/configuration-symbols.md) with the blockchain.

Records can be either **independent** or **linked** [**§**](/nchain-event/overview/configuration-symbols.md) when they are on the blockchain.&#x20;

Linked records can be navigated [¶](/nchain-event/overview/configuration-symbols.md).

These are described below. Understanding them will make using Event easier for you.

## Solution Architecture

<figure><img src="/files/qWs2sQ3RsrH55Z9QR3IL" alt="" width="375"><figcaption></figcaption></figure>

To enable your applications to use Event, you can add an interface in whatever language you use. That will enable you to write records, check their status and read them back again. See [here](/nchain-event/using-event/how-to-use-event.md) for more details.

## Records

<figure><img src="/files/DVNxhIKpF9Tyd9dfonex" alt="" width="354"><figcaption><p>The encoder model; example SHA256 encoder; example no encoder</p></figcaption></figure>

An input record is any packet of data supplied by you that you want to register on the blockchain. You can choose whether the input record is binary or text, or a private reference to data in your own system. The input record can be a single data item or a mixture of data fields. The input record can contain whatever you need to assist and support your use case.

<mark style="color:purple;">**See the logical "Model" encoder in the diagram above: You supply the input record to Event as the encoder input. Event encodes it using the encoder you specify, producing the encoder output. The encoder output is written to the blockchain inside a transaction. Real-world examples of encoders are given in the next section.**</mark>

<mark style="color:red;">**The encoder output is generally called a record in this document. See "Records" in the diagram above.**</mark>

{% hint style="info" %}
Note: Only Event blockchain records can be processed by Event.
{% endhint %}

## Encoders

{% hint style="info" %}
Please note that for Event, the process of translating records from one format to another is defined as "encoding", even though this may comprise a one-way summary of data that cannot be reversed, or secure encoding of data, as well as potential reversible transformations of data.
{% endhint %}

<mark style="color:green;">**See the "None" encoder in the diagram above: Where you do not select an encoder**</mark> [**‡**](/nchain-event/overview/configuration-symbols.md) <mark style="color:green;">**the encoder output will be same as the encoder input, and it will be this unencoded record**</mark> <mark style="color:green;">**that is written to and read from the blockchain. Unencoded records are also known as "raw data".**</mark>

<mark style="color:blue;">**See the "SHA256" encoder in the diagram above: Where you do select an encoder (for instance, SHA256), the encoder output will be the fingerprint of the unencoded input, and it will be this fingerprint that is written to and read from the blockchain.**</mark>&#x20;

A fingerprint is a few bytes which uniquely refer to the original record. It is not practical to recreate the original record from the fingerprint. Fingerprints are produced using complex mathematical transformations on the input record. These obfuscate the output record. They are so effective that inverting just 1 bit of the input record changes approximately 50% of the bits in the output record.

Several standard encoders are provided by Event. Please [contact us](/nchain-event/troubleshooting/contact-us.md) if you need alternative encoders.

### Single Source of Truth (SSoT)

<figure><img src="/files/V8tCr3IrSICdK7Wwf8oE" alt="" width="345"><figcaption><p>Obtaining the SSoT</p></figcaption></figure>

<mark style="color:green;">**For unencoded records**</mark> [**‡**](/nchain-event/overview/configuration-symbols.md)<mark style="color:green;">**, the SSoT is the record that has been written to the blockchain, as shown above. We recommend that you can keep a secure copy locally, but it should be checked with the blockchain which should be considered the principal SSoT.**</mark>

<mark style="color:blue;">**For encoded records, the SSoT comprises the SSoData which must be securely stored by you, and the SSoProof which is the fingerprint on the blockchain, as shown above. You need both data items to ensure that the SSoT is valid:**</mark>

* <mark style="color:blue;">**SSoData = your original data**</mark>
* <mark style="color:blue;">**SSoProof = fingerprint of SSoData, from the blockchain at the stored location**</mark>
* <mark style="color:blue;">**if encoding(SSoData) equals SSoProof then SSoData can be used as the SSoT**</mark>
* <mark style="color:blue;">**otherwise SSoData cannot be used as the SSoT and it may be impossible to recreate it**</mark>

## Locations

When a record is written to the blockchain, a unique record location (just called a location in this document) is returned. See "Locations" in the Records diagram above. This can be stored and used for subsequent operations.

The locations can also be distributed for use by data users, data verifiers, data auditors, and any other interested parties.

Locations are the transaction hash (often called the TXID by the blockchain community) of the record transaction that has been written to the blockchain.

Locations are vendor-neutral.


---

# 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.teranode.group/nchain-event/overview/core-concepts.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.
