# Bir Fan Token'ın transferlerini takip edin

Chiliz Chain üzerindeki Fan Token hareketlerini izlemek, en sevdiğiniz tokenların etkinliğini takip etmenin harika bir yoludur. Bunu potansiyel bir gösterge paneli için yapı taşı olarak kullanarak, verileri düzenleyip nelerin popüler olduğunu ve nelerin olmadığını gösteren içgörüler sağlayabilirsiniz.

Fan Token™ hareketlerini takip ederken hızla bir zorlukla karşılaşırsınız: Verileri doğrudan blok zincirinden okumak, mevcut durum için verimlidir ("*X cüzdanının bakiyesi nedir?*"), ancak geçmiş veriler için verimsizdir ("*Son bir yıl içinde X cüzdanını içeren tüm transferleri göster*").

Bunu çözmek için subgraph’leri kullanabiliriz.

## Subgraph’ler hakkında

Bir Subgraph, bir blok zincirinden veri çeken, bunları işleyen ve kolayca sorgulanabilmeleri için depolayan özel bir API’dir.\
Veri gerektiğinde blok zincirinden her seferinde milyonlarca bloğu taramasını istemek yerine, bir subgraph gerçekleştiği anda belirli olayları indeksler ve bunları bir veritabanında saklar.

Chiliz Chain, sektör standardı indeksleme protokollerini destekler. Projenizin ihtiyaçlarına en uygun sağlayıcıyı seçebilirsiniz:

