> 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/temel-ogeler/akilli-sozlesme-yazma.md).

# Akıllı Sözleşme Yazma

Chiliz Chain üzerinde bir dApp oluşturmaya karar verdiğiniz andan itibaren, blockchain'imizin özelliklerini göz önünde bulundurmanız gerekir.

Chiliz Chain EVM uyumlu olsa da, bunu Ethereum ile tamamen aynı şekilde kullanmak; özellikle token ondalıkları ve gas mekanizması açısından kullanılabilirlik sorunlarına yol açabilir.

Gelin keşfedelim!

## Ön Koşullar

### Ortam

Sözleşmenizi yazmaya başlamadan önce ortamınızın hazır olduğundan emin olun.

Öncelikle, geliştirme için Spicy Testnet veya üretim için Chiliz Chain Mainnet üzerinde yapılandırılmış bir cüzdanınız olmalıdır.

[Chiliz Chain'e Bağlanma](/tr/gelistir/temel-ogeler/chiliz-chaine-baglanma.md)

İkinci olarak, hem Testnet hem de Mainnet'te gas deploy ücretlerini ödemek için $CHZ'ye ihtiyacınız olacak. Mainnet $CHZ'yi herhangi bir kripto borsasından satın alabilirken, Testnet tokenleri için faucet'lere başvurabilirsiniz.

[Ücretsiz Testnet Tokenleri Edinme](/tr/gelistir/temel-ogeler/ucretsiz-testnet-tokenlari.md)

Araçlar açısından Hardhat veya Remix'e güvenebilirsiniz. Örneğin:

[Remix ile Deploy](/tr/gelistir/temel-ogeler/akilli-sozlesme-deploy/remix-ile-deploy.md)

Son olarak, Chiliz Chain sözleşmeleri Solidity diliyle yazılmaktadır:

{% embed url="<https://www.soliditylang.org/>" %}

{% embed url="<https://solidity-by-example.org/>" %}

### Fan Token'ları / CAP-20

Chiliz Chain'in en özgün yönü, Fan Token'ları için kullanılan CAP-20 standardıdır.

Teknik olarak kod açısından ERC-20 standardıyla özdeş olsa da CAP-20 token'larının ondalıklar için özel bir yapılandırması vardır. Kısaca: 18 ondalık kullanan standart ERC-20 token'larının aksine 0 ondalık kullanır.

[Fan Token'lar Hakkında](/tr/ogren/fan-tokenlar-hakkinda.md)

Bu nedenle, 18 ondalık ile bir Fan Token deploy ederseniz, ekosistem cüzdanlarında doğru görüntülenmeyebilir veya gelecekteki Socios.com entegrasyonlarıyla uyumsuz olabilir.

## Akıllı Sözleşme Yazımında En İyi Uygulamalar

### Savaştan Geçmiş Kütüphaneler Kullanın (OpenZeppelin)

Sözleşmenizi sıfırdan oluşturmaya başlamayın.\
En etkili tek güvenlik uygulaması, güvenlik açıklarının riskini azaltmak amacıyla topluluk tarafından denetlenmiş standartlar üzerine kodunuzu inşa etmektir.

Chiliz Chain geliştirmesi için [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts) kullanmanızı şiddetle tavsiye ederiz. Token sözleşmeleri için güvenli ve topluluk tarafından onaylanmış uygulamalar sunarlar.

Standart sözleşmeleri kullanarak token'larınızın bilinen cüzdanlarla (MetaMask gibi) ve Chiliz ekosistemiyle (Socios.com) uyumlu olmasını sağlarsınız.

### Genel EVM En İyi Uygulamaları

Zincirden bağımsız olarak, güvenli Solidity geliştirmesi için bu üç kalıp tartışmasızdır.

#### "Checks-Effects-Interactions" (Kontrol-Etki-Etkileşim) Kalıbı

Bu, [Yeniden Giriş Saldırılarına](https://solidity-by-example.org/hacks/re-entrancy/) karşı birincil savunmanızdır. Fonksiyonlarınızı her zaman tam olarak şu sırayla yapılandırın:

1. Kontroller: Girdileri ve koşulları doğrulayın (örn. `require` ifadeleri).
2. Etkiler: Sözleşme durumunu güncelleyin (örn. bakiyeleri azaltın).
3. Etkileşimler: Diğer sözleşmelerle etkileşime girin veya fon gönderin (örn. `transfer`).

#### Güçlü Erişim Kontrolü

Hassas fonksiyonları hiçbir zaman korumasız bırakmayın. Bir fonksiyon token baskıyorsa, ücret değiştiriyorsa veya mantığı güncelleştiriyorsa, bu fonksiyon kısıtlanmalıdır.

* Basit: Tek yöneticili sözleşmeler için `Ownable` kullanın.
* Karmaşık: Birden fazla rol gerektiren sözleşmeler için `AccessControl` kullanın (örn. `MINTER_ROLE`, `ADMIN_ROLE`).

#### Girdi Doğrulama

Tüm girdilerin kötü niyetli olduğunu varsayın. Parametreleri doğrulamak için fonksiyonlarınızın en başında `require()` ifadelerini kullanın.

Örneğin:

* Sıfır adres kontrolü yapın (`address(0)`).
* Transfer sırasında sıfır miktarları kontrol edin.
* Birden fazla dizi iletiyorsanız dizi uzunluklarının eşleştiğini doğrulayın.
* vb.

### Chiliz'e Özgü Uygulama Ayrıntıları

Chiliz Chain EVM uyumlu olsa da, özellikle token ondalıkları ve EVM sürümleri açısından bazı "yerel kurallar" geçerlidir.

#### CAP-20 Uyumluluğu (Fan Token'ları)

Fan Token'larıyla etkileşen bir sözleşme yazıyorsanız (örn. $PSG veya $BAR için bir Staking Pool), 0 ondalığı işlemeniz gerekir.

Bu şu anlama gelir:

* `1 Token = 10^18 birim` varsayımında bulunmayın. Fan Token'lar için `1 Token = 1 birim`.
* Sözleşmeniz genel amaçlıysa matematiklerinize `1e18` sabit kodlamaktan kaçının. `token.decimals()` fonksiyonunu dinamik olarak kullanın.

#### EVM Sürümü ve Derleyici

Chiliz Chain "Shanghai" EVM sürümüyle uyumludur.\
Önerilen Solidity Sürümü `0.8.24`'tür.

### Chiliz'de Gas Optimizasyonu

Chiliz Chain'deki işlemler Ethereum'a kıyasla önemli ölçüde daha ucuzdur; ancak optimize edilmemiş kod, yüksek trafikli etkinlikler sırasında (örn. canlı bir maç sırasında) yine de tıkanıklığa veya başarısız işlemlere yol açabilir.

Gas tasarrufu için üç yol:

* Özel Hatalar Kullanın: `require` içindeki uzun metin mesajları yerine, gas tasarrufu sağlamak için `error` tanımlamaları kullanın.
* Durum değişkenlerinizi 32 baytlık slotlara sığacak şekilde sıralayın. Mümkün olan yerlerde `uint128`, `address` ve `bool` değerlerini yan yana yerleştirin.
* Sözleşmenin kendisi tarafından hiçbir zaman dahili olarak çağrılmayan fonksiyonlar için `external` tercih edin.


---

# 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/temel-ogeler/akilli-sozlesme-yazma.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.
