# Kaspa

<figure><img src="/files/OMIItl9hCyLnXEaKGjeq" alt="Kaspa Logo"><figcaption><p>Kaspa Logo</p></figcaption></figure>

## Introduction

The [**Kaspa blockchain**](https://kaspa.org/) is a high-performance, proof-of-work (PoW) cryptocurrency designed for scalability and fast transaction processing. It utilizes a unique data structure called a **blockDAG** (Directed Acyclic Graph), which allows multiple blocks to be created and processed in parallel rather than a traditional linear chain. This architecture makes Kaspa capable of handling high transaction throughput while maintaining robust security.

Key features of Kaspa include:

* **Fast Block Times**: Blocks are generated every second, enabling rapid transaction confirmation.
* **Scalability**: The blockDAG structure improves scalability compared to traditional blockchains.
* **Decentralization**: Maintains a high level of decentralization through PoW consensus.
* **Fair Launch**: No premine or ICO; it was launched fairly through mining.

Kaspa is designed to provide an efficient, decentralized solution for payments and value transfer while addressing the scalability issues faced by many first-generation blockchains.

## How to Interact

1. Get your API Key from [Forbole's RPC](https://rpc.forbole.com/).

<figure><img src="/files/bx3B0Z4MiLk5WStadlxx" alt="DevTools Endpoints"><figcaption></figcaption></figure>

1. Get the proto files needed to define the gRPC service:
   1. [messages.proto](https://github.com/kaspanet/rusty-kaspa/blob/master/rpc/grpc/core/proto/messages.proto)
   2. [rpc.proto](https://github.com/kaspanet/rusty-kaspa/blob/master/rpc/grpc/core/proto/rpc.proto)
2. Place them into a folder together, e.g. `/proto`
3. Download and install a grpc client, like [grpcurl](https://github.com/fullstorydev/grpcurl)
4. Test the query as follows:

{% code lineNumbers="true" %}

```graphql
grpcurl \
  -import-path ./proto \
  -proto messages.proto \
  -d '{"id":1, "getSystemInfoRequest":{}}' \
  -H "apiKey: {apiKey}" \
  grpc-mainnet-kaspa-fullnode.forbole.com:443 \
  protowire.RPC/MessageStream
```

{% endcode %}

**Response example**

{% code lineNumbers="true" %}

```json
{
  "id": "0",
  "getSystemInfoResponse": {
    "version": "v0.15.2",
    "systemId": "9f8c1251188557a6201ee1177afc31bd12a3064c8ea14c6d2c8c8ae60f0e8e62",
    "gitHash": "",
    "coreNum": 4,
    "totalMemory": "8326074368",
    "fdLimit": 65535,
    "proxySocketLimitPerCpuCore": 0,
    "error": null
  }
}
```

{% endcode %}


---

# 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.rpc.forbole.com/rpc-api-documentation/guide-to-rpc/endpoints/grpc/kaspa.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.