* [The Graph](https://thegraph.com/): Merkeziyetsiz indeksleme için sektör standardı. Subgraph’inizi indeksleyicilerden oluşan merkeziyetsiz bir ağa dağıtmanıza olanak tanır.
* [Goldsky](https://goldsky.com/): Yüksek performanslı, barındırılan bir indeksleme hizmeti. The Graph’ün koduyla tamamen uyumludur (çoğu zaman aynı kodu kullanabilirsiniz) ancak daha hızlı indeksleme hızları ve gerçek zamanlı veri akışı özellikleri sunar.

Her iki araç da aynı geliştirme çerçevesini kullanır, bu nedenle bu sayfadaki adımların çoğu her ikisi için de uygulanabilir.

Örneğin PSG Fan Token transferlerini nasıl takip edebileceğimize bakalım...

## 0. Bir araç seçin

Chiliz Chain üzerinde bir subgraph dağıtmak için şunları kullanabilirsiniz: **The Graph** (merkeziyetsiz ağ) veya **Goldsky** (barındırılan indeksleyici). Kod yapısı aynıdır; yalnızca dağıtım komutları farklıdır.

Elbette kendi dokümanlarına da başvurabilirsiniz:

{% embed url="<https://thegraph.com/docs/en/subgraphs/quick-start/>" %}

{% embed url="<https://docs.goldsky.com/subgraphs/deploying-subgraphs>" %}

## 1. Bir subgraph projesi başlatın

Hem The Graph hem de Goldsky, graph’inizi oluşturmak için CLI tabanlı yöntemler sunar.

{% hint style="info" %}
The Graph’ün [Subgraph Studio](https://thegraph.com/studio/)adlı bir aracı vardır; buraya Web3 hesabınızla bağlanabilir, ardından arayüz üzerinden bir subgraph oluşturabilirsiniz.

Goldsky size bir [kontrol paneli](https://app.goldsky.com/) sağlar; bir hesap oluşturduğunuzda buradan bir subgraph oluşturabilirsiniz.
{% endhint %}

### Graph CLI’yi yükleyin⁠

Yerel makinenizde aşağıdakini çalıştırın:

```bash
npm install -g @graphprotocol/graph-cli
```

{% hint style="info" %}
The Graph’in CLI aracını, ister The Graph’in merkeziyetsiz subgraph’leri için ister Goldsky tarafından barındırılan subgraph’ler için kullanarak bir subgraph oluşturabilirsiniz.

Goldsky’nin kendi CLI aracı vardır; Goldsky’ye dağıtım yapmak istiyorsanız buna ihtiyacınız olacak (aşağıya bakın).
{% endhint %}

### Subgraph’inizi başlatın⁠

Bunu, kendi subgraph slug’ınızı eklemek için doğrudan subgraph sayfanızdan kopyalayabilirsiniz:

```bash
graph init --studio <SUBGRAPH_SLUG>
```

Şu `--studio` etiketi isteğe bağlıdır.

PSG Fan Token örneğimizde şunu kullanabiliriz:

```bash
graph init chiliz-psg-fantoken-followup
```

Subgraph’iniz hakkında aşağıdakine benzer bazı bilgileri girmeniz istenecektir:

<figure><img src="/files/c937f1a1e11f26c559be1ce8745781e1427a265c" alt=""><figcaption></figcaption></figure>

Sözleşmenizin blok gezgininde doğrulanmış olması gerekir; CLI ABI’yi otomatik olarak alacak ve subgraph’inizi kuracaktır. Varsayılan ayarlar, her olay için bir entity oluşturacaktır.

{% hint style="warning" %}
Not:

* Eğer sözleşme, PSG Fan Token’da olduğu gibi bir proxy kullanıyorsa, bunun yerine implementation sözleşmesinin adresini kullanın. Bunu, sözleşmenin blok gezgini sayfasındaki "Read/write contract" sekmesinde göreceksiniz. Örneğin, [Chiliz Block Explorer’daki PSG Fan token sözleşmesini burada görün](https://scan.chiliz.com/token/0xc2661815C69c2B3924D3dd0c2C1358A1E38A3105?tab=read_write_contract).
  * Eğer bir proxy’nin implementation sözleşme adresini girmek zorunda kaldıysanız, proje kurulduktan sonra manifest dosyasına (`subgraph.yaml`) gidin ve sözleşme adresini proxy’nin adresiyle değiştirin.
* Start Block otomatik olarak alınmazsa, sözleşmenin oluşturulduğu blok numarasını manuel olarak girebilirsiniz. Bunu blok gezgininden öğrenebilirsiniz.
  {% endhint %}

{% hint style="info" %}
Subgraph’inizde değişiklik yaparken çoğunlukla üç dosya ile çalışırsınız:

* Manifest (`subgraph.yaml`): Subgraph’inizin hangi veri kaynaklarını indeksleyeceğini tanımlar.
* Şema (`schema.graphql`): Subgraph’ten hangi verileri almak istediğinizi tanımlar.
* AssemblyScript Mappings (`mapping.ts`): Veri kaynaklarınızdaki verileri şemada tanımlanan entity’lere dönüştürür.
  {% endhint %}

Açın `subgraph.yaml` ve manifest dosyanızın doğru ağı işaret ettiğinden emin olun:

```yaml
dataSources:
  - kind: ethereum
    name: FanToken
    network: chiliz  # Mainnet için 'chiliz', Spicy için chiliz-testnet kullanın
    source:
      address: "0x..." 
      abi: FanToken
```

### Subgraph’inizi derleyin

Son olarak, hata olmadığından emin olmak için subgraph’inizi derleyin:

```bash
graph codegen && graph build
```

## 2. Dağıtın ve Yayınlayın

Subgraph’iniz oluşturulduktan sonra, dağıtmak için sağlayıcınızı seçin.

{% columns %}
{% column %}
**The Graph**

1. Bağlanın [Subgraph Studio](https://thegraph.com/studio/), bir subgraph oluşturun ve dağıtım anahtarınızı kopyalayın.
2. CLI üzerinden kimlik doğrulaması yapın:\
   `graph auth --studio <DEPLOY_KEY>`
3. Subgraph’inizi Subgraph Studio’ya dağıtın:\
   `graph deploy --studio <SUBGRAPH_SLUG>`
4. Studio’ya gidin, subgraph’inizi açın ve subgraph’inizi merkeziyetsiz ağa basmak için "Publish"e tıklayın.\
   Bu, subgraph’inizi Arbitrum One ağında bir NFT olarak yayınlamak için cüzdanınız üzerinden bir işlem başlatacaktır.
   {% endcolumn %}

{% column %}
**Goldsky**

1. Şuraya gidin [Goldsky](https://app.goldsky.com/), "Project Settings" içinde bir API anahtarı oluşturun ve CLI üzerinden giriş yapın.
2. Yükleyin `goldsky` komutu:\
   `curl https://goldsky.com | sh`\
   Ardından CLI üzerinden kimlik doğrulaması yapın:\
   `goldsky login`
3. Subgraph’inizi Goldsky’ye yükleyin:\
   `goldsky subgraph deploy / --path`

Goldsky subgraph’leri dağıtımdan hemen sonra canlı olur. Ek bir yayınlama adımı gerekmez.
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Bir sürüm etiketi girmeniz istenecektir. Şöyle bir şey girebilirsiniz `v0.0.1`ama formatı seçmekte özgürsünüz. Bu tamamlandığında, Studio sayfasında subgraph’in senkronize olmaya başladığını göreceksiniz.
{% endhint %}

{% hint style="info" %}
The Graph’ün akıllı sözleşmeleri tamamen [Arbitrum One](https://arbitrum.io/arbitrum-101)üzerindedir, ancak subgraph’iniz verileri Chiliz Chain’den indekslemektedir.
{% endhint %}

## 3. Subgraph’inizi sorgulayın

Tebrikler! Artık seçtiğiniz hizmetin kontrol panelinde bulunabilen subgraph’in sorgu URL’sine bir GraphQL sorgusu göndererek sorgulamaya başlayabilirsiniz.

Örnek:

{% columns %}
{% column %}
**The Graph**

`https://gateway-arbitrum.network.thegraph.com/api/[APIKEY]/subgraphs/id/[ID]`
{% endcolumn %}

{% column %}
**Goldsky**

`https://api.goldsky.com/api/public/project_[KEY]/subgraphs/[SLUG]/1.0.0/gn`
{% endcolumn %}
{% endcolumns %}

Artık bu uç noktaya GraphQL sorguları göndermeye başlamak için yalnızca bilgilerinizi girmeniz gerekiyor.

## Ekler

### Örnek Sorgu

Bu sorgu PSG Fan Token’ın tüm işlemlerini gösterir.

```typescript
const axios = require('axios');

// GraphQL sorgusu (her iki sağlayıcı için de aynı)
const graphqlQuery = `{
  transfers {
    ile
    ile
    value
    transactionHash
  }
}`;

// Sağlayıcıya bağlı olarak doğru URL biçimini seçin:
// const queryUrl = 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/[id]'
// const queryUrl = 'https://api.goldsky.com/api/public/project_[key]/subgraphs/[slug]/1.0.0/gn';

const graphQLRequest = {
  method: 'post',
  url: queryUrl,
  data: {
    query: graphqlQuery,
  },
};

// GraphQL sorgusunu gönderin
axios(graphQLRequest)
  .then((response) => {
    // Yanıtı burada işleyin
    const data = response.data.data
    console.log(data)

  })
  .catch((error) => {
    // Herhangi bir hatayı işleyin
    console.error(error);
  });
```

### Örnek kod

```json
{
  "data": {
    "transfers": [
      {
        "from": "0x26a3e78fa4d2cbebf6b59b2f84b8fb7c61b52d28",
        "to": "0xdca23d02923d01779fb22959bd2575d64eab4535",
        "value": "1500",
        "transactionHash": "0x000309e9cd3f550e8965381bbd83a35c5cee18f26c33a357f9dbb57450d594ea"
      },
//      ...
  }
}
```

Bunu sorgu URL’sine gönderdiğinizde şu sonuç döner:

```json
{
  transfers {
    ile
    ile
    value
    transactionHash
  }
}
```

## Ek kaynaklar

GraphQL ile subgraph’inizden veri sorgulama hakkında daha fazla bilgi için:

{% embed url="<https://thegraph.com/docs/en/subgraphs/querying/best-practices/>" %}


---

# 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.chiliz.com/tr-ai/develop/advanced/follow-transfers-of-a-fan-token.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.
