From a2bf2fba911d686ca7633a204cd2b409a1466e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=87=F0=9D=91=92=F0=9D=95=A3=E2=92=BB=E1=BA=B8?= =?UTF-8?q?=F0=9D=94=BB?= Date: Thu, 6 Jun 2024 04:33:28 +0000 Subject: [PATCH] Translate folder contents to Turkish --- docs-hub | 1 + .../docs/contract-quickstart/index_tr.mdx | 116 +++ .../counter-dapp/building-a-frontend_tr.mdx | 381 ++++++++++ .../building-a-smart-contract_tr.mdx | 512 +++++++++++++ docs/guides/docs/counter-dapp/index_tr.mdx | 24 + .../docs/frontend-quickstart/index_tr.mdx | 123 +++ .../guides/docs/installation/codespace_tr.mdx | 73 ++ docs/guides/docs/installation/index_tr.mdx | 216 ++++++ .../intro-to-predicates/checkpoint_tr.mdx | 56 ++ .../intro-to-predicates/configurables_tr.mdx | 30 + .../debugging-with-scripts-rust_tr.mdx | 83 +++ .../debugging-with-scripts_tr.mdx | 84 +++ .../docs/intro-to-predicates/imports_tr.mdx | 97 +++ .../docs/intro-to-predicates/index_tr.mdx | 34 + .../docs/intro-to-predicates/main_tr.mdx | 28 + .../predicate-limitations_tr.mdx | 26 + .../intro-to-predicates/prerequisites_tr.mdx | 114 +++ .../docs/intro-to-predicates/rust-sdk_tr.mdx | 288 +++++++ .../signature-verification_tr.mdx | 51 ++ .../docs/intro-to-sway/checkpoint_tr.mdx | 73 ++ .../docs/intro-to-sway/contract-abi_tr.mdx | 40 + .../docs/intro-to-sway/contract-errors_tr.mdx | 40 + .../docs/intro-to-sway/contract-functions.mdx | 25 - .../intro-to-sway/contract-functions_tr.mdx | 339 +++++++++ .../intro-to-sway/contract-imports_tr.mdx | 46 ++ .../intro-to-sway/contract-storage_tr.mdx | 58 ++ .../intro-to-sway/contract-structs_tr.mdx | 54 ++ .../docs/intro-to-sway/explore-fuel_tr.mdx | 34 + docs/guides/docs/intro-to-sway/index_tr.mdx | 43 ++ .../docs/intro-to-sway/prerequisites_tr.mdx | 147 ++++ .../guides/docs/intro-to-sway/rust-sdk_tr.mdx | 224 ++++++ .../docs/intro-to-sway/typescript-sdk.mdx | 1 + .../docs/intro-to-sway/typescript-sdk_tr.mdx | 701 ++++++++++++++++++ docs/guides/docs/migration-guide/index_tr.mdx | 16 + docs/guides/docs/running-a-node/index_tr.mdx | 51 ++ .../running-a-local-node_tr.mdx | 97 +++ .../running-a-testnet-node_tr.mdx | 146 ++++ 37 files changed, 4447 insertions(+), 25 deletions(-) create mode 160000 docs-hub create mode 100644 docs/guides/docs/contract-quickstart/index_tr.mdx create mode 100644 docs/guides/docs/counter-dapp/building-a-frontend_tr.mdx create mode 100644 docs/guides/docs/counter-dapp/building-a-smart-contract_tr.mdx create mode 100644 docs/guides/docs/counter-dapp/index_tr.mdx create mode 100644 docs/guides/docs/frontend-quickstart/index_tr.mdx create mode 100644 docs/guides/docs/installation/codespace_tr.mdx create mode 100644 docs/guides/docs/installation/index_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/checkpoint_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/configurables_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/debugging-with-scripts-rust_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/debugging-with-scripts_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/imports_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/index_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/main_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/predicate-limitations_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/prerequisites_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/rust-sdk_tr.mdx create mode 100644 docs/guides/docs/intro-to-predicates/signature-verification_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/checkpoint_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-abi_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-errors_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-functions_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-imports_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-storage_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/contract-structs_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/explore-fuel_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/index_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/prerequisites_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/rust-sdk_tr.mdx create mode 100644 docs/guides/docs/intro-to-sway/typescript-sdk_tr.mdx create mode 100644 docs/guides/docs/migration-guide/index_tr.mdx create mode 100644 docs/guides/docs/running-a-node/index_tr.mdx create mode 100644 docs/guides/docs/running-a-node/running-a-local-node_tr.mdx create mode 100644 docs/guides/docs/running-a-node/running-a-testnet-node_tr.mdx diff --git a/docs-hub b/docs-hub new file mode 160000 index 000000000..ae1902cb3 --- /dev/null +++ b/docs-hub @@ -0,0 +1 @@ +Subproject commit ae1902cb37671a2854fc97d1bfa042c85eb36f18 diff --git a/docs/guides/docs/contract-quickstart/index_tr.mdx b/docs/guides/docs/contract-quickstart/index_tr.mdx new file mode 100644 index 000000000..4b30a60a8 --- /dev/null +++ b/docs/guides/docs/contract-quickstart/index_tr.mdx @@ -0,0 +1,116 @@ +--- +başlık: Sözleşmeye Hızlı Başlangıç +kategori̇: Sözleşmeye Hızlı Başlangıç +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Akıllı Sözleşme Hızlı Başlangıç + +Fuel ile akıllı sözleşme geliştiricisi olarak çalışmaya başlamak kadar basittir: + +1. [Installing](#installation) `fuelup` +2. [Karşı sözleşme oluşturma](#karşı-sözleşme-oluşturma) +3. [Sözleşmeyi inşa etmek] (#building-the-contract) +4. [Yerel cüzdan kurma](#setting-up-a-local-wallet) +5. [Sözleşmenin konuşlandırılması] (#deploying-the-contract) + +## Kurulum + + + + + + + + + +### Zaten `fuelup` yüklü mü? + + + +## Karşı sözleşme oluşturma + +Sway'de bir sayaç sözleşmesi oluşturmak için aşağıdaki komutu çalıştırın: + +```sh +forc template --template-name karşı sözleşme +``` + +Sözleşme `src/main.sw` dosyası içinde olacaktır. + + + +## Sözleşmenin oluşturulması + +Bir sözleşme oluşturmak için `counter-contract` klasörünün içine gidin: + +``sh +cd karşı sözleşmesi +``` + +Ardından, `forc build` komutunu çalıştırın: + +```sh +forc yapı +``` + +## Yerel bir cüzdan kurma + + + +Faucet](https://faucet-testnet.fuel.network/) kullanarak test fonları alabilirsiniz. + +## Sözleşmeyi dağıtma + +Sözleşmeyi test ağına dağıtmak için çalıştırabilirsiniz: + +```sh +forc deploy --testnet +``` + + + +## Sonraki Adımlar + +Daha fazlasını öğrenmeye hazır mısınız? Aşağıdaki kaynaklara göz atın: + +- Tam yığın [counter contract dapp] oluşturmaya yönelik adım adım talimatları öğrenin (/guides/counter-dapp) +- Sway'e Giriş](/guides/intro-to-sway) kılavuzu ile tam yığın bir pazar yeri dapp'i oluşturun +- Predicates](/guides/intro-to-predicates) ile oluşturmayı deneyin +- Sway dokümanlarını okuyun](/docs/sway) \ No newline at end of file diff --git a/docs/guides/docs/counter-dapp/building-a-frontend_tr.mdx b/docs/guides/docs/counter-dapp/building-a-frontend_tr.mdx new file mode 100644 index 000000000..ceec8f7ff --- /dev/null +++ b/docs/guides/docs/counter-dapp/building-a-frontend_tr.mdx @@ -0,0 +1,381 @@ +--- +başlık: Ön Uç Oluşturma +kategori̇ Sayaç Dapp +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Sözleşmenizle Etkileşim Kurmak için Bir Ön Uç Oluşturma + +Sayaç sözleşmesi için bir ön uç uygulaması oluşturmak için aşağıdakileri yapacağız: + +1. [Yakıt Tarayıcı Cüzdanını yükleyin **](#install-the-fuel-browser-wallet) +2. [**Bir React projesini başlatın.**](#initialize-a-react-project) +3. [**fuels` SDK bağımlılığını yükleyin.**](#install-the-fuels-sdk-dependency) +4. [**Sözleşme türleri oluşturun.**](#generate-contract-types) +5. [**Ön uç kodumuzu yazın.**](#uygulamayı değiştir) +6. [**Projemizi çalıştırın.**](#projenizi-çalıştırın) + +## Fuel Browser Cüzdanını Yükleyin + +{/*install_wallet:example:start*/} +Ön uç uygulamamız kullanıcıların bir cüzdanla bağlanmasına izin verecektir, bu nedenle bir tarayıcı cüzdanının yüklü olması gerekir. + +Sonraki adımlara geçmeden önce [Fuel Wallet](https://chromewebstore.google.com/detail/fuel-wallet/dldjpboieedgcmpkchcjcbijingjcgok) uzantısını yükleyin. + +Cüzdanınızı kurduktan sonra, bazı testnet tokenleri almak için cüzdandaki “Faucet” düğmesine tıklayın. +{/*install_wallet:example:end*/} + +## Bir React projesini başlatın + +Projemizin sözleşmesini ön uç kodundan ayırmak için, ön uç projemizi başlatalım: terminalinizin sözleşmenizin `/home/user/path/to/counter-contract` klasöründe açık olduğunu varsayarak bir dizin geri gidelim. + +```sh +cd .. +``` + +Şimdi, [`Create React App`](https://create-react-app.dev/) kullanarak TypeScript ile bir React projesi başlatın. + + + +```sh +npx create-react-app frontend --template typescript +``` + +Çıktı şuna benzer olmalıdır: + +```sh +Başarılar! Fuel/fuel-project/frontend adresinde ön uç oluşturuldu +``` + +Artık `fuel-project` klasörünüzün içinde iki klasörünüz olmalıdır: `counter-contract` ve `frontend`. + + +![proje klasör yapısı](/images/quickstart-folder-structure.png) + + +## `fuels` SDK bağımlılığını yükleyin + +Yakıtlar` paketi, Sway programlarınız ve Yakıt ağı ile etkileşim kurmak için ihtiyacınız olan tüm ana araçları içerir. +@fuel-wallet` paketleri kullanıcı cüzdanları ile etkileşim için ihtiyacınız olan her şeyi içerir. + +### Yükleme + +Çalıştırarak `frontend` klasörüne taşıyın: + +```sh +cd frontend +``` + +> `fuels` Node sürümü {props.nodeVersion} gerektirir. + +Aşağıdaki paketleri `frontend` klasörünüze yükleyin: + + + +```sh +npm install fuels @fuels/react @fuels/connectors @tanstack/react-query +``` + +## Sözleşme türleri oluşturun + +fuels init` komutu, SDK tarafından sözleşme türleri oluşturmak için kullanılan bir `fuels.config.ts` dosyası oluşturur. +Sözleşme klasörünüzün nerede olduğunu tanımlamak için `contracts` bayrağını ve oluşturulan dosyaların nerede oluşturulmasını istediğinizi tanımlamak için `output` bayrağını kullanın. + +Yapılandırma dosyasını oluşturmak için ön uç klasörünüzde aşağıdaki komutu çalıştırın: + + + +```sh +npx fuels init --contracts ../counter-contract/ --output ./src/sway-api +``` + +Artık bir `fuels.config.ts` dosyanız olduğuna göre, sözleşmenizi yeniden oluşturmak ve türleri oluşturmak için `fuels build` komutunu kullanabilirsiniz. +Bu komutu çalıştırmak, sözleşmenizden gelen ABI JSON çıktısını yorumlayacak ve doğru TypeScript tanımlarını oluşturacaktır. +Eğer `fuel-project/counter-contract/out` klasörünü görürseniz, ABI JSON'u orada görebilirsiniz. + +fuel-project/frontend` dizini içinde çalıştırın: + + + +```sh +npx yakıt yapısı +``` + +Başarılı bir işlem aşağıdaki gibi çıktı vermelidir: + +```sh +Bina... +Kaynak 'forc' ikili dosyasını kullanarak Sway programları oluşturma +Türler oluşturuluyor... +🎉 Derleme başarıyla tamamlandı! +``` + +Şimdi yeni bir `fuel-project/frontend/src/sway-api` klasörü bulabilmelisiniz. + +## Uygulamayı Değiştirin + +Frontend/src` klasörünün içine sözleşmemizle etkileşime giren kodu ekleyelim. + +Çünkü `@fuels/react` kullanacağız, öncelikle uygulamamızı `FuelProvider` bileşeniyle sarmalamamız gerekiyor. + +Aşağıdaki importları `frontend/src/index.tsx` dosyanızın en üstüne ekleyin ve bir sorgu istemcisi kurun: + + + + + +Ardından, `frontend/src/index.tsx` dosyanızı `App` bileşenini `FuelProvider` ve `QueryClientProvider` bileşenleriyle saracak şekilde değiştirin. + + + + + +Ardından, `fuel-project/frontend/src/App.tsx` dosyasını şu şekilde değiştirin: + + + + + +Son olarak, `App.tsx` dosyanızın üst kısmındaki `CONTRACT_ID` değişkeninin değerini yeni dağıttığınız sözleşmenin adresiyle değiştirin. + + + +## Projenizi çalıştırın + +Yakıt projesi/frontend` dizini içinde çalıştırın: + +’ --name ‘react-dapp’ --cwd ./guides-testing/fuel-project/frontend” +}} +/> + +```sh +npm start +``` + +```sh +Başarıyla derlendi! + +Artık tarayıcıda ön ucu görüntüleyebilirsiniz. + + Yerel: http://localhost:3000 + Ağınızda: http://192.168.4.48:3000 + +Geliştirme derlemesinin optimize edilmediğini unutmayın. +Bir üretim derlemesi oluşturmak için npm run build kullanın. +``` + +“Bağlan” düğmesine tıklayın ve cüzdanınızı bağlamak için yüklediğiniz cüzdanı seçin. + +Bağlandıktan sonra, cüzdanınızda hiç para yoksa, testnet fonlarını almak için bir bağlantı göreceksiniz. + +Fuel üzerinde testnet ETH'niz varsa, sayaç değerini ve artırma düğmesini görmelisiniz: + + +![kullanıcı arayüzünün ekran görüntüsü](/images/quickstart-frontend.png) + + +## Fuel üzerinde fullstack bir dapp inşa ettiniz! ⛽ + +[İşte bu projenin deposu] (https://github.com/FuelLabs/docs-hub/tree/master/docs/guides/examples/counter-dapp). + +Herhangi bir sorunla karşılaşırsanız, kodunuzu bu depo ile karşılaştırmak ve farklılıkları gidermek iyi bir ilk adımdır. + +Bize [@fuel_network](https://twitter.com/fuel_network) tweet atarak Fuel üzerinde bir dapp oluşturduğunuzu bildirin, özel bir kurucu grubuna davet edilebilir, bir sonraki Fuel yemeğine davet edilebilir, projede alfa alabilirsiniz veya başka bir şey 👀. + +### Sözleşmenin Güncellenmesi + +Daha hızlı geliştirmek ve test etmek için, yerel bir düğüm başlatmak ve her değişiklikte sözleşmeniz için otomatik olarak yeniden dağıtmak ve türler oluşturmak için [`fuels dev` komutunu] (/docs/fuels-ts/fuels-cli) kullanmanızı öneririz. + +Sözleşmenizi test ağına yeniden dağıtmaya hazır olduğunuzda, ön uç ve sözleşmenizi tekrar senkronize etmek için atmanız gereken adımlar şunlardır: + +- Ön uç dizininizde bu komutu yeniden çalıştırın: `npx fuels build`. +- Sözleşme dizininizde, sözleşmeyi yeniden dağıtın. +- Ön uç dizininizde, `App.tsx` dosyanızdaki sözleşme kimliğini güncelleyin. + +## Yardıma mı ihtiyacınız var? + +Sorunuzu [Yakıt Forumu]'na (https://forum.fuel.network/) göndererek ekipten yardım alın. + + + + + + + + + + + + + + + +{/* + + + + + + + + + + + + */} \ No newline at end of file diff --git a/docs/guides/docs/counter-dapp/building-a-smart-contract_tr.mdx b/docs/guides/docs/counter-dapp/building-a-smart-contract_tr.mdx new file mode 100644 index 000000000..146ee5c00 --- /dev/null +++ b/docs/guides/docs/counter-dapp/building-a-smart-contract_tr.mdx @@ -0,0 +1,512 @@ +--- +başlık: Akıllı Sözleşme Oluşturma +kategori̇ Sayaç Dapp +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Bir Sway Akıllı Sözleşmesi Yazmak + +## Kurulum + + + + + +{/*install_help:example:start*/} +> Sorun mu yaşıyorsunuz? Kurulum kılavuzunu](/guides/installation) ziyaret edin veya sorunuzu [forum](https://forum.fuel.network/) adresimize gönderin. +{/*install_help:example:end*/} + + + +### Zaten `fuelup` yüklü mü? + +{/*already_installed:example:start*/} +Zaten `fuelup` yüklüyse, en güncel araç zincirinde olduğunuzdan emin olmak için aşağıdaki komutları çalıştırın. + +```sh +fuelup kendi kendini güncelleme +fuelup güncellemesi̇ +fuelup varsayılan en son +``` + +{/*already_installed:example:end*/} + +## İlk Sway Projeniz + +İki fonksiyonlu basit bir sayaç sözleşmesi oluşturacağız: biri sayacı artırmak için, diğeri de sayacın değerini döndürmek için. + +**Yeni, boş bir klasör oluşturarak başlayın. Buna `fuel-project` diyeceğiz.** + + + +```sh +mkdir yakıt-proje +``` + +### Sözleşmenin Yazılması + +Yakıt-proje` klasörünüzün içine taşıyın: + +``sh +cd yakıt-proje +``` + +Ardından `forc` kullanarak bir sözleşme projesi oluşturun: + + + +```sh +forc yeni karşı sözleşme +``` + +Bu çıktıyı alacaksınız: + +```sh +Derlemek için `forc build`, testleri çalıştırmak için ise `forc test` kullanın +---- +Belgeleri okuyun: +- Sway Kitabı: https://docs.fuel.network/docs/sway +- Forc Kitap: https://docs.fuel.network/docs/forc +- Rust SDK Kitabı: https://docs.fuel.network/docs/fuels-rs +- TypeScript SDK: https://docs.fuel.network/docs/fuels-ts + +Topluluğa Katılın: +- Bizi takip edin @SwayLang: https://twitter.com/SwayLang +- Discourse'da soru sorun: https://forum.fuel.network/ + +Hata Bildir: +- Sway Sorunları: https://github.com/FuelLabs/sway/issues/new +``` + +{/*Bu örnek yeni bir `forc` projesi için bir ağaç içermeli ve boilerplate dosyalarını açıklamalıdır*/} +{/*forc_new:example:start*/} +İşte `forc`un başlattığı proje: + + + +```sh +ağaç karşı sözleşmesi +``` + +```sh +karşı sözleşme +├── Forc.toml +└── src + └── main.sw + +1 dizin, 2 dosya +``` + +`forc.toml` bir *manifest dosyasıdır* (Cargo için `Cargo.toml` veya Node için `package.json` dosyasına benzer) ve proje adı ve bağımlılıklar gibi proje meta verilerini tanımlar. +{/*forc_new:example:end*/} + +Projenizi bir kod editöründe açın ve `src/main.sw` dosyasındaki ilk satır dışındaki her şeyi silin. + +Her Sway dosyası, dosyanın ne tür bir program içerdiğine dair bir beyanla başlamalıdır; burada, bu dosyanın bir sözleşme olduğunu beyan ettik. +Sway program türleri hakkında daha fazla bilgiyi [Sway Kitabı](/docs/sway/sway-program-types/)'nda bulabilirsiniz. + + + + + +Daha sonra, bir depolama değeri tanımlayacağız. +Bizim durumumuzda, `u64` (64 bit işaretsiz tamsayı) tipinde `counter` olarak adlandıracağımız ve 0 olarak başlatacağımız tek bir sayacımız var. + + + + + +### ABI + +ABI, Uygulama İkili Arayüzü anlamına gelir. +Bir ABI, bir sözleşme için bir arayüz tanımlar. +Bir sözleşme ya bir ABI bildirimi tanımlamalı ya da içe aktarmalıdır. + +ABI'nizi ayrı bir kütüphanede tanımlamak ve bunu sözleşmenize aktarmak en iyi uygulama olarak kabul edilir. +Bu, sözleşmeyi çağıranların ABI'yi daha kolay içe aktarmasına ve kullanmasına olanak tanır. + +Basitlik açısından, ABI'yi doğrudan sözleşme dosyasının kendisinde tanımlayacağız. + + + + + +### ABI uygulayın + +ABI tanımınızın altına, ABI'nizde tanımlanan işlevlerin uygulamasını yazacaksınız. + + + + + +> `storage.counter.read()` örtük bir geri dönüştür ve `return storage.counter.read();` ile eşdeğerdir. + +Kodunuz şu ana kadar şöyle görünmelidir: + +Dosya: `./counter-contract/src/main.sw` + + + + + +### Sözleşmeyi Oluşturun + +Sözleşme klasörünüze gidin: + +```sh +cd karşı sözleşmesi +``` + +Ardından sözleşmenizi oluşturmak için aşağıdaki komutu çalıştırın: + + + +```sh +forc yapı +``` + +```sh + Derlenmiş kütüphane “core”. + Derlenmiş kütüphane “std”. + Derlenmiş sözleşme “counter-contract”. + Bytecode boyutu: 84 bayt. +``` + +Oluşturduktan sonra `counter-contract` klasörünün içeriğine bir göz atalım: + + + +```sh +ağaç . +``` + +```sh +. +├── Forc.lock +├── Forc.toml +├── dışarı +│ └── debug +│ ├── counter-contract-abi.json +│ ├── counter-contract-storage_slots.json +│ └── karşı sözleşme.bin +└── src + └── main.sw + +3 dizin, 6 dosya +``` + +Artık ABI'mızın JSON gösterimi ve sözleşme bayt kodu gibi derleme eserlerimizi içeren bir `out` dizinimiz var. + +## Sözleşmenizi Rust ile Test Etme + +> Rust ile test etmek istemiyor musunuz? Bu bölümü atlayın ve [Deploy the Contract] (#deploy-the-contract) bölümüne geçin. + +Cargo generate şablonunu kullanarak bir Rust entegrasyon test koşumu ekleyerek başlayacağız. +Henüz `Rust` yüklü değilse, bu komutu çalıştırarak yükleyebilirsiniz: + + + +Daha sonra, eğer henüz yüklemediyseniz, [`cargo generate`](https://github.com/cargo-generate/cargo-generate) yükleyelim: + +```sh +cargo install cargo-generate --locked +``` + +Şimdi, aşağıdaki komutla varsayılan test koşum takımını oluşturalım: + + + +```sh +cargo generate --init fuellabs/sway templates/sway-test-rs --name counter-contract +``` + +```sh +⚠️ Favorite `fuellabs/sway` not found in config, using it as a git repository: https://github.com/fuellabs/sway.git +🔧 Hedef: /home/user/path/to/counter-contract ... +🔧 proje-adı: karşı-sözleşme ... +🔧 Şablon oluşturuluyor ... +🔧 Oluşturulan dosyalar içine taşınıyor: `/home/user/path/to/counter-contract`... +✨ Tamamlandı! Yeni proje oluşturuldu /home/user/path/to/counter-contract +``` + +Şimdi sonuca bir göz atalım: + + + +```sh +ağaç . +``` + +```sh +. +├── Cargo.toml +├── Forc.lock +├── Forc.toml +├── dışarı +│ └── debug +│ ├── counter-contract-abi.json +│ ├── counter-contract-storage_slots.json +│ └── karşı sözleşme.bin +├── src +│ └── main.sw +└── testler + └── harness.rs + +4 dizin, 8 dosya +``` + +{/*rust_harness:example:start*/} +İki yeni dosyamız var! + +- Cargo.toml` yeni test koşumumuzun manifestosudur ve `fuels` (Fuel Rust SDK) dahil olmak üzere gerekli bağımlılıkları belirtir. +- Testler/harness.rs`, henüz herhangi bir sözleşme yöntemini çağırmasa da, başlamamız için bazı temel test kodlarını içerir. + +Cargo.toml` dosyanızı açın ve `dev-dependencies` altında kullanılan `fuels` sürümünü kontrol edin. Eğer henüz değilse sürümü `0.62.0` olarak değiştirin: + +``toml +[dev-dependencies] +fuels = { version = “0.62.0”, features = [“fuel-core-lib”] } +tokio = { version = “1.12”, features = [“rt”, “macros”] } +``` + +{/*rust_harness:example:end*/} + +Artık varsayılan test demetimize sahip olduğumuza göre, ona kullanışlı bir test ekleyelim. + +test/harness.rs` dosyasının alt kısmında `can_get_contract_id()` testinin altına, sayacın değerinin artırıldığını doğrulamak için aşağıdaki `test_increment` test fonksiyonunu ekleyin: + + + + + +İşte dosyanızın nasıl görünmesi gerektiği: + +Dosya: `./counter-contract/tests/harness.rs` + + + + + +Terminalde `cargo test`i çalıştırın: + +``sh +kargo testi̇ +``` + +Her şey yolunda giderse, çıktı aşağıdaki gibi görünmelidir: + +```sh + ... + 2 test çalıştırılıyor + test can_get_contract_id ... tamam + test test_increment ... tamam + test sonucu: tamam. 2 geçti; 0 başarısız; 0 göz ardı edildi; 0 ölçüldü; 0 filtrelendi; 0.25s içinde bitti +``` + +## Sözleşmeyi Dağıtın + +Şimdi dağıtma zamanı . Bunu komut satırından `forc` kullanarak nasıl yapacağınızı göstereceğiz, ancak [Rust SDK](/docs/fuels-rs/deploying) veya [TypeScript SDK](/docs/fuels-ts/contracts/deploying-contracts) kullanarak da yapabilirsiniz. + +Bir sözleşmeyi dağıtmak için, işlemi imzalamak için bir cüzdanınız ve gaz için ödeme yapmak için paralarınız olması gerekir. Bu süreçte `Fuelup` size rehberlik edecektir. + +### Yerel bir cüzdan kurma + + + +Faucet](https://faucet-testnet.fuel.network/) kullanarak test fonları alabilirsiniz. + +### Testnet'e Dağıtın + +Şimdi, `forc deploy` komutu ile sözleşmeyi en son test ağına dağıtabilirsiniz. + +```sh +forc deploy --testnet +``` + +{/*forc_wallet:example:start*/} +Terminal cüzdanın şifresini soracaktır: + +`Lütfen “~/.fuel/wallets/.wallet” adresindeki şifrelenmiş cüzdan kasanızın şifresini girin:` + +Cüzdanın kilidini açtıktan sonra, terminal hesapların bir listesini gösterecektir: + +``sh +Hesap 0 -- yakıt18caanqmumttfnm8qp0eq7u9yluydxtqmzuaqtzdjlsww5t2jmg9skutn8n: + Varlık Kimliği Tutar + 0000000000000000000000000000000000000000000000000000000000000000 499999940 +``` + +Listenin hemen altında şu komut istemini göreceksiniz: + +`Lütfen imzalama için kullanılacak hesap dizinini girin:` + +Ardından tercih ettiğiniz hesabın numarasını girecek ve işlemi kabul etmeniz istendiğinde `Y` tuşuna basacaksınız. + +Son olarak, sözleşmenin konuşlandırıldığı ağ uç noktasını, bir `Sözleşme Kimliği` ve işlemin imzalandığı bloğu geri alacaksınız. +{/*forc_wallet:example:end*/} + +Daha sonra ön ucu bağlamak için buna ihtiyacınız olacağından `Sözleşme Kimliği`ni kaydedin. + +```sh +Sözleşme karşı sözleşmesi Dağıtıldı! + +Ağ: https://testnet.fuel.network +Sözleşme Kimliği: 0x8342d413de2a678245d9ee39f020795800c7e6a4ac5ff7daae275f533dc05e08 +0x4ea52b6652836c499e44b7e42f7c22d1ed1f03cf90a1d94cd0113b9023dfa636 bloğunda dağıtıldı +``` + +### Tebrikler, Fuel üzerindeki ilk akıllı sözleşmenizi tamamladınız ⛽ + +[İşte bu projenin deposu] (https://github.com/FuelLabs/docs-hub/tree/master/docs/guides/examples/counter-dapp). Herhangi bir sorunla karşılaşırsanız, kodunuzu bu depo ile karşılaştırmak ve farklılıkları gidermek iyi bir ilk adımdır. + +Bize [@fuel_network](https://twitter.com/fuel_network) tweet atarak Fuel üzerinde bir dapp oluşturduğunuzu bildirin, özel bir kurucu grubuna davet edilebilir, bir sonraki Fuel yemeğine davet edilebilir, projede alfa alabilirsiniz veya başka bir şey 👀. + +## Yardıma mı ihtiyacınız var? + +Sorunuzu [Fuel Forum] (https://forum.fuel.network/) adresine göndererek ekipten yardım alın. diff --git a/docs/guides/docs/counter-dapp/index_tr.mdx b/docs/guides/docs/counter-dapp/index_tr.mdx new file mode 100644 index 000000000..3312603cc --- /dev/null +++ b/docs/guides/docs/counter-dapp/index_tr.mdx @@ -0,0 +1,24 @@ +--- +başlık: Karşı Dapp +kategori̇ Sayaç Dapp +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Sayaç Dapp + +Bu kılavuz, aşağıdakilerin nasıl yapılacağına ilişkin adım adım talimatlar içerir + +- Sway'de bir karşı akıllı sözleşme yazın +- Rust dilinde bir test yazın +- Fuel'in test ağına dağıtın +- Bir ön uç oluşturun +- Bir cüzdan entegre edin + +Başlamadan önce, dokümanlar boyunca kullanılacak terminolojiyi ve bunların birbirleriyle nasıl ilişkili olduğunu anlamak faydalı olabilir: + +- **Fuel**: Fuel blok zinciri. +- **FuelVM**: Fuel'e güç veren sanal makine. +- **Sway**: FuelVM için hazırlanmış alana özgü dil; Rust'tan esinlenilmiştir. +- **Forc**: Rust için Cargo'ya benzer şekilde Sway için yapı sistemi ve paket yöneticisi. \ No newline at end of file diff --git a/docs/guides/docs/frontend-quickstart/index_tr.mdx b/docs/guides/docs/frontend-quickstart/index_tr.mdx new file mode 100644 index 000000000..344e9e5c4 --- /dev/null +++ b/docs/guides/docs/frontend-quickstart/index_tr.mdx @@ -0,0 +1,123 @@ +--- +başlık: Ön Uç Hızlı Başlangıç +kategori̇ Ön Uç Hızlı Başlangıç +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Frontend/Fullstack Hızlı Başlangıç + +Fuel ile bir frontend veya fullstack geliştiricisi olarak başlamak kadar basit: + +1. [Installing](#installation) `fuelup` +2. [Bir sayaç dapp'ı oluşturma](#generating-a-counter-dapp) +3. [Projeyi yerel olarak çalıştırma](#running-the-project-locally) + +## Kurulum + + + + + + + + + +### Zaten `fuelup` yüklü mü? + + + +## Bir sayaç dapp'ı oluşturma + +Yakıt oluştur CLI ile saniyeler içinde tam yığın bir sayaç dapp'ı oluşturabilirsiniz: + + + +```sh +pnpm yakıt oluştur +``` + +```sh +npm create yakıtlar +``` + + + +## Projeyi yerel olarak çalıştırma + +Proje dizinine geçin. Projeye `my-fuel-project` adını verdiğinizi varsayarsak, çalıştırabilirsiniz: + +``sh +cd my-fuel-project +``` + +Ardından, yerel bir geliştirme düğümü başlatmak için aşağıdaki komutu çalıştırın: + + + +```sh +pnpm fuels:dev +``` + +```sh +npm run fuels:dev +``` + + + +Node için yerel uç nokta `http://localhost:4000/v1/graphql` olacaktır. + +Ardından, proje dizininde yeni bir terminal açın ve ön ucu başlatmak için aşağıdaki komutu çalıştırın: + + + +```sh +pnpm dev +``` + +```sh +npm run dev +``` + + + +Ön uç [`http://localhost:3000`](http://localhost:3000) adresinde çalışacaktır. + +Yerel düğüm çalışırken, `sway-contract` klasörü içindeki Sway sözleşmesinde yaptığınız herhangi bir değişiklik otomatik olarak birkaç güncellemeyi tetikleyecektir: + +1. Sözleşme `forc build` komutu kullanılarak yeniden oluşturulur. +2. Sözleşme, `forc deploy` komutu kullanılarak yerel düğüme yeniden dağıtılacaktır. +3. Sözleşme için yeni TypeScript türleri ve yeni sözleşme kimliğini içeren `contract-ids.json` adlı bir dosya `src/sway-api` klasöründe oluşturulacaktır. + +Bu, geliştirme yaparken sözleşme kimliğini, ABI'yi veya TypeScript türlerini güncelleme konusunda endişelenmenize gerek olmadığı anlamına gelir. + +## Sonraki Adımlar + +Daha fazlasını öğrenmeye hazır mısınız? Aşağıdaki kaynaklara göz atın: + +- Tam yığın [counter contract dapp] (/guides/counter-dapp) oluşturmaya ve dağıtmaya yönelik adım adım talimatları öğrenin +- fuels CLI](/docs/fuels-ts/fuels-cli) hakkında daha fazla bilgi edinin +- Cüzdan bağlayıcıları] hakkında bilgi edinin(/docs/wallet/dev/connectors/) \ No newline at end of file diff --git a/docs/guides/docs/installation/codespace_tr.mdx b/docs/guides/docs/installation/codespace_tr.mdx new file mode 100644 index 000000000..6572f98fe --- /dev/null +++ b/docs/guides/docs/installation/codespace_tr.mdx @@ -0,0 +1,73 @@ +--- +başlık: Yakıt Github Kod Alanı +Kategori: Kurulum +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Github Codespace + +## Giriş + +Github Codespaces] (https://github.com/features/codespaces) hakkında düşünmenin yolu aslında bir tarayıcıdaki VSCode'dur. Kurulumu son derece kolay olan bir uzaktan geliştirme ortamıdır. Tüm VS Code eklentileri desteklenmese de, Sway LSP eklentisi desteklenir ve kutudan çıkar çıkmaz çalışır. + +## Yeni bir repo için nasıl kurulum yapılır + +1. Bir `devcontainer.json` dosyası oluşturun. Bunun en kolay yolu depoya gidip Code → ... → Configure dev container'a tıklamaktır + + + ![dev container walkthrough](/images/dev-container.gif) + + +2. Dosyayı aşağıdaki özellikleri içerecek şekilde düzenleyin: + + ```json + “özellikler”: { + “ghcr.io/devcontainers/features/common-utils:1”: {}, + “ghcr.io/FuelLabs/devcontainer-features/fuelup:1.0.1”: {}, + } + ``` + +3. Bu repo için yüklenmesini istediğiniz eklentileri “customizations” altına ekleyin. + + ``json + “customizations”: { + “vscode”: { + “uzantılar”: [ + “fuellabs.sway-vscode-plugin” + ] + } + } + ``` + + İşte Sway LSP eklentisini içeren örnekler. + + 3.1. [`https://github.com/FuelLabs/sway/blob/master/.devcontainer/devcontainer.json`](https://github.com/FuelLabs/sway/blob/master/.devcontainer/devcontainer.json) + + 3.2. [`https://github.com/FuelLabs/quickstart/blob/master/.devcontainer/devcontainer.json`](https://github.com/FuelLabs/quickstart/blob/master/.devcontainer/devcontainer.json) + +## Kod alanı nasıl başlatılır + +1. Github Codespaces'in yapılandırıldığı repoya gidin. +2. Kod → Master üzerinde kod alanı oluştur'u seçin + + + ![Kod alanı oluşturma izlenecek yol](/images/create-codespace.gif) + + +3. Bu, kod alanınızla birlikte yeni bir sekme açacaktır. Başlaması birkaç dakika sürebilir. + + 3.1. Artık Fuel araç zincirinin yüklü olduğu tamamen işlevsel bir uzaktan geliştirme ortamına sahipsiniz! Sway kodunu oluşturmak ve dağıtmak için `forc` veya araç zinciri sürümünü yönetmek için `fuelup` kullanabilirsiniz. Ayrıca, sözdizimi vurgulama, gezinme dokümanları, go-to tanımları vb. gibi Sway için tam özellik desteğine sahip Sway LSP eklentisine de sahipsiniz. + + 3.2. Not: Büyük bir depo üzerinde çalışıyorsanız ve kod alanının yavaş çalıştığını fark ederseniz, Code → ... → çalışan bir örnekte makine türünü değiştir seçeneğine tıklayarak veya Code → ... → New with options ile yeni bir örnek başlatarak daha büyük bir örnek kullanacak şekilde yapılandırabilirsiniz. + +### Fiyatlandırma ve faturalandırma + +Fatura bilgilerini girmeniz gerekecektir, ancak önemli bir ücretsiz katman vardır. + +## Sırada ne var? + +Artık Fuel ile oluşturmaya başlamaya hazırsınız. + +👉 İlk akıllı sözleşmenizi dağıtmak için [counter dapp guide](/guides/counter-dapp)'a göz atın. \ No newline at end of file diff --git a/docs/guides/docs/installation/index_tr.mdx b/docs/guides/docs/installation/index_tr.mdx new file mode 100644 index 000000000..124c30f12 --- /dev/null +++ b/docs/guides/docs/installation/index_tr.mdx @@ -0,0 +1,216 @@ +--- +başlık: Kurulum +Kategori: Kurulum +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Araç zinciri kurulumu + +Bu kılavuz, Fuel araç zinciri ikili dosyalarını ve önkoşullarını yüklemenize yardımcı olacaktır. + +Bu kılavuz aşağıdaki konuları kapsamaktadır: + +1. [Fuel araç zincirini `fuelup` kullanarak yükleme](#installing-the-fuel-toolchain-using-fuelup) +2. [Varsayılan araç zincirinizi değiştirme](#changing-your-default-toolchain) +3. [Yerel cüzdan kurma](#setting-up-a-local-wallet) +4. [Rust Kurulumu](#installing-rust) + +## fuelup kullanarak Fuel araç zincirini yükleme + +`fuelup` Fuel için Fuel araç zincirini yükleyen resmi paket yöneticisidir +farklı sürümler arasında kolayca geçiş yapabilmenizi sağlar. +araç zincirleri ve bunları güncel tutun. Yaygın platformlar için [`forc`](/docs/forc) ve [`fuel-core`](https://github.com/FuelLabs/fuel-core) ile Sway uygulamalarının oluşturulmasını ve bakımını daha basit hale getirir. + +> 💡 Daha fazla bilgi için [fuelup docs](https://install.fuel.network/latest/)'a göz atın. + +### `fuelup-init` çalıştırılıyor + +{/*install_fuelup:example:start*/} +Fuel araç zincirini kurmak için `fuelup-init` betiğini kullanabilirsiniz. +Bu `~/.fuelup/bin` içine `forc`, `forc-client`, `forc-fmt`, `forc-lsp`, `forc-wallet` ve `fuel-core` yükleyecektir. +{/*install_fuelup:example:end*/} + +👉 Aşağıdaki satırı terminalinize yapıştırın ve *Enter* tuşuna basın. + +{/*ANCHOR: install_fuelup_command*/} + +```sh +curl https://install.fuel.network | sh +``` + +{/*ANCHOR_END: install_fuelup_command*/} + +> 🚧 Şu anda Windows'u yerel olarak desteklemediğimizi unutmayın. Windows üzerinde `fuelup` kullanmak istiyorsanız, lütfen Linux için Windows Alt Sistemini kullanın. + +### Kurulum YOLU + +Komut dosyası indirildikten sonra otomatik olarak çalıştırılacaktır. +fuelup-init` betiği size aşağıdaki soruyu soracaktır: + +```sh +fuelup, Fuel araç zincirini yönetmek için ev dizini olarak “/home/kullanıcıadı/.fuelup” kullanır ve ikili dosyaları buraya yükler. + +Araç zincirini kullanmak için, makinenize `fuelup` ve Fuel araç zincirinin nerede bulunacağını söyleyen PATH'inizi yapılandırmanız gerekecektir. + +İzin verilirse, fuelup-init aşağıdakileri çalıştırarak PATH'inizi sizin için yapılandıracaktır: + + echo “export PATH=”$HOME/.fuelup/bin:$PATH“” >> /home/kullanıcıadı/.bashrc + +fuelup-init'in PATH değişkeninizi sizin için değiştirmesini ister misiniz? (Hayır/y) +``` + +👉 Terminalinizde `Y` tuşuna basın ve PATH'inizi değiştirmek için *Enter* tuşuna basın. + +### Kurulumun kontrol edilmesi + +Fuelup-init` betiğinin `PATH` değişkeninizi değiştirmesine izin verdikten sonra, indirilen ve kurulan paketler hakkında birçok bilgi göreceksiniz. Her şey beklendiği gibi giderse aşağıdaki mesajı göreceksiniz: + +```sh +Yakıt araç zinciri yüklü ve güncel + +fuelup 0.20.0 /home/kullanıcıadı/.fuelup/bin dosyasına yüklenmiştir. +forc ve fuel-core ikili dosyalarını içeren en son araç zincirini almak için 'fuelup toolchain install latest' komutunu çalıştırın. +Kabuğunuz için tamamlamalar oluşturmak için 'fuelup completions --shell=SHELL' komutunu çalıştırın. +``` + +👉 Kullandığınız paketin hangi sürümde olduğunu kontrol etmek için istediğiniz zaman `fuelup --version` kullanın. + +```sh + fuelup --version +``` + +Bu, mevcut `fuelup` sürümünüzün çıktısını verecektir: + +```sh +fuelup 0.21.0 +``` + +### VSCode uzantıları + +{/*install_VSCode_extensions:example:start*/} +VSCode kullanıyorsanız, [Sway extension] (https://marketplace.visualstudio.com/items?itemName=FuelLabs.sway-vscode-plugin) yüklemenizi öneririz. +{/*install_VSCode_extensions:example:end*/} + +## Varsayılan araç zincirinizi değiştirme + +Tıpkı [Rust](https://rust-lang.github.io/rustup/concepts/toolchains.html)'da olduğu gibi, Fuel birden fazla araç zincirini destekler. +Bir araç zinciri bir araçlar koleksiyonudur (derleyici, LSP, vb. gibi). +Varsayılan olarak, `fuelup` birbiriyle çalışması test edilmiş bir dizi paket içerir ve güvenilir bir araç seti sağlar. + +fuelup`ı yüklediğinizde yapılandırılan varsayılan araç zinciri, mevcut {props.fuelTestnetInlineCode} ağıyla uyumlu kararlı araç zinciri olan `latest` araç zinciridir. + +### fuelup güncelleniyor + +### Mevcut araç zincirinizi kontrol etme + +Bazen aynı anda birden fazla araç zinciri kullanmanız gerekebilir. +Hangi araç zincirini kullandığınız konusunda kafanız karışırsa endişelenmeyin, çünkü mevcut araç zincirinizi istediğiniz zaman kontrol edebilirsiniz. + +👉 Araç zincirini ve kullandığınız her aracın sürümlerini görmek için `fuelup show` komutunu çalıştırın. + +```sh +fuelup gösteri̇si̇ +``` + +Bu komut size aşağıdaki çıktıyı verecektir + +```sh +aktif araç zinciri +----------------- +beta-4-x86_64-unknown-linux-gnu (varsayılan) + forc : 0.45.0 + - forc-istemci + - forc-deploy : 0.45.0 + - forc-run : 0.45.0 + - forc-doc : 0.45.0 + - forc-explore : 0.28.1 + - forc-fmt : 0.45.0 + - forc-index : 0.20.7 + - forc-lsp : 0.45.0 + - forc-tx : 0.45.0 + - forc-cüzdan : 0.3.0 + fuel-core : 0.20.4 + fuel-core-keygen : Sürüm dizesi alınırken hata oluştu + +yakıt versiyonları +--------------- +forc : 0.45 +forc-cüzdan : 0.45 +``` + +## Yerel bir cüzdan kurma + +{/*forc_wallet_setup:example:start*/} +forc-wallet` eklentisi, `fuelup` kullanılarak yüklendiğinde varsayılan dağıtılmış araç zincirleriyle birlikte paketlenir, bu nedenle yukarıdaki talimatları izlediyseniz bunu zaten yüklemiş olmanız gerekir. + +Yeni bir cüzdanı `forc-wallet` ile başlatmak için aşağıdaki komutu çalıştırabilirsiniz: + +``console +forc cüzdan yeni̇ +``` + +Bir parola yazdıktan sonra, çıkan anımsatıcı ifadeyi kaydettiğinizden emin olun. + +Ardından, ile yeni bir cüzdan hesabı oluşturun: + +```console +forc cüzdan hesabı yeni +``` + +Bu şekilde, aşağıdaki gibi görünen bir yakıt adresi elde edersiniz: `fuel1efz7lf36w9da9jekqzyuzqsfrqrlzwtt3j3clvemm6eru8fe9nvqj5kar8`. + +Hesaplarınızı listelemeniz gerekiyorsa aşağıdaki komutu çalıştırabilirsiniz: + +```console +forc cüzdan hesapları +``` + +{/*forc_wallet_setup:example:end*/} + +## Rust Yükleniyor + +{/*install_rust:example:start*/} +Eğer `fuels` Rust SDK ile geliştirme yapmak istiyorsanız, makinenize Rust yüklemeniz gerekecektir. Rust`ı yüklemek için `rustup` aracını kullanabilirsiniz. +{/*install_rust:example:end*/} + +> Rust SDK'yı kullanmayı planlamıyorsanız Rust'ı yüklemenize gerek yoktur. + +Kabuğunuzda aşağıdaki komutu çalıştırın; bu `rustup-init.sh` dosyasını indirir ve çalıştırır, bu da platformunuz için `rustup-init` çalıştırılabilir dosyasının doğru sürümünü indirir ve çalıştırır. + +{/*ANCHOR: install_rust_command*/} + +```sh +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +{/*ANCHOR: install_rust_command*/} + +Rust araç zincirini yükleme](https://www.rust-lang.org/tools/install) hakkında daha fazla bilgi almak için resmi Rust belgelerine göz atın. + +## Sırada ne var? + +Artık Fuel ile oluşturmaya başlamaya hazırsınız. + +👉 İlk akıllı sözleşmenizi dağıtmak için [counter dapp guide](/guides/counter-dapp)'a göz atın. + +## Temellerin ötesinde + +### Özel araç zincirleri + +Kendi özel sürüm setinizi oluşturabilirsiniz, bu 'özel araç zincirleri' olarak bilinir. + +👉 Kendi özel araç zincirlerinizi nasıl kuracağınızı öğrenmek için [Fuelup docs](https://install.fuel.network/master/concepts/toolchains.html) adresini ziyaret edin. + +### Kaynaktan derleme + +Fuel paketlerini her zaman kaynaktan oluşturabilirsiniz. + +👉 Diğer kurulum türleri hakkında daha fazla bilgi almak için [Fuelup docs](https://install.fuel.network/master/installation/other.html) adresini ziyaret edin. + +### Github Kod Alanları + +Tarayıcıda bir geliştirme ortamı çalıştırmak her zaman mümkündür. + +👉 Tarayıcıda Fuel araç zincirini kullanmak için [Github Codespaces](/guides/installation/codespace) kılavuzumuzu ziyaret edin. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/checkpoint_tr.mdx b/docs/guides/docs/intro-to-predicates/checkpoint_tr.mdx new file mode 100644 index 000000000..92ea9cc7e --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/checkpoint_tr.mdx @@ -0,0 +1,56 @@ +--- +başlık: Kontrol Noktası +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Kontrol Noktası + +Adımları doğru bir şekilde izlediyseniz, `main.sw` yükleminiz aşağıdaki kod gibi görünmelidir: + + + +## Yüklemi oluşturmak + +Sözleşmenizi biçimlendirmek için şu komutu çalıştırın: + + + +```sh +forc fmt +``` + +Yüklem kökünü almak için yüklem klasörüne gidin ve çalıştırın: + + + +```sh +forc yapı +``` + +Yüklem kökünüz tam olarak şöyle olmalıdır: + +```sh +0x9cdce04cdb323e5982bbd0c07f667c6ea2b97781a8ce6f3e2d96c0e1b5acde73 +``` + +İşte bu kadar! İlk **durumsuz** merkezi olmayan uygulamanızı oluşturdunuz ve bizim onu dağıtmamız bile gerekmedi! \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/configurables_tr.mdx b/docs/guides/docs/intro-to-predicates/configurables_tr.mdx new file mode 100644 index 000000000..177d337c9 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/configurables_tr.mdx @@ -0,0 +1,30 @@ +--- +başlık: Yapılandırılabilirler +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Yapılandırılabilirler + +Yapılandırılabilirler, derleme zamanında değiştirilebilen özel sabitlerdir. Burada, yüklemdeki fonları korumaktan sorumlu imzalayıcıları ve gerekli imza sayısını tanımlayabiliriz. + +Bu bilgiler daha sonra bir işlem oluşturmadan önce SDK'lar ile yapılandırılabilir. + + + + + +İşletmelere ve kullanıcılara kendi multisig'lerini kurmalarında yardımcı olan bir multisig sağlayıcısı olduğunuzu düşünün. Bu ayrıntıları her seferinde sabit kodlamak istemezsiniz, bunun yerine kullanıcıların kendilerinin yapılandırabileceği birkaç parametre sağlarsınız. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/debugging-with-scripts-rust_tr.mdx b/docs/guides/docs/intro-to-predicates/debugging-with-scripts-rust_tr.mdx new file mode 100644 index 000000000..4342b774f --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/debugging-with-scripts-rust_tr.mdx @@ -0,0 +1,83 @@ +--- +başlık: Rust testlerinde günlük kaydı +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Rust testlerinde oturum açma + +## Rust'ta Test Şablonu Oluşturma + +Rust kullanarak kendi test şablonunuzu oluşturmak için, script proje dizinindeki `cargo-generate` ile aşağıdaki adımları izleyin: + +1. cargo-generate` programını yükleyin: + +``bash +cargo install cargo-generate --locked +``` + +{/*markdownlint-disable*/} +2. Şablonu oluşturun: +{/*markdownlint-disable*/} + + + +```bash +cargo generate --init fuellabs/sway templates/sway-test-rs --name sway-store +``` + +## Günlük kaydı + +Daha önce Sway'e giriş eğitiminde, özellikle [Rust testi bölümünde] (https://docs.fuel.network/guides/intro-to-sway/rust-sdk/) içe aktarma ve yüklem kurma konularını ele almıştık. Henüz kontrol etmediyseniz, bunu yapmanızı şiddetle tavsiye ederim. + +Aşağıdaki rust testini kopyalayıp yapıştırın: + + + + + +Şimdi, dikkatinizi buradaki kodun belirli bir bölümüne çekmek istiyorum: + + + +Artık gizli numaramızı çıkarmak için `decode_logs` çağrısı yapabiliriz, bu da yüklemlerle test ederken yapamadığımız bir şeydi. + +Testler sırasında çıktıların konsolda görünmesini sağlamak için `nocapture` bayrağını kullanabilirsiniz. + + + +```sh +cargo test -- --nocapture +``` + +Bu yöntemi hatırlamak, daha karmaşık yüklemler geliştirirken, özellikle de hata ayıklama giderek zorlaştığında çok önemlidir. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/debugging-with-scripts_tr.mdx b/docs/guides/docs/intro-to-predicates/debugging-with-scripts_tr.mdx new file mode 100644 index 000000000..20c9f04f0 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/debugging-with-scripts_tr.mdx @@ -0,0 +1,84 @@ +--- +başlık: Komut Dosyaları ile Hata Ayıklama +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Komut Dosyaları ile Hata Ayıklama + +Geliştirmenin her alanında ödünleşimler kaçınılmazdır. Daha önce de belirtildiği gibi, yüklemlerin saf olması gerektiğinden, yüklemlerle uğraşırken günlük kaydı mümkün değildir. Bu da önemli bir soruyu gündeme getirmektedir: yüklemlerde nasıl hata ayıklama yaparız? + +Bir programlama dili olan Sway, programları dört türe ayırır ve betikler de bunlardan biridir. Yüklemlerin aksine, komut dosyaları paylaşılan mantığa izin verir. + +MultiSig projemizin dışına çıkalım + +```sh +cd ../.. +``` + +ve `predicate-script-logging` adında ayrı bir proje oluşturun. + + + +```sh +forc new --predicate predicate-script-logging +``` + +Bu yeni yüklemi kopyalayıp `src/main.sw` dosyanıza yapıştırın. Bu yüklemi oluşturmaya çalışmak, günlüğe kaydetmenin geçersiz bir işlem olduğunu belirten bir hatayla sonuçlanacaktır. + + + +Bununla birlikte, program türünü bir `predicate`den bir `script`e değiştirmeyi deneyelim. + + + +Kodunuz şimdi aşağıdaki gibi görünmelidir: + + + + + +Şimdi, betiğimizi oluşturmaya çalışırsak, herhangi bir sorun olmadan derlenmesi gerekir. + + + +```sh +forc yapı +``` + +Daha sonra, bunu iş başında görmek için bir Rust şablonu oluşturacağız! \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/imports_tr.mdx b/docs/guides/docs/intro-to-predicates/imports_tr.mdx new file mode 100644 index 000000000..be3b80a8b --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/imports_tr.mdx @@ -0,0 +1,97 @@ +--- +başlık: İthalat +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# İthalat + +Predicate anahtar sözcüğü, programın bir yüklem olduğunu tanımlamak için kullanılır. + + + + + +Yüklemimizde [Sway standart kütüphanesini] (https://github.com/FuelLabs/sway/tree/master/sway-lib-std) kullanacağız. Predicate anahtar sözcüğü hariç şablon kodunu silin ve aşağıdaki içe aktarımları kopyalayın: + + + + + +## İşlemler + +MultiSig'i oluşturmak için, standart kütüphane aracılığıyla işlemden üç özel bileşen elde etmemiz gerekir: + + + +1. İşlem Tanık Verileri: Bunu işleme imza eklemek için kullanacağız. +2. İşlem Tanık Sayısı: Bu, eklenen imza sayısını belirlememize yardımcı olacaktır. +3. İşlem Kimliği: İşlemin karması. + +## Sabitler + +Sabit kütüphanesinden, yer tutucu olarak `ZERO_B256` kullanacağız. + + + +## İmzalar + +İmzalar `b512` tipinde olduğu için `b512`ye ihtiyacımız olacak. + + + +## Eliptik Eğri + +Son olarak, eliptik eğri kurtarma adresinin kısaltması olan `ec_recover_address` kullanacağız. Bu, bir veri parçasını imzalayan adresi kriptografik olarak kurtarmamızı sağlayan bir işlevdir: + +```rust +signing_address = ec_recover_address(signed_data, original_data) +``` + +Bu adım, fonları korumak ve yalnızca doğru cüzdanların gerekli imzaları sağlayabilmesini sağlamak için çok önemlidir. + + \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/index_tr.mdx b/docs/guides/docs/intro-to-predicates/index_tr.mdx new file mode 100644 index 000000000..69b747c28 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/index_tr.mdx @@ -0,0 +1,34 @@ +-- +başlık: Yüklemlere Giriş +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Predicates 101: Stateless DeFi Uygulamaları Oluşturma + +Predicates, Fuel'in durumsuz hesap soyutlamasına yaklaşımıdır. Blok zinciri alanında, sürekli olarak uzun vadede sürdürülebilir olmayan durum şişkinliğinin üstel büyümesiyle karşı karşıyayız. +Ethereum ekosisteminde, dağıtılan her sözleşme blok zincirinde süresiz olarak durum depolanmasını gerektirir. +Blok zinciri ölçeklenebilirliğine yardımcı olmak için, merkezi olmayan finans dünyası için temel olan durum minimize edilmiş uygulamaları yeniden tanımlamak için farklı yaklaşımları göz önünde bulundurmamız gerekir. + +Bu eğitim özellikle Sway dilindeki [dört program türünden] (/docs/sway/sway-program-types/) biri olan `predicate` program türüne ve giderek büyüyen bu sorunu nasıl çözebileceğimize odaklanacaktır. + +## Predicates nedir? + +Yüklemleri tek bir cümle ile tanımlamak gerekirse: + +> Yüklemler **true** veya **false** döndüren **durumsuz** programlardır. + +Bir yüklem, özel bir anahtar tarafından oluşturulan herhangi bir EOA (Harici Olarak Sahip Olunan Hesap) ile aynı olan bir Adres türü ile temsil edilir. Programın bytecode'u deterministik olarak hashlenebilir ve tamamı zincir dışı hesaplanan sıradan bir adres olarak temsil edilebilir. +Bu nedenle, bu adres varlıklar içerdiğinde, HERKES yüklemin doğru olduğunu değerlendirebilirse yüklemin arkasında kilitli olan varlıkları harcayabilir. Kodu cüzdanın özel anahtarı olarak düşünmek faydalı olabilir. + +Bu kavram hala biraz belirsizse endişelenmeyin! Proje kurulumunun bir sonraki bölümünde basit bir örneği inceleyelim. + +📚 [Sway Standart Kütüphanesi](https://fuellabs.github.io/sway/master/std/): Yararlı türler ve yöntemlerle donatılmış yerel bir kütüphane. + +🧑‍🔧 [Fuelup](https://install.fuel.network/latest/): Resmi Fuel araç zinciri yöneticisi, farklı sürümlerin yüklenmesine ve yönetilmesine yardımcı olur. + +🦀 [Fuel's Rust SDK](https://docs.fuel.network/docs/fuels-rs/): Rust kullanarak Sway sözleşmelerinizi test edin ve etkileşim kurun. + +⚡ [Fuel's TypeScript SDK](https://docs.fuel.network/docs/fuels-ts/): TypeScript kullanarak Sway sözleşmelerinizi test edin ve etkileşim kurun. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/main_tr.mdx b/docs/guides/docs/intro-to-predicates/main_tr.mdx new file mode 100644 index 000000000..c0d6b3e25 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/main_tr.mdx @@ -0,0 +1,28 @@ +--- +başlık: Ana +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Ana + +Artık tüm bileşenlere sahip olduğumuza göre, onları bir araya getirelim! + +Fonksiyonu tüm multisig'lerde çağırıp geçerli imzaların sayısını sayarak yapılandırmada belirlenen eşiği karşılayıp karşılamadığını görürüz. Varlıkların kilidinin açılıp açılamayacağını belirlemek için true veya false döndürmelidir. + + + + \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/predicate-limitations_tr.mdx b/docs/guides/docs/intro-to-predicates/predicate-limitations_tr.mdx new file mode 100644 index 000000000..d04917ba6 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/predicate-limitations_tr.mdx @@ -0,0 +1,26 @@ +--- +başlık: Yüklem Sınırlamaları +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Yüklem Sınırlamaları + +Tüm işlemlerin zincir dışı yapıldığı düşünüldüğünde, bir yüklemin yeteneklerinde doğal sınırlamalar olduğu açıktır. + +| | Yüklemler | Sözleşmeler | +|--------------------------------|------------|-----------| +| Zincir üzerindeki verilere erişin | ❌ | ✅ | +| Akıllı sözleşmelerden veri okuma | ❌ | ✅ | +| Tarih veya saati kontrol et | ❌ | ✅ | +| Blok karmasını veya numarasını oku | ❌ | ✅ | +| Giriş paralarını oku | ✅ | ✅ | +| Çıkış paralarını oku | ✅ | ✅ | +| İşlem komut dosyalarını oku | ✅ | ✅ | +| İşlem bayt kodunu oku | ✅ | ✅ | + +Bu kısıtlamalar, MultiSig'imizin sözleşmelerle etkileşimleri “onaylayamayacağı” anlamına gelir. Bununla birlikte, doğru cüzdanlar dahil olduğunda fon akışını denetleme yeteneğini korur. + +Artık bir yüklemin ne olduğuna dair temel bir anlayışa sahip olduğumuza göre, MultiSig'imizi yazmaya başlayabiliriz. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/prerequisites_tr.mdx b/docs/guides/docs/intro-to-predicates/prerequisites_tr.mdx new file mode 100644 index 000000000..116b302ae --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/prerequisites_tr.mdx @@ -0,0 +1,114 @@ +--- +başlık: Ön Koşullar +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Önkoşullar + +## Kurulum + + + + + + + + + +### Zaten `fuelup` yüklü mü? + + + +## Proje Kurulumu + +Yeni boş bir klasörle başlayın ve `multisig-predicate` olarak adlandırın. + + + +```sh +mkdir multisig-predicate +``` + +multisig-predicate` klasörüne gidin: + +```sh +cd multisig-predicate +``` + +Terminalinizde `predicate` adında yeni bir sway projesi oluşturarak başlayın: + + + +```sh +forc new --predicate yüklem +``` + +> İpucu: Öntanımlı **contract** program türü yerine **predicate** temelinde bir proje oluşturmak istediğinizi `forc`a söyleyen `--predicate` bayrağına dikkat edin. + +forc` komutundan oluşturulan proje yapınız aşağıdaki gibi olmalıdır: + + + +```sh +ağaç yüklemi +``` + +```sh +yüklem +├── Forc.toml +└── src + └── main.sw + +1 dizin, 2 dosya +``` + +Yüklem klasörünüze taşıyın: + +```sh +cd yüklem +``` + +VSCode'da, `predicate` klasörü içindeki `src` klasörüne gidin, burada `main.sw` adlı bir dosya bulacaksınız. Bu, Sway yükleminizin yazılacağı dosyadır. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-predicates/rust-sdk_tr.mdx b/docs/guides/docs/intro-to-predicates/rust-sdk_tr.mdx new file mode 100644 index 000000000..627de053e --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/rust-sdk_tr.mdx @@ -0,0 +1,288 @@ +--- +başlık: Pas Testi +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Yüklemin test edilmesi + +Hadi tekrar MultiSig projemize geri dönelim! + +```sh +cd ../../multisig-predicate/predicate +``` + +## Rust'ta Test Şablonu Oluşturma + +Daha önce yaptığımız gibi predicate proje dizininde `cargo-generate` ile bu adımları tekrar izleyin: + +1. cargo-generate` programını yükleyin: + +``bash +cargo install cargo-generate --locked +``` + +{/*markdownlint-disable*/} +2. Şablonu oluşturun: +{/*markdownlint-disable*/} + + + +```bash +cargo generate --init fuellabs/sway templates/sway-test-rs --name sway-store +``` + +## İthalat + +Şablon kodu silin ve aşağıdaki içe aktarmaları koşum dosyanıza kopyalayın. İki ana içe aktarıma dikkat etmek önemlidir: Açık nedenlerden dolayı `predicates` ve işlemleri oluşturmak için kullanacağımız `ScriptTransactionBuilder`. Bu işlemler yerel ağımıza yayınlanmadan önce imzalanmalıdır. + + + + + +Sözleşmeler için Rust testine benzer şekilde, onunla etkileşim kurmak için ABI (Application Binary Interface) yüklemini içe aktaracağız. Yükleminizin adının çalıştığınız yüklemle eşleştiğinden emin olun. + + + + + +## Kurulum + +Sway projeleri için Rust testlerine aşina iseniz, kurulumun çoğu benzer olacaktır. Setup_wallets_and_network` fonksiyonunu kopyalayıp koşum dosyanıza yapıştırın. + + + + + +Üç temel kurulum adımı şunlardır: + +1. Daha sonra testlerde göreceğiniz yapılandırılabilirler aracılığıyla multisig'imizin sahibi olarak hareket edecek cüzdanları yapılandırmak. + + + +{/*markdownlint-disable*/} +2. Varsayılan jetonu (sıfırıncı adres) ayarlayın ve her cüzdana bazı jetonlar yükleyin. +{/*markdownlint-disable*/} + + + +{/*markdownlint-disable*/} +3. Ağı işlemimizi yayınlamak için hazırlayarak, daha sonra yüklemden tokenların kilidini başarıyla açmamızı sağlar. +{/*markdownlint-disable*/} + + + +Yüklem adresi deterministik olduğundan, her seferinde farklı bir adresle konuşlandırılan akıllı sözleşmelerde yaptığımız gibi kopyalamamız gerekmez. Yüklemi oluşturmak için SDK'lardan yararlanabilir ve hatasız bir şekilde doğru adresle çalıştığımızdan emin olabiliriz! + +## Test Durumları + +### 3 imzadan geçerli 2'si + +Şimdi, gerçek dünya senaryosunu simüle etmek için yapacağımız işlem sırasını gözden geçirelim, aşağıdaki ilk testi kopyalayıp yapıştıralım ve adım adım inceleyelim: + + + + + +1. Bir grup veya birey, fonları koruyacak cüzdanları belirleyerek multisig'lerini oluşturur. +2. Yüklemi finanse etmek. +3. Bir işlem oluşturarak ve orijinal cüzdanların bunu imzalamasını sağlayarak gerektiğinde tokenların çıkarılması. +4. Yüklemdeki fonların kilidini açmak için işlemin yayınlanması. + +1. adım için, daha önce de belirtildiği gibi, gerekli imza sayısını (3'e kadar) ve fonlarımızı koruyacak 3 adresi yapılandırdığımızda. ABI içe aktarıldığında otomatik olarak bir `PredicateNameConfigurable` tipi yüklenecektir. Bizim durumumuzda bu `MultiSigConfigurables` olacaktır. Her bir yapılandırılabiliri yüklemenize yardımcı olmak için karşılık gelen bir with_configurable işlevi olacaktır. Bizim durumumuzda, `with_REQUIRED_SIGNATURES` ve `with_SIGNERS` fonksiyonlarının her ikisi de yüklenmiştir! + +Ne kadar kullanışlı! + + + +Ardından, kişiselleştirilmiş yüklem örneğimizi oluşturmak için orijinal yüklem ikilimizi yeni yapılandırılabilirlerimizle yükleyeceğiz. Basitçe `with_configurables` fonksiyonunu kullanarak yapılandırılabilirlerinizi girin ve bu bize girdilerimize dayalı benzersiz bir yüklem kökü verecektir. + + + +2. adımda, yeni oluşturulan yüklem kökümüze fon aktarmak diğer blok zinciri aktarımları kadar basittir. + + + +3. adımda, multisig sahipleri kilitli fonları kullanmaya karar verdiğinde, girdileri ve çıktıları belirten bir işlem oluştururuz. Çıktılara çok dikkat edin; yüklemden gelen tokenların nereye gideceğini, hangi yerel varlığı içerdiğini ve miktarını belirtmemiz gerekir. Esasen, yüklemin içine gönderilen orijinal temel varlığın bir kısmını çıkarıyoruz. + + + +Yapılandırılabilirlerde yapılandırılan doğru cüzdan adresleri işlemleri imzalamalıdır. Tanık verisi olarak yüklenen bu bilgi, yüklemimizi true olarak değerlendirecektir. Yeterince doğru, benzersiz imza sağlamak çok önemlidir; aksi takdirde, daha sonraki testlerde gösterildiği gibi işlem başarısız olur. Testimiz yalnızca 2 imza gerektirdiğinden, yalnızca bunları sağlamamız gerekir. + + + +Değerlendirme doğru bir şekilde yapıldıktan sonra, tek yapmamız gereken işlemi yayınlamaktır ve istenen fonlar cüzdan 1'e geri dönmelidir. + + + +### Geçerli sırasız 3'lü imza + +İkinci test olan `multisig_mixed_three_of_three` için kurulum aynı şemayı izler ve işlem imzalamasının geçerli cüzdanlar tarafından herhangi bir sırada yapılabileceğini gösterir. + + + + + +### Insufficient valid Signatures + +The same principle applies to the third test, `multisig_not_enough_signatures_fails`, where the transaction will fail if there aren't enough signatures. + + + + + +## Checkpoint + +If you have followed the previous steps correctly, your `harness.rs` test file should look like this: + + + +## Running the Tests + +To run the test located in `tests/harness.rs`, use: + + + +```sh +cargo test +``` + +If you want to print outputs to the console during tests, use the `nocapture` flag: + +```sh +cargo test -- --nocapture +``` + +Congratulations on making it this far! We've confirmed that our Multisig works. + +Predicates aren't meant to be intimidating. State-minimized DeFi applications should be the standard, rather than resorting to gas golfing or writing assembly code for these optimizations. Now that you have predicates in your toolbox, go out and explore what other state-minimized DeFi applications you can build! diff --git a/docs/guides/docs/intro-to-predicates/signature-verification_tr.mdx b/docs/guides/docs/intro-to-predicates/signature-verification_tr.mdx new file mode 100644 index 000000000..775228215 --- /dev/null +++ b/docs/guides/docs/intro-to-predicates/signature-verification_tr.mdx @@ -0,0 +1,51 @@ +--- +başlık: İmza Doğrulama +Kategori: Yüklemlere Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +## İmza Doğrulama + +Verilen her imzanın geçerliliğini kontrol eden ve geçersiz olanları reddederek tüm imzaların benzersiz olmasını sağlayan `verify_signatures()` adlı bir yardımcı işlev tanımlayalım. + +İmza doğrulama yardımcı fonksiyonunu aşağıdaki main.sw dosyanıza kopyalayın: + + + + + +Daha önce de belirtildiği gibi, her imzayı doğrulamak için işlem tanıklarını ve işlem karmasını kullanacağız ve bunları daha önce yapılandırılmış cüzdanlarla eşleştireceğiz. + +1. Parametre `i`: Bu parametre, yapılandırılabilirde tanımlanan önceden tanımlanmış bir imzalayanlar listesindeki bir imzalayanın indeksini temsil eder. İşlevin şu anda hangi imzalayanın imzasını doğrulamaya çalıştığını belirlemek için kullanılır. + +2. İmza Doğrulama Döngüsü: Fonksiyon daha sonra üç defaya kadar yinelenen bir döngüye girer. Bu döngü, imzayı işleme eklenmiş en fazla üç adet tanık verisine (imza) karşı doğrulama girişimini temsil eder. + + - İmza Kurtarma: Döngü içinde, `j` ile tanımlanan her yineleme için, `tx_witness_data::(j)` kullanarak işlemin tanık verilerinden geçerli imzayı (`current_signature`) alır. Ardından, geçerli imzayı ve işlem özetini girdi olarak alan `ec_recover_address` işlevini kullanarak bu imzayı oluşturan adresi (`current_address`) kurtarmaya çalışır. + + - Adres Eşleştirme: Adres kurtarıldıktan sonra, fonksiyon bu adresin `SIGNERS` listesindeki `i`nci imzacının adresiyle eşleşip eşleşmediğini kontrol eder. Bir eşleşme bulunursa, imzalayanlardan birinin imzasının başarıyla doğrulandığı anlamına gelir ve fonksiyon `1` döndürür. + + + +{/*markdownlint-disable*/} +3. Dönüş Değeri: Fonksiyon, `i`nci imzalayan için eşleşen bir imza bulunursa `1` döndürür ve doğrulamanın başarılı olduğunu gösterir. Üç imzaya kadar kontrol yapıldıktan sonra eşleşen bir imza bulunamazsa fonksiyon `0` döndürür ve `i`inci imzalayanın imzasının doğrulanamadığını belirtir. +{/*markdownlint-disable*/} + +Bu, esnek imza doğrulamasına olanak tanır, gerekli imzalayanlardan gelen imzaların herhangi bir sırayla sunulabileceği senaryolara uyum sağlar ve aynı cüzdandan mükerrer imzalara izin vermeden her imzanın benzersiz bir şekilde hesaba katılmasını sağlar. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/checkpoint_tr.mdx b/docs/guides/docs/intro-to-sway/checkpoint_tr.mdx new file mode 100644 index 000000000..c46c0994a --- /dev/null +++ b/docs/guides/docs/intro-to-sway/checkpoint_tr.mdx @@ -0,0 +1,73 @@ +--- +başlık: Kontrol Noktası +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Kontrol Noktası + +## Sway Sözleşmesi Kontrol Noktası + +Önceki adımları doğru bir şekilde izlediyseniz `main.sw` pazar yeri sözleşmeniz aşağıdaki gibi görünmelidir: + + + +## Sözleşmenin oluşturulması + +İşte talimatlarınızın cilalanmış bir versiyonu: + +Sözleşmenizi biçimlendirmek için şu komutu çalıştırın: + + + +```sh +forc fmt +``` + +Sözleşmenizi derlemek için sözleşme klasörüne gidin ve çalıştırın: + + + +```sh +forc yapı +``` + +Tebrikler! Sway'de başarılı bir şekilde tam bir sözleşme yazdınız! + +Derleme sonrasında sistem otomatik olarak `abi.json`, `storage_slots.json` ve `contract.bin` dosyalarını oluşturacaktır. Bu dosyaları aşağıdaki dizinde bulabilirsiniz: + +```sh +contract/out/debug/* +``` + +## Sözleşmenin dağıtılması + +Bu sözleşmenin dağıtılmasıyla ilgili ayrıntılı adımlar için resmi Fuel geliştirici counter dapp kılavuzuna bakın: +[Sözleşmeyi Dağıtın](/guides/counter-dapp/building-a-smart-contract/#deploy-the-contract) + +Dağıtmak için, forc-wallet'ı zaten kurduysanız ve hesabınızda testnet fonları varsa aşağıdaki komutu kullanın. Değilse, yukarıdaki talimatları izleyin. + +```sh +forc deploy --testnet +``` + +Dağıtımı yaptıktan sonra, sözleşme kimliğinizi `contract/out/deployments` klasöründe bulabileceksiniz. Ön uç entegrasyonu için buna ihtiyacınız olacak. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/contract-abi_tr.mdx b/docs/guides/docs/intro-to-sway/contract-abi_tr.mdx new file mode 100644 index 000000000..5b181a720 --- /dev/null +++ b/docs/guides/docs/intro-to-sway/contract-abi_tr.mdx @@ -0,0 +1,40 @@ +--- +başlık: ABI +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# ABI'nin Tanımlanması + +Daha sonra, ABI'mızı tanımlayacağız. ABI, Uygulama İkili Arayüzü anlamına gelir. Bir Sway sözleşmesinde, sözleşme içindeki tüm işlevlerin bir taslağı olarak hizmet eder. Her işlev için adını, girdi türlerini, dönüş türlerini, depolama erişim düzeyini ve ödenebilir olup olmadığını belirtmeniz gerekir. + +Sözleşmemiz için ABI aşağıdaki gibi yapılandırılmıştır. Aşağıda verilen ABI'yi `main.sw` dosyanıza yazın: + + + + + +Şu anda her bir fonksiyonun özelliklerini anlamak konusunda endişelenmeyin. “Fonksiyonlar” bölümünde ayrıntılı açıklamalara gireceğiz. + +## Fonksiyonların Yapısı + +Bir fonksiyon `fn` anahtar sözcüğü kullanılarak tanımlanır. Sway'de yılan durumu kuraldır, bu nedenle bir fonksiyonu `myFunction` olarak adlandırmak yerine `my_function` olarak adlandırırsınız. + +Fonksiyon bir değer döndürüyorsa, dönüş tipi ince bir ok kullanılarak tanımlanmalıdır. Ayrıca, fonksiyonun parametreleri varsa, bunların türleri de belirtilmelidir. Her ifadenin sonunda noktalı virgül *gereklidir*. + +Bir fonksiyon depolama alanından okuyor ya da depolama alanına yazıyorsa, `#[storage(read)]` ya da `#[storage(read, write)]` gibi ek açıklamalar kullanarak fonksiyonun üzerindeki erişim seviyesini belirtmeniz gerekir. + +Çağrıldığında para alması beklenen `buy_item` fonksiyonu gibi fonksiyonlar için `#[payable]` ek açıklaması gereklidir. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/contract-errors_tr.mdx b/docs/guides/docs/intro-to-sway/contract-errors_tr.mdx new file mode 100644 index 000000000..8b78a76db --- /dev/null +++ b/docs/guides/docs/intro-to-sway/contract-errors_tr.mdx @@ -0,0 +1,40 @@ +--- +başlık: Hatalar +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Hata İşlemeyi Tanımlama + +Genellikle enum olarak adlandırılan numaralandırmalar, birkaç olası varyanttan birini temsil edebilen bir türdür. Sözleşmemizde, özel hata mesajları oluşturmak için enumları kullanabilir ve fonksiyonlar içinde daha hassas hata işlemeyi kolaylaştırabiliriz. + +Özel hata bloğunu `main.sw` dosyanıza kopyalayın: + + + + + +Sözleşmemizde, bir hata vermek ve işlemi durdurmak isteyeceğimiz çeşitli senaryolar öngörebiliriz: + +1. Birisi bir ürün için yanlış bir para birimi kullanarak ödeme yapmaya çalışabilir. +2. Bir kişi yeterli madeni paraya sahip olmadan bir ürün satın almaya çalışabilir. +3. Sahibinden başka biri sözleşmeden para çekmeye çalışabilir. + +Her bir durum için, hatalara yönelik özel iade türleri tanımlayabiliriz: + +- IncorrectAssetId` hatası için, `AssetId` tipinde olan gönderilen varlık kimliğini döndürebiliriz. +- NotEnoughTokens` hatası durumunda, ilgili jeton sayısını belirtmek için dönüş türünü `u64` olarak tanımlayabiliriz. +- OnlyOwner` hatası için, geri dönüş değeri olarak mesajı gönderenin `Identity`sini kullanabiliriz. diff --git a/docs/guides/docs/intro-to-sway/contract-functions.mdx b/docs/guides/docs/intro-to-sway/contract-functions.mdx index 4302bae49..6301a68c0 100644 --- a/docs/guides/docs/intro-to-sway/contract-functions.mdx +++ b/docs/guides/docs/intro-to-sway/contract-functions.mdx @@ -144,31 +144,6 @@ Next, we can use the `msg_amount` function from the standard library to retrieve lang="sway" /> -To ensure the sent amount is not less than the item's price, we should retrieve the item details using the `item_id` parameter. - -To obtain a value for a specific key in a storage map, the `get` method is handy, wherein the key value is passed. For mapping storage access, the `try_read()` method is utilized. As this method produces a `Result` type, the `unwrap` method can be applied to extract the item value. - - - -In Sway, all variables are immutable by default, whether declared with `let` or `const`. To modify the value of any variable, it must be declared mutable using the `mut` keyword. Since we plan to update the item's `total_bought` value, it should be defined as mutable. - -Additionally, it's essential to ensure that the quantity of coins sent for the item isn't less than the item's price. - - - -### Updating buy storage - -We can increase the item's `total_bought` field value and subsequently reinsert it into the `item_map`. This action will replace the earlier value with the revised item. + +Bu kılavuz ilk olarak yukarıdaki tamamlanmış fonksiyonların her birini gösterecektir. Daha sonra, her bir bölümü açıklamak, belirli sözdizimini netleştirmek ve Sway'deki temel kavramları tartışmak için parçalara ayıracağız. + +## 1. Bir öğeyi listeleme + +İlk işlevimiz satıcıların bir ürünü satış için listelemesini sağlar. Öğenin fiyatını belirtebilir ve öğe hakkında harici olarak depolanan verilere başvuran bir dize sağlayabilirler. + + + +### Liste depolama alanı güncelleniyor + +İlk adım, öğenin kimliği olarak kullanılacak olan `item_counter`ın depoda artırılmasını içerir. Sway'de tüm depolama değişkenleri `storage` anahtar sözcüğü içinde yer alır, böylece netlik sağlanır ve diğer değişken adlarıyla çakışmalar önlenir. Bu aynı zamanda geliştiricilerin depolama alanına ne zaman ve nerede erişildiğini veya değiştirildiğini kolayca takip etmelerini sağlar. Sway'deki standart kütüphane, sözleşme depolamasına erişmek veya onu değiştirmek için `read()`, `write()` ve `try_read()` yöntemleri sağlar. Başlatılmamış depolama alanına erişimden kaynaklanan olası sorunları önlemek için mümkün olduğunda `try_read()` kullanılması tavsiye edilir. Bu durumda, listelenen öğelerin mevcut sayısını okuyor, değiştiriyor ve ardından iyi organize edilmiş ve çakışmasız depolama sisteminden yararlanarak güncellenmiş sayıyı depolama alanına geri depoluyoruz. + +Bir fonksiyon bir `Option` veya `Result` tipi döndürdüğünde, iç değerine erişmek için `unwrap()` fonksiyonunu kullanabiliriz. Örneğin, `try_read()` bir `Option` türü döndürür. Eğer `Some` döndürürse, içerdiği değeri alırız; ancak `None` döndürürse, sözleşme çağrısı hemen durdurulur. + + + +### Mesaj göndericisini alma + +Daha sonra, öğeyi listeleyen hesabın `Identity`sini alacağız. + +Kimlik`i elde etmek için standart kütüphaneden `msg_sender` fonksiyonunu kullanın. msg_sender` mevcut fonksiyon çağrısını başlatan varlığın adresini (bir kullanıcı adresi veya başka bir sözleşme adresi olabilir) temsil eder. + +Bu fonksiyon, OK veya hata olabilen bir enum tipi olan bir `Result` verir. Hata ile sonuçlanabilecek bir değer beklerken `Result` türünü kullanın. Örneğin, `msg_sender` durumunda, harici bir arayan söz konusu olduğunda ve jeton girdi sahipleri farklı olduğunda, arayanı tanımlamak imkansız hale gelir. Bu tür uç durumlarda, bir `Err(AuthError)` döndürülür. + +```sway +enum Result { + Tamam (T), + Err(E), +} +``` + +Sway'de, `let` veya `const` kullanarak bir değişken tanımlayabilirsiniz. + + + +İç değeri almak için `unwrap` yöntemini kullanabilirsiniz. Bu yöntem, `Result` tamamsa içerdiği değeri döndürür ve sonuç bir hataya işaret ediyorsa bir panik tetikler. + +### Yeni bir öğe oluşturma + +Item` yapısını kullanarak yeni bir öğe oluşturabilirsiniz. ID olarak depodaki `item_counter` değerini kullanın, girdi parametrelerine göre fiyatı ve meta verileri ayarlayın ve `total_bought` değerini 0 olarak başlatın. + +Owner` alanı bir `Identity` türü gerektirdiğinden, `msg_sender()`dan elde edilen sender değerini kullanmalısınız. + + + +### Bir StorageMap'i Güncelleme + +Son olarak, `insert` yöntemini kullanarak öğeyi depolama alanındaki `item_map`e ekleyin. Anahtar için aynı ID'yi kullanın ve öğeyi karşılık gelen değer olarak belirleyin. + + + +## 2. Bir ürün satın almak + +Daha sonra, alıcıların listelenen ürünleri satın almasına izin vermeyi amaçlıyoruz. Bunu başarmak için şunları yapmamız gerekecek: + +1. Alıcıdan istenen ürün kimliğini bir fonksiyon parametresi olarak kabul edin. +2. Alıcının geçerli paralarla doğru fiyatı ödediğinden emin olun. +3. Bu öğe için `toplam_satınalma` sayısını artırın. +4. Öğenin maliyetinden bir sözleşme ücreti düşer ve kalan tutarı satıcıya aktarır. + + + +### Ödemenin doğrulanması + +Standart kütüphanedeki `msg_asset_id` fonksiyonunu kullanarak işlemde transfer edilen coinlerin varlık ID'sini elde edebiliriz. + + + +Daha sonra, gönderilen varlığın doğru varlık olduğundan emin olmak için `require` deyimini kullanacağız. + +Require` deyimi iki argüman kabul eder: bir koşul ve koşul yanlış olduğunda günlüğe kaydedilen bir değer. Koşul yanlış olarak değerlendirilirse, tüm işlem geri alınır ve hiçbir değişiklik yapılmaz. + +Bu durumda koşul, `AssetId::base()` kullanılarak `asset_id`nin temel varlık kimliğiyle (temel blok zinciriyle ilişkili varsayılan varlık) eşleşip eşleşmediğini kontrol eder. Örneğin, temel blok zinciri Ethereum ise, temel varlık ETH olacaktır. + +Varlıkta bir uyumsuzluk varsa, örneğin birisi farklı bir coin kullanarak bir öğe satın almaya çalışırsa, daha önce tanımlanan özel hatayı tetikleriz ve `asset_id`yi iletiriz. + + + +Daha sonra, standart kütüphaneden `msg_amount` fonksiyonunu kullanarak işlem dahilinde alıcı tarafından iletilen madeni para miktarını alabiliriz. + + + +Gönderilen tutarın ürünün fiyatından az olmadığından emin olmak için, `item_id` parametresini kullanarak ürün ayrıntılarını almalıyız. + +Bir depolama eşlemesinde belirli bir anahtarın değerini elde etmek için, anahtar değerinin aktarıldığı `get` yöntemi kullanışlıdır. Depolama erişimini eşlemek için `try_read()` yöntemi kullanılır. Bu yöntem bir `Result` türü ürettiğinden, öğe değerini çıkarmak için `unwrap` yöntemi uygulanabilir. + + + +Sway'de, ister `let` ister `const` ile bildirilmiş olsun, tüm değişkenler varsayılan olarak değişmezdir. Herhangi bir değişkenin değerini değiştirmek için, `mut` anahtar sözcüğü kullanılarak mutable olarak bildirilmesi gerekir. Öğenin `total_bought` değerini güncellemeyi planladığımız için, bu değer mutable olarak tanımlanmalıdır. + +Ek olarak, öğe için gönderilen jeton miktarının öğenin fiyatından az olmadığından emin olmak önemlidir. + + + +### Satın alma deposu güncelleniyor + +Öğenin `total_bought` alan değerini artırabilir ve daha sonra `item_map` içine yeniden ekleyebiliriz. Bu eylem, önceki değeri revize edilmiş öğe ile değiştirecektir. + + + +### Ödeme aktarılıyor + +Son olarak, satıcıya yapılan ödemeyi işleme koyabiliriz. Varlıkların yalnızca [reentrancy saldırılarını] önlemek için tüm depolama değişiklikleri tamamlandıktan sonra aktarılması önerilir (/docs/sway/blockchain-development/calling_contracts/#handling-re-entrancy). + +Belirli bir fiyat eşiğine ulaşan öğeler için, koşullu bir `if` deyimi kullanılarak bir ücret kesilebilir. Sway`deki `if` deyimlerinin yapısı, `()` parantezleri dışında JavaScript`tekini yansıtır. + + + +Yukarıda bahsedilen if koşulunda, iletilen miktarın 100.000.000'u aşıp aşmadığını değerlendiriyoruz. 100000000` gibi büyük sayılarda netlik sağlamak için bunu `100_000_000` olarak gösterebiliriz. Bu kontratın temel varlığı ETH ise, Fuel'in 9 ondalıklı bir sistem kullandığı göz önüne alındığında bu 0,1 ETH'ye eşittir. + +Tutar 0,1 ETH'yi aşarsa, bir komisyon belirlenir ve ardından toplamdan düşülür. + +Öğenin sahibine ödemeyi kolaylaştırmak için `transfer` işlevi kullanılır. Standart kütüphaneden alınan bu işlev üç parametre gerektirir: coinlerin gönderildiği Kimlik, coinin varlık kimliği ve transfer için coin miktarı. + +## 3. Bir öğe alın + +Bir öğenin ayrıntılarını almak için, belirli bir öğe kimliği için `Item` yapısını döndüren salt okunur bir işlev oluşturabiliriz. + + + +Bir fonksiyonda bir değer döndürmek için JavaScript'e benzer şekilde `return` anahtar sözcüğünü kullanabilirsiniz. Alternatif olarak, Rust'ta olduğu gibi bu değeri döndürmek için son satırdaki noktalı virgülü atlayabilirsiniz. + +```sway +fn my_function_1(num: u64) -> u64{ + // num değişkenini döndürür + return num; +} + +fn my_function_2(num: u64) -> u64{ + // num değişkenini döndürür + num +} +``` + +## 4. Sahibi başlatın + +Bu yöntem, sözleşme için sahibin `Kimliğini` yalnızca bir kez ayarlar. + + + +Bu işlevin yalnızca bir kez, özellikle de sözleşmenin konuşlandırılmasından hemen sonra çağrılabilmesini sağlamak için, sahibinin değerinin `None` olarak ayarlı kalması zorunludur. Bu doğrulamayı, bir Option türünün `None` olup olmadığını değerlendiren `is_none` yöntemini kullanarak gerçekleştirebiliriz. + +Bu bağlamda [front running] (https://scsfg.io/hackers/frontrunning/) potansiyel riskine dikkat etmek de önemlidir, bu kod denetlenmemiştir. + + + +Mesaj göndericisi olarak `sahip`i atamak için, `Sonuç` türünü bir `Seçenek` türüne dönüştürmek gerekir. + + + +Son olarak, mesajı gönderenin `Kimliğini` döndüreceğiz. + + + +## 5. Para çekme + +withdraw_funds` fonksiyonu, sahibinin sözleşmeden birikmiş fonları çekmesine izin verir. + + + +İlk olarak, sahibin belirli bir adrese başlatıldığından emin olacağız. + + + +Ardından, fonları çekmeye çalışan kişinin gerçekten fon sahibi olduğunu doğrulayacağız. + + + +Ayrıca, standart kütüphanedeki `this_balance` fonksiyonunu kullanarak para çekme için fonların kullanılabilirliğini teyit edebiliriz. Bu fonksiyon sözleşmenin mevcut bakiyesini döndürür. + + + +Son olarak, sözleşmenin tüm bakiyesini mal sahibine aktaracağız. + + + +## 6. Toplam öğeleri alın + +Tanıtacağımız son fonksiyon `get_count`. Bu basit getter fonksiyonu, kontratın deposunda saklanan `item_counter` değişkeninin değerini döndürür. + + + +## İnceleme + +Şimdi `main.sw` dosyanızdaki `SwayStore` sözleşme uygulaması, daha önce yazdığımız diğer her şeyi takip ederek aşağıdaki gibi görünmelidir: + + + + \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/contract-imports_tr.mdx b/docs/guides/docs/intro-to-sway/contract-imports_tr.mdx new file mode 100644 index 000000000..1025cfda3 --- /dev/null +++ b/docs/guides/docs/intro-to-sway/contract-imports_tr.mdx @@ -0,0 +1,46 @@ +--- +başlık: İthalat +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# İthalat + +Sway standart kütüphanesi] (https://fuellabs.github.io/sway/master/std/), sözleşmemizde kullanabileceğimiz çeşitli yardımcı tipler ve yöntemler sağlar. Bir kütüphaneyi içe aktarmak için, `use` anahtar sözcüğünü ve `::` ad alanı niteleyicisi olarak da adlandırılan, kütüphane adlarını aşağıdaki gibi zincirlemek için kullanabilirsiniz: + + + +Ayrıca küme parantezleri kullanarak içe aktarmaları gruplandırabilirsiniz: + + + +Bu sözleşme için içe aktarılması gerekenler şunlardır. Bunu `main.sw` dosyanıza kopyalayın: + + + + + +Sonraki adımlarda bu içe aktarmaların her birinin ne işe yaradığını inceleyeceğiz. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/contract-storage_tr.mdx b/docs/guides/docs/intro-to-sway/contract-storage_tr.mdx new file mode 100644 index 000000000..c7b875223 --- /dev/null +++ b/docs/guides/docs/intro-to-sway/contract-storage_tr.mdx @@ -0,0 +1,58 @@ +--- +başlık: Depolama +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Depolama Bloğunun Tanımlanması + +Daha sonra, depolama bloğunu tanıtacağız. Burası sözleşmenizdeki tüm kalıcı durum değişkenlerini sakladığınız yerdir. + +Bir işlev içinde bildirilen ve depolama bloğuna kaydedilmeyen değişkenler, işlev yürütülmesini tamamladığında atılacaktır. Aşağıdaki depolama bloğunu `main.sw` dosyanıza ekleyin: + + + + + +Depoladığımız ilk değişken `item_counter`, 0'a ilklendirilmiş bir sayıdır. Bu sayaç, listelenen toplam öğe sayısını izlemek için kullanılabilir. + +## StorageMap + +Bir `StorageMap`, bir depolama bloğu içinde anahtar-değer çiftlerinin kaydedilmesine izin veren benzersiz bir türdür. + +Bir depolama eşlemesi tanımlamak için, hem anahtar hem de değer için türleri belirtmeniz gerekir. Örneğin, aşağıdaki örnekte, anahtar türü `u64`, değer türü ise bir `Item` yapısıdır. + + + +Burada, öğenin ID'sinden `Item` yapısına bir eşleme oluşturuyoruz. Bunu kullanarak, ID'sini kullanarak bir öğe hakkında bilgi alabiliriz. + +## Seçenekler + +Burada, `owner` değişkenini `None` olabilen ya da bir `Identity` tutabilen bir değişken olarak tanımlıyoruz. + + + +Bir değerin belirli koşullar altında potansiyel olarak null veya undefined olmasını istiyorsanız, `Option` türünü kullanabilirsiniz. Bu, `Some(value)` veya `None` değerlerinden birini alabilen bir enumdur. None` anahtar sözcüğü bir değerin olmadığını belirtirken, `Some` saklanan bir değerin varlığını belirtir. \ No newline at end of file diff --git a/docs/guides/docs/intro-to-sway/contract-structs_tr.mdx b/docs/guides/docs/intro-to-sway/contract-structs_tr.mdx new file mode 100644 index 000000000..c459aa3be --- /dev/null +++ b/docs/guides/docs/intro-to-sway/contract-structs_tr.mdx @@ -0,0 +1,54 @@ +--- +başlık: Yapılar +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Bir Öğe Yapısı Tanımlama + +Struct, JavaScript'teki bir nesneye benzer bir veri yapısı olan yapının kısaltmasıdır. Sway'de `struct` anahtar sözcüğü ile bir struct tanımlarsınız ve bir struct'ın alanlarını küme parantezleri içinde tanımlarsınız. + +Programımızın özü `items` listeleme, satma ve alma yeteneğidir. + +Şimdi `main.sw` dosyanıza yazmak için Item tipini aşağıda gösterildiği gibi tanımlayalım: + + + + + +Öğe yapısı bir kimlik, fiyat, sahibinin kimliği, öğe hakkında zincir dışı veriler için bir URL veya tanımlayıcıyı temsil eden bir dize (açıklaması ve fotoğrafları gibi) ve toplam satın alma sayısını izlemek için bir “toplam satın alınan” sayaç içerecektir. + +## Türler + +Item` yapısı üç tür kullanır: u64`, `str` ve `Identity`. + +u64`: 64 bitlik işaretsiz bir tamsayıdır. + +Sway'de dört yerel sayı türü vardır: + +- u8`: 8 bitlik işaretsiz tamsayı. +- u16`: 16 bitlik işaretsiz tamsayı. +- u32`: 32 bitlik işaretsiz tamsayı. +- u64`: 64 bitlik işaretsiz tamsayı. +- u256`: 256 bitlik işaretsiz tamsayı. + +İşaretsiz bir tamsayı, `+` veya `-` işareti olmadığı anlamına gelir ve değeri her zaman pozitif yapar. u64` Sway'de sayılar için kullanılan varsayılan türdür. + +JavaScript'te iki tür tamsayı vardır: `number` ve `BigInt`. Bu türler arasındaki temel fark, `BigInt` türünün çok daha büyük değerleri saklayabilmesidir. Benzer şekilde, Sway'deki her sayısal türün saklanabilecek maksimum değeri vardır. + +String Array`: string, Sway'de yerleşik bir ilkel tiptir. Köşeli parantezlerin içindeki sayı dizenin boyutunu gösterir. + +Kimlik: Bir kullanıcının `Adresini` ya da `Sözleşme Kimliğini` temsil eden bir enum türüdür. Sway'de, bir sözleşme ve bir EOA (Harici Olarak Sahip Olunan Hesap) belirgin bir şekilde ayırt edilir. Her ikisi de `b256` için tip güvenli sarmalayıcılardır. diff --git a/docs/guides/docs/intro-to-sway/explore-fuel_tr.mdx b/docs/guides/docs/intro-to-sway/explore-fuel_tr.mdx new file mode 100644 index 000000000..a31ba3ecc --- /dev/null +++ b/docs/guides/docs/intro-to-sway/explore-fuel_tr.mdx @@ -0,0 +1,34 @@ +--- +başlık: Yakıt Keşfi +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Sway'e giriş rehberini tamamladığınız için tebrikler! 🎉 + +Sorunlarla mı karşılaşıyorsunuz? Faydalı bir ilk adım, kodunuzu depodakilerle uyumlu hale getirmek ve herhangi bir tutarsızlığı gidermektir. Projenin deposuna [buradan] göz atın (https://github.com/FuelLabs/intro-to-sway/tree/main). 🔍 + +Başarınız için heyecanlı mısınız? Twitter'da bizimle paylaşın [@fuel_network](https://twitter.com/fuel_network). +Bunu yaparak, özel bir geliştirici topluluğuna erişim kazanabilir, yaklaşan Fuel yemeğimize davetiye alabilir ve hatta proje hakkında içeriden bilgi edinebilirsiniz. +Sürprizler için gözünüzü dört açın! 👀 + +## Yakıt üzerine inşa etmeye devam edin + +İnşa etmeye devam etmeye hazır mısınız? Aşağıdaki kaynaklardan Sway ve Fuel hakkında daha derinlemesine bilgi edinebilirsiniz: + +📘 [Sway Kitabını Okuyun](/docs/sway/) + +✨ [TypeScript SDK ile bir ön uç oluşturun](/docs/fuels-ts/) + +🦀 [Rust SDK ile testler yazın](/docs/fuels-rs/) + +📖 [Örnek Sway Uygulamalarına Bakınız](https://github.com/FuelLabs/sway-applications) + +🐦 [Sway Language'i Twitter'da takip edin](https://twitter.com/SwayLang) + +👾 [Yakıt Discorduna Katılın](https://discord.com/invite/xfpK4Pe) + +❓ [Yakıt Forumunda soru sorun](https://forum.fuel.network/) + diff --git a/docs/guides/docs/intro-to-sway/index_tr.mdx b/docs/guides/docs/intro-to-sway/index_tr.mdx new file mode 100644 index 000000000..b32ca5580 --- /dev/null +++ b/docs/guides/docs/intro-to-sway/index_tr.mdx @@ -0,0 +1,43 @@ +--- +başlık: Sway'e Giriş +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# JavaScript Geliştiricileri için Sway Diline Giriş + +JavaScript'e aşina iseniz ve blok zinciri temelleri hakkında temel bir anlayışa sahipseniz, Sway kullanarak Fuel üzerinde tam yığın merkezi olmayan uygulamaların nasıl oluşturulacağını hızlı bir şekilde kavrayabilirsiniz. Sway'in temellerini öğrendikten sonra, kendi dapp'inizi oluşturmaya başlayabileceksiniz. + +Bu eğitimde, Amazon'a benzer bir çevrimiçi pazar yeri için bir Sway sözleşmesi hazırlayacağız: + +1. Satıcılar ürünleri listeleyebilir. +2. Alıcılar bu ürünleri satın alabilir. + + +![sway uygulamasına giriş](/images/intro-to-sway.gif) + + +Akıllı sözleşmelerin zorlayıcı özelliklerinden biri değişmezlikleri ve izinsiz olmalarıdır. Bu, dağıtımından sonra tek bir kuruluşun pazarın kurallarını değiştirememesini veya ayarlayamamasını sağlar. Örneğin, bir ürün sözleşmede listelendikten sonra, dağıtıcı bu ürünün durumunu aniden değiştiremez. Benzer şekilde, bir komisyon tutarı sözleşmeye sabit olarak kodlanmışsa, sabit kalır ve ürünler için alınan komisyonda herhangi bir değişiklik yapılmasını önler. + +Ayrıca, sözleşme herkes tarafından etkileşime açık kalır. Bu evrensellik, herhangi bir kişinin izin gerektirmeden kendi özel ön uçlarını kullanarak pazaryeri ile etkileşime girmesine olanak tanır. + +Bu eğitimde dikkatimiz özellikle `contract` program türüne yöneltilecektir. Bu, Sway diline özgü [dört program türünden] (/docs/sway/sway-program-types/) sadece bir tanesidir. + +## Sway nedir? + +Sway, Fuel blok zincirinde akıllı sözleşmeler yazmak için tasarlanmış, Rust tabanlı güçlü tipli bir programlama dilidir. Rust'ın performans, kontrol ve güvenlik özelliklerinden yararlanarak, onu gaz maliyetleri ve sözleşme güvenliği için optimize edilmiş bir blok zinciri sanal makine ortamı için uygun hale getirir. + +Sway, sağlam bir derleyici ve araç zinciri ile desteklenmektedir. Bu araçlar karmaşıklıkları basitleştirir ve kodunuzun verimli, güvenli olmasını ve en iyi şekilde çalışmasını sağlar. + +Sway'i gerçekten farklı kılan şey, etrafında inşa edilen olağanüstü araç paketidir. Bu araçlar, sözleşmeleri tam yığın dapp'lere dönüştürmek için titizlikle tasarlanmıştır ve sorunsuz ve benzersiz bir geliştirici deneyimi sağlar. + +📚 [Sway Standart Kütüphanesi](https://fuellabs.github.io/sway/master/std/): Yararlı türler ve yöntemlerle donatılmış yerel bir kütüphane. + +🧑‍🔧 [Fuelup](https://install.fuel.network/latest/): Resmi Fuel araç zinciri yöneticisi, farklı sürümlerin yüklenmesine ve yönetilmesine yardımcı olur. + +🦀 [Fuel's Rust SDK](https://docs.fuel.network/docs/fuels-rs/): Rust kullanarak Sway sözleşmelerinizi test edin ve etkileşim kurun. + +⚡ [Fuel's TypeScript SDK](https://docs.fuel.network/docs/fuels-ts/): TypeScript kullanarak Sway sözleşmelerinizi test edin ve etkileşim kurun. + diff --git a/docs/guides/docs/intro-to-sway/prerequisites_tr.mdx b/docs/guides/docs/intro-to-sway/prerequisites_tr.mdx new file mode 100644 index 000000000..4b3bf8991 --- /dev/null +++ b/docs/guides/docs/intro-to-sway/prerequisites_tr.mdx @@ -0,0 +1,147 @@ +--- +başlık: Ön Koşullar +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Önkoşullar + +## Kurulum + + + + + + + + + +### Zaten `fuelup` yüklü mü? + + + +### Yakıt Cüzdanı + + + +Ayrıca bu kılavuz için Node.js/npm sürümünü {props.nodeVersion} kullandığınızdan emin olun. +Node.js sürümünüzü şu şekilde kontrol edebilirsiniz: + +```sh +düğüm -v +``` + +## Proje Kurulumu + +Yeni boş bir klasörle başlayın ve `fuel-project` olarak adlandırın. + + + +```sh +mkdir yakıt-proje +``` + +Yakıt-proje` klasörüne gidin: + +``sh +cd yakıt-projesi +``` + +Terminalinizde `contract` adında yeni bir Sway projesi oluşturarak başlayın: + + + +```sh +forc yeni̇ sözleşme +``` + +forc` komutundan oluşturulan proje yapınız aşağıdaki gibi olmalıdır: + + + +```sh +ağaç sözleşmesi̇ +``` + +```sh +sözleşme +├── Forc.toml +└── src + └── main.sw + +1 dizin, 2 dosya +``` + +Sözleşme klasörünüze taşıyın: + +```sh +cd sözleşmesi +``` + +VSCode'da `contract` klasörünü açın ve `src` klasörünün içinde `main.sw` adında bir dosya görmelisiniz. Burası Sway sözleşmenizi yazacağınız yerdir. + +Yepyeni bir sözleşme oluşturduğumuz için bu dosyadaki `contract` anahtar sözcüğü dışındaki her şeyi silebilirsiniz. + + + + + +Dosyanın ilk satırı, derleyiciye bir sözleşme mi, kod mu, yüklem mi yoksa kütüphane mi yazdığımızı bildirmek için özel olarak ayrılmıştır. Dosyayı bir sözleşme olarak tanımlamak için `contract` anahtar sözcüğünü kullanın. + diff --git a/docs/guides/docs/intro-to-sway/rust-sdk_tr.mdx b/docs/guides/docs/intro-to-sway/rust-sdk_tr.mdx new file mode 100644 index 000000000..ac8ef4cce --- /dev/null +++ b/docs/guides/docs/intro-to-sway/rust-sdk_tr.mdx @@ -0,0 +1,224 @@ +--- +başlık: Pas Testi +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Sözleşmenin test edilmesi + +## Rust'ta Test Şablonu Oluşturma + +Rust kullanarak kendi test şablonunuzu oluşturmak için, sözleşme proje dizininde `cargo-generate` ile aşağıdaki adımları izleyin: + +1. cargo-generate` programını yükleyin: + +``bash +cargo install cargo-generate --locked +``` + +{/*markdownlint-disable*/} +2. Şablonu oluşturun: +{/*markdownlint-disable*/} + + + +```bash +cargo generate --init fuellabs/sway templates/sway-test-rs --name sway-store +``` + + + +## İthalat + +Oluşturulmuş olan mevcut `harness.rs` test dosyasını değiştireceğiz. Öncelikle içe aktarımları değiştirmemiz gerekiyor. Fuel Rust SDK'yı içe aktararak, prelude içinde yer alan işlevlerin çoğunu elde edeceksiniz. + + + + + +Herhangi bir değişiklik yaptıktan sonra sözleşmelerinizi her zaman derleyin. Bu, üretilen en yeni `contract-abi` ile çalışmanızı sağlar. + +Sözleşme adınızı ve `abigen` makrosundaki ABI yolunu sözleşmenizin adıyla eşleşecek şekilde güncelleyin: + + + + + +## İşlevleri Başlatma + +Sway için testler yazarken, iki önemli nesne gereklidir: sözleşme örneği ve onunla etkileşime giren cüzdanlar. Bu yardımcı işlev, her yeni test senaryosu için yeni bir başlangıç sağlar, bu nedenle bunu test dosyanıza kopyalayın. Bu amaçla, konuşlandırılmış sözleşmeleri, sözleşme kimliğini ve oluşturulan tüm cüzdanları dışa aktaracaktır. + +Test koşum takımınızdaki `get_contract_instance` işlevini aşağıdaki işlevle değiştirin: + + + + + +## Test Durumları + +Akıllı sözleşmelerin değişmez doğası göz önüne alındığında, testlerinizdeki tüm olası uç durumları kapsaması önemlidir. +Örnek `can_get_contract_id` test durumunu silelim ve `harness.rs` dosyamızın altına bazı test durumları yazmaya başlayalım. + +### Ayar Sahibi + +Bu test durumu için, sözleşme örneğini kullanıyoruz ve SDK'nın `.with_account()` yöntemini kullanıyoruz. Bu, ilk cüzdanı taklit etmemizi sağlar. Sahibin doğru ayarlanıp ayarlanmadığını kontrol etmek için, sözleşme tarafından verilen adresin cüzdan 1'in adresiyle eşleşip eşleşmediğini görebiliriz. Daha derine inmek isterseniz, sözleşme deposuna bakmak cüzdan 1'in adresinin düzgün bir şekilde saklanıp saklanmadığını gösterecektir. + + + + + +### Ayar Sahibi Bir Kez + +Dikkatli olmamız gereken bir uç durum, mal sahibini iki kez belirleme girişimidir. Sözleşmemizin yetkisiz sahiplik transferini kesinlikle istemeyiz! Bunu ele almak için, Sway sözleşmemize aşağıdaki satırı ekledik: `require(owner.is_none(), “owner already initialized”);` +Bu, sahibin yalnızca daha önce belirlenmediğinde ayarlanabilmesini sağlar. Bunu test etmek için yeni bir sözleşme örneği oluşturuyoruz: başlangıçta, sahibi wallet 1 kullanarak ayarlıyoruz. Daha sonra sahibi cüzdan 2 ile ayarlama girişimleri başarısız olmalıdır. + + + + + +### Pazarda Alım ve Satım + +Bir akıllı sözleşmenin düzgün çalıştığından emin olmak için temel işlevlerini test etmek çok önemlidir. +Bu test için iki cüzdan kurduk: + +1. İlk cüzdan, satılık bir öğeyi listelemek için bir işlem başlatır. Bu işlem `.list_item()` metodunu çağırarak ve sattıkları ürünün hem fiyatını hem de detaylarını belirterek yapılır. +2. İkinci cüzdan, `.buy_item()` yöntemini kullanarak listelenen öğeyi satın almaya devam eder ve satın almak istedikleri öğenin dizinini sağlar. + +Bu işlemlerin ardından, işlemlerin başarılı bir şekilde yürütüldüğünü onaylamak için her iki cüzdanın bakiyelerini değerlendireceğiz. + + + + + +### Sahip Ücretlerini Geri Çekin + +En önemlisi, pazaryerinin yaratıcısı olarak, karşılığını aldığınızdan emin olmanız gerekir. Önceki testlere benzer şekilde, bir takas yapmak için ilgili işlevleri çağıracağız. Bu sefer, fon farkını alıp alamayacağınızı doğrulayacağız. + + + + + +## Kontrol Noktası + +Önceki adımları doğru bir şekilde izlediyseniz, `harness.rs` test dosyanız aşağıdaki gibi görünmelidir: + + + +## Testleri Çalıştırmak + +Testler/harness.rs` dosyasında bulunan testi çalıştırmak için aşağıdaki komutu `contract` klasörünüzün içinde çalıştırın: + + + +```sh +kargo testi̇ +``` + +Testler sırasında çıktıları konsola yazdırmak istiyorsanız, `nocapture` bayrağını kullanın: + +```sh +cargo test -- --nocapture +``` + +Artık akıllı sözleşmemizin işlevselliğinden emin olduğumuza göre, bir ön uç oluşturmanın zamanı geldi. Bu, kullanıcıların yeni pazar yerimizle sorunsuz bir şekilde etkileşime girmesine olanak tanıyacak! + diff --git a/docs/guides/docs/intro-to-sway/typescript-sdk.mdx b/docs/guides/docs/intro-to-sway/typescript-sdk.mdx index e55169292..a3864c61b 100644 --- a/docs/guides/docs/intro-to-sway/typescript-sdk.mdx +++ b/docs/guides/docs/intro-to-sway/typescript-sdk.mdx @@ -591,6 +591,7 @@ npm start ```sh Compiled successfully! + You can now view frontend in the browser. Local: http://localhost:3000 diff --git a/docs/guides/docs/intro-to-sway/typescript-sdk_tr.mdx b/docs/guides/docs/intro-to-sway/typescript-sdk_tr.mdx new file mode 100644 index 000000000..e48da91ff --- /dev/null +++ b/docs/guides/docs/intro-to-sway/typescript-sdk_tr.mdx @@ -0,0 +1,701 @@ +--- +başlık: Typescript Frontend +Kategori: Sway'e Giriş +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Ön Uç Oluşturma + +## Kurulum + +Aşağıdaki komutu kullanarak sözleşmenizle aynı ana klasörde TypeScript ile yeni bir React uygulaması başlatın. + + + +```sh +npx create-react-app frontend --template typescript +``` + +Frontend klasörüne girelim: + +```sh +cd frontend +``` + +Ardından, `frontend` klasörünüze aşağıdaki paketleri yükleyin: + + + +```sh +npm install fuels @fuels/react @fuels/connectors @tanstack/react-query +``` + +## Sözleşme türleri oluşturun + +fuels init` komutu, SDK tarafından sözleşme türleri oluşturmak için kullanılan bir `fuels.config.ts` dosyası oluşturur. +Sözleşme klasörünüzün nerede olduğunu tanımlamak için `contracts` bayrağını ve oluşturulan dosyaların nerede oluşturulmasını istediğinizi tanımlamak için `output` bayrağını kullanın. + +Yapılandırma dosyasını oluşturmak için ön uç klasörünüzde aşağıdaki komutu çalıştırın: + + + +```sh +npx fuels init --contracts ../contract/ --output ./src/contracts +``` + +Artık bir `fuels.config.ts` dosyanız olduğuna göre, sözleşmenizi yeniden oluşturmak ve türleri oluşturmak için `fuels build` komutunu kullanabilirsiniz. +Bu komutu çalıştırmak, sözleşmenizden gelen ABI JSON çıktısını yorumlayacak ve doğru TypeScript tanımlarını oluşturacaktır. +Eğer `fuel-project/counter-contract/out` klasörünü görürseniz, ABI JSON'u orada görebilirsiniz. + +fuel-project/frontend` dizini içinde çalıştırın: + + + + + +```sh +npx yakıt yapısı +``` + +Başarılı bir işlem aşağıdaki gibi çıktı vermelidir: + +```sh +Bina... +Yerleşik 'forc' ikilisini kullanarak Sway programları oluşturma +Türler oluşturuluyor... +🎉 Derleme başarıyla tamamlandı! +``` + +Şimdi yeni bir `fuel-project/frontend/src/contracts` klasörü bulabilmelisiniz. + +## Cüzdan Sağlayıcıları + +Index.tsx` dosyanızda, Fuel'in cüzdan işlevlerine yönelik özel React kancalarını etkinleştirmek için `App` bileşeninizi `FuelProvider` ve `QueryClientProvider` bileşenleriyle sarın. + +Kullanıcılarınızın uygulamanıza bağlanmak için hangi cüzdanları kullanabileceğini özelleştirmek için özel cüzdan bağlayıcılarını buradan geçirebilirsiniz. + + + + + +## Sözleşmeye bağlanma + +Ardından, `src/App.tsx` dosyasını açın ve boilerplate kodunu aşağıdaki şablonla değiştirin: + + + + + +Dosyanın üst kısmındaki `CONTRACT_ID` ifadesini daha önce dağıttığınız ve sabit olarak ayarladığınız sözleşme kimliği ile değiştirin. + + + +Cüzdanımızı dapp'a bağlamak için `@fuels/react` paketindeki React kancaları kullanılır. App` fonksiyonu içinde bu kancaları şu şekilde çağırabiliriz: + + + +UseWallet` kancasından gelen `wallet` değişkeni `FuelWalletLocked` tipine sahip olacaktır. + +Kilitli bir cüzdanı, işlem imzalayamadığınız bir kullanıcı cüzdanı olarak ve kilitsiz bir cüzdanı da özel anahtara sahip olduğunuz ve işlem imzalayabildiğiniz bir cüzdan olarak düşünebilirsiniz. + + + +useMemo` kancası, bağlı cüzdan ile sözleşmemize bağlanmak için kullanılır. + + + +## Şekillendirme + +Basit bir stil eklemek için aşağıdaki CSS kodunu kopyalayıp `App.css` dosyanıza yapıştırın. + + + + + +## UI + +Uygulamamızda iki sekmemiz olacak: biri satış için listelenen tüm öğeleri görmek için, diğeri de yeni bir satış öğesi listelemek için. + +Sekmelerimiz arasında geçiş yapmak için kullanabileceğimiz `aktif` adlı başka bir durum değişkeni kullanıyoruz. Varsayılan sekmeyi listelenen tüm öğeleri gösterecek şekilde ayarlayabiliriz. + + + +Daha sonra öğeleri göstermek ve listelemek için bileşenlerimizi oluşturabiliriz. + +## Bir Öğe Listeleme + +src` klasöründe `components` adında yeni bir klasör oluşturun. + + + +```sh +mkdir bileşenler +``` + +Ardından içinde `ListItem.tsx` adında bir dosya oluşturun. + + + +```sh +ListItem.tsx dosyasına dokunun +``` + +Dosyanın üst kısmında, `react` klasöründen `useState` kancasını, `contracts` klasöründen oluşturulan sözleşme ABI'sini ve `fuels` klasöründen `bn` (büyük sayı) türünü içe aktarın. + + + + + +Bu bileşen `App.tsx` içinde yaptığımız sözleşmeyi prop olarak alacaktır, bu yüzden bileşen için bir arayüz oluşturalım. + + + + + +Fonksiyon için şablonu şu şekilde ayarlayabiliriz. + + + + + +Bir öğeyi listelemek için, kullanıcının listelemek istediği öğenin metadata dizesini ve fiyatını girebileceği bir form oluşturacağız. +Öncelikle `metadata` ve `price` için bazı durum değişkenleri ekleyelim. Gönderme durumunu izlemek için bir `status` değişkeni de ekleyebiliriz. + + + + + +HandleSubmit` fonksiyonunu eklememiz gerekiyor. +List_item` fonksiyonunu çağırmak için sözleşme prop'unu kullanabilir ve formdan `fiyat` ve `metadata` bilgilerini aktarabiliriz. + + + + + +Başlığın altına form için aşağıdaki kodu ekleyin: + + + + + +Şimdi, çalıştığından emin olmak için bir öğe listelemeyi deneyin. +“Öğe başarıyla listelendi!” mesajını görmelisiniz. + +## Tüm Öğeleri Göster + +Ardından, `components` klasöründe `AllItems.tsx` adında yeni bir dosya oluşturalım. + + + +```sh +AllItems.tsx dosyasına dokunun +``` + +Bu bileşen için aşağıdaki şablon kodunu kopyalayıp yapıştırın: + + + + + +Burada kaç öğenin listelendiğini görmek için öğe sayısını alabilir ve ardından öğe ayrıntılarını almak için her biri arasında döngü yapabiliriz. + +İlk olarak, listelenen öğe sayısını, öğe ayrıntılarının bir dizisini ve yükleme durumunu saklamak için bazı durum değişkenleri oluşturalım. + + + + + +Daha sonra, öğeleri bir `useEffect` kancası içinde getirelim. +Bunlar salt okunur işlevler olduğundan, `call` yerine `get` yöntemini kullanarak işlemin kuru çalışmasını simüle edebiliriz, böylece kullanıcının herhangi bir şey imzalaması gerekmez. + + + + + +Eğer öğe sayısı `0`dan büyükse ve öğeleri başarılı bir şekilde yükleyebiliyorsak, bunları eşleyebilir ve bir öğe kartı görüntüleyebiliriz. + +Ürün kartı, ürün ayrıntılarını ve ürünü satın almak için bir satın alma düğmesi gösterecektir, bu nedenle sözleşmeyi ve ürünü prop olarak aktarmamız gerekecektir. + + + + + +## Ürün Kartı + +Şimdi öğe kartı bileşenini oluşturalım. +Bileşenler klasöründe `ItemCard.tsx` adında yeni bir dosya oluşturun. + + + +```sh +ItemCard.tsx dosyasına dokunun +``` + +Ardından, aşağıdaki şablon kodunu kopyalayıp yapıştırın. + + + + + +Satın al düğmesinin durumunu izlemek için bir `status` değişkeni ekleyin. + + + + + +handleBuyItem` adında yeni bir asenkron fonksiyon oluşturun. +Bu fonksiyon ödenebilir olduğundan ve madeni paraları öğe sahibine aktardığından, burada birkaç özel şey yapmamız gerekecek. + +Sway'de transfer veya mint fonksiyonlarını kullanan herhangi bir fonksiyonu çağırdığımızda, `txParams` metodu ile çağrıya eşleşen sayıda değişken çıkışı eklememiz gerekir. buy_item` işlevi sadece varlıkları öğe sahibine aktardığı için, değişken çıktı sayısı `1`dir. + +Daha sonra, bu işlev ödenebilir olduğundan ve kullanıcının öğenin fiyatını aktarması gerektiğinden, tutarı iletmek için `callParams` yöntemini kullanacağız. Fuel ile herhangi bir varlık türünü aktarabilirsiniz, bu nedenle hem tutarı hem de varlık kimliğini belirtmemiz gerekir. + + + + + +Ardından öğe ayrıntılarını ve durum mesajlarını karta ekleyin. + + + + + +Şimdi sözleşmenizde listelenen tüm kalemleri görebilmeli ve satın alabilmelisiniz. + +## Kontrol Noktası + +Aşağıdaki kodu inceleyerek tüm dosyalarınızın doğru yapılandırıldığından emin olun. Daha fazla yardıma ihtiyacınız varsa, [burada](https://github.com/FuelLabs/intro-to-sway/tree/main/frontend) deposuna bakın. + +`App.tsx` + + + +`AllItems.tsx` + + + +`ItemCard.tsx` + + + +`ListItem.tsx` + + + +## Projenizi çalıştırın + +Yakıt projesi/frontend` dizini içinde çalıştırın: + +’ --name ‘react-dapp’ --cwd ./guides-testing/fuel-project/frontend” +}} +/> + +```sh +npm start +``` + +```sh +Başarıyla derlendi! + +Artık tarayıcıda ön ucu görüntüleyebilirsiniz. + + Yerel: http://localhost:3000 + Ağınızda: http://192.168.4.48:3000 + +Geliştirme derlemesinin optimize edilmediğini unutmayın. +Bir üretim derlemesi oluşturmak için npm run build kullanın. +``` + +Ve ön uç için hepsi bu kadar! Fuel üzerinde bir dapp yarattınız! + +{/*TODO: BUNU DAHA GÜVENILIR HALE GETIRIN*/} +{/* + + + + + + + + + + + + + + + + + + + + + + +*/} \ No newline at end of file diff --git a/docs/guides/docs/migration-guide/index_tr.mdx b/docs/guides/docs/migration-guide/index_tr.mdx new file mode 100644 index 000000000..44cc10694 --- /dev/null +++ b/docs/guides/docs/migration-guide/index_tr.mdx @@ -0,0 +1,16 @@ +--- +başlık: Göç Rehberi +kategori̇: Göç Rehberi +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Geçiş Rehberi + +Fuel'in geliştirme yolculuğu boyunca, ana ağ lansmanına sorunsuz bir geçiş sağlamak için çok sayıda test ağı oluşturuldu. +Bu test aşamaları sırasında öğrenme ve uyarlamanın dinamik doğası göz önüne alındığında, kırılma değişiklikleriyle karşılaşmak yaygındır. + +## Kırılma Değişiklikleri + +Fuel araç zincirinin ve SDK'ların en son sürümlerine nasıl geçeceğinizi [Breaking Changes Log] (/guides/migration-guide/breaking-changes-log) bölümünden öğrenin. \ No newline at end of file diff --git a/docs/guides/docs/running-a-node/index_tr.mdx b/docs/guides/docs/running-a-node/index_tr.mdx new file mode 100644 index 000000000..28fd783c7 --- /dev/null +++ b/docs/guides/docs/running-a-node/index_tr.mdx @@ -0,0 +1,51 @@ +--- +title: Running a Node +category: Running a Node +parent: + label: All Guides + link: /guides +--- + +# Running a Node + +This guide is designed to swiftly introduce you to the process of running a local node for the Fuel blockchain. + +## What is a Node? + +In the context of the Fuel blockchain, a node, often referred to as a 'client', is a piece of software that downloads and maintains a copy of the Fuel blockchain. It verifies the authenticity of every block and transaction, ensuring that your copy is always up-to-date and in sync with the network. + +For the latest version of the Fuel client, please visit [here](https://github.com/FuelLabs/fuel-core). + +## Understanding the Fuel Network's Beta Testnet Consensus Mechanism + +The Fuel network's beta testnets operates on a Proof of Authority (PoA) consensus mechanism. Here's a brief overview: + +**Validators**: In PoA, there are specific entities, known as validators or "authorities", who are given the responsibility to create new blocks and validate transactions. Unlike other consensus mechanisms like Proof of Work (PoW) or Proof of Stake (PoS), where validators are chosen based on computational power or stake, PoA validators are selected based on their reputation and trustworthiness within the network. + +**Benefits** of PoA: PoA offers faster transaction times and requires less computational power, making it energy-efficient. The network's security and integrity are maintained by the trustworthiness of the selected validators. + +## Why Run Your Own Node? + +Running your own node provides several advantages: + +1. **Query Freedom:** By hosting your own node, you can execute a higher number of queries without encountering any rate limits. +2. **Network Independence:** Having your own node ensures that you're not reliant on third-party services, giving you full control over your interactions with the Fuel blockchain. + +## Hardware Requirements + +| Hardware | Minimum | Recommended | +|------------|----------|-------------| +| Processor | 2 Cores | 8 Cores | +| Memory | 4 GB | 12 GB | +| Storage | 30 GB | 100 GB | + +For low API traffic, an AWS m5.large should be more than sufficient. However, we recommend an AWS m5.4xlarge instance to match the configuration we use for running the network. + +> For regular tasks such as deploying simple contracts and testing contract interactions locally, there is no need to meet all the hardware requirements below. + +## Getting Started + +Depending on your requirements, you can opt for one of the following setups: + +1. [Run a Local Fuel Network Node:](/guides/running-a-node/running-a-local-node) This setup allows you to run a node that operates solely on your local environment. +2. [Connect to the Testnet Fuel Network:](/guides/running-a-node/running-a-testnet-node) With this setup, your local node will connect and sync with the {props.fuelTestnet} version of the Fuel network. diff --git a/docs/guides/docs/running-a-node/running-a-local-node_tr.mdx b/docs/guides/docs/running-a-node/running-a-local-node_tr.mdx new file mode 100644 index 000000000..26f8ee19b --- /dev/null +++ b/docs/guides/docs/running-a-node/running-a-local-node_tr.mdx @@ -0,0 +1,97 @@ +--- +başlık: Yerel Düğüm Çalıştırma +Kategori: Düğüm Çalıştırma +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# Yerel bir Yakıt düğümü çalıştırılıyor + +Fuel Testnet üzerinde dağıtım ve test yapmanın yanı sıra, yerel bir Fuel Node da çalıştırabilirsiniz. + +Çalıştırılabilecek iki tür Yakıt ağı vardır: + +1. Bellek içi ağ (kalıcılık olmadan) +2. Kalıcılığı olan yerel ağ + +## Bellek içi yerel düğüm (durum sürekliliği olmadan) + +Bellek içi bir düğüm, blok zinciri durumunu hiçbir yerde kalıcı hale getirmez, yalnızca düğüm aktif ve çalışır durumda olduğu sürece bellekte saklanır. + +Yerel bir bellek içi Yakıt düğümünü açmak için yerel anlık görüntüyü [buradan] (https://github.com/FuelLabs/chain-configuration/tree/master/local) indirin veya kopyalayın, ardından aşağıdaki komutu çalıştırın: + +```sh +fuel-core run --db-type in-memory --debug --snapshot ./your/path/to/chain_config_folder +``` + +Yerel düğüme bir sözleşme dağıtmak için aşağıdaki komutu çalıştırın: + +```sh +forc deploy --node-url 127.0.0.1:4000/v1/graphql +``` + +Ya da fuel-core tarafından önceden finanse edilen varsayılan imzalayıcı ile dağıtmak için: + +```sh +forc deploy --default-signer --node-url 127.0.0.1:4000/v1/graphql +``` + +## Zincir Yapılandırması + +Zincirin başlangıç durumunu değiştirmek için zincir yapılandırma klasörünüzdeki `state_config.json` dosyasını yapılandırmanız gerekir. +İşte `fuel-core`un {props.fuelCoreVersion} sürümünü kullanarak bunun nasıl göründüğüne dair bir örnek: + +Basitlik için, [repository](https://github.com/FuelLabs/chain-configuration/tree/master)'yi seçtiğiniz dizine klonlayın. + +Daha sonra `--snapshot` bayrağını kullanırken, `./your/path/to/chain_config_folder` yerine `./chain-configuration/local/` klonladığınız deponun `local` klasörünü kullanabilirsiniz. + +Düğümü özel bir yapılandırmayla başlatmak için aşağıdaki komutu kullanabilirsiniz: + +``sh +fuel-core run --snapshot ./your/path/to/chain_config_folder --db-type in-memory --debug +``` + +Belirli bir `fuel-core` sürümü için örnek bir `local` zincir yapılandırma klasörü bulmak için [`chain-configuration/local`](https://github.com/FuelLabs/chain-configuration/tree/master/local) reposuna bakın. + +### Bir cüzdanı yerel olarak fonlama + +Belirli bir adresin sahip olduğu ilk varlıkları değiştirmek için `state_config.json` içindeki `coins` dizisini düzenleyebilirsiniz. + +Sahip` adresi `Bech32` tipi (`fuel` ile başlar) yerine `B256` tipi (`0x` ile başlar) bir adres olmalıdır. + +Miktar` sayısal bir değerdir. Aşağıdaki örnekte, değer 1 ETH'ye karşılık gelir. + +``json +“coins”: [ + { + “tx_id”: “0x0000000000000000000000000000000000000000000000000000000000000001”, + “output_index”: 0, + “tx_pointer_block_height”: 0, + “tx_pointer_tx_idx”: 0, + “sahip”: “0x488284d46414347c78221d3bad71dfebcff61ab2ae26d71129701d50796f714d”, + “miktar”: 1000000000, + “asset_id”: “0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07” + } +] +``` + +## Yerel düğüm (durum sürekliliği ile) + +Bu düğüm blok zinciri durumunu yerel olarak sürdürür. +Yerel bir node'u kalıcılıkla çalıştırmak için bir zincir yapılandırma dosyası gereklidir. + +Düğümü başlatmak için aşağıdaki komutu çalıştırın: + +``sh +fuel-core run --ip 127.0.0.1 --port 4000 --snapshot ./your/path/to/chain_config_folder --db-path ./.fueldb --debug +``` + +## Bir tarayıcı cüzdanından yerel düğüme bağlanma + +Bir tarayıcı cüzdanı kullanarak yerel düğüme bağlanmak için ağ adresini şu şekilde alın: + +```sh +http://127.0.0.1:4000/v1/graphql +``` + diff --git a/docs/guides/docs/running-a-node/running-a-testnet-node_tr.mdx b/docs/guides/docs/running-a-node/running-a-testnet-node_tr.mdx new file mode 100644 index 000000000..c6ba9ecf1 --- /dev/null +++ b/docs/guides/docs/running-a-node/running-a-testnet-node_tr.mdx @@ -0,0 +1,146 @@ +--- +başlık: Testnet Düğümü Çalıştırma +Kategori: Düğüm Çalıştırma +ebeveyn: + etiket: Tüm Kılavuzlar + link: /rehberler +--- + +# P2P kullanarak Testnet'e bağlı yerel bir Yakıt düğümü çalıştırma + +## Kurulum + + + + + + + +## Sepolia (Ethereum Testnet) API Anahtarı Edinme + +{/*get_ethereum_api_key:example:start*/} +Sepolia ağını destekleyen herhangi bir RPC sağlayıcısından alınan bir API anahtarı işe yarayacaktır. Aktarıcılar, Ethereum ağından gelen olayları dinlemeye yardımcı olacaktır. Biz [Infura](https://www.infura.io/) veya [Alchemy](https://www.alchemy.com/) öneriyoruz. + +Uç noktalar aşağıdaki gibi görünmelidir: +{/*get_ethereum_api_key:example:end*/} + +### Infura + +{/*// ANCHOR: infura_key*/} + +```sh +https://sepolia.infura.io/v3/{YOUR_API_KEY} +``` + +{/*// ANCHOR_END: infura_key*/} + +### Simya + +{/*// ANCHOR: alchemy_key*/} + +```sh +https://eth-sepolia.g.alchemy.com/v2/{YOUR_API_KEY} +``` + +{/*// ANCHOR_END: alchemy_key*/} + +{/*get_ethereum_api_key_end:example:start*/} +Diğer ağ uç noktalarının kullanılmasının aktarıcının başlatılamamasına neden olacağını unutmayın. +{/*get_ethereum_api_key_end:example:end*/} + +## P2P Anahtarı Oluşturma + +{/*generate_fuel_p2p_key:example:start*/} +Aşağıdaki komutu çalıştırarak yeni bir P2P anahtar eşleştirmesi oluşturun: +{/*generate_fuel_p2p_key:example:end*/} + +{/*// ANCHOR: generate_fuel_p2p_key_command*/} + +```sh +fuel-core-keygen new --key-type peering +{ + “peer_id”:“16Uiu2HAmEtVt2nZjzpXcAH7dkPcFDiL3z7haj6x78Tj659Ri8nrs”, + “secret”:“b0ab3227974e06d236d265bd1077bb0522d38ead16c4326a5dff2f30edf88496”, + “type”: “peering” +} +### Bu özel anahtarı paylaşmayın veya kaybetmeyin! Tamamlamak için herhangi bir tuşa basın. ### +``` + +{/*// ANCHOR_END: generate_fuel_p2p_key_command*/} + +{/*generate_fuel_p2p_key_end:example:start*/} +Bunu güvenli bir yere kaydettiğinizden emin olun, böylece gelecekte yeni bir anahtar çifti oluşturmanız gerekmez. +{/*generate_fuel_p2p_key_end:example:end*/} + +## Zincir Yapılandırması + +Yerel bir düğümü kalıcılıkla çalıştırmak için aşağıdaki zincir yapılandırma dosyalarını içeren bir klasöre sahip olmanız gerekir: + +Basitlik için, [repository](https://github.com/FuelLabs/chain-configuration/tree/master)'yi seçtiğiniz dizine klonlayın. + +Daha sonra `--snapshot` bayrağını kullanırken, `./your/path/to/chain_config_folder` yerine az önce klonladığınız deponun `ignition` klasörünü `./chain-configuration/ignition/` olarak değiştirebilirsiniz. + +## Yerel Düğüm Çalıştırma + +{/*running_a_local_node:example:start*/} +Son olarak düğümü başlatmak üzere her şeyi bir araya getirmek için aşağıdaki komutu çalıştırın: +{/*running_a_local_node:example:end*/} + +```sh +yakıt-çekirdek çalışması \ +--service-name=fuel-sepolia-testnet-node \ +-anahtar çifti {P2P_PRIVATE_KEY} \ +--relayer {ETHEREUM_RPC_ENDPOINT} \ +--ip=0.0.0.0 --port=4000 --peering-port=30333 \ +--db-path=~/.fuel-sepolia-testnet \ +--snapshot ./your/path/to/chain_config_folder \ +--utxo-validation --poa-instant false --enable-p2p \ +--reserved-nodes /dns4/p2p-testnet.fuel.network/tcp/30333/p2p/16Uiu2HAmDxoChB7AheKNvCVpD4PHJwuDGn8rifMBEHmEynGHvHrf \ +--sync-header-batch-size 100 \ +--enable-relayer \ +--relayer-v2-listening-contracts=0x01855B78C1f8868DE70e84507ec735983bf262dA \ +--relayer-da-deploy-height=5827607 \ +--relayer-log-page-size=500 \ +--sync-block-stream-buffer-size 30 +``` + +{/*running_a_local_node_end:example:start*/} +Yukarıdaki her bir bayrağın tam açıklama detayları için çalıştırın: +{/*running_a_local_node_end:example:end*/} + +{/*// ANCHOR: fuel_core_help_command*/} + +```sh +fuel-core run --help +``` + +{/*// ANCHOR_END: fuel_core_help_command*/} + +## Bir tarayıcı cüzdanından yerel düğüme bağlanma + +{/*connecting_to_local_node:example:start*/} +Bir tarayıcı cüzdanı kullanarak yerel düğüme bağlanmak için ağ adresini şu şekilde içe aktarın: +{/*connecting_to_local_node:example:end*/} + +{/*// ANCHOR: connecting_to_local_node_endpoint*/} + +```sh +http://0.0.0.0:4000/v1/graphql +``` + +{/*// ANCHOR_END: connecting_to_local_node_endpoint*/} +