> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/tr/gelistir/gelismis/fan-token-transferlerini-takip.md).

# Fan Token Transferlerini Takip Etme

Chiliz Chain'deki Fan Token hareketlerini takip etmek, favori token'larınızın aktivitesini izlemenin harika bir yoludur. Potansiyel bir pano için yapı taşı olarak kullanarak, neyin popüler olduğuna dair içgörüler sunmak amacıyla verileri düzenleyebilirsiniz.

Fan Token™ hareketlerini takip ederken hızla bir zorlukla karşılaşırsınız: Blockchain'den doğrudan veri 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ıyla ilgili her transferi göster*").

Bu sorunu çözmek için subgraph'leri kullanabiliriz.

## Subgraph'ler Hakkında

Subgraph, bir blockchain'den veri çıkaran, işleyen ve kolayca sorgulanabilecek şekilde depolayan özel bir API'dir.\
Her veri ihtiyacında blockchain'den milyonlarca blok taramasını istemek yerine, bir subgraph belirli olayları gerçekleştikçe indeksler ve bir veritabanında depolar.

Chiliz Chain, endüstri standardı indeksleme protokollerini desteklemektedir. Projenizin ihtiyaçlarına en uygun sağlayıcıyı seçebilirsiniz:

* [The Graph](https://thegraph.com/): Merkeziyetsiz indeksleme için endüstri standardı. Subgraph'inizi bir merkeziyetsiz indeksleyici ağına deploy etmenizi sağlar.
* [Goldsky](https://goldsky.com/): Yüksek performanslı, barındırılan indeksleme hizmeti. The Graph'ın kodu ile tam uyumludur (çoğu zaman birebir aynı kodu kullanabilirsiniz), ancak daha hızlı indeksleme 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 büyük çoğunluğu her ikisi için de geçerlidir.

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

## 0. Araç Seçimi

Chiliz Chain'de **The Graph** (merkeziyetsiz ağ) veya **Goldsky** (barındırılan indeksleyici) kullanarak subgraph deploy edebilirsiniz. Kod yapısı aynıdır; yalnızca deploy komutları farklılık gösterir.

Elbette kendi belgelerine başvurabilirsiniz:

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

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

## 1. Subgraph Projesini Başlatma

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/)'su mevcuttur; Web3 cüzdanınızla bağlanarak arayüz üzerinden bir subgraph oluşturabilirsiniz.

Goldsky, hesap oluşturduğunuzda subgraph oluşturabileceğiniz bir [pano](https://app.goldsky.com/) sunar.
{% endhint %}

### Graph CLI'yi Yükleme

Yerel makinenizde şunu çalıştırın:

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

{% hint style="info" %}
The Graph'ın CLI aracını hem The Graph merkeziyetsiz subgraph'leri hem de Goldsky barındırılan subgraph'leri için kullanabilirsiniz.

Goldsky'nin kendi CLI aracı da mevcuttur; Goldsky'de deploy etmek istiyorsanız bu araca ihtiyacınız olacak (aşağıya bakın).
{% endhint %}

### Subgraph'inizi Başlatma

Bunu doğrudan subgraph sayfanızdan kopyalayarak belirli subgraph slug'ınızı ekleyebilirsiniz:

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

`--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 bazı bilgiler girmeniz istenecektir:

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

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

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

* Sözleşme PSG Fan Token gibi bir proxy kullanıyorsa, implementasyon sözleşmesinin adresini kullanın. Bunu blok gezginindeki sözleşme sayfasının "Read/write contract" sekmesinde görebilirsiniz. Örneğin, [Chiliz Block Explorer'da PSG Fan Token sözleşmesine buradan bakabilirsiniz](https://scan.chiliz.com/token/0xc2661815C69c2B3924D3dd0c2C1358A1E38A3105?tab=read_write_contract).
  * Bir proxy'nin implementasyon sözleşmesini girmeniz gerekiyorsa, proje kurulduktan sonra manifest dosyasına (`subgraph.yaml`) gidin ve sözleşme adresini proxy adresiyle değiştirin.
* Başlangıç Bloğu otomatik olarak alınamıyorsa, sözleşmenin oluşturulduğu blok numarasını manuel olarak girebilirsiniz. Bunu blok gezgininden edinebilirsiniz.
  {% endhint %}

{% hint style="info" %}
Subgraph'inizde değişiklik yaparken ağırlıklı olarak üç dosya üzerinde çalışacaksınız:

* Manifest (`subgraph.yaml`): Subgraph'inizin hangi veri kaynaklarını indeksleyeceğini tanımlar.
* Şema (`schema.graphql`): Subgraph'ten almak istediğiniz verileri tanımlar.
* AssemblyScript Eşlemeleri (`mapping.ts`): Veri kaynaklarından gelen verileri şemada tanımlanan varlıklara dönüştürür.
  {% endhint %}

`subgraph.yaml`'ı açın ve manifest dosyanızın doğru ağ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 Derleme

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

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

## 2. Deploy ve Yayınlama

Subgraph'iniz hazırlandıktan sonra deploy etmek için sağlayıcınızı seçin.

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

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

{% column %}
**Goldsky**

1. [Goldsky](https://app.goldsky.com/)'ye gidin, "Project Settings" bölümünde bir API anahtarı oluşturun ve CLI aracılığıyla giriş yapın.
2. `goldsky` komutunu yükleyin:\
   `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, deploy işleminin hemen ardından yayına alınır. Ekstra bir yayınlama adımı gerekmez.
{% endcolumn %}
{% endcolumns %}

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

{% hint style="info" %}
The Graph'ın akıllı sözleşmeleri, subgraph'iniz Chiliz Chain'deki verileri indekliyor olsa bile tümü [Arbitrum One](https://arbitrum.io/arbitrum-101) üzerindedir.
{% endhint %}

## 3. Subgraph'inizi Sorgulama

Tebrikler! Artık seçtiğiniz hizmetin panosunda bulunan 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 %}

Şimdi sadece bilgilerinizi doldurmanız ve bu uç noktaya GraphQL sorguları göndermeye başlamanız yeterlidir.

## Ekler

### Örnek Sorgu

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

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

// GraphQL sorgusu (Her iki sağlayıcı için aynıdır)
const graphqlQuery = `{
  transfers {
    from
    to
    value
    transactionHash
  }
}`;

// Sağlayıcıya göre doğru URL formatını 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önder
axios(graphQLRequest)
  .then((response) => {
    // Yanıtı burada işle
    const data = response.data.data
    console.log(data)

  })
  .catch((error) => {
    // Hataları işle
    console.error(error);
  });
```

### Örnek Kod

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

Bunu sorgu URL'sine aktarmak şu sonucu döndürür:

```json
{
  transfers {
    from
    to
    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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.chiliz.com/tr/gelistir/gelismis/fan-token-transferlerini-takip.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
