diff --git a/docusaurus.config.js b/docusaurus.config.js index 54831885..5dc78fef 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -247,10 +247,10 @@ const config = { ], require.resolve("docusaurus-plugin-image-zoom"), ], - // i18n: { - // defaultLocale: "en", - // locales: ["en", "fr"], - // }, + i18n: { + defaultLocale: "en", + locales: ["en", "tr"], + }, }; module.exports = config; diff --git a/i18n/tr/code.json b/i18n/tr/code.json new file mode 100644 index 00000000..60256966 --- /dev/null +++ b/i18n/tr/code.json @@ -0,0 +1,387 @@ +{ + "untranslated-page-text": { + "message": "Bu sayfa çevrilmedi. Lütfen sayfanın altındaki bağlantıyı kullanarak çeviriye yardımcı olun." + }, + "theme.ErrorPageContent.title": { + "message": "Sayfa çöktü.", + "description": "Sayfa çöktüğü zaman gösterilecek fallback (yedek) sayfanın başlığı." + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Yeniden dene", + "description": "Sayfa çöktüğü zaman 'yeniden dene' butonunda yazacak metin." + }, + "theme.NotFound.title": { + "message": "Sayfa Bulunamadı", + "description": "404 hata sayfasının başlığı" + }, + "theme.NotFound.p1": { + "message": "Aradığınız şeyi bulamadık.", + "description": "404 hata sayfasının ilk paragrafı" + }, + "theme.NotFound.p2": { + "message": "Lütfen sizi orijinal URL'ye yönlendiren sitenin sahibiyle iletişime geçin ve bağlantısının bozuk olduğunu bildirin.", + "description": "404 hata sayfasının ikinci paragrafı" + }, + "theme.admonition.note": { + "message": "not", + "description": "Not uyarı bloğu (:::note) için varsayılan olarak kullanılan etiket" + }, + "theme.admonition.tip": { + "message": "ipucu", + "description": "İpucu uyarı bloğu (:::tip) için varsayılan olarak kullanılan etiket" + }, + "theme.admonition.danger": { + "message": "tehlike", + "description": "Tehlike uyarı bloğu (:::danger) için varsayılan olarak kullanılan etiket" + }, + "theme.admonition.info": { + "message": "bilgi", + "description": "Bilgi uyarı bloğu (:::info) için varsayılan olarak kullanılan etiket" + }, + "theme.admonition.caution": { + "message": "dikkat", + "description": "Dikkat uyarı bloğu (:::caution) için varsayılan olarak kullanılan etiket" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Sayfa başına dön", + "description": "Sayfa başına dön butonunun ARIA etiketi" + }, + "theme.blog.archive.title": { + "message": "Arşiv", + "description": "Blog arşiv sayfasının başlığı" + }, + "theme.blog.archive.description": { + "message": "Arşiv", + "description": "Blog arşiv sayfasının açıklaması" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog gönderi sayfası navigasyonu", + "description": "Blog sayfalama işlemi için ARIA etiketi" + }, + "theme.blog.paginator.newerEntries": { + "message": "Yeni Girdiler", + "description": "Daha yeni blog gönderileri sayfasına (önceki sayfa) gitmek için kullanılan etiket" + }, + "theme.blog.paginator.olderEntries": { + "message": "Eski Girdiler", + "description": "Daha eski blog gönderileri sayfasına (sonraki sayfa) gitmek için kullanılan etiket" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog gönderi sayfası navigasyonu", + "description": "Blog gönderileri sayfalaması için ARIA etiketi" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Daha Yeni Gönderi", + "description": "Daha yeni/önceki gönderiye gitmek için kullanılan blog gönderisi buton etiketi" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Daha Eski Gönderi", + "description": "Daha eski/sonraki gönderiye gitmek için kullanılan blog gönderisi buton etiketi" + }, + "theme.blog.post.plurals": { + "message": "Bir gönderi|{count} gönderi", + "description": "\"{count} gönderi\" için çoğul etiket. Dilinizin desteklediği kadar çoğul biçimini (\"|\" ile ayrılmış) kullanın. (https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "\"{tagName}\" ile etiketlenmiş {nPosts}", + "description": "Blog etiketi sayfası başlığı" + }, + "theme.tags.tagsPageLink": { + "message": "Tüm Etiketleri Görüntüle", + "description": "Etiket listesi sayfasına yönlendiren linkin etiketi" + }, + "theme.colorToggle.ariaLabel": { + "message": "Koyu ve açık mod arasında geçiş yap (şu anda {mode})", + "description": "Navbar renk modu değiştirici için ARIA etiketi" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "koyu mod", + "description": "Koyu renk modu için isim" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "açık mod", + "description": "Açık renk modu için isim" + }, + "theme.docs.breadcrumbs.home": { + "message": "Ana Sayfa", + "description": "Ekmek kırıntıları navigasyonunda ana sayfa için ARIA etiketi" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Ekmek Kırıntıları", + "description": "Ekmek kırıntıları navigasyonu için ARIA etiketi" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} öğe", + "description": "Kategoride kaç öğe olduğunu gösteren varsayılan kategori kartı açıklaması" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Dokümanlar sayfası navigasyonu", + "description": "Dokümanlar sayfalama işlemi için ARIA etiketi" + }, + "theme.docs.paginator.previous": { + "message": "Önceki", + "description": "Önceki dokümana gitmek için kullanılan etiket" + }, + "theme.docs.paginator.next": { + "message": "Sonraki", + "description": "Sonraki dokümana gitmek için kullanılan etiket" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "Bir doküman etiketlendi|{count} doküman etiketlendi", + "description": "\"{count} doküman etiketlendi\" için çoğul etiket. Dilinizin desteklediği kadar çoğul biçimini (\"|\" ile ayrılmış) kullanın. (https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "\"{tagName}\" ile etiketlenmiş {nDocsTagged}", + "description": "Dokümanlar etiketi sayfası başlığı" + }, + "theme.docs.versionBadge.label": { + "message": "Versiyon: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "Bu, {siteTitle} {versionLabel} sürümü için yayınlanmamış dokümantasyondur.", + "description": "Kullanıcılara yayınlanmamış bir döküman sürümünde olduklarını söyleyen etiket" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "Bu, {siteTitle} {versionLabel} dokümantasyonudur ve bakımı sonlanmıştır.", + "description": "Kullanıcılara bakımı yapılmayan bir döküman sürümünde olduklarını söyleyen etiket" + }, "theme.docs.versions.latestVersionLinkLabel": { + "message": "en son sürüm", + "description": "En son sürüm önerisi linki için kullanılan etiket" + }, + "theme.common.editThisPage": { + "message": "Bu sayfayı düzenle", + "description": "Mevcut sayfayı düzenlemek için kullanılan link etiketi" + }, + "theme.common.headingLinkTitle": { + "message": "Başlığa doğrudan bağlantı", + "description": "Başlığa yönlendiren linkin başlığı" + }, + "theme.lastUpdated.atDate": { + "message": " {date} tarihinde", + "description": "Bir sayfanın en son ne zaman güncellendiğini açıklamak için kullanılan ifade" + }, + "theme.lastUpdated.byUser": { + "message": " {user} tarafından", + "description": "Bir sayfanın en son kim tarafından güncellendiğini açıklamak için kullanılan ifade" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "En son{atDate}{byUser} güncellendi", + "description": "Bir sayfanın en son ne zaman ve kim tarafından güncellendiğini açıklayan cümle" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versiyonlar", + "description": "Mobil görünümde navigasyon versiyonları açılır menüsü için etiket" + }, + "theme.common.skipToMainContent": { + "message": "Ana içeriğe geç", + "description": "Klavye (Tab/Enter) kullanarak ana içeriğe hızla gitmeyi sağlayan erişilebilirlik etiketi" + }, + "theme.tags.tagsListLabel": { + "message": "Etiketler:", + "description": "Etiket listesi başlığı" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Kapat", + "description": "Duyuru çubuğunun kapatma tuşunun ARIA etiketi" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog son gönderiler navigasyonu", + "description": "Blog kenar çubuğundaki son gönderilerin ARIA etiketi" + }, + "theme.CodeBlock.copied": { + "message": "Kopyalandı", + "description": "Kod bloklarındaki 'kopyalandı' butonunun etiketi" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Kodu panoya kopyala", + "description": "Kod bloğu kopyalama butonunun ARIA etiketi" + }, + "theme.CodeBlock.copy": { + "message": "Kopyala", + "description": "Kod bloklarındaki 'kopyala' butonunun etiketi" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Satır kaydırma özelliğini aç/kapat", + "description": "Kod bloğu satırı kaydırma butonunun başlık (title) özelliği" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Daraltılabilir kenar çubuğu kategorisi olan '{label}' öğesinin durumunu değiştir", + "description": "Daraltılabilir kenar çubuğu kategorisini açmak/kapatmak için kullanılan ARIA etiketi" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Diller", + "description": "Mobil dil değiştirici açılır menüsünün etiketi" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "Bu sayfada", + "description": "Daraltılabilir İçindekiler (TOC) bileşeninin üzerindeki butonun etiketi" + }, + "theme.blog.post.readMore": { + "message": "Daha Fazla", + "description": "Blog gönderisi kesitlerinden tam blog gönderilerine bağlanmak için kullanılan etiket" + }, + "theme.blog.post.readMoreLabel": { + "message": "{title} hakkında daha fazla oku", + "description": "Kesitlerden tam blog gönderilerine bağlanan bağlantının ARIA etiketi" + }, + "theme.blog.post.readingTime.plurals": { + "message": "{readingTime} dakikalık okuma|{readingTime} dakikalık okuma", + "description": "\"{readingTime} dakikalık okuma\" için çoğul etiket. Dilinizin desteklediği kadar çoğul biçimini (\"|\" ile ayrılmış) kullanın. (https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + } , + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Kenar çubuğunu daralt", + "description": "Dokümanlar kenar çubuğunu daraltma butonu için 'title' niteliği" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Kenar çubuğunu daralt", + "description": "Dokümanlar kenar çubuğunu daraltma butonu için ARIA etiketi" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Ana menüye dön", + "description": "Mobil navigasyon çubuğu ikincil menüsündeki (dokümanlar kenar çubuğunu görüntülemek için kullanılır) ana menüye dönmek için kullanılan geri butonunun etiketi" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Kenar çubuğunu genişlet", + "description": "Dokümanlar kenar çubuğunu genişletme butonu için ARIA etiketi ve 'title' niteliği" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Kenar çubuğunu genişlet", + "description": "Dokümanlar kenar çubuğunu genişletme butonu için ARIA etiketi ve 'title' niteliği" + }, + "theme.SearchBar.seeAll": { + "message": "{count} sonuçları gör", + "description": "Dolu bir arama sonucu için \"Tümünü gör\" butonu etiketi" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "Bir döküman bulundu|{count} döküman bulundu", + "description": "\"{count} döküman bulundu\" için çoğul etiket. Dilinizin desteklediği kadar çoğul biçimini (\"|\" ile ayrılmış) kullanın. (https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Arama sonuçları", + "description": "Boş olmayan sorgu için arama sayfası başlığı" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Dokümanlarda ara", + "description": "Boş sorgu için arama sayfası başlığı" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Aramanızı buraya yazın", + "description": "Arama sayfası giriş alanının yer tutucusu (placeholder)" + }, + "theme.SearchPage.inputLabel": { + "message": "Ara", + "description": "Arama sayfası giriş alanının ARIA etiketi" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Algolia ile Ara", + "description": "Algolia'dan bahsedildiğinde kullanılan ARIA etiketi" + }, + "theme.SearchPage.noResultsText": { + "message": "Hiçbir sonuç bulunamadı", + "description": "Boş arama sonuçları için gösterilen paragraf" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Yeni sonuçlar getiriliyor...", + "description": "Yeni arama sonuçları getirilirken gösterilen paragraf" + }, + "theme.SearchBar.label": { + "message": "Ara", + "description": "Arama butonu için ARIA etiketi ve yer tutucusu (placeholder)" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Sorguyu temizle", + "description": "Arama kutusunun temizle düğmesi için kullanılan etiket ve ARIA etiketi" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "İptal", + "description": "Arama kutusunun iptal düğmesi için kullanılan etiket ve ARIA etiketi" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Son Aramalar", + "description": "Son aramalar için başlık" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "Son arama yok", + "description": "Son arama olmadığında gösterilen metin" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Bu aramayı kaydet", + "description": "Son aramayı kaydetme butonu için kullanılan etiket" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Bu aramayı geçmişten kaldır", + "description": "Son aramayı geçmişten kaldırma butonu için kullanılan etiket" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favoriler", + "description": "Favori aramalar için başlık" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Bu aramayı favorilerden kaldır", + "description": "Favori aramayı favorilerden kaldırma butonu için kullanılan etiket" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Sonuçlar getirilemiyor", + "description": "Arama modalinin hataata ekranının başlığı" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "İnternet bağlantınızı kontrol etmek isteyebilirsiniz.", + "description": "Arama modalinin hata ekranının yardımcı metni" + }, + "theme.SearchModal.footer.selectText": { + "message": "seçmek için", + "description": "Enter (giriş) tuşu ile seçim yapmak için açıklayıcı metin" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter tuşu", + "description": "Seçim yapan Enter tuşu butonu için ARIA etiketi" + }, + "theme.SearchModal.footer.navigateText": { + "message": "gezinmek için", + "description": "Yukarı ve Aşağı ok tuşları ile gezinmeyi açıklayan metin" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Yukarı ok tuşu", + "description": "Gezinme yaptıran Yukarı ok tuşu butonu için ARIA etiketi" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Aşağı ok tuşu", + "description": "Gezinme yaptıran Aşağı ok tuşu butonu için ARIA etiketi" + }, + "theme.SearchModal.footer.closeText": { + "message": "kapatmak için", + "description": "Escape (çıkış) tuşu ile kapatmayı açıklayan metin" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape tuşu", + "description": "Modali kapatan Escape tuşu butonunun ARIA etiketi" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Arama sağlayan", + "description": "Aramanın Algolia tarafından gerçekleştirildiğini açıklayan metin" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "Aşağıdakiler için sonuç yok", + "description": "Yapılan arama sonucunda sonuç çıkmadığını açıklayan metin" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Şunları aramayı deneyin", + "description": "Yapılan aramayla ilgili önerilen sorgu metni" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Bu sorgu sonuç döndürmeli mi?", + "description": "Kullanıcın sonuc çıkmadıgını düşündüğü yerdeaki metin" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Bize iletin.", + "description": "Sonuç çıkmadıgını iletmeye yarayanan bağlantı metni" + }, + "theme.SearchModal.placeholder": { + "message": "Dokümanlarda ara", + "description": "DocSearch açılır modalindeki girdinin yer tutucusu (placeholderceholder)" + }, + "theme.tags.tagsPageTitle": { + "message": "Etiketler", + "description": "Etiket liste sayfasının başlığı" + } +} diff --git a/i18n/tr/docusaurus-plugin-content-docs/current.json b/i18n/tr/docusaurus-plugin-content-docs/current.json new file mode 100644 index 00000000..ba64116e --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,54 @@ +{ + "version.label": { + "message": "Sonraki", + "description": "Yan tarafta mevcut sürüm için etiket" + }, + "sidebar.tutorialSidebar.category.Full Node": { + "message": "Tam Düğüm (Full Node)", + "description": "Yan tarafta 'Tam Düğüm' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Building dApps": { + "message": "dApps Oluşturma", + "description": "Yan tarafta 'dApps Oluşturma' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Ralph Language": { + "message": "Ralph Dili", + "description": "Yan tarafta 'Ralph Dili' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Wallet": { + "message": "Cüzdan", + "description": "Yan tarafta 'Cüzdan' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Desktop Wallet": { + "message": "Masaüstü Cüzdan", + "description": "Yan tarafta 'Masaüstü Cüzdan' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Extension wallet": { + "message": "Eklenti Cüzdanı", + "description": "Yan tarafta 'Eklenti Cüzdanı' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Integration": { + "message": "Entegrasyon", + "description": "Yan tarafta 'Entegrasyon' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Mining": { + "message": "Madencilik", + "description": "Yan tarafta 'Madencilik' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Network": { + "message": "Ağ", + "description": "Yan tarafta 'Ağ' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Explorer Backend": { + "message": "Explorer Arka Ucu (Backend)", + "description": "Yan tarafta 'Explorer Backend' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Tokens": { + "message": "Jetonlar", + "description": "Yan tarafta 'Jetonlar' kategorisi için etiket" + }, + "sidebar.tutorialSidebar.category.Misc": { + "message": "Çeşitli", + "description": "Yan tarafta 'Çeşitli' kategorisi için etiket" + } +} diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/5min-overview.md b/i18n/tr/docusaurus-plugin-content-docs/current/5min-overview.md new file mode 100644 index 00000000..eef57cf6 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/5min-overview.md @@ -0,0 +1,210 @@ +--- +sidebar_position: 0 +sidebar_label: Genel Bakış +slug: / +title: Alephium Genel Bakış +--- + +## Alephium Nedir? + +**Geliştiriciler için Ölçeklenebilir. Kullanıcılar için Güvenli. Herkes için Merkeziyetsiz.** + +Yenilikçi sharding, ifade edici sUTXO ve etkin Az İş Kanıtı ile gerçek dünya kullanım durumları için ölçeklenebilir dApps'leri güvence altına alıyor. + +--- + +## Alephium'u Özel Yapan Nedir? + +Harika bir ekip, olağanüstü bir topluluk ve çok fazla enerjinin yanı sıra, işte teknik özelliklerimiz: + +**Sharding ile ölçeklenir**. Alephium, BlockFlow adlı yeni ve bütün bir sharding algoritması üzerine inşa edilmiştir. BTC'nin UTXO modelini ölçeklendirmek için iyileştirir ve farklı shardlar arasında uzlaşma sağlamak için DAG veri yapısını kullanır. Bu, Şu anda Bitcoin'in 7 TPS'sine kıyasla 10.000 İşlem/s'ye kadar izin verecektir (şu anda 400 TPS'den fazla). + +**Programlanabilir ve güvenli**. Alephium, ETH üzerinde uygulanan hesap modeli kadar programlanabilirlik sunan bir durumlu UTXO modeli önerirken daha güvenlidir. + +**POLW sayesinde daha az enerji tüketiyor**. Az İş Kanıtı, yeni blokları madencilik için gereken işi dinamik olarak ayarlamak için fiziksel işi ve Coin ekonomisini birleştirir. Aynı ağ koşulları verildiğinde, Alephium Bitcoin'e kıyasla enerjinin sadece 1/8'ini kullanır. + +**Kendi özel VM'si (Alphred) ile zincir yapısını iyileştiriyor**. Güvenlik, geliştirme deneyimi ve güvenilmez P2P akıllı sözleşme işlemleri gibi yeni paradigma tanıtımlarıyla mevcut dApps platformlarının birçok eleştirisini çözer. + +**dApps için kendi programlama diline sahiptir**. Ralph, isminden de anlaşılacağı gibi Rust sözdizimine benzer. Örneğin Solidity'den daha kolay ve güvenli akıllı sözleşmeler oluşturmayı sağlar. Merkezi Olmayan Finans uygulamalarının oluşturulmasını kolaylaştırmak için özel olarak tasarlanmıştır! + +Tüm bu yenilikleri bir araya getirerek, Alephium endüstride çok talep edilen bir çözüm sunar: güvenilir, güçlü ve güvenli DeFi ve dApps yetenekleri sunan Bitcoin'den olgun fikirleri iyileştiren ölçeklenebilir bir blockchain. Ve canlıyız! + +**[Whitepaper'larımızı][whitepaper] kontrol edin!** + +--- + +## Token Ekonomimiz + +Alephium'daki token arzı, 1 milyarlık bir hard cap ile sınırlıdır. Ana Ağ Başlatma Tarihi'nde (8 Kasım 2021), 140M tokenlik başlangıç arzı (hard cap'in %14'ü) genesis bloğu ile çıkarıldı. Kalan ALPH token arzı yaklaşık 80 yıl içinde çıkarılacaktır. Bu 140M tokenin: + +80M token (8%) 🤝 **Ön satışlar ve gelecekteki stratejik özel satışlar**. 2 ile 4 yıl arasında değişen kilitleme süreleri. + +30M token (3%) 💡 **Topluluk ve ekosistem geliştirme**. 4 yıl boyunca zincir üzerinde kilitli ve her çeyrekte kilitleme. + +30M token (3%) 🧑‍💻 **Hazine & Ekip**. 3 yıl boyunca zincir üzerinde kilitli ve her çeyrekte kilitleme. + +860M token (86%) 🌊 **Madencilik Ödülleri**. Bu tokenler önümüzdeki yaklaşık 80 yıl boyunca madencilik ödülleri için kullanılacaktır. Bunlar, Alephium blockchain'de işlemlerin işlenmesini ve akıllı sözleşmelerin yürütülmesini sağlar. + +Ayrıca, tüm işlem ücretleri her blokta yakılır ve Hash oranı ve enerji tüketimi önemli ölçüde yüksek olduğunda iç madencilik maliyetini POLW ile sağlar. + + +### Toplam Arz ve Dolaşımdaki Arz + +Toplam Arz, Genesis Bloğu'nda çıkarılan tokenlerin (yukarıdaki dağılıma bakınız) ve Ana Ağ Başlatma Tarihi'nden bu yana blok ödüllerinin toplanmasıyla hesaplanır. + +Alephium, CMC yöntemini kullanarak ALPH'nin dolaşımdaki arzını hesaplar. Bu, var olan tüm ALPH'nin (özel satış yatırımcılarının kilitleme ve kilidini açma dahil) toplamından, hazine, ekosistem, danışmanlar/sözleşmeli çalışanlar, proje tarafından kontrol edilen varlıklar ve diğer adreslerdeki tüm kilitli ALPH'ler çıkarılarak yapılır. +Genel olarak, dolaşımdaki arzımızı [explorer](https://explorer.alephium.org/#/blocks) sayfamızın ana sayfasında bulabilirsiniz. Coin Market Cap metodolojisinin daha detaylı bir açıklamasını istiyorsanız, [buradan](https://support.coinmarketcap.com/hc/en-us/articles/360043396252-Supply-Circulating-Total-Max-) bulabilirsiniz. + +Eğer endpoint'lere ihtiyacınız varsa, onları buradan bulabilirsiniz: [Toplam Arz](https://mainnet-backend.alephium.org/infos/supply/total-alph) = [Dolaşımdaki Arz](https://mainnet-backend.alephium.org/infos/supply/circulating-alph) + [Rezerv Arz](https://mainnet-backend.alephium.org/infos/supply/reserved-alph) + [Kilitli ALPH](https://mainnet-backend.alephium.org/infos/supply/locked-alph) + +**Tokenomics Medium makalemizde daha fazla detay bulabilirsiniz.** + +--- + +## Eğer bir geliştiriciyseniz, buradan başlayın + +En son [GitHub'daki düğüm sürümümüzü][node-release] bulun. + +Ana projelerimize keşfedin ve katkıda bulunun [GitHub'da][github]: + +- [Tam düğüm][full-node] +- [Masaüstü cüzdanı][desktop-wallet] +- [Mobil cüzdan][mobile-wallet] +- [Araştırıcı][explorer] +- [Web3 SDK][web3-sdk] +- [Uzantı Cüzdanı][extension-wallet-repo] +- [Cüzdan Bağlantısı][walletconnect-repo] +- [Köprü][wormhole-fork-repo] +- [Harika Alephium][awesome] +- [Dokümantasyon][docs] + +### Alephium üzerinde bir şey mi inşa ediyorsunuz? + +İlk olarak [Web3 SDK][web3-sdk] ile başlayın ve eğer bir dApp inşa ediyorsanız, [buraya](./dapps/Getting-Started) gidin. Yayınlandığında, projenizi [Harika Alephium][awesome] eklemek için bir PR göndererek herkese bildirin! Alephium [Marka Kılavuzu][brand-guide] ayrıca işinize yarayabilir. + +[Ödül ve Hibeler Programı][reward-grant] + +## Eğer bir madenciseniz, buradan başlayın + +İlk olarak, Discord'taki [Madencilik kanalına katılarak][mining-discord] başlayın. + +GitHub'daki [Madenci başlangıç paketimizi][miner-starter-pack] bulun. + +Ve özel depolar: + +- https://github.com/alephium/gpu-miner +- https://github.com/alephium/fpga-miner +- https://github.com/alephium/mining-pool + +İşte [tek başına madenciliğe nasıl başlanır][solo-mining-video] videomuz. + +Ve eğer bir havuza katılmak isterseniz, [Havuz Madenciliği Kılavuzunda](./mining/pool-mining-guide) mevcut havuzların listesini bulacaksınız. + +--- + +## Kilometre Taşları ve Yol Haritası + +[Tamamlanan Kilometre Taşları][milestones] + +[Yol Haritası][roadmap] + +--- + +## [Satın Al/Sat][markets] + +⚠️ Bazı çiftlerin likiditesi düşüktür, bir varlık veya köprüleme seçerken her zaman likiditeyi kontrol edin. + +--- + +## Alephium Topluluğuna Katılın! + +### Konuşun + +- [Discord][discord] +- [Telegram][telegram] +- [Reddit][reddit] + +### Bağlantı Kurun + +- [Twitter][twitter] +- [LinkedIn][linkedin] +- [Facebook][facebook] + +### Okuyun, kurun, keşfedin, katkıda bulunun + +- [Website][website] +- [Whitepaper'lar][whitepaper] +- [Medium][medium] +- [GitHub][github] + +--- + +## Resmi Olmayan İçerikler ve Topluluklar + +:::info +Alephium tarafından denetlenmemiş, onaylanmamış veya yönetilmemiştir +::: + +Tüm uluslararası kanal listesini [burada](./misc/Internationalization-and-Localization) bulabilirsiniz. + +### Youtube + +- [Youtube 🌎](https://www.youtube.com/playlist?list=PL8q8n0BHJS1Nd0nxGfsNJzNnAeHoXhezz) +- [Youtube 🇧🇷](https://www.youtube.com/playlist?list=PL8q8n0BHJS1PiisJCIWqeOsd20dsMtJIg) +- [Youtube 🇨🇳](https://www.youtube.com/playlist?list=PL8q8n0BHJS1O931vGMfFb0Qx3gFKhd4bD) +- [Youtube 🇩🇪](https://www.youtube.com/playlist?list=PL8q8n0BHJS1OtYdw8lKeke6nNSSfASzZq) +- [Youtube 🇮🇳](https://www.youtube.com/playlist?list=PL8q8n0BHJS1PBoCF0L2TfeWYC8b7DeTAn) +- [Youtube 🇮🇩](https://www.youtube.com/playlist?list=PL8q8n0BHJS1MEOKbcmicEO0uTuz67D5Fz) +- [Youtube 🇮🇹](https://www.youtube.com/playlist?list=PL8q8n0BHJS1O749KEPqfnwlr-RDlqJ20U) +- [Youtube 🇯🇵](https://www.youtube.com/playlist?list=PL8q8n0BHJS1PS9PGIYJd8pjK6fw8AKZO4) +- [Youtube 🇲🇾](https://www.youtube.com/playlist?list=PL8q8n0BHJS1OkFwspCxIVfFS2sVeGEC4K) +- [Youtube 🇷🇺](https://www.youtube.com/playlist?list=PL8q8n0BHJS1P4-22OaT_w3vwNZVwiQt6s) +- [Youtube 🇹🇭](https://www.youtube.com/playlist?list=PL8q8n0BHJS1MhpbWV3PI4xoXhjB06az_M) +- [Youtube 🇹🇷](https://www.youtube.com/playlist?list=PL8q8n0BHJS1OJIUOh0yANAEKdSUG8DdDG) +- [Youtube 🇻🇳](https://www.youtube.com/playlist?list=PL8q8n0BHJS1PJq68hRBfw3xeXGlfVDWVr) + +--- + +## Ortaklarımız + +- [Bitcoin Derneği İsviçre](https://medium.com/@alephium/alephium-becomes-a-member-of-bitcoin-association-switzerland-2293fec16fc9) +- [Cetacean Capital](https://cetacean.capital/) +- [Crypto Valley Derneği](https://cryptovalley.swiss/) +- [Dappnode](https://dappnode.io) +- [Ergo](https://ergoplatform.org/) +- [Flux Labs](https://runonflux.io/fluxlabs.html) +- [Hodling SA](https://www.hodling.ch/) +- [UTXO İttifakı](https://utxo-alliance.org/) + + + +[whitepaper]: https://github.com/alephium/white-paper +[tokenomics-medium]: https://medium.com/@alephium/tokenomics-of-alephium-61d59b51029c +[website]: https://alephium.org/ +[discord]: https://alephium.org/discord +[telegram]: https://t.me/alephiumgroup +[twitter]: https://twitter.com/alephium +[linkedin]: https://www.linkedin.com/company/alephium +[facebook]: https://www.facebook.com/alephium +[medium]: https://medium.com/@alephium +[github]: https://github.com/alephium +[node-release]: https://github.com/alephium/alephium/releases/latest/ +[full-node]: https://github.com/alephium/alephium +[desktop-wallet]: https://github.com/alephium/alephium-frontend/apps/desktop-wallet +[mobile-wallet]: https://github.com/alephium/alephium-frontend/apps/mobile-wallet +[explorer]: https://github.com/alephium/alephium-frontend/apps/explorer +[web3-sdk]: https://github.com/alephium/alephium-web3 +[docs]: https://github.com/alephium/docs +[awesome]: https://github.com/alephium/awesome-alephium +[mining-discord]: https://alephium.org/discord +[miner-starter-pack]: https://github.com/alephium/alephium-miner-getting-started +[solo-mining-video]: https://www.youtube.com/watch?v=hdPH6inWjhc +[reddit]: https://www.reddit.com/r/Alephium/ +[extension-wallet-repo]: https://github.com/alephium/extension-wallet +[walletconnect-repo]: https://github.com/alephium/walletconnect +[wormhole-fork-repo]: https://github.com/alephium/wormhole-fork +[brand-guide]: https://github.com/alephium/alephium-brand-guide +[reward-grant]: https://github.com/alephium/community/tree/master +[markets]: https://www.coingecko.com/en/coins/alephium#markets +[roadmap]: https://alephium.org/#next +[milestones]: https://alephium.org/#milestones diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/Content.md b/i18n/tr/docusaurus-plugin-content-docs/current/Content.md new file mode 100644 index 00000000..2f9beb6b --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/Content.md @@ -0,0 +1,650 @@ +--- +sidebar_position: 12 +sidebar_label: İçerik Deposu +title: İçerik Deposu +--- + +## İçindekiler +* [Resmi bağlantılar ve hesaplar](#resmi-bağlantılar--hesaplar) +* [Teknoloji Serileri](#teknoloji-serileri) +* [Açıklayıcı Seriler](#açıklayıcı-seriler) +* [Teknoloji Tartışmaları ve AMA'lar](#teknoloji-tartışmaları-ve-ama-lar) +* [Kilometre Taşları](#kilometre-taşları) +* [Hackathon](#hackathon) +* [Topluluk ve Sosyal](#topluluk-ve-sosyal) +* [Harici Podcastler ve Yayınlar](#harici-podcastler--yayınlar) +* [Etkinlikler, sunumlar ve konferanslar](#etkinlikler-sunumlar-ve-konferanslar) +* [Ortaklıklar ve Halk İlişkileri](#ortaklıklar--halk-ilişkileri) +* [Okuma Listeleri](#okuma-listeleri) +* [Takip Edilecek Kişiler](#takip-edilecek-kişiler) +* [Kütüphaneler ve Geliştirici Kaynakları](#kütüphaneler--geliştirici-kaynakları) +* [Bir hibe için başvurun](#hibe-için-başvurun) + +## Official links & accounts + +Website - https://alephium.org/ + +Dokümantasyon - https://docs.alephium.org/ + +Github - https://github.com/alephium + +Twitter - https://twitter.com/alephium + +Discord - https://alephium.org/discord + +Telegram - https://t.me/alephiumgroup + +Linkedin - https://www.linkedin.com/company/74304166 + +## Teknoloji Serileri + +### Durumsal UTXO + +Durumsal UTXO - https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749 + +sUTXO #1 - Merkle Ağaçları - https://twitter.com/alephium/status/1599808960038461447 + +sUTXO #2 - Sözleşme Kira - https://twitter.com/alephium/status/1602684789655420928 + +sUTXO #3 - Genel açıklama - https://twitter.com/alephium/status/1615389097744568320 + +UTXO ELI5 Açıklayıcı - https://twitter.com/alephium/status/1675111759957327872 + +Durumsal UTXO'nun Sırları: Alephium'un muhasebe modelinin ultima kılavuzu — Bölüm 1 - https://medium.com/@alephium/tech-talk-2-mysteries-of-stateful-utxo-the-ultimate-guide-to-alephiums-accounting-model-and-de2cf2063615 + +Durumsal UTXO'nun Sırları: Alephium'un muhasebe modelinin ultima kılavuzu — Bölüm 2 - https://medium.com/@alephium/tech-talk-2-mysteries-of-stateful-utxo-the-ultimate-guide-to-alephiums-accounting-model-and-f6b6868ef873 + +Durumsal UTXO'ya Giriş - https://twitter.com/alephium/status/1690004285818327040 + +Durumsal UTXO'ya Giriş - https://twitter.com/alephium/status/1692177660389314905 + +### Daha az İş Kanıtı + +Az İş Kanıtı - https://medium.com/@alephium/tech-talk-1-the-ultimate-guide-to-proof-of-less-work-the-universe-and-everything-ba70644ab301 + +Az İş Kanıtı - AMA - https://medium.com/@alephium/tech-talk-1-proof-of-less-work-ama-3d5afbf78c71 + +Konsensüs Algoritması - https://twitter.com/alephium/status/1562066898904158208 + +### Alphred Virtual Machine + +Alphred Sanal Makinesi - https://medium.com/@alephium/alphred-virtual-machine-the-definitive-guide-7e2d447f3d3b + +Alphred VM #1 - https://twitter.com/alephium/status/1648310483148218370 + +Alphred VM #2 - https://twitter.com/alephium/status/1648310486096809984 + +Alphred VM #3 - https://twitter.com/alephium/status/1648310489045405696 + +### Blok Akışı + +An Introduction to Blockflow : Alephium’s sharding algorithm - https://medium.com/@alephium/an-introduction-to-blockflow-alephiums-sharding-algorithm-bbbf318c3402 + +About Sharding - https://x.com/alephium/status/1747255798034796657 + +Blockflow - https://twitter.com/alephium/status/1541711510178758658 + +Blockflow ELI5 - https://twitter.com/alephium/status/1669007441764270080 + +Sharding - https://medium.com/@alephium/sharding-d50968b8b229 + +Sharding - https://twitter.com/alephium/status/1632742909379215360 + +### Ralph Programlama Dili +Ralph is the domain-specific language (DSL) - https://twitter.com/alephium/status/1675867624184627201 + +Ralph and Solidity Code Comparison - https://twitter.com/alephium/status/1643961985841905664 + +### Varlık İzni Sistemi +Asset Permission System - https://medium.com/@alephium/alephiums-aps-eliminating-evm-token-approval-risks-5407e7e70a33 + +Asset Permission System - https://twitter.com/alephium/status/1673354565801091074 + +## Açıklayıcı Seriler + +💡 Understanding the sUTXO model - https://vxtwitter.com/alephium/status/1749827565634855028 + +Network Upgrade 🧵#1 - https://vxtwitter.com/alephium/status/1738220571832594612 + +Bridge Thread #6 - https://vxtwitter.com/alephium/status/1729149731761537296 + +Bridge Thread #5 - https://x.com/alephium/status/1725439073052168293?s=20 + +Bridge Thread #4 - https://x.com/alephium/status/1725164466868801848?s=20 + +Bridge Thread #3 - https://twitter.com/alephium/status/1724107359696662624 + +Bridge Thread #2 - https://twitter.com/alephium/status/1722339218104754555 + +Bridge Thread #1 - https://twitter.com/alephium/status/1721940517657952450 + +🚨 Dev Tool Alert🚨 - https://vxtwitter.com/alephium/status/1733086186707808578 + +Alephium Tokenomics - Updated Article - https://medium.com/@alephium/tokenomics-of-alephium-61d59b51029c + +TxScripts and Smart COntracts - https://twitter.com/alephium/status/1688907382615945218?s=20 + +Do you know what "Magic Numbers" are? And which ones Alephium has? : https://twitter.com/alephium/status/1701604666847666397 + +First Developer Workshop — Build a Token Faucet ( Article ) - https://medium.com/@alephium/first-developer-workshop-build-a-token-faucet-a6bb2aa7bf68 + +Block Time and Block Size - https://medium.com/@alephium/block-time-and-block-size-16e37292444f + +Back to Basics: What is block time? Why is it 64s on Alephium? - https://twitter.com/alephium/status/1676257717303005185 + +Transactions Per Second (TPS) - https://medium.com/@alephium/transactions-per-second-tps-f13217a49e39 + +Time to Finality - https://medium.com/@alephium/time-to-finality-17d64eeffd25 + +Scala - https://twitter.com/alephium/status/1592536671177699328?s=20&t=RpVl_j3Mi6NmcEGv8zDl8Q + +Bridge #1 - https://twitter.com/alephium/status/1579824159273541632 + +Bridge #2 - https://twitter.com/alephium/status/1582368148631695361 + +Bridge #3 - https://twitter.com/alephium/status/1587440588692934656 + +New SDK - https://twitter.com/alephium/status/1574389337612947456 + +Birthday Paradox - https://twitter.com/alephium/status/1559155971284275200 + +BIP39 Passphrase Implementation - https://medium.com/@alephium/bip39-passphrase-implementation-f87adecd6f59 + +BIP39 Thread - https://twitter.com/alephium/status/1557019434979512327 + +The Road to self Custody - https://medium.com/@alephium/ttxoo-2-the-road-to-self-custody-cfea4ae89444 + +Self-custody - https://twitter.com/alephium/status/1557763279123992577 + +Naming Alephium - https://twitter.com/alephium/status/1554467104858210305 + +How many ALPH are mined per day? - https://twitter.com/alephium/status/1551905461103775745 + +Leman Upgrade schnorr signatures : https://twitter.com/alephium/status/1648310494661595137 + +Full Nodes - https://twitter.com/alephium/status/1592536671177699328 + +NFTs on Alephium #1 - https://twitter.com/alephium/status/1648310497756999680 + +NFTs on Alephium #2 - https://twitter.com/alephium/status/1673657929831190528 + +You can access the whole list of Twitter Threads here: https://twitter.com/alephium/status/1648310455725883393 + +## Aylık Değerlendirme + +Jun/23 "June was a Busy Month!" Let's look at what happened on alephium! - https://twitter.com/alephium/status/1674785579123507202?s=20 + +Jul/23 "Today is Swiss National Day" See What Happened in July! - https://twitter.com/alephium/status/1686349117499604992?s=20 + +## Teknoloji Tartışmaları ve AMA'lar + +Feb/24 - HoC X Space - https://twitter.com/i/spaces/1BRKjPjmAevJw?s=20 + +Feb/24 - Ergo x Kadena x Alephium @Flux X space - https://x.com/RunOnFlux/status/1755621620801003822?s=20 + +Jan/24 - Crypto Roundtable with tsncrypto - https://x.com/alephium/status/1750142614534504831?s=20 + +Jan/24 - AMA with Crypto Picsou - https://x.com/CryptoPicsou/status/1748757066548752679?s=20 + +Jan/24 - 🎙️ Live AMA @CoinMetro 🎙️ - https://www.youtube.com/watch?v=mkNZ64oYPHQ + +Jan/24 - French AMA with MonsieurTK https://twitter.com/i/spaces/1YqKDgrwnjkxV?s=20 + +Jan/24 - Bridge AMA Transcript Part 3 - https://vxtwitter.com/alephium/status/1742137217307578827 + +Dec/23 - Bridge AMA Transcript Part 2 - https://vxtwitter.com/alephium/status/1739586739579363509 + +Dec/23 - AMA with Ivan Shigeo - https://twitter.com/Shigeo808/status/1736821774959227069 + +Dec/23 - Bridge AMA Transcript Part 1 - https://medium.com/@alephium/the-alephium-bridge-ama-part-1-bd6536ea9cdc + +Dec/23 - AMA with @DjMines - https://youtu.be/gD2Lvk9WM4o?si=ZWRSwH6hHexWXWCj + +Dec/23 - Bridge & Beyond AMA - https://twitter.com/i/spaces/1mrGmydQreMGy + +Nov/23 - Alph Community Twitter Space @Hiramabiffkas - https://x.com/hiramabiffkas/status/1726835786270843094?s=20 + +Nov/23 - X Space on Crypto Mining 📢 - https://twitter.com/i/spaces/1ZkKzjBzrOZKv?s=20 + +Oct/23 - AMArmotte - https://x.com/Marmottoshis/status/1710643787305820353?s=20 + +Aug/23 - HouseOfChimera Twitter Space - https://twitter.com/HouseofChimera/status/1714310856324854137 + +Aug/23 - UI/UX to onboard the next billion people - https://www.youtube.com/watch?v=VK4QtY_q1ek + +Jul/23 - Mikaël Vaivre - How to onboard the next billion people to crypto? - https://www.youtube.com/watch?v=QHmb87sT9nI + +Jun/23 - Bitmart X ALPH Twitter Space AMA - https://x.com/alephium/status/1670061238456565761?s=20 + +Jun/23 - NYM - https://www.youtube.com/watch?v=pImANSvO6WQ&t + +Apr/23 - POW Roundtable - https://www.youtube.com/watch?v=17Rx27PwADI + +Apr/23 - Wolfram - https://www.youtube.com/live/v_7aiIAs6pQ?feature=share + +Apr/23 - Proof of less work AMA - https://x.com/alephium/status/1646113444461178882?s=20 + +Mar/23 - AMA Leman Upgrade - https://www.youtube.com/watch?v=n7ycJUIfbVg&t + +Feb/23 - Benoit - https://www.youtube.com/watch?v=At2JIAHaa10 + +Jan/23 - Nervos - https://www.youtube.com/watch?v=FLmxAHolDMc + +Nov/22 - Flux - https://www.youtube.com/watch?v=17Rx27PwADI&t + +Oct/22 - DappNode - https://www.youtube.com/watch?v=wzobAlPR11s&t + +Sep/22 - Ergo - https://www.youtube.com/watch?v=GCDo3V7HTb0 + +Aug/22 - AMA POLW - https://www.youtube.com/watch?v=Oi4AsqVY0YA + +Jul/22 - Polto (the road to self custody) - https://www.youtube.com/watch?v=McHNeE2ciFk + +Jul/22 - Tech Talk #1 The Ultimate guide to Proof of Less Work +https://medium.com/@alephium/tech-talk-1-the-ultimate-guide-to-proof-of-less-work-the-universe-and-everything-ba70644ab301 + +Nov/21 - First Live AMA - https://medium.com/@alephium/alephiums-first-live-ama-761a90d3f672 + +## Kilometre Taşları + +Feb/24 💜 x 30'000 Twitter Followers - https://vxtwitter.com/alephium/status/1757430069817974869?s=20 + +Feb/24 🛠 We are ON ⚒ Hackathon - https://vxtwitter.com/alephium/status/1757094840846733451?s=20 + +Feb/24 🏆 New Hackathon Sponsor 🚨 - https://vxtwitter.com/alephium/status/1755290796755161538 + +Jan/24 Rhône Network Upgrade 🧵#2 - https://x.com/alephium/status/1752376284754420186?s=20 + +Jan/24 🛠️ Buidl on Alephium #1 - Pioneers 🔥 - https://vxtwitter.com/alephium/status/1748348344450347430 + +Jan/24 🔥 2024 is starting STRONG. - https://vxtwitter.com/alephium/status/1747995876457640253 + +Jan/24 🌊 Announcing the Rhône Network Upgrade #1 ♾ - https://vxtwitter.com/alephium/status/1745820715054698901 + +Jan/24 ⚙️ Tech Writings of 2023 🛠 - https://vxtwitter.com/alephium/status/1744795616818217432 + +Jan/24 The dApps, the whole dApps, nothing but the dApps - https://vxtwitter.com/alephium/status/1743268517309513949 + +Dec/23 2023 Front-end recap - https://vxtwitter.com/alephium/status/1741402507203764614 + +Dec/23 MEXC listing! - https://www.mexc.com/exchange/ALPH_USDT + +Dec/23 50 days of bridging! - https://vxtwitter.com/alephium/status/1740390954752958767 + +Dec/23 Coinmetro Listing - https://vxtwitter.com/alephium/status/1737830035225219555?s=20 + +Dec/23 Ambassador Program Launch - https://vxtwitter.com/alephium/status/1736792955896344966 + +Dec/23 Crowdsourcing Alphad.app new name! - https://vxtwitter.com/alephium/status/1734948427950399948 + +Dec/23 Etherscan Update! - https://vxtwitter.com/alephium/status/1734581269684687010 + +Nov/23 iOS app is live in the App Store! - https://vxtwitter.com/alephium/status/1724452430262534311 + +Nov/23 The Bridge is Live! - https://vxtwitter.com/alephium/status/1722661768131178556 + +Oct/23 Android Mobile App is out of Beta! - https://x.com/alephium/status/1719739251368325612?s=20 + +Oct/23 Get Ready for Bridging! - https://twitter.com/alephium/status/1719398464449335561 + +Oct/23 Meet the Guardians! - https://twitter.com/alephium/status/1716858711493493013 + +Oct/23 Android Mobile wallet app is ready for beta testing! - https://medium.com/@alephium/ios-mobile-wallet-beta-testing-feedback-wanted-cdf162a49a79 + +Oct/23 The mobile wallet for iOS is ready for beta testing - https://medium.com/@alephium/ios-mobile-wallet-beta-testing-feedback-wanted-cdf162a49a79 + +Oct/23 The Blockflow Alliance DAO got its first grant. - https://twitter.com/alephium/status/1711405133165453683?s=20 + +Sep/23 NFT Marketplace v3 is here! - https://twitter.com/alephium/status/1704167584017588419 + +Sep/23 Alephium Bridge Update - https://twitter.com/alephium/status/1700164822619582535 + +Sep/23 Zealy quests are now available! - https://t.co/49nM9If9p1 + +Sep/23 Multisig GUI is officially launched! - https://twitter.com/alephium/status/1697611394471121118 + +Jun/23 Alephium NFT Marketplace Poc On Testnet - https://twitter.com/alephium/status/1674397139835973633 + +May/23 Alephium Bridge on Testnet - https://medium.com/@alephium/the-alephium-bridge-is-live-on-testnet-e13454677fb8 + +Mar/23 Alephium DEX PoC on Testnet - https://medium.com/@alephium/dex-prototype-live-on-testnet-bac5e7d095ce + +Mar/23 Leman Network Upgrade - https://medium.com/@alephium/announcing-the-leman-network-upgrade-c01a81e65f0e + +Nov/22 1 year of Mainnet - https://medium.com/@alephium/one-year-of-mainnet-b7ed5d3024ee + +Oct/22 Security assessment by Inference - https://medium.com/@alephium/security-assessment-by-inference-afa2f62957ad + +Jul/22 Website update - https://twitter.com/alephium/status/1546841030020009984 + +May/22 Q2 2022 Update - https://medium.com/@alephium/alephium-h1-project-update-1f2076978f00 +https://twitter.com/alephium/status/1530174260114776071 + +Jan/22 Q1 2022 Update - https://medium.com/@alephium/alephium-q1-project-update-50f4a7b354b0 + +Dec/21 Q3 2021 Update - https://medium.com/@alephium/time-for-an-alephium-development-recap-cdaa47ee95a + +Nov/21 Mainnet Launch - https://medium.com/@alephium/alephium-mainnet-brings-sharding-smart-contracts-and-energy-efficiency-to-bitcoin-tech-stack-a255183aa50b + +Nov/21 Alephium Block Rewards - https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33 + +Oct/21 Tokenomics of Alephium - https://medium.com/@alephium/tokenomics-of-alephium-61d59b51029c + +Sep/21 Pre-sale Q3 2021 - https://medium.com/@alephium/alephium-closes-3-6m-pre-sale-from-80-contributors-to-expand-sharded-utxo-blockchain-platform-84f80492e28d + +Aug/21 Introducing ALPH Q3 2021 - https://medium.com/@alephium/introducing-alph-8381dbd9f88d + +May/19 Initial description - First article - https://medium.com/@alephium/alephium-pushes-the-boundaries-of-blockchain-performance-scalability-1ab619038daa + +## Hackathon + +Hackathon Website : https://alephium.org/hackathon/ + +Feb/24 ⚒️ Hackathon Week 2 is starting! - https://x.com/alephium/status/1759621786004865431?s=20 + +Feb/24 💥 Week 1 recap 🪛 - https://x.com/alephium/status/1759633141646475452?s=20 + +Feb/24 Hackathon Kick-off call February 12th - https://www.youtube.com/watch?v=zlEU6FqDWd8 + +Jan/24 Alephium Hackathon Announcement - https://vxtwitter.com/alephium/status/1743950076953690180?s=20 + +## Topluluk ve Sosyal + +⛏🖥 Miners Highlight # 3 - Bokiko - https://vxtwitter.com/alephium/status/1753459274783887393 + +Miners' Highlight #2 - @Dr. Hiram Abiff .’. | ℵ 🔥 - https://vxtwitter.com/alephium/status/1745484268585820567 + +Miners' Highlight #1 - Cedric Crispin 🔥 - https://vxtwitter.com/alephium/status/1738185723264840078 + +Builders Highlight #7 - alphpad +https://vxtwitter.com/alephium/status/1757398937441607906?s=20 + +Builders Highlight #6 - What the Duck +https://medium.com/@alephium/builders-highlight-6-what-the-duck-0aedc602ecfd + +Builders Highlight 5 - Deadrare +https://medium.com/@alephium/builders-highlight-5-deadrare-d5ff90d6161e + +Builders Highlight 4 - No Trust Verify +https://medium.com/@alephium/builders-highlight-4-no-trust-verify-9ea495ca826f + +Builders Highlight 3 - Ayin +https://medium.com/@alephium/builders-highlight-3-ayin-6be4a6bd4ec2 + +Builders Highlight 2 - Alphpaca NFTs +https://medium.com/@alephium/builders-highlight-alphpaca-nfts-99c69775f04c + +Builders Highlight 1 - Sezame Wallet +https://medium.com/@alephium/builders-highlight-sezame-wallet-ddb4aeb61881 + +Builders Highlight 0 - Sahhar +https://medium.com/@alephium/builders-highlight-sahhar-10f4cc8746 + +Community Highlight #14 - AnimalManJan +https://medium.com/@alephium/community-highlight-14-animalmanjan-da8fd051bc38 + +Community Highlight #13 - Ryann +https://medium.com/@alephium/community-highlight-13-ryan-5dbbeaf859e4 + +Community Highlight #12 - energy45 +https://medium.com/@alephium/community-highlight-12-sam-a-k-a-energy45-610005a9219b + +Community Highlight #11 - Dr. Jekyll +https://medium.com/@alephium/community-highlight-11-dr-jekyll-165ab9a51880 + +Community Highlight 10 - Lx, aka Lix +https://medium.com/@alephium/community-highlight-10-lx-aka-lix-fde724cf8d81 + +Community Highlight 9 - dZHEMSH +https://medium.com/@alephium/community-highlight-9-dzhemsh-a0a4a98a8489 + +Community Highlight 8 - Jorge +https://medium.com/@alephium/community-highlight-8-jorge-438510785041 + +Community Highlight 7 - Oheka +https://medium.com/@alephium/community-highlight-7-oheka-13d8b4ae025e + +Community Highlight 6 - Waldi — Zkit/beats +https://medium.com/@alephium/community-highlight-6-waldi-zkit-beats-37af1f6df3b8 + +Community Highlight 5 - TxN +https://medium.com/@alephium/community-highlight-5-txn-71c4fd76ffe8 + +Community Highlight 4 - Montail +https://medium.com/@alephium/community-highlight-4-montail-e24fd88882a0 + +Community Highlight 3 - DigDug +https://medium.com/@alephium/community-highlight-3-digdug-48a7ec868504 + +Community Highlight 2 - cgi-bin - https://medium.com/@alephium/community-highlight-cgi-bin-c102cc106f19 + +Community Highlight 1 - Wilhelm Källström aka “Oracleuggla” - +https://medium.com/@alephium/community-highlight-wilhelm-k%C3%A4llstr%C3%B6m-aka-oracleuggla-81d3938c5692 + +👨🏼‍💻 HKTHN series! Dev Onboard Thread! - https://vxtwitter.com/alephium/status/1752028946399654269 + +👨🏼‍💻 HKTHN series! What do the devs say about Alephium? - https://vxtwitter.com/alephium/status/1750930344055087255 + +🌈 Front-end magic - https://vxtwitter.com/alephium/status/1750549153153953845 + +The Hitchiker’s guide to Alephium’s community - https://vxtwitter.com/alephium/status/1740670046371017186?s=20 + +The Zealy Sprint has come to an end - https://vxtwitter.com/alephium/status/1737144172317114621 + +Welcome to DeFi Llama! - https://vxtwitter.com/DefiLlama/status/1726667056781881648?s=20 + +Onboarding Thread on Alephium - https://vxtwitter.com/alephium/status/1726249933374959943?s=20 + +Verification of bridge contracts, tokens & token lists - https://medium.com/@alephium/verification-of-bridge-contracts-tokens-token-lists-76e5c237bf52 + +Core Alephium Contibutors Update - https://medium.com/@alephium/alephium-contributors-f35eeaeaf0a0 + +Core team interview series. Episode 4 - https://medium.com/@alephium/core-team-interview-series-episode-4-3886003b8fef + +Core team interview series. Episode 3 - https://medium.com/@alephium/core-team-interview-series-episode-3-64b6dacc1459 + +Core team interview series. Episode 2 - https://medium.com/@alephium/core-team-interview-series-episode-2-bec6e6908d2f + +Core team interview series. Episode 1 - https://medium.com/@alephium/core-team-interview-series-episode-1-3472f8295af6 + +Welcome to the Blockflow Alliance DAO! - https://medium.com/@alephium/welcome-blockflow-alliance-dao-cd74a949f98b + +Alpehium's community creativity is fantastic! Toolkit Design Contest Winners - https://medium.com/@alephium/toolkit-design-contest-winners-announced-6cc5e304cd8b + +UI & UX wizardry from our latest techtalk! - https://medium.com/@alephium/techtalk-11-how-to-onboard-the-next-billion-people-to-crypto-d1f4904b3eea + +Alephium Toolkit GUI design contest! - https://medium.com/@alephium/design-contest-a-logo-for-the-toolkit-website-f7bf7801b03c + +Alephium Send your best Alephium Memes! - https://twitter.com/alephium/status/1686420533510832128 + +Video Creation contest - https://medium.com/@alephium/contest-for-all-video-creators-e777f2619596 + +Naming Competition - https://medium.com/@alephium/alephium-naming-competition-c1b736797461 + +Introducing Community Rewards - https://medium.com/@alephium/introducing-community-rewards-f4638bbf14bf + +DJ Fetamin Mix at Chainflip Party during Ethcc - https://www.youtube.com/watch?v=0heJBclJwEA&t=113s + +## Eğitimler ve Workshoplar + +Alephium Bridge: The Written Tutorial - https://medium.com/@alephium/alephiumalephium-bridge-the-tutorial-28e7b92b339a + +🎦Bridge Tutorial!📺 - https://www.youtube.com/watch?v=xoYVzbwBAjg + +Deep Dive into Ralph with the Dev Workshop! 🛠 - https://www.youtube.com/watch?v=gi2sxvB9Np8 + +Deep Dive into Ralph with the Dev Workshop - Part 2! 🛠 - https://vxtwitter.com/alephium/status/1729530234649866529 + +Video tutorial on how to create a Multisig Wallet using Alephium Toolkit GUI: https://twitter.com/alephium/status/1701211477577785724 + +How to use the Alephium Desktop Wallet privately through the NYM Mixnet - https://www.youtube.com/watch?v=VbhQEhtX-rI + +Second Developer Workshop - Friendtech smart contract - https://medium.com/@alephium/second-online-dev-workshop-6ebc5fb0b0da + +Second Developer Workshop - Re-implementing Friend.Tech’s Smart Contract in Ralph - https://www.youtube.com/watch?v=gi2sxvB9Np8 + +First Developer Workshop — Build a Token Faucet ( Video ) - https://www.youtube.com/watch?v=YblUxEcXQuY + +How to use Alephium's app on Ledger? A Tutorial - https://www.youtube.com/watch?v=YBQy_siZh6w&t + +How to use Alephium's app on Ledger? Written Tutorial - https://medium.com/@alephium/browser-wallet-extension-v0-7-0-has-been-released-c81842c63c01 + +How to use the Alephium Bridge (testnet) - part 1 - https://www.youtube.com/watch?v=cwv28divQrA&t + +How to use the Alephium Bridge (testnet) - part 2 - https://www.youtube.com/watch?v=TziFpCgM3-0&t + + +## Harici Podcastler ve Yayınlar + +Alephium Qu’est-ce que c’est, comment ça fonctionne et comment en acheter ? - https://coinacademy.fr/alephium-alph-fondamental/ + +Nym Project's blog post about the Alephium wallet built by @Mika and @nop33! - https://twitter.com/alephium/status/1710291031759982803 + +UTXO Alliance Roundtable - https://www.youtube.com/watch?v=1XcBWJRRp-E&list=PL8q8n0BHJS1MWfqe1OIz4EWz9RKNrCiu6&index=1&pp=iAQB + +Cheng Wang: Founder of Alephium, Distributed Consensus, Proof of Less Work | Wolfram Blockchain Labs - https://youtu.be/8XYa288lIg0 + +Didier Borel - SwissRoadCrypto - https://www.buzzsprout.com/2058047/11607475 + +Cheng Wang AMA @ERGO - https://www.youtube.com/watch?v=GCDo3V7HTb0 + +Uncovering the Secrets of the Next Generation Blockchain Network Alephium - https://youtu.be/UzqZ4npA2w4 + +Sigma Prism - Meet Alephium | A New Scalable UTXO Paradigm | episode #19 - https://youtu.be/vBVbKIuHbLc (Notes) + +Alephium | A New Era of Possibilities - https://youtu.be/0jmo-WYhwWc + +Maud Bannwart: Chief Operating Officer of Alephium | Operations of Blockchain Development - https://youtu.be/3CYsjwIkI_c + +NiceHash - NiceTalk - https://www.youtube.com/watch?v=JFTxolwLduc + +Hackernoon - https://twitter.com/hackernoon/status/1557622890450886659 + +Hackernoon - Web3bites - https://hackernoon.com/what-is-sharding-and-utxo-scaling-for-blockchain + +Heidi News - https://www.heidi.news/explorations/dix-acteurs-majeurs-de-la-crypto-en-suisse-romande/alephium-une-blockchain-3-0-nee-en-suisse + +Heidi News - https://www.heidi.news/cyber/les-entreprises-crypto-en-suisse-romande-resistent-bien-a-la-crise + +Heidi News - https://www.heidi.news/cyber/alephium-une-blockchain-3-0-developpee-a-lausanne + +Token Insights - https://tokeninsight.medium.com/project-research-paper-of-alephium-8001323353e7 + +## Etkinlikler, sunumlar ve konferanslar + +What is Alephium? - https://www.youtube.com/watch?v=v2L4jEvoSIU + +Cheng Wang at Crypto Talk Series in Neuchâtel - Stateful UTXO - https://www.youtube.com/watch?v=r_5U7ZgByt4 + +Cheng Wang at EthCC 2022 - Account Model meets UTXO: a new paradigm for secure dApps & DeFi - https://www.youtube.com/watch?v=VVYH9rBJAdA + +Cheng Wang - Blockchain sharding at CDC 36th C3 - https://youtu.be/_SjtXp6F43k + +Ethcc Paris 2022 - https://www.youtube.com/watch?v=VVYH9rBJAdA + +CVC/CVA 2023 - https://www.youtube.com/watch?v=8DiMSar3HOw / https://twitter.com/alephium/status/1673692785457897472 + +CVC/CVA 2022 - https://twitter.com/alephium/status/1537452412801323011 / https://twitter.com/alephium/status/1528649536050278401 + +PBWS Paris - 2022 - https://twitter.com/alephium/status/1530174317576716290 / https://twitter.com/ParisBlockWeek/status/1519685412066836483 + +DevCon Osaka 2019 - https://twitter.com/alephium/status/1181943096600223746 + +Web3 summit 2019 - https://twitter.com/alephium/status/1163721918765129728 + +Bitcoin COnf 2019 - https://twitter.com/alephium/status/1143767445657665537 + +CVC Conf Zug 2019 - https://twitter.com/alephium/status/1143174833347289088 + +Cheng Wang/Alois COchard - Scala Days 2019 - https://twitter.com/alephium/status/1139123284576915456 + +Cheng Wang - WASM blockchain Berlin 2019 - https://twitter.com/wachmc/status/1137715873643413504 + +Aloïs Cochard - Edcon 2019 - https://youtu.be/-tCB9sOT_UI + +Aloïs Cochard - Bitcoin 2019 - https://youtu.be/0WnmzgKTClU + +## Ortaklıklar ve Halk İlişkileri + +DappNode - Announcement - https://medium.com/@alephium/pushing-for-decentralization-alephium-and-dappnode-join-forces-c98845d9a9da + +DappNode - Tutorial - https://medium.com/@alephium/alephium-dappnode-collab-tech-talk-and-ama-80b34dfd1e9f + +Ergo - Announcement - https://medium.com/@alephium/ergohack-v-alephium-sponsors-ergos-hackathon-with-flux-djed-alliance-to-foster-innovation-in-eae9c8bd7e97 + +FLUX - Announcement - https://medium.com/@alephium/alephium-continues-its-engagement-for-decentralization-and-partners-with-the-cloud-based-f9c5baebe5b2 + +FLUX - Tutorial - https://medium.com/@alephium/host-your-alephium-node-via-the-flux-marketplace-2f3a5ab85263 + +FLUX - Contest - https://medium.com/@alephium/alephium-flux-tutorial-contest-81054caf926 + +Cetacean Capital - https://medium.com/@alephium/alephium-partners-with-cetacean-capital-83cf2fbea8a1 + +Gate.io - Announcement - https://medium.com/@alephium/gate-io-first-to-list-alephium-alph-a7e5fe56cd45 + +Gate.io - AMA - https://medium.com/@alephium/gate-io-ama-with-alephium-67b50d179d72 + +Bitcoin Association Switzerland - https://medium.com/@alephium/alephium-becomes-a-member-of-bitcoin-association-switzerland-2293fec16fc9 + +UTXO alliance - https://medium.com/@alephium/alephium-joins-the-utxo-alliance-6476b479dd84 + +## Okuma Listeleri + +1. https://twitter.com/alephium/status/1548224145703313408 +2. https://twitter.com/alephium/status/1553395039778119682 +3. https://twitter.com/alephium/status/1555917416667811841 +4. https://twitter.com/alephium/status/1558459721912242176 +5. https://twitter.com/alephium/status/1560964886485643265 +6. https://twitter.com/alephium/status/1563540765728313347 +7. https://twitter.com/alephium/status/1566079135071449088 +8. https://twitter.com/alephium/status/1568915710210101250 +9. ​https://twitter.com/alephium/status/1571927107911188481 +10. https://twitter.com/alephium/status/1574016171698900992 +11. https://twitter.com/alephium/status/1579050425449271296 +12. https://twitter.com/alephium/status/1584133324720594946 +13. https://twitter.com/alephium/status/1586680785355952128 +14. https://twitter.com/alephium/status/1589249714691530753 +15. https://twitter.com/alephium/status/1591769178016428033 +16. https://twitter.com/alephium/status/1594356097455820800 +17. https://twitter.com/alephium/status/1596845995442126848 +20. ​​https://twitter.com/alephium/status/1609891871148630016 +21. https://twitter.com/alephium/status/1612107655610527744 +22. https://twitter.com/alephium/status/1614603383855525889 +23. https://twitter.com/alephium/status/1617170911408361474 +24. https://twitter.com/alephium/status/1619682407338377220 +25. https://twitter.com/alephium/status/1622188051081601026 +26. https://twitter.com/alephium/status/1624740153117003779 +27. https://twitter.com/alephium/status/1627309742220775427 +28. https://twitter.com/alephium/status/1629798455102300163 +29. https://twitter.com/alephium/status/1632350304208588800 +30. https://twitter.com/alephium/status/1634886987151994882 +31. https://twitter.com/alephium/status/1637423729193152514 +32. https://twitter.com/alephium/status/1639915107408044033 +33. https://twitter.com/alephium/status/1642466924876689413 +34. https://twitter.com/alephium/status/1645095313492017155 +35. https://twitter.com/alephium/status/1647540350658150407 +36. https://twitter.com/alephium/status/1650077066644291584 +37. https://twitter.com/alephium/status/1652613787290316803 +38. https://twitter.com/alephium/status/1655150495235997696 +39. https://twitter.com/alephium/status/1658134671648251907 +40. https://twitter.com/alephium/status/1660228530851184642 + +## Takip Edilecek Kişiler + +Cheng Wang: https://twitter.com/wachmc + +İlk Tweet - https://twitter.com/alephium/status/1095960264837685249 + +Wow visual - https://twitter.com/gemforgem/status/1441427580578455554 + +Hongchao: https://twitter.com/hongchao + +## Kütüphaneler ve Geliştirici Kaynakları + +Dokümanlar - https://docs.alephium.org/ + +Github - https://github.com/alephium + +## Bir hibe için başvurun + +Apply for grants - https://github.com/alephium/community/blob/master/Grant%26RewardProgram.md diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/FAQ.md b/i18n/tr/docusaurus-plugin-content-docs/current/FAQ.md new file mode 100644 index 00000000..8bf476de --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/FAQ.md @@ -0,0 +1,408 @@ +--- +sidebar_position: 1 +slug: /frequently-asked-questions +sidebar_label: SSS +title: Sıkça Sorulan Sorular +--- + +:::info +📚 Alephium'a bu [5 dakikalık özetle](/) genel bir bakış atarak her şeyi öğren. +::: + +Daha derine inmeden önce, Alephium hakkında faydalı bilgiler sunabilecek aşağıdaki kaynaklara göz atmanı öneririz: + +- [Resmi Web Sitesi](https://alephium.org) +- [Resmi Twitter](https://twitter.com/alephium) +- [Resmi Discord](https://alephium.org/discord) +- [Resmi Telegram](https://t.me/alephiumgroup) +- [Resmi Reddit](https://reddit.com/r/Alephium) +- [Resmi Medium](https://medium.com/@alephium), özellikle şunlara dikkat et: + - [Alephium'un Token Ekonomisi](https://medium.com/@alephium/tokenomics-of-alephium-61d59b51029c) + - [Alephium'un Blok Ödülleri](https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33) + - [Alephium'un Topluluk Ödül Programı](https://medium.com/@alephium/introducing-community-rewards-f4638bbf14bf) + - [Proof-of-Less-Work'e Kapsamlı Bakış...](https://medium.com/@alephium/tech-talk-1-the-ultimate-guide-to-proof-of-less-work-the-universe-and-everything-ba70644ab301) + - [sUTXO'ya Giriş](https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749) + - [ALPHred, Sanal Makine](https://medium.com/@alephium/meet-alphred-a-virtual-machine-like-no-others-85ce86540025) + - [Leman Ağ Güncellemesi Yayında!](https://medium.com/@alephium/the-leman-network-upgrade-is-live-f52c89b7dd6a) + +## Zincir Verileri + +### Dolaşımda ne kadar ALPH var? + +Dolaşımdaki supply'ı Alephium [Explorer](https://explorer.alephium.org)'da bulabilir veya [dolaşımdaki ALPH endpoint'ini](https://backend.mainnet.alephium.org/infos/supply/circulating) kullanabilirsin. + +### Dolaşımdaki supply nasıl hesaplanıyor? + +[CoinMarketCap'in metodolojisine](https://support.coinmarketcap.com/hc/en-us/articles/360043396252-Supply-Circulating-Total-Max-) göre hesaplanıyor. + +Dolaşımdaki supply, varolan ALPH miktarı eksi şunlara eşittir: + +- Özel satış katılımcıları ve proje/takım kontrolündeki adreslerin tam bakiyesi (kilitli & kilitsiz). CMC'ye göre: _"token'lar genellikle orijinal rezerv cüzdanından çıktıktan sonra dolaşımdaki olarak sayılırlar (yani giden transferler, bir coin'i dolaşıma sokma niyetini kilit açmaktan daha iyi yansıtır)"_. +- Diğer adreslerdeki tüm kilitli ALPH'lar. + +### Cüzdan bakiyelerini ve en çok tutan adresleri nereden kontrol edebilirim? + +Belirli bir cüzdanın bakiyesini kontrol etmek için en iyi seçeneğin [Explorer](https://explorer.alephium.org). Topluluğun üyeleri en çok tutan adresleri listeleyen bir [Alph Richlist](https://alph-richlist.vercel.app/) oluşturdu. + +Ayrıca sarılı (wrapped) ALPH/erc20 sahiplerini [etherscan.io](https://etherscan.io/token/0x590F820444fA3638e022776752c5eEF34E2F89A6#balances) adresinden de bulabilirsin. + +### Minimum İşlem Ücreti nedir? + +Şu anda, ağa yönelik DoS saldırılarını önlemek için minimum işlem ücreti `0.002` ALPH olarak belirlenmiştir. Gelecekte, bu minimum ücret düşürülebilir ve Alephium'daki en düşük minimum işlem ücreti `0.00000000000001` ALPH olabilir. Kesin işlem ücreti, söz konusu işlemdeki girdi (UTXO'lar) ve imzalayanların sayısına bağlıdır. + +### Alephium'da Saniye Başına Kaç İşlem (TPS) mümkün? + +Alephium Ana Ağı (Mainnet) şu anda 16 shard ile 400'ün üzerinde TPS'i destekleyebilmektedir. Gerektiğinde shard sayısını artırarak 10k TPS'in üzerine çıkabilir. +[TPS konsepti](https://medium.com/@alephium/transactions-per-second-tps-f13217a49e39) hakkında daha fazla bilgiye ulaşabilirsin. + +### Alephium'un en küçük birimi nedir? + +Alephium 18 ondalık basamağa kadar imkan verir ve en küçük birimine Phi adı verilmiştir. Phi, `0.000000000000000001` ALPH'a, veya `10^-18` ALPH'a eşittir; 1 ALPH ise `10^18` Phi karşılık gelir. + +## dApp'ler + +### Alephium'un DEX'i var mı? + +Alephium'un Testnet'te çalışan bir [DEX prototipi](https://alephium.github.io/alephium-dex/#/swap) var. [DEX prototipi makalesinden](https://medium.com/@alephium/dex-prototype-live-on-testnet-bac5e7d095ce) daha fazla bilgi edinebilirsin. + +[DEX kontratları](https://github.com/alephium/alephium-dex/tree/master/contracts) ana geliştiriciler tarafından kapsamlı şekilde test edildi ve güvenli, verimli bir yapıları var. Projeler için kolayca kopyalanıp (fork) kullanılabilirler. + +### Alephium üzerinde herhangi bir dApp var mı? + +Alephium üzerinde şimdiye kadar geliştirilenlerin çoğu [Muhteşem Alephium (Awesome Alephium) reposunda](https://github.com/alephium/awesome-alephium) listelenmiştir. Sen de katkıda bulunmak için, bir Pull Request gönder! + +Alephium henüz çok erken bir aşamada ve dApp'lerin geliştirilmesini kolaylaştıracak altyapı (bir [köprü](https://github.com/alephium/wormhole-fork) dahil) ve dokümantasyon sürekli olarak geliştiriliyor. Alephium, projen için temel veya ilham kaynağı olarak kullanabileceğin bir dizi [bakımlı prototipe](https://docs.alephium.org/dapps/ecosystem#prototypes) sahip. + +Bir dApp geliştirmek istiyorsan, [dApp'lere Başlarken kılavuzumuza](https://docs.alephium.org/dapps/getting-started) göz at. + +### dApp neden yalnızca bir adresime bağlanabiliyor? + +Alephium, shard'lı (parçalı) bir blockchain olarak çalışır; adresler ve kontrat durumları çeşitli gruplara düzenlenir. Söz konusu dApp'lere gelince, bunlar bu gruplardan herhangi birine dağıtılmış olabilirler. Ancak, şöyle bir durum var — dApp'ler yalnızca aynı gruptaki adresler tarafından kullanılabilir. + +Bu yüzden, bir dApp'e bağlandığında, özellikle dApp'le aynı grupta olan adreslerle bağlantı kurması istenecek. Bu gruplama sistemi, Alephium'un shard'lı yapısında her şeyin sorunsuz çalışmasını sağlar. + +Bunun yalnızca dApp'leri kullanırken bir sorun olduğunu unutma. Normal transferlerde, shard'lı olmayan blockchain'lere benzer bir kullanıcı deneyimi yaşarsın. Ana geliştirici ekibi, varlık yönetimini farklı gruplar arasında geliştirmeyi hedefliyor; böylece dApp kullanıcıları için kolaylık sağlanmış olacak. + +## Geliştirme + +### Yol haritası (roadmap) nerede? + +Yol haritasını [web sitesinde](https://alephium.org/#next) ve [dokümantasyonda](https://docs.alephium.org/#roadmap) bulabilirsin. Ayrıca, haftalık geliştirme güncellemelerini [Discord](https://alephium.org/discord), [Twitter](https://twitter.com/alephium), ya da [Reddit'te](https://www.reddit.com/r/Alephium/search?q=flair_name%3A%22Development%22&restrict_sr=1) takip edebilirsin. + +### Alephium'un bakımını yaptığı genel servislerin durumunu nereden kontrol edebilirim? + +Alephium'un genel servis durumunu şu linklerden kontrol edebilirsin: + +- ana ağ (mainnet): https://status.mainnet.alephium.org +- test ağı (testnet): https://status.testnet.alephium.org + +### API sorgulamasını nereden yapabilirim? + +API sorgulaması yapmak için bir tam düğüm (full node) çalıştırman gerekli ([talimatlar](https://wiki.alephium.org/full-node/Full-Node-Starter-Guide)). Alephium, tam düğüm ile etkileşimde bulunmak için OpenAPI kullanır. Tam düğümün çalıştıktan sonra, yerel Swagger UI'ını `127.0.0.1:12973/docs` üzerinden açabilirsin. Alternatif olarak, herhangi bir OpenAPI client kullanarak Alephium'un reposundan [openapi.json](https://raw.githubusercontent.com/alephium/alephium/master/api/src/main/resources/openapi.json) dosyasını alabilirsin (import). + +### Hibe, Ödül veya İkramiye Programınız var mı? + +Alephium'da, katkının boyutundan bağımsız olarak ödüle uygun olabileceğin bir [Hibe ve Ödüller Programı](https://github.com/alephium/community/blob/master/Grant%26RewardProgram.md) mevcut. + +### Alephium üzerinde ne geliştiriliyor? + +Alephium üzerinde şimdiye kadar geliştirilenlerin çoğu [Muhteşem Alephium reposunda](https://github.com/alephium/awesome-alephium) listelenmiştir. Geliştirdiğin şeyi sergilemek istersen, listeye eklemek için bir Pull Request gönder! + +## Tam Düğüm (Full Node) + +### Tam düğüm çalıştırmanın herhangi bir ödülü var mı? + +Alephium bir Proof of (Less) Work fikir birliği (consensus) mekanizması kullanır. Bu, Proof of Stake ağlarının aksine, bir tam düğüm çalıştırmak için doğrudan parasal bir ödül olmadığı anlamına gelir. Ancak, kendi düğümünü çalıştırmanın; merkeziyetsizlik, bağımsız doğrulama, gizlilik ve ekonomik egemenlik gibi başka avantajları da vardır. "_Senin düğümün değilse, senin ağın değil_" ifadesi, kendi düğümünü çalıştırmanın önemini vurgular. Üçüncü parti bir düğüme bağlanmak genelde güvenli olsa da, bazı kullanıcılar kendi güvenlik ve gizlilik seviyelerini sağlamayı tercih ediyor olabilir. + +### Tam düğüm çalıştırmak için nelere ihtiyacım var? + +Alephium'un tam düğümü hafiftir ve Raspberry-Pi veya telefonlar dahil çoğu cihazda çalışabilir. Kendi düğümünü kurup çalıştırmak için lütfen [Tam Düğüme Başlarken kılavuzuna](https://docs.alephium.org/full-node/getting-started/) göz at. + +### Alephium üzerinde stake yapmak mümkün mü? + +Alephium, Proof of Stake (PoS) fikir birliği mekanizması ile çalışmadığı için blok zincirinde doğrudan stake etme imkanı sunmaz. Ancak, gelecekte DeFi likidite havuzları kullanıcılar için stake seçenekleri sunabilir. + +## Borsa Listelemeleri + +### Token kısaltmanız nedir? + +Alephium token kısaltması [ALPH](https://medium.com/@alephium/introducing-alph-8381dbd9f88d)'dır. + +### Borsalarda para yatırma işlemlerinin görünmesi ne kadar sürer? + +Borsalar, yeterli güvenliği sağlamak için genellikle PoW zincirleri için daha yüksek sayıda onay gerektirir. Şu anda, çoğu borsa Alephium için 30 ila 60 dakika arasında olan 30 ila 60 onay talep etmektedir. + +### Alephium şu anda hangi borsalarda listeleniyor? + +Mevcut Alephium piyasalarının listesini [CoinMarketCap](https://coinmarketcap.com/currencies/alephium/markets/) veya [CoinGecko](https://www.coingecko.com/en/coins/alephium) adresinde bulabilirsiniz. + +## Madencilik + +### Madencilik Ödülü nedir? + +Alephium'un blok ödüllerini açıklayan [detaylı bir makale](https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33) bulunmaktadır. + +### Blok süresi sadece 64 saniye iken blok ödülünü 500 dakika tutmanın nedeni nedir? + +500 dakikalık kilitleme, tıpkı Bitcoin'in madencilik ödülleri için ~1000 dakikalık kilidi gibi, yeniden düzenleme saldırılarını önlemek için tasarlanmıştır. + +### Neden 4 madencilik adresim var? + +Alephium, `G` grupları ve `G*G` parçaları olan parçalı bir blok zinciridir. Bu tasarım nedeniyle, her grup kendi madencilik adresini gerektirir. + +Şu anda Alephium, ana ağında 4 grup ve 16 parça bulundurmaktadır. Bu nedenle, her grup için bir tane olmak üzere 4 madencilik adresine ihtiyaç vardır. + +### Günde kaç coin çıkarılıyor? + +Günde kaç coin çıkarıldığını öğrenmek için aşağıdaki formülü kullanabilirsiniz. Blok ödülü her blokta dinamik olarak değiştiğinden, formül size yalnızca yaklaşık bir değer verecektir. + +``` +3600 saniye / 64 saniye (Alephium blok süresi) == Parça başına saatte 56,25 blok. +56.25 x 16 parça == Saatte toplam 900 blok. +900 x 24 saat == Günde 21600 blok +21600 x blok başına ALPH ödülü ~= Günde çıkarılan ALPH sayısı. +``` + +Bu giriş son güncellendiğinde ortalama blok ödülü: `2.87` ALPH'dı ve bunun sonucunda günde yaklaşık `61'992` ALPH çıkarılıyordu. + +### Alephium, ASIC'e dayanıklı mı? + +Hayır, Alephium tıpkı Bitcoin gibi ASIC dostu olarak tasarlanmıştır. Diğer zincirlere kanıtlandığı gibi, ASIC direncini sürdürmek son derece zor, hatta imkansız olabilir. Alephium, özel donanıma karşı direnç yerine güvenli ve kararlı bir ağı önceliklendirmeye karar verdi. + +### ALPH madenciliği için hangi madencileri kullanabilirim? + +Aşağıda, bilinen Alephium madencilerinin bir listesi bulunmaktadır. Yeni madencilerin ortaya çıkmasını takip etmenin zor olması nedeniyle listenin eksik olabileceğini lütfen unutmayın. Listeye eklemek için istediğiniz zaman bir Pull Request gönderebilirsiniz. + +- https://www.bzminer.com/guides/how-to-mine-alephium/ +- https://lolminer.site/ veya https://github.com/Lolliedieb/lolMiner-releases +- https://www.srbminer.com/ veya https://github.com/doktor83/SRBMiner-Multi/releases +- https://trex-miner.com/ veya https://github.com/trexminer/T-Rex + +[Alephium'un gpu-miner'ı](https://github.com/alephium/gpu-miner)nı da kullanabilirsiniz ancak bu listedekiler kadar verimli değil. + +## Teknik + +### Neden yeni bir L1 blok zinciri? Zaten çok fazla yok mu? + +Blok zinciri anlatısı, yıkıcı teknolojiden birçok sektör için olası bir ana akım çözüme dönüştü. Bu paradigma değişikliğinden ötürü, çoğu proje, bu tür uygulamalar için gereken performans gereksinimlerini karşılamak için ölçeklenebilirliği takip ederek, ademi merkeziyetçiliğin, kendi kendini yönetmenin ve güvenliğin temel değerlerini bir kenara bırakıyor. Alephium, bu temel değerlerden ödün vermeden aynı sonucu verir ve sektörün (s)UTXO ve Po(L)W'ye olan ilgisini ateşlemek ve UTXO tabanlı DeFi ve akıllı kontrat uygulamaları hareketine öncülük etmek için benzersiz bir konuma sahiptir. + +Ek olarak, Alephium'un inşası için birkaç önemli teknolojik motivasyon vardı: + +1. Parçalama (sharding) yoluyla yatay ölçeklendirme. +2. Yeni Katman 1 (L1) blok zincirlerinin çoğu kaynak yoğundur, bu da bir tam düğüm (full node) çalıştırmayı maliyetli hale getirir ve bu da uzun vadede ademi merkeziyetçilik ve aracıların kaldırılmasına yol açabilir. Alephium'un yaklaşımı, herkesin tam bir düğüm çalıştırabileceği ve ağı doğrulayabileceği Bitcoin'e benzer. _"Güvenme, doğrula."_ +3. Pek çok yeni L1 blok zinciri, hesap modelini kullanır veya EVM ile uyumludur ve zayıf yönlerini miras alır. Alephium, merkeziyetsiz uygulamalar (dApp'ler) için daha yüksek güvenlik seviyesine sahip yeni bir programlama paradigması sağlamak için Harcanmamış İşlem Çıktısı (UTXO) modeli üzerine kurulmuş yeni bir Sanal Makine (VM) yarattı. +4. Çoğu yeni L1, Proof of Stake (PoS) konsensüs mekanizmasını kullanır. Alephium, ademi merkeziyetçiliği sağlamak için daha basit, daha tutarlı ve daha sağlam bir fikir birliği mekanizması olarak Proof of Work (PoW) üzerine inşa etmeyi seçti. + +### Alephium akıllı sözleşmeleri destekliyor mu? + +Evet, Alephium akıllı sözleşmeleri destekler. Özellikle akıllı sözleşmeler ve merkezi olmayan uygulamalar için ölçeklenebilir ve güvenli bir ağ olarak tasarlanmıştır. + +### Blok süresi neden 64 saniye? Bunun için özel bir sebep var mı? + +Proof of Work (PoW) blok zincirlerinde kesinlik, blok süresi yerine yeni bloklarda biriken iş miktarına dayanır. Bu, bir işlemin onaylanması için T blok süresine sahip N bloğa ihtiyaç duyması durumunda, onaylanması için blok süresi T/2'ye yarıya indirilirse 2N bloğa ihtiyaç duyacağı anlamına gelir ve bu da aynı süreyle sonuçlanır. + +Daha kısa blok süreleri daha iyi bir kullanıcı deneyimi sağlarken, bazı dezavantajları da vardır: + +- Daha fazla öksüz blok üretilir. PoW Ethereum'daki amca bloklarının oranı %10 veya daha yüksekken, Bitcoin'in öksüz oranı %1'den azdır. +- P2P ağında artan yük. Bu sorun, raporların Solana'daki işlemlerin %90'ına kadarının doğrulayıcı mesajları olduğunu öne sürdüğü gibi, PoS blok zincirleri için daha şiddetlidir. + +Uzun vadede hafif ve verimli bir blok zinciri sağlamak için bu tür ek yüklerden kaçınılmalıdır. Bu nedenle Alephium, Bitcoin ile daha kısa blok sürelerine sahip daha yeni blok zincirleri arasında bir denge kuran 64 saniyelik bir blok süresiyle başladı. + +Blok sürelerine ve anlık kesinliğe öncelik verenler için, Alephium üzerinde Katman 2 çözümleri oluşturulabilir ve blok zinciri olgunlaştıkça veya internet hızı arttıkça gelecekte blok süresi azaltılabilir. Sonuç olarak, kripto para alanı için hafif, ölçeklenebilir ve verimli bir Katman 1 esastır. + +### Bir işlemin gerçekleşmesi ne kadar sürer? + +Gelen işlemi mempool'da görmek için 1 saniye yeterli olmalıdır. Alephium'un blok süresi şu anda 64 saniyedir. Ekonomik kesinlik, miktara ve risk yönetiminize bağlıdır. Küçük bir işlem için mempool muhtemelen yeterlidir ve çoğu işlem için 1-4 blok yeterlidir. Ancak, bir borsa iseniz ve büyük miktarlarla uğraşıyorsanız, muhtemelen birkaç düzine ila yüzlerce blok bekleyeceksiniz. + +Blok süresi ve kesinliğe kadar geçen süre kavramı hakkında daha fazla bilgiyi şu makalelerde okuyabilirsiniz: + +- [Block time & block size](https://medium.com/@alephium/block-time-and-block-size-16e37292444f) (Blok süresi ve blok boyutu) +- [Time to finality](https://medium.com/@alephium/time-to-finality-17d64eeffd25) (Kesinliğe kadar geçen süre) + +### Neden PoS değil de PoLW'yi seçtiniz? + +Blockchain teknolojisi hala ilk aşamalarındadır ve DeFi dahil dApp'leri desteklemek için önümüzdeki 10 yıl için hangi blockchain altyapısına ihtiyaç duyulduğu ortak bir sorudur. + +Alephium, yüksek işlem hacmi ve düşük işlem ücretlerine sahip ölçeklenebilir bir blok zincirinin, Ethereum gibi yüksek düzeyde programlanabilirlik ile Bitcoin'in güvenilirliği ve güvenliği ile birlikte gerekli olduğuna inanılarak oluşturuldu. Amaç, "güvenilir bir akıllı sözleşme çözümü ile ölçeklenebilir bir Bitcoin" oluşturmaktı. + +Lindy etkisine göre, PoS ile son zamanlardaki başarılara rağmen, Bitcoin modeli ve PoW ile parçalama, ölçeklenebilir bir blok zinciri oluşturmanın hala en sağlam ve merkezi olmayan yoludur. Özellikle: + +- PoW basit ve sağlamdır ve parçalama (sharding) algoritmaları tasarlamak daha kolaydır. +- PoS henüz zamanla test edilmedi ve Ethereum'un PoS geçişinden sonra nasıl gelişeceği henüz görülmedi. +- PoS daha merkezi ve sansüre karşı daha savunmasız olma eğilimindedir. +- PoS, bir düğüm çalıştırma maliyeti önemli ölçüde daha yüksek olabileceğinden, güvensizliği azaltma eğilimindedir. +- PoS, MEV gibi bazı DeFi saldırılarına karşı daha savunmasızdır. + +### Durumlu UTXO'lar nelerdir ve diğer UTXO modellerinden nasıl farklıdırlar? + +Blok zinciri teknolojisinde iki tür durum vardır: değiştirilebilir durum (Ethereum'da görüldüğü gibi) ve değiştirilemez durum (UTXO veya eUTXO gibi). Ethereum'un canlı ekosisteminin de kanıtladığı gibi, değiştirilebilir durum daha esnek ve etkileyicidir. Ancak, UTXO modeli doğal güvenlik avantajları sağlar. + +[Alephium'un stateful UTXO modeli,](https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749) her ikisinin de avantajlarını birleştirir. Varlıklar için UTXO modelinin güvenlik avantajlarından yararlanırken, akıllı sözleşmeler için Ethereum'da bulunanlar gibi değiştirilebilir durumları destekler. + +### Alephium, düşük TPS'ye neden olabilecek klasik ve genişletilmiş UTXO modelindeki aynı eşzamanlılık sorununa eğilimli mi? + +Hayır, Alephium'un bu sınırlaması yoktur. Alephium'un durum bilgili UTXO modeli, klasik UTXO modelini hesap modeliyle birleştirir ve değiştirilebilir durumları destekler. Bu, dApp'lerin değişken sözleşme durumlarına paralel olarak erişebilmesini sağlayarak, bir eşzamanlılık sorununu olasılığını ortadan kaldırır. + +### Neden 1 milyon shard yok? + +Ağ oluşturma, shard sayısını artırmak için ana darboğazdır. Her düğüm, tutarlılık için `2G - 1` diğer parçalara sahip olmalıdır. Ortalama ağ bant genişliği yeterliyse, `G` 32 kadar yüksek ayarlanabilir. Bazı hesaplama ek yükleri de olsa da, ağ oluşturma birincil darboğazdır. + +### Alephium üzerinde shard sayısını arttırma süreci nedir? + +Shard sayısını artırmak için ağda bir yükseltme yapılması gerekiyor. Mevcut shard sayısı ağ yükünü kaldırmaya yetmediğinde bu tür bir yükseltme gerçekleşir. + +### Parçalı bir ağ, özellikle Alephium, %51'den az hashrate ile saldırıya uğrayabilir mi? Örneğin, yalnızca bir grup veya parçada ödün verilerek? + +Parçalı blok zincirleri, Vitalik'in "%1 saldırı" terminolojisinde açıkladığı gibi, düzgün tasarlanmazlarsa güvenlik endişelerine neden olabilirler. Ethereum'un parçalama yaklaşımı, bu sorunu validator karıştırmasıyla (shuffling) ele aldı. + +Öte yandan Alephium, bunu Blockflow algoritmasıyla ele aldı. Farklı shard'lardaki madencilik çalışması, blok bağımlılıkları nedeniyle biriktirilir. Bir parçalayı yeniden organize etmeye çalışan bir saldırganın, tüm bağımlılıklarından da vazgeçmesi gerekir. Bunu görmenin sezgisel ve basitleştirilmiş bir yolu, tüm shard'ların birbiriyle birleştirilmiş olarak mayınlandığını düşünmektir. + +### Alephium üzerinde tokenlar ve akıllı sözleşmeler için shardlar arası atomik yapı var mı? + +Alephium'da, tokenlar shard'lar arasında atomik olarak oluşturulabilir, yani tokenları bir shard'dan başka bir shard'a atomik olarak tek bir işlemde transfer etmek mümkündür. +Bununla birlikte, Alephium'un stateful (durumlu) UTXO modelinde akıllı sözleşmeler token ve state bileşenlerine sahip olsa da, yalnızca tokenlar shardlar arası atomik yapıya sahiptir; state'ler parçalanmıştır ve bu nedenle oluşturulamaz. Bu tasarım kararı, Alephium'un token merkezli yaklaşımını yansıtır ve bölümlenmiş bir veritabanına benzeyen daha basit bir durum tasarımına izin verir. Bu ödünleşme, token atomik yapıdan yoksun olan mevcut Layer 2 trendlerinden daha elverişlidir ve şu anda state oluşturulabilirliği için pratik bir çözüm yoktur. + +### Alephium'da flash krediler (flash loan) mümkün mü? + +Hayır, flash krediler tasarım gereği [Alephium'ın sanal makinesi Alphred](https://medium.com/@alephium/meet-alphred-a-virtual-machine-like-no-others-85ce86540025)'de mevcut değildir. + +### Alephium adresleri nasıl oluşturulur? Bir Bitcoin legacy adresi ile bir Alephium adresi arasında ayrım yapmanın bir yolu var mı? + +Alephium, adres oluşturmak için Bitcoin (secp256k1 eğrisi) ile aynı eğriyi kullanır, ancak farklı bir hash algoritması (blake2b) kullanır. Alephium adresleri 20 baytlık hash yerine 32 baytlık hash kullanması sebebiyle tipik olarak Bitcoin adreslerinden daha uzundur. + +### Ana ağ (mainnet) adresimi test ağında (testnet) kullanabilir miyim? + +Alephium adresleri bir algoritma tarafından kendi kendine oluşturulur ve ağdan bağımsızdır (testnet, mainnet, devnet, vb.). Cüzdan ve adres oluşturmak için ağ düğümüne (ve hatta internete) bağlı olmak gerekli değildir. Esasen, her Alephium adresi, henüz üretilmemiş/keşfedilmemiş olanlar da dahil olmak üzere tüm ağlarda bulunur. + +Daha eski kripto ağlarında, işlemler herhangi bir ağ bilgisi içermiyordu ve diğer ağlarda "yeniden oynatılabiliyordu". Bu nedenle, aynı adresleri farklı ağlarda kullanmak tavsiye edilmezdi. +Alephium, ağ kimliğini (ID) işlemlerine dahil eder, bu nedenle aynı adresi çeşitli ağlarda kullanmak tamamen kabul edilebilir. +Cüzdanınızı testnet gibi bir ağa bağladığınızda, adres bakiyenizi kontrol etmek için bir testnet düğümünden talepte bulunabilirsiniz. Cüzdanınızın ağ ayarlarını mainnet'e bağlanacak şekilde değiştirirseniz, bir mainnet düğümü adres bakiyenizi mainnet ağında görüntüler. Bu nedenle, her adresin her ağda bir bakiyesi vardır ve belirli bir ağın adresinizin bakiyesini ona bağlanarak görüntüleyebilirsiniz. + +### Alephium neden kendi sanal makinesini ve akıllı sözleşme dilini oluşturmayı seçti? + +Alephium'un temel aldığı [stateful UTXO modeli](https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749) tamamen yenidir ve hesap modeli için tasarlanmış olan EVM gibi mevcut sanal makinelerle uyumlu değildir. Bu, sUTXO'ların güçlü yönlerinden yararlanmak için özel olarak tasarlanmış yeni bir sanal makine [Alphred](https://medium.com/@alephium/meet-alphred-a-virtual-machine-like-no-others-85ce86540025) oluşturma kararını zorunlu kıldı. + +Solidity ile EVM'ye benzer şekilde, Alphred'in Ralph adlı alana özel bir dili vardır. Ralph, Alephium'un blok zinciri için son derece anlamlı ve kullanımı kolay olacak şekilde özel olarak oluşturulmuştur. Sanal makinenin yerleşik özellikleri sayesinde tasarım gereği güvenli olacak şekilde özel olarak geliştirilmiştir. + +Alephium, kendi VM ve akıllı sözleşme dilini oluşturarak daha iyi bir alternatif sunmayı ve Solidity ve EVM'nin bilinen bazı güvenlik sorunlarını azaltmayı başardı. Ek olarak, Alphred ve Ralph tasarlanırken geliştirme deneyimi önceliklendirildi ve geliştiriciler için kolay bir başlangıç sağlandı. + +### Alephium kuantum dirençli mi? + +Bitcoin ve Ethereum'a benzer şekilde, Alephium da kuantum bilgisayarları yakın bir endişe olarak görmemektedir. Karma oluşturma ve imzalama algoritmaları ile adres oluşturma güncellenebilir. Kuantum hesaplama sorunu, daha önemli bir tehdit haline geldiğinde ele alınacaktır. + +## Token Ekonomisi + +### Mümkün olan en düşük GAS ücreti nedir? + +Şu anda mümkün olan en düşük gas ücreti `10^-7` ALPH veya `0.0000001` ALPH'tır. + +### Alephium'un emisyon programı nedir? Alephium'da halving (blok ödülü yarıya indirme) var mı? + +Alephium'da Bitcoin gibi bir halving yoktur. Emisyon programı, ağ hashrate'ine ve zaman damgasına bağlıdır. Madencilik ödülleri her blokta dinamik olarak ayarlanır. Bu konuda şu makalelerden daha fazla bilgi edinebilirsiniz: + +- [Block Reward](https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33) (Blok Ödülü) +- [Proof of Less Work](https://medium.com/@alephium/tech-talk-1-the-ultimate-guide-to-proof-of-less-work-the-universe-and-everything-ba70644ab301) (Azaltılmış İş İspatı) + +### Tokenlar yakılırsa, gelecekte mevcut ALPH miktarının sıfıra yakın olacağı bir zaman olacak mı? + +Teorik olarak, evet. 80 yıl bir yana, 10 yıl sonra da teknolojilerin geleceğini tahmin etmek zor. Alephium gibi blok zincirleri için, emisyon programı gibi politikaların teknolojiler geliştikçe değişmesi alışılmadık bir durum değildir. Konsensüs, emisyon programında bir değişikliği kabul ederse, değişiklik uygulanır. + +### Maksimum arz sınırı nasıl uygulanıyor? + +1 milyar ALPH'lik maksimum arz sınırı bir tahmindir. Protokol, yaklaşık 80 yıllık bir zaman damgasına göre emisyonlarda bir sınır uygular. Bunun nedeni, protokol içinde paylaşılan bir zincir için emisyonlar toplamını hesaplamanın hesaplama açısından maliyetli olmasıdır. Emisyon oranı zamana göre belirlenir ve hashrate'e göre değişir. +Geliştirilmiş [DAA](https://github.com/alephium/alephium/blob/master/docs/proposals/lemanDAA.md)'nın uygulanmasından önce 1 milyar sınırın tahmin edildiğini belirtmekte fayda var. Mevcut kodla, POLW mekanizmasının ücret yakması dikkate alınmasa bile, gerçek emisyon sınırı ve maksimum ALPH arzının 80 yıl içinde 1 milyardan az olması bekleniyor. + +## Cüzdan + +### Alephium ne tür bir cüzdan sunuyor? + +Alephium şu anda şunları sunmaktadır: + +- Bir [masaüstü cüzdanı](https://github.com/alephium/desktop-wallet/releases/latest) +- [Chrome](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj) ve [Firefox](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) için mevcut bir [web uzantısı cüzdanı](https://github.com/alephium/extension-wallet) +- Bir [mobil cüzdan](https://github.com/alephium/mobile-wallet) üzerinde çalışılmaktadır. + +Resmi cüzdanlara ek olarak, birkaç üçüncü taraf cüzdan mevcuttur. + +### Alephium'un donanım cüzdanlarında desteklenmesi planlanıyor mu? + +Donanım cüzdanı desteği sunmak Alephium için önemli bir önceliktir. +Şu anda bir Ledger entegrasyonu üzerinde çalışılmaktadır ve web uzantısı cüzdanı `v0.7.0` ile geliştirici modunda mevcut olacaktır. +Ledger'da resmi yayın, tamamlanması zaman alacak birden çok aşamalı uzun bir süreçtir. + +### Seed'imi masaüstü cüzdanına aktarırken, onunla birlikte oluşturulan tüm adresleri de aktarmak mümkün mü? + +Cüzdanınızı kurtarma cümlesi (recovery phrase) kullanarak aktardıktan sonra, artık bağlı ağınızı tarayarak geçmişte kullandığınız tüm aktif adresleri keşfedebilir. Aktif adres, en az bir işlemi olan bir adrestir. Manuel adres keşfi için Adresler bölümüne gidin ve"+ Yeni adres" butonunun yanındaki anahtar ikonuna tıklayın. "Aktif adresleri keşfet" seçeneğindeki “Ara” butonuna tıkladıktan sonra Masaüstü cüzdanı, bu kurtarma cümlesine bağlı tüm aktif adresleri gösterecektir. + +### Masaüstü cüzdanı hangi analitikleri topluyor? + +Alephium gizlilik ve kullanıcı deneyimi ile ilgili endişeleri ciddiye almaktadır. Analitikleri etkinleştirmek ise aslında gizliliğinizi tehlikeye atmadan kullanıcı deneyimini iyileştirmeye yardımcı olabilir. Masaüstü Cüzdanı tarafından toplanan bilgiler tamamen anonimdir. Cüzdanınızın ilk başlatılmasında, gerekli olan tek tanımlama bilgisi benzersiz bir kimlik (ID) oluşturulur (örneğin, `vCJGCsDPrZ8WJaIKZMWjU`). IP'ler veya diğer herhangi bir [kişisel veri](https://posthog.com/blog/what-is-personal-data-pii) toplanmaz. Yalnızca buton tıklamaları, cüzdan, adres, kişiler ve cüzdan tercihleri kaydedilir. Bu bilgiler, yararlı özellikleri ve iyileştirme alanlarını belirlemeye yardımcı olur. +Alephium'un açık kaynak kod tabanı, kullanıcıların hangi olayların yakalandığını [ `posthog?.capture` anahtar kelimesini arayarak ](https://github.com/search?q=repo%3Aalephium%2Fdesktop-wallet+posthog?.capture&type=code) doğrulamasına olanak tanır. + +### Token göndermeye çalıştığımda işlemlerime neden token başına ek olarak 0,001 ALPH ekleniyor? + +UTXO spamming'in önüne geçmek için `0.001` ALPH, UTXO başına minimum gerekliliktir. Bu miktar ağ tarafından tüketilmez ve tokenlar ile aynı şekilde hedef adrese ulaşır. + +### Gizli kurtarma cümlemi (secret recovery phrase) yedeklemek neden önemli? + +Gizli kurtarma cümlenizi yedeklemek çok önemlidir, çünkü cüzdanınız için ana anahtar görevi görür. Cüzdanınıza erişimi kaybederseniz (örneğin, cihaz kaybı, arızası veya uygulamanın silinmesi nedeniyle), gizli kurtarma cümlesi varlıklarınızı geri yüklemenin ve onlara erişmenin tek yoludur. +Bu cümle olmadan, cüzdanda saklanan tüm varlıklar kalıcı olarak kaybolabilir. Gizli kurtarma cümlenizi son derece dikkatli bir şekilde ele alın ve güvenli ve özel bir yerde saklayın. + +## Muhtelif + +### Çevrilmiş içeriği nasıl bulabilirim? + +Medium, Twitter ve Youtube'da birçok uluslararası ve çevrilmiş içerik bulabilirsiniz. + +Twitter'da aşağıdaki topluluk hesapları Alephium tweetlerini çevirir: + +- [German](https://twitter.com/Alephiumde) (Almanca) +- [French](https://twitter.com/Alephiumfr) (Fransızca) +- [Bulgarian](https://twitter.com/alephiumbg) (Bulgarca) +- [Indonesian](https://twitter.com/Alephium_id) (Endonezce) + +Çevirmenler, çevrilmiş içeriği yayınladıklarında aşağıdaki etiket (hashtag) yapısını kullanmaya teşvik edilir: #Alephium\[i18n\] +Medium, Twitter ve diğer kanallarda aşağıdaki etiketlerle çevirileri bulabilirsiniz: + +- İspanyolca: "#AlephiumES" +- Portekizce: "#AlephiumPT" +- Fransızca: "#AlephiumFR" +- Almanca: "#AlephiumDE" +- Bulgarca: "#AlephiumBG" + +[Discord sunucusu](https://alephium.org/discord) üzerinde, Alephium'un özel uluslararası kanalları vardır. + +Telegram'da aşağıdaki topluluk tarafından yönetilen gruplar mevcuttur: + +- [German](https://t.me/alphgermanofficial) (Almanca) +- [Vietnamese](https://t.me/alephiumvn) (Vietnamca) +- [Russian](https://t.me/alephiumgroup_ru) (Rusça) +- [Portugese](https://t.me/Alephium_pt) (Portekizce) +- [Turkish](https://t.me/alephiumturkiye) (Türkçe) +- [Dutch](https://t.me/AlephiumgroupNL) (Felemenkçe) +- [Chinese](https://t.me/alephiumCN) (Çince) + +### Yeni olan ne? + +Alephium'un duyuru kanallarını kontrol edin [Discord](https://discord.gg/AFXKJNVFKJ) ve [Telegram](https://t.me/Alephium_Announcement). +Ayrıca her hafta [Discord](https://alephium.org/discord), [Reddit](https://www.reddit.com/r/Alephium) & [Twitter](https://twitter.com/alephium) üzerinde geliştirme güncellemelerimiz bulunmaktadır. + +### Proje neden Alephium olarak adlandırıldı? + +Alephium adı, Wikipedia'da şu şekilde tanımlanan "Aleph" teriminden türetilmiştir: "Aleph sayıları, iyi sıralanabilen sonsuz kümelerin kardinalitesini temsil etmek için kullanılan bir sayı dizisidir. Matematikçi Georg Cantor tarafından tanıtıldılar ve onları belirtmek için kullandığı İbranice aleph (ℵ) harfinden sonra adlandırıldılar.." + +Aslında, Alephium logosu Aleph harfinin stilize edilmiş bir versiyonudur. + +Ethereum'un teknik vaatlerine bir gönderme olarak Alephium, benzer bir adlandırma kuralı kullanılarak adlandırılmıştır. + +### Leman Yükseltmesi nedir? + +30 Mart 2023'te etkinleştirilen [Leman Yükseltmesi](https://medium.com/@alephium/the-leman-network-upgrade-is-live-f52c89b7dd6a), Alephium ağının ilk ağ yükseltmesidir. Birçok katılımcının bir yıldan fazla süren sıkı çalışmasının ve özverisinin zirvesidir ve proje için önemli bir dönüm noktasını temsil eder. Merkeziyetsiz uygulamalar oluşturmak için zenginleştirilmiş bir geliştirici deneyimi sunan çok sayıda yeni özellikle, Alephium ekosisteminin büyümesine yönelik ilk adımdır. + +### Alephium hakkında her şeyi 5 dakikada nerede öğrenebilirim? + +İyi bir genel bakış, [belgeler](https://docs.alephium.org/) üzerinde mevcuttur ve bu SSS'nin başında ek kaynaklar bulunur. + +### AYA NE ZAMAN GİDİYORUZ? + +1ALPH her zaman 1ALPH eder. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/Leman Network Upgrade.md b/i18n/tr/docusaurus-plugin-content-docs/current/Leman Network Upgrade.md new file mode 100644 index 00000000..d1a75b79 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/Leman Network Upgrade.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 60 +title: Leman Ağı Yükseltmesi +sidebar_label: Leman Ağı Yükseltmesi +--- + +:::info +Bu sayfa gelecekteki güncellemelere tabi olabilir +::: + +Bu sayfada Leman Ağı Yükseltmesi ile ilgili tüm bilgileri bulacaksınız. Leman Ağı Yükseltmesi, Alephium'un gelişiminde bir sonraki adımdır ve blokzincirine yeni işlevler ve özellikler getirecektir. + +## Neden Leman Yükseltmesi? + +Alephium, 8 Kasım 2021'den bu yana ana ağda yayında. Çekirdek geliştiriciler o zamandan beri tüm yığının performansını ve güvenliğini artırmaya odaklanmış, aynı zamanda en iyi sınıf dApp geliştirici deneyimini sağlamayı amaçlamıştır. + +Test ağında yeterince test edildikten sonra, Leman Yükseltmesi bu önemli iyileştirmeleri ana ağa getiriyor. Bu değişiklikler önemli olduğundan, yükseltme geriye dönük uyumlu olmayan yeni özellikler ve değişiklikler getirecek ve tüm düğümlerin yükseltilmesini gerektirecektir. + +Leman Yükseltmesi (neden) ile ilgili tam bir yazıya [buradan](https://medium.com/@alephium/announcing-the-leman-network-upgrade-c01a81e65f0e) ulaşabilirsiniz. + +Ve yükseltmenin kendisi için hazırlık durumu hakkında güncellemeye [buradan](https://medium.com/@alephium/the-leman-upgrade-2-232e3374abc4) ulaşabilirsiniz. + +Ve Leman Ağı Yükseltmesi ile tanıtılan özellikler hakkında Teknik Bir Konuşma [buradan](https://www.youtube.com/watch?v=n7ycJUIfbVg) ulaşabilirsiniz. + +## Geliştiriciler için İyileştirilmiş devX Deneyimi + +### SDK + +Alephium üzerinde dApp'ler geliştirmek ve etkileşim kurmak için bir dizi araç + +- Github: [https://github.com/alephium/alephium-web3](https://github.com/alephium/alephium-web3) +- Dokümanlar: [https://docs.alephium.org/dapps/alephium-web3](https://docs.alephium.org/dapps/alephium-web3) + +### Ralph + +Alephium'un dApp'ler için programlama dili + +- Github: [https://github.com/alephium/ralphc](https://github.com/alephium/ralphc) +- Dokümanlar: [https://docs.alephium.org/ralph/getting-started](https://docs.alephium.org/ralph/getting-started) + +### dApp Prototipleri + +Şimdi şeyler inşa et! Alephium'da dApp'ler nasıl oluşturulur: https://docs.alephium.org/dapps/build-dapp-from-scratch + +Zaten oluşturulan dApp'lerin örnekleri: + +- NFT Pazarı: NFT'leri oluşturun, satın alın ve satın + +Github: [alephium/alephium-nft#1](https://github.com/alephium/alephium-nft) + +- DEX: Token'ları takas edin veya Bir Merkezi Olmayan Borsada (DEX) Likidite Sağlayıcısı (LP) olun + +Github: https://github.com/Lbqds/alephium-dex/tree/master/contracts + +### Genel Hizmetler + +Faucet ve API'lar + +Genel Hizmetler: [https://docs.alephium.org/dapps/public-services](https://docs.alephium.org/dapps/public-services) + +## Kullanıcı Deneyimini Genişletme + +Ön uç her şeyin tamamen yeniden tasarlanması + yeni araçlar alır! https://medium.com/@alephium/the-front-end-leman-upgrade-948a98a3e2d + +:::info +Yakında Geliyor: Cüzdanların (Masaüstü ve Mobil) sonraki sürümlerini deneyin +::: + +Sorularınız mı var? [Discord](https://alephium.org/discord)'umuza katılın + +## Diğer zincirlere köprüleme için temeller + +Çekirdek geliştiriciler, Alephium ile Ethereum arasında bir Köprü geliştiriyorlar. + +Kodunu aşağıdaki bağlantıda bulabilirsiniz: [https://github.com/alephium/wormhole-fork/tree/add-alephium-to-wormhole/alephium](https://github.com/alephium/wormhole-fork/tree/add-alephium-to-wormhole/alephium) + +Alephium-Ethereum Köprüsü test ağında dağıtıldı. + +# Test Ağı + +Aşağıdaki uygulamalarla ve araçlarla test ağına bağlanabilir ve etkileşimde bulunabilirsiniz: + +### **Uzantı Cüzdanı** + +- Dokümanlar: https://docs.alephium.org/wallet/extension-wallet/overview +⬇️ Uzantı cüzdanını indirin +🔵 [Google Chrome mağazası](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj) +🟠 [Firefox Mağazası](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) + +### Test Ağı Blok Keşifçisi + +- Bağlantı: https://testnet.alephium.org/ + +### NFT Pazarı + +- Bağlantı: https://alephium-nft.softfork.se/my-nfts +- NFT Pazarı ile Etkileşim Nasıl Olur: https://medium.com/@alephium/alephium-launches-browser-extension-wallet-706dfeda98f5 + +### Alephium Test Ağı'nda DEX + +- Bağlantı: https://alephium.github.io/alephium-dex +- DEX ile Etkileşim Nasıl Olur: https://medium.com/@alephium/dex-prototype-live-on-testnet-bac5e7d095ce +- Alephium test ağında bir token nasıl oluşturulur: *Yakında* + +### Alephium Ethereum Köprüsü + +- Bağlantı: [https://portal-bridge.wormhole-testnet.softfork.se/](https://portal-bridge.wormhole-testnet.softfork.se/) +- Köprü ile Etkileşim Nasıl Olur: *Yakında* +- Ethereum Goerli Test Ağı ile Nasıl Bağlantı Kurulur: *Yakında* diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/The Bridge.md b/i18n/tr/docusaurus-plugin-content-docs/current/The Bridge.md new file mode 100644 index 00000000..02dc10cc --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/The Bridge.md @@ -0,0 +1,118 @@ +# Köprü + +## Öğreticiler ve Bağlantılar + +Köprü Websitesi: https://bridge.alephium.org/#/ + +Köprü Keşif Websitesi: https://explorer.bridge.alephium.org/ + +Köprü Öğretici Makalesi (Ana Ağ): https://medium.com/@alephium/alephiumalephium-bridge-the-tutorial-28e7b92b339a + +Alephium Köprüsü Nasıl Çalışır? Nasıl Kullanılır? (Makale): https://medium.com/@alephium/the-alephium-bridge-a787d90b2e4a + +Köprü Öğretici (Ana Ağ): https://www.youtube.com/watch?v=xoYVzbwBAjg + +## Köprü SSS + +### 1. Yeterince bekledim ve hak talep edemiyorum! Ne yapmalıyım? + +Lütfen şunları dikkate alın: + +- ETH'den ALPH'a köprü kurma işlemi ortalama 15-20 dakika sürer. + +- ALPH'tan ETH'ye köprü kurma işlemi biraz daha uzun sürebilir. İşlemin iki koşulu karşılaması gerekir: en az 105 blok ve en az 112 dakika. Koşullardan biri karşılanmazsa, hak talebinde bulunulamaz (henüz). + +Çoğu durumda, tokenlerinizi talep etmek için biraz daha beklemek yeterlidir. + +Hala çalışmıyorsa, lütfen köprüye bağlı cüzdanlarınızı bağlantısız hale getirin ve yeniden talep etmeyi deneyin (bkz. + +Bu çalışmazsa, burada bir sorun açın. + + +### 2. Köprü, yeni bir cüzdan adresi oluşturmam gerektiğini bildirdi! Bu ne anlama geliyor? + +Alephium'daki çoğu dapp ile etkileşim kurmak için Grup 0 adresi oluşturmanız gerekmektedir. İşte nasıl yapılır: + +### Masaüstü: + +Adresler sekmesine gidin ve "+ Yeni adres"i tıklayın. +Gelişmiş seçenekleri işaretleyin ve "Grup 0"ı seçin. +Adresi oluşturmak için üretmek üzerine tıklayın. +Köprü için bu adrese fonlarınızı aktarın. + +### Uzantı: + +Uygulamanın sol üst köşesindeki mevcut cüzdanınıza tıklayın. +Yeni bir adres eklemek için artı simgesini seçin. +Yeni adres için istenen grubu seçin. +Köprü için bu adrese fonlarınızı aktarın. + + +### Mobil: + +Mobil uygulama sizin için adresi oluşturacaktır. +Oluşturulan adrese fonları aktarın. +Köprü işlemine devam edin. + + +Köprüleme için yeni oluşturulan adreslere fonlarınızı aktardığınızı unutmayın. + +### 3. "Alınamadı" hataları alıyorum! + +Bu hata, cüzdanınızın kendini kilitlemesi ile ilgilidir. Bu durumu aşmanın adımları basittir: + + +- Sayfanın alt kısmından İşlem Hash'inizi kopyalayın, belki lazım olur. +- Sayfayı yenileyin +- "İşlemler" sekmesine geçin. +- Cüzdanlarınızı yeniden bağlayın +- İşleminizi kurtarın. + +### 4. Onaylar güncellenmiyor. + + +Genellikle bu, cüzdanlarınızdan birinin kendini kilitlemiş olması anlamına gelir. Lütfen sayfanın alt kısmından İşlem Hash'inizi kopyalayın, sayfayı yenileyin, cüzdanlarınızı yeniden bağlayın ve işlemi kurtarabileceğiniz hak talep etme sekmesine gidin. + + +### 5. İşlem 105 onaydan fazla ve hak talep edemiyorum! + +ALPH'ten ETH'ye köprü kurma işlemi biraz daha uzun sürebilir. İşlemin iki koşulu karşılaması gerekir: en az 105 blok ve en az 112 dakika. Koşullardan biri karşılanmazsa, hak talebinde bulunulamaz (henüz). Sorun devam ederse, aşağıdakilerde sağlanan çözümleri deneyin: + +- "Sorun 1. Yeterince bekledim ve hak talep edemiyorum! Ne yapmalıyım?" +- "Sorun 6. VAA hatası alıyorum! Ve hak talep edemiyorum." + +Bu çalışmazsa, burada bir sorun açın. + +### 6. VAA hatası alıyorum! Ve hak talep edemiyorum. + + +VAA hatası alıyorsanız ve yeniden denemeden önce beklemek işe yaramadıysa, aşağıdaki adımları deneyin: + +- Sekmeyi kapatın ve yeniden açın. +- Cüzdanlarınızı bağlayın. +- İşleminizi "İşlemler" sekmesinden kurtarın. +- Yeniden deneyin. + +Bu çalışmazsa, burada bir sorun açın. + +### 7. Sadece USDT'yi ETH'ten ALPH'a köprü kurabilir miyiz? + +Hayır. Örneğin, USDC, ETH, DAI, WBTC ve ALPH da dahil olmak üzere diğer tüm tokenları da köprüleyebilirsiniz. Sağlanan UI kullanarak, [1inch listesindeki](https://tokenlists.org/token-list?url=tokens.1inch.eth) tüm tokenları köprüleyebilirsiniz. + +Ve akıllı sözleşmeyle doğrudan etkileşim kurarsanız, istediğiniz tüm erc20 tokenları köprüleyebilirsiniz. + +### 8. ETH ve/veya USDC köprüledim, ancak AYIN havuzlarında likidite yok, ne yapabilirim? + +Herhangi bir tokeni köprülemeden önce, yeterli likidite olup olmadığını kontrol edin, aksi takdirde bu tokenları geri köprülemeniz gerekebilir. + + +### 9. ALPH ERC-20 tokenını Metamask'ıma nasıl eklerim? + +ALPH ERC-20 tokenınızı Metamask cüzdanınızda görmek için aşağıdaki adımları izlemeniz gerekecektir: + +- [Buradan](https://etherscan.io/token/0x590F820444fA3638e022776752c5eEF34E2F89A6) Token Sözleşmesini alın. +- Metamask'ınızı açın ve kilidini açın. +- "Token Ekle"ye tıklayın. +- "Özel Token"u seçin +- Sözleşmeyi ilk alana kopyalayın ve yapıştırın. +- "İleri" ve ardından "Ekle"ye basın. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Best-Practices.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Best-Practices.md.drop new file mode 100644 index 00000000..94d1fbce --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Best-Practices.md.drop @@ -0,0 +1,25 @@ +sidebar_position: 50 +title: En İyi Uygulamalar +--- + +:::caution +Bu sayfa, dApp yığınımız daha kararlı olana kadar yapım aşamasındadır 🚧 +::: + +Her dilin kendi deyimleri vardır ve Ralph da bundan farklı değildir. Kodunuzu anlayabilen diğerlerinin, Ralph'i okuyabilen diğerlerinin kodunuzu anlayabilmesi için bu deyimleri izlemek önemlidir. Özet, güvenli ve uzman kod genellikle izlenecektir. + +## Genel tavsiyeler + +Akıllı kontrat programları yazarken, kullanılacak depolama miktarını ve kontratınızın yapacağı hesaplamayı hesaba katmak gerekir. Alan ve hesaplama arttıkça, kontratın maliyeti artar. Bu nedenle, kontratı mümkün olduğunca basit tutmayı ve alanı ve hesaplamayı mümkün olduğunca dışarıda tutmayı hedeflemelisiniz. + +Örneğin, tam bir belgeyi saklamak yerine, belgenin varlığına dair bir kanıt olarak hash'ini saklayabilirsiniz. + +Başka bir örnek, tam bir cümle saklamak yerine, dış bir sözlüğe indeksler saklayabilir ve daha sonra tam cümleyi yeniden oluşturabilirsiniz. + +Para ile etkileşim kuran kod, yüksek risk olarak kabul edilmelidir. Herhangi bir yüksek riskli kod, hatalar için denetim yapmayı kolaylaştırmak için bir araya getirilmiş birçok assert ve onay çağrısı kullanmalıdır. + +## Güvenlik Teknikleri + +:::note +TODO +::: diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Developing-Your-First-dApp.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Developing-Your-First-dApp.md.drop new file mode 100644 index 00000000..c22a7d3e --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Developing-Your-First-dApp.md.drop @@ -0,0 +1,74 @@ +--- +sidebar_position: 40 +title: İlk dApp'inizi Geliştirme +--- + +:::caution +Bu sayfa, dApps yığını daha istikrarlı hale gelene kadar WIP durumundadır 🚧 +::: + +Belge, akıllı sözleşmelerin geliştirilmesini iki bölüme ayırır: sunucu +ve istemci. + +Sözleşme etkileşimini, web geliştirmenin istemci-sunucu mimarisine benzer şekilde hayal edebilirsiniz. Blockchain'deki sözleşme sunucudur ve çağrılmayı bekler. Web tarayıcısı, kodu kullanarak sözleşmeyi çağırır. Sözleşmeler, HTTP ve JSON'ı desteklediği sürece herhangi bir şeyden çağrılabilir. Ancak etkileşimli bir dApp için, arayüzü oluşturmak ve sözleşme (ler) ile iletişim kurmak için web teknolojilerini kullanacağız. + +## Gereksinimler + +Bir dApp yazıp dağıtmak için **sadece iki gereksinim** vardır: + +- alephium/desktop-wallet:cheng-walletconnect +- nodejs + +ve hardfork gerçekleşene kadar geçici olarak bir gereksinim: + +- alephium/alephium:1.4.x + +### Kurulum + +- Masaüstü cüzdanını başlatın +- Cüzdanın testnet'i kullandığından emin olun +- Yeni bir cüzdan oluşturun +- Testnet ALPH talep edin veya Discord'dan alın + +## Akıllı sözleşmenin parçaları + +Kalbinde gerçekten yalnızca bir akıllı sözleşme parçası vardır ve bu da +**TxContract**'tir. Ancak, onu kullanmak için bir parça daha gereklidir: **TxScript**. Bu ilişkiyi görmek için bir yol, TxContract'in bir paket / kütüphane olduğu ve TxScript'in onu kullanan program olduğudur. Daha ilginç ve karmaşık sözleşmeler, sonuçta TxContract'ların diğer TxContract'ları kullanmasından oluşabilir! Ancak sonunda işlemde gönderildiğinde yürütmenin başlatılmasını TxScript yapar. + +Devam ederken semantikleri biraz daha iyi anlamak için [dil referansı] 'nı yanınızda açmanız iyi bir fikirdir. Semantikler her şeyin yanında açıklansaydı, öğrenilecek çok fazla yeni bilgi eklerdi. + +### TxContract + +:::note +YAPILACAK +::: + +### TxScript + +:::note +YAPILACAK +::: + +## Web tarayıcısı, akıllı sözleşme ve cüzdan üçlüsü + +:::note +YAPILACAK +::: + +### @alephium + +:::note +YAPILACAK +::: + +### WalletConnect + +:::note +YAPILACAK +::: + +### Birlikte oluşturmak (geliştirme ve etkileşim) + +:::note +YAPILACAK +::: diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Technical-Guide-With-A-Fullnode.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Technical-Guide-With-A-Fullnode.md.drop new file mode 100644 index 00000000..bbe7b656 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/Technical-Guide-With-A-Fullnode.md.drop @@ -0,0 +1,755 @@ +--- +sidebar_position: 20 +title: Tam Düğüm ile Teknik Rehber +--- + +:::caution +Bu sayfa, dApp yığınımız daha kararlı hale gelene kadar WIP'tir 🚧 +::: + +Bu belge, Alephium ana ağındaki akıllı kontratların oluşturulması, dağıtılması ve kullanımıyla ilgili rehberlik eder. + +Öncelikle herhangi bir kullanıcının **ALPH** tokenlerini takas etmesine izin veren bir kontratı dağıtacağız. Daha sonra, kontratı token satın almak için çağıran bir betik dağıtacağız. + +Bu belge, [Çin akıllı kontrat öğretici ve belgelerine](https://github.com/Lbqds/alephium-docs/blob/master/contract.md) dayanmaktadır, [Lbqds](https://github.com/Lbqds) tarafından. + +## Gereksinimler + +Bu öğretici için yerel olarak çalışan bir düğüm ve bir cüzdanınızın olması gerekmektedir. İlgili öğreticiler aşağıda listelenmiştir: + +- [Düğümünüzü nasıl başlatacağınızı](https://github.com/alephium/alephium/wiki/Starter-Guide---How-to-Launch-your-node) +- [Bir cüzdanı nasıl kuracağınızı](https://github.com/alephium/alephium/wiki/Wallet-Guide) + +Bu öğreticide `demo-1` adında bir cüzdan kullanacağız. + +## Bir token kontratı oluşturun ve dağıtın + +Bu bölümde bir kontrat işlemini oluşturacak, derleyecek, imzalayacak ve göndereceğiz. + +### Bir token Kontratı Oluşturun + +Öncelikle aşağıda gösterildiği gibi bir token kontratı oluşturuyoruz: + +```rust +TxContract MyToken(owner: Address, mut remain: U256) { + pub payable fn buy(from: Address, alphAmount: U256) -> () { + let tokenAmount = alphAmount * 1000 + assert!(remain >= tokenAmount) + let tokenId = selfTokenId!() + transferAlph!(from, owner, alphAmount) + transferTokenFromSelf!(from, tokenId, tokenAmount) + remain = remain - tokenAmount + } +} +``` + +Bu basit token kontratı, kullanıcıların kontrat sahibine `1:1000` oranında **ALPH** ödeyerek token satın almasına izin verir. Aşağıdaki yerleşik işlevleri kullanır: + +- `assert!(pred)`: `pred` değeri `false` olduğunda kontrat yürütmesini başarısız kılar +- `selfTokenId!(a)`: Geçerli token kimliğini döndürür, bu aynı zamanda geçerli kontrat kimliğidir +- `transferAlph!(from, to, alphAmount)`: Adresten `from` `to`'ya `alphAmount` **ALPH** transfer eder. +- `transferTokenFromSelf!(to, tokenId, tokenAmount)`: `MyToken`'ın `to` adresine `tokenAmount` tokeni transfer eder. + +**Not**: `remain` değişkeni gerekli değildir ancak kontratın durum değişkenlerini anlamak için yardımcı olur. Kontrat durumunun nasıl depolandığını daha sonra açıklayacağız. + +### Bir Kontratı Derleyin + +Daha sonra, tam düğüm API'si aracılığıyla kontratı derliyoruz. + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/contracts/compile-contract' \ + -H 'Content-Type: application/json' \ + -d '{ + "code": "TxContract MyToken(owner: Address, mut remain: U256) {\n pub payable fn buy(from: Address, alphAmount: U256) -> () {\n let tokenAmount = alphAmount * 1000\n assert!(remain >= tokenAmount)\n let tokenId = selfTokenId!()\n transferAlph!(from, owner, alphAmount)\n transferTokenFromSelf!(from, tokenId, tokenAmount)\n remain = remain - tokenAmount\n }\n}" +}' +``` + +Yanıt olarak kontratın ikili kodunu alıyoruz: + +```json +{ + "compiled": { + "type": "SimpleContractByteCode", + "bytecode": "0201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101" + }, + "fields": { + "signature": "TxContract MyToken(owner:Address,mut remain:U256)", + "types": ["Address", "U256"] + }, + "functions": [ + { + "name": "buy", + "signature": "pub payable buy(from:Address,alphAmount:U256)->()", + "argTypes": ["Address", "U256"], + "returnTypes": [] + } + ], + "events": [] +} +``` + +### İmzasız bir kontrat işlemi oluşturun + +Şimdi kontrat işlemini oluşturmalıyız. İlk olarak, şu anda kullanılan adresin publicKey'ini elde ediyoruz. Adres olarak `1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG` adresini kullanıyoruz. + +```bash +curl 'http://127.0.0.1:12973/wallets/demo-1/addresses/1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG' +``` + +Aşağıdaki yanıtı alıyoruz: + +```json +{ + "address": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG", + "publicKey": "029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f1", + "group": 3, + "path": "m/44'/1234'/0'/0/0" +} +``` + +Daha sonra kontrat işlemini oluşturuyoruz. + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/contracts/unsigned-tx/build-contract' \ + -H 'Content-Type: application/json' \ + -d '{ + "fromPublicKey": "029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f1", + "bytecode": "0201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101", + "initialFields": [{"type": "Address", "value": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG"}, {"type": "U256", "value": "10000000000000000000000000000"}], + "issueTokenAmount": "10000000000000000000000000000" +}' +``` + +Parametreler şunlardır: + +- `fromPublicKey`: Şu anda kullanılan adresin genel anahtarı +- `bytecode`: Kontrat ikili kodu +- `initialFields`: Kontrat yapılandırıcısına iletilen başlangıç durum değişkenlerinin listesi +- `issueTokenAmount`: Kontrat tarafından verilen toplam token sayısı + +Aşağıdaki yanıtı alıyoruz: + +```json +{ + "group": 3, + "unsignedTx": "000401010101000000081500bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e313c1e8d4a51000a21440300201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101144031020400bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e302c8204fce5e3e2502611000000013c8204fce5e3e25026110000000ae1880013880c1174876e80001adcf9eb78826cef24403641dea9e899dbbcfc7007c21e0ff46a76189d04a830986eb7c9e00029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f100", + "gasAmount": 57222, + "gasPrice": "100000000000", + "txId": "a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2", + "contractAddress": "2AKg3eFfeBANTSc1RPH4FUho8KrrzMdKMCiXeBc2X3taP" +} +``` + +### Bir kontratı imzalayın + +Daha sonra, önceden alınan işlem hash'ini imzalıyoruz. + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/wallets/demo-1/sign' \ + -H 'Content-Type: application/json' \ + -d '{ + "data": "a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2" +}' +``` + +Yanıt imzayı içerir. + +```json +{ + "signature": "77373aeac77ca269169faada8a2f3f60301a4a0fe0f0a5d96d0c8c5551a176f140e7526662f7dbbe58b3294fcc63eac269f74e289da62c95ab8149728eb317af" +} +``` + +### Bir kontratı gönderin + +Son olarak, kontrat işlemini Alephium ağına gönderiyoruz. + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/transactions/submit' \ + -H 'Content-Type: application/json' \ + -d '{ + "unsignedTx": "000401010101000000081500bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e313c1e8d4a51000a21440300201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101144031020400bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e302c8204fce5e3e2502611000000013c8204fce5e3e25026110000000ae1880013880c1174876e80001adcf9eb757a0fc312c490625510071acc022635fa53f4649813549f0669095473a7a7d7600029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f100", + "signature": "77373aeac77ca269169faada8a2f3f60301a4a0fe0f0a5d96d0c8c5551a176f140e7526662f7dbbe58b3294fcc63eac269f74e289da62c95ab8149728eb317af" +}' +``` + +İstek geçerliyse, aşağıdaki gibi bir yanıt alınır. + +```json +{ + "txId": "a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2", + "fromGroup": 3, + "toGroup": 3 +} +``` + +Kontrat oluşturma sürecini daha net anlamak için yukarıdaki işlemin belirli içeriğine bakalım. Şu anda bir işlemin içeriğini incelemek için kullanıcı dostu bir arayüz yok, bu nedenle işlem içeren bloğu düğüm API'si aracılığıyla almalıyız. (Bir işlemin blok hash'ini ya gezgin veya `GET /transaction/status?txId={txId}` uç noktasıyla alabilirsiniz) + + +```bash +curl 'http://127.0.0.1:12973/blockflow/blocks/08041abb8bc8d06c6b840ceb345a4f8953a9fbf9c32c08be34a63c93fd8dfcdf \ +``` + +İşlemler listesi alıyoruz (burada okunabilirlik için yalnızca 5 işlemden 2'sini gösteriyoruz): + +```json +{ + "hash": "08041abb8bc8d06c6b840ceb345a4f8953a9fbf9c32c08be34a63c93fd8dfcdf", + "timestamp": 1652689725997, + "chainFrom": 3, + "chainTo": 3, + "height": 12, + "deps": [ + "40d58f8563a6de46fa0efda4670aeb43a451b349d8af1403b341413d5010c0e0", + "30b0c63cf62aa6cdc1c72e8fc2f31703b8318654b65acaaece48ee503da87845", + "be73f0505c81184bc4691ee1ffeafaf7fbb091f412d500fc882aeecc8929e1fa", + "8f8ddaeddfd21b003ad39dfd1d7c4593d7f63d2951aecd16de8a749edf26c23c", + "6d258ca53dbe960adf19f899248e1d60c83ac65aac323a4ff195541b84ccfb4d", + "4862925410e6951836bd8808b94a8492ca5d718ec642d375f170e5b3b8ca51ce", + "c5a260997400e9512b6e1ca41c18653580e39ecdbd33c26f9ee971b6f2bb96cf" + ], + "transactions": [ + { + "unsigned": { + "txId": "a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2", + "version": 0, + "networkId": 4, + "scriptOpt": "010101000000081500bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e313c1e8d4a51000a21440300201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101144031020400bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e302c8204fce5e3e2502611000000013c8204fce5e3e25026110000000ae18", + "gasAmount": 57222, + "gasPrice": "100000000000", + "inputs": [ + { + "outputRef": { + "hint": -1378902345, + "key": "8826cef24403641dea9e899dbbcfc7007c21e0ff46a76189d04a830986eb7c9e" + }, + "unlockScript": "00029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f1" + } + ], + "fixedOutputs": [] + }, + "scriptExecutionOk": true, + "contractInputs": [], + "generatedOutputs": [ + { + "type": "ContractOutput", + "hint": 585739684, + "key": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "alphAmount": "1000000000000", + "address": "2AKg3eFfeBANTSc1RPH4FUho8KrrzMdKMCiXeBc2X3taP", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "10000000000000000000000000000" + } + ] + }, + { + "type": "AssetOutput", + "hint": -1378902345, + "key": "1d4b4f18b41e34e64d9e8fe6ee038ef8acaa8763f7b276b3b157120d393857bd", + "alphAmount": "6499975998000000000000", + "address": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG", + "tokens": [], + "lockTime": 0, + "additionalData": "" + } + ], + "inputSignatures": [ + "1def939243491d681b68790a2c0d906c50a3f3bef453cc47ca6822b669d6437c565af0ba9d7cd191cd99144f8fa07fe07effe6c3b21d4a9e9898d1a4eea3ae82" + ], + "scriptSignatures": [] + }, + { + "unsigned": { + "txId": "ee023aea5778fd390cc16dc2a706647c3490cf888ed90cfe4505257863e7fb31", + "version": 0, + "networkId": 4, + "gasAmount": 20000, + "gasPrice": "1000000000", + "inputs": [], + "fixedOutputs": [ + { + "hint": -11128529, + "key": "e895ec4b15e4b50e3c21e04f23dfa5e3ea424e8db92bb10d52c10b3761905665", + "alphAmount": "1879000000000000000", + "address": "17UjAgeAVixkYksn5snhQ4k1CpGAoBJmdsBNGdyHWqm4M", + "tokens": [], + "lockTime": 1652690325997, + "additionalData": "030300000180cbfbea2d" + } + ] + }, + "scriptExecutionOk": true, + "contractInputs": [], + "generatedOutputs": [], + "inputSignatures": [], + "scriptSignatures": [] + } + ], + "nonce": "c55b55079d5eb165ee7cc093ffde19f6867090621d16ef61", + "version": 0, + "depStateHash": "e500d692f7fe6daa400b81d4f78b300f78fbf926a20c03b51ada40b37f441ded", + "txsHash": "72913f92b28be354026409f9b7c0d11e2b763c99de5bb0eeb1bd9a6b92aabee8", + "target": "20ffffff" +} +``` + +Sadece `a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2` kimliğine sahip işleme odaklanıyoruz. + +```json +{ + "unsigned": { + "txId": "a8fa7a28618fd361fc7d8f2ad51c772ef561406ffe4a8b4fe1a5e68e84e2a4e2", + "version": 0, + "networkId": 4, + "scriptOpt": "010101000000081500bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e313c1e8d4a51000a21440300201402c01010204001616011343e82c1702a0011602344db117031600a0001601a7160016031602aba00116022ba101144031020400bae81fae7fc67d18210b938e31e12d43c48cd9f89668957c7a5fd3e0e57f36e302c8204fce5e3e2502611000000013c8204fce5e3e25026110000000ae18", + "gasAmount": 57222, + "gasPrice": "100000000000", + "inputs": [ + { + "outputRef": { + "hint": -1378902345, + "key": "8826cef24403641dea9e899dbbcfc7007c21e0ff46a76189d04a830986eb7c9e" + }, + "unlockScript": "00029347489f53e7050e5c7edb5ef305d33316772836370750ff747eb6dc3f5f47f1" + } + ], + "fixedOutputs": [] + }, + "scriptExecutionOk": true, + "contractInputs": [], + "generatedOutputs": [ + { + "type": "ContractOutput", + "hint": 585739684, + "key": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "alphAmount": "1000000000000", + "address": "2AKg3eFfeBANTSc1RPH4FUho8KrrzMdKMCiXeBc2X3taP", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "10000000000000000000000000000" + } + ] + }, + { + "type": "AssetOutput", + "hint": -1378902345, + "key": "1d4b4f18b41e34e64d9e8fe6ee038ef8acaa8763f7b276b3b157120d393857bd", + "alphAmount": "6499975998000000000000", + "address": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG", + "tokens": [], + "lockTime": 0, + "additionalData": "" + } + ], + "inputSignatures": [ + "1def939243491d681b68790a2c0d906c50a3f3bef453cc47ca6822b669d6437c565af0ba9d7cd191cd99144f8fa07fe07effe6c3b21d4a9e9898d1a4eea3ae82" + ], + "scriptSignatures": [] +} +``` + +Bu işlemin bir girişi ve iki çıktısı var. Aşağıda bazı alanların açıklaması bulunmaktadır: + +- `outputRef`: UTXO'ya işaretçi +- `key`: UTXO hash'i +- `type`: işlem çıkışının türü, `ContractOutput` veya `AssetOutput` +- `address`: `kontrat` veya `varlık` adresinin base58 kodlaması +- `alphAmount`: Adrese ait **ALPH** miktarı +- `tokens`: Adrese ait tokenlerin listesi +- `tokens.id`: kontrat kimliği +- `tokens.amount`: sahip olunan token miktarı + +İlk çıktı, yeni oluşturduğumuz kontrattır. Kontrat adresinin tam olarak tanımladığımız `issueTokenAmount` olduğunu görüyoruz. + +İkinci çıktı, adresimiz `1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG` tarafından gönderilen işlemin UTXO çıktısıdır. Bu adresin herhangi bir tokeni yoktur. + +## Bir betik oluşturun ve dağıtın + +Kontrat başarıyla oluşturulduktan sonra, `Mytoken.buy` yöntemini çağırmak için bir `TxScript` dağıtacağız. Bu örnekte, kontratı oluşturmak için kullanılanla farklı bir adres olan `1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h` adresini kullanarak ödeyeceğiz. + +Kontratı göndermek için kullanılan adresle aynı olmayan bir adresle de ödeme yapmak istiyorsanız, lütfen adresinizin kontratla aynı gruba ait olduğundan emin olun. Kontrat grubunu, işlem bloğunun `chainFrom` alanını kontrol ederek bulabilirsiniz. Örneğimizde, kontrat 3. gruptadır, ancak sizin için farklı bir grupta olabilir. Bir adresin grubunu `GET addresses/{address}/group` uç noktasında doğrulayabilirsiniz. Değilse, `POST/wallets/{wallet_name}/derive-next-address`'i kullanarak doğru gruptaki bir adres elde edene kadar yeni adresler türetebilirsiniz. Yeni adresler `0` bakiye ile başlatıldığından, bu yeni adrese bazı **ALPH** transfer etmeniz gerekecektir. Son olarak, etkin adresinizi `POST wallets/{wallet_name}/change-active-address` uç noktasında değiştirin. + +### Bir TxScript Oluşturun + +Öncelikle, birkaç token satın almak için `TxScript` oluşturuyoruz. + +```rust +TxScript Main { + pub payable fn main() -> () { + approveAlph!(@1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h, 1000000000000000000) + let contract = MyToken(#e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c) + contract.buy(@1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h, 1000000000000000000) + } +} +``` + +İşte bu kodun kısa bir açıklaması: + +- `approveAlph!(address, amount)`: Adresten belirtilen miktarda `ALPH`'ın betikte kullanılmasına izin verir. +- Kontrat, `id` ile yüklenir +- 1 **ALPH** karşılığında 1000 token almak için `MyToken.buy` yöntemini çağırın + +Sonraki adımlar önceki bölümlere çok benzer. Betiği derleyecek, oluşturacak, imzalayacak ve göndereceğiz. + +### Bir Betiği Derleyin + +Betikleri ikili kod haline getirmek için düğüm API'sini sorguluyoruz. **Lütfen `TxScript` kodunuzun ardından `MyToken` kontratının kaynak kodunu eklediğinizden emin olun.** + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/contracts/compile-script' \ + -H 'Content-Type: application/json' \ + -d '{ + "code": "TxScript Main {\n pub payable fn main() -> () {\n approveAlph!(@1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h, 1000000000000000000)\n let contract = MyToken(#e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c)\n contract.buy(@1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h, 1000000000000000000)\n }\n}\nTxContract MyToken(owner: Address, mut remain: U256) {\n pub payable fn buy(from: Address, alphAmount: U256) -> () {\n let tokenAmount = alphAmount * 1000\n assert!(remain >= tokenAmount)\n let tokenId = selfTokenId!()\n transferAlph!(from, owner, alphAmount)\n transferTokenFromSelf!(from, tokenId, tokenAmount)\n remain = remain - tokenAmount\n }\n}" +}' +``` + +Aşağıdakine benzer bir yanıt alacaksınız: + +```json +{ + "compiled": { + "type": "SimpleScriptByteCode", + "bytecode": "010101000100091500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a7640000a2144020e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c17001500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a764000016000100" + }, + "functions": [ + { + "name": "main", + "signature": "pub payable main()->()", + "argTypes": [], + "returnTypes": [] + } + ], + "events": [] +} +``` + +### İmzasız bir betik işlemi oluşturun + +İlk olarak, etkin adresin publicKey'ini alıyoruz: + +```bash +curl 'http://127.0.0.1:12973/wallets/demo-1/addresses/1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h' +``` + +Buna benzer bir yanıt alırız: + +```json +{ + "address": "1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h", + "publicKey": "0203ff28b14840ee75f8e624ae4f35ae26c67e4e835975bbaac9a2046e622358d5", + "group": 3, + "path": "m/44'/1234'/0'/0/18" +} +``` + +Daha sonra imzalı işlemi oluştururuz: + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/contracts/unsigned-tx/build-script' \ + -H 'Content-Type: application/json' \ + -d '{ + "fromPublicKey": "0203ff28b14840ee75f8e624ae4f35ae26c67e4e835975bbaac9a2046e622358d5", + "bytecode": "010101000100091500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a7640000a2144020e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c17001500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a764000016000100" +}' +``` + +Aşağıdaki yanıtı alırız: + +```json +{ + "unsignedTx": "000401010101000100091500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a7640000a2144020e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c17001500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a76400001600010080013880c1174876e80001174aa36169adea3987f239001301642efa3e74c5ec1f1f185d1ab24ca2032f8bbfd267c7000203ff28b14840ee75f8e624ae4f35ae26c67e4e835975bbaac9a2046e622358d500", + "gasAmount": 42082, + "gasPrice": "100000000000", + "txId": "2fe9100b8ede85114a707314f9416ada97735b68a9db9693c7d7bbbf9326daf2", + "group": 3 +} +``` + +### Bir betik imzalayın + +Daha sonra, işlem hash'ini imzalarız: + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/wallets/demo-1/sign' \ + -H 'Content-Type: application/json' \ + -d '{ + "data": "2fe9100b8ede85114a707314f9416ada97735b68a9db9693c7d7bbbf9326daf2" +}' +``` + +Ve imzayı alırız: + +```json +{ + "signature": "df4b2e61c81304b3f3d34dd1f193010ff0d82abe53edd403c636823b1f71247a4908e963cf7c89284a30315d89ec72b3637cf50f023a6f905cd0c4e3d3c9941c" +} +``` + +### Bir betik gönderin + +Son olarak işlemi gönderebiliriz. + +```bash +curl -X 'POST' \ + 'http://127.0.0.1:12973/transactions/submit' \ + -H 'Content-Type: application/json' \ + -d '{ + "unsignedTx": "000401010101000100091500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a7640000a2144020e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c17001500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a76400001600010080013880c1174876e80001174aa36169adea3987f239001301642efa3e74c5ec1f1f185d1ab24ca2032f8bbfd267c7000203ff28b14840ee75f8e624ae4f35ae26c67e4e835975bbaac9a2046e622358d500", + "signature": "df4b2e61c81304b3f3d34dd1f193010ff0d82abe53edd403c636823b1f71247a4908e963cf7c89284a30315d89ec72b3637cf50f023a6f905cd0c4e3d3c9941c" +}' +``` + +Ve `txId` ve gruplar bilgilerini alırız: + +```json +{ + "txId": "2fe9100b8ede85114a707314f9416ada97735b68a9db9693c7d7bbbf9326daf2", + "fromGroup": 3, + "toGroup": 3 +} +``` + +Yine, işlemi Ana Ağ'da bulabiliriz, işlemi içeren bloğu sorgulayarak. Aşağıdaki işlem içeriğini gözlemliyoruz: + + +```json +{ + "hash": "0f13b84553050263b173f3aa00386d3cc22863080d4b8642b4dcdfea15af0e6f", + "timestamp": 1652700335564, + "chainFrom": 3, + "chainTo": 3, + "height": 13, + "deps": [ + "40d58f8563a6de46fa0efda4670aeb43a451b349d8af1403b341413d5010c0e0", + "30b0c63cf62aa6cdc1c72e8fc2f31703b8318654b65acaaece48ee503da87845", + "be73f0505c81184bc4691ee1ffeafaf7fbb091f412d500fc882aeecc8929e1fa", + "8f8ddaeddfd21b003ad39dfd1d7c4593d7f63d2951aecd16de8a749edf26c23c", + "6d258ca53dbe960adf19f899248e1d60c83ac65aac323a4ff195541b84ccfb4d", + "4862925410e6951836bd8808b94a8492ca5d718ec642d375f170e5b3b8ca51ce", + "08041abb8bc8d06c6b840ceb345a4f8953a9fbf9c32c08be34a63c93fd8dfcdf" + ], + "transactions": [ + { + "unsigned": { + "txId": "2fe9100b8ede85114a707314f9416ada97735b68a9db9693c7d7bbbf9326daf2", + "version": 0, + "networkId": 4, + "scriptOpt": "010101000100091500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a7640000a2144020e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c17001500a095abc2f02eaf33573e17d9c5f6946da5903459f4e752146b847b3831a339c613c40de0b6b3a764000016000100", + "gasAmount": 42082, + "gasPrice": "100000000000", + "inputs": [ + { + "outputRef": { + "hint": 390767457, + "key": "69adea3987f239001301642efa3e74c5ec1f1f185d1ab24ca2032f8bbfd267c7" + }, + "unlockScript": "000203ff28b14840ee75f8e624ae4f35ae26c67e4e835975bbaac9a2046e622358d5" + } + ], + "fixedOutputs": [] + }, + "scriptExecutionOk": true, + "contractInputs": [ + { + "hint": 585739684, + "key": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c" + } + ], + "generatedOutputs": [ + { + "type": "AssetOutput", + "hint": -1378902345, + "key": "68e0b6a089ce4f6abd47d818e9accf5a88ac7714fef4eaa5b9a9d2099e5ad726", + "alphAmount": "1000000000000000000", + "address": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG", + "tokens": [], + "lockTime": 0, + "additionalData": "" + }, + { + "type": "AssetOutput", + "hint": 390767457, + "key": "a11564f890f1cd3108834e0664dc1f97424cb7e1be4b68982a921a8fa2099846", + "alphAmount": "498992000000000000000", + "address": "1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "1000000000000000000000" + } + ], + "lockTime": 0, + "additionalData": "" + }, + { + "type": "ContractOutput", + "hint": 585739684, + "key": "9f8296350b307d98914e54d748d1cef42293c277f57d3ad98b309c28edc5cdf8", + "alphAmount": "1000000000000", + "address": "2AKg3eFfeBANTSc1RPH4FUho8KrrzMdKMCiXeBc2X3taP", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "9999999000000000000000000000" + } + ] + } + ], + "inputSignatures": [ + "df4b2e61c81304b3f3d34dd1f193010ff0d82abe53edd403c636823b1f71247a4908e963cf7c89284a30315d89ec72b3637cf50f023a6f905cd0c4e3d3c9941c" + ], + "scriptSignatures": [] + }, + { + "unsigned": { + "txId": "d9468e7b33300cb2824147166c5ee441e3865f4bc23563e54aff117810a290fa", + "version": 0, + "networkId": 4, + "gasAmount": 20000, + "gasPrice": "1000000000", + "inputs": [], + "fixedOutputs": [ + { + "hint": 17786109, + "key": "e19b512d57dab97c48d2352485abe76c6707c32dc7f308e4ca0051f40f2d2228", + "alphAmount": "1879000000000000000", + "address": "19Sxx6RVyenkDovv6LiMW2ymxP2UfxmvGZGhmNcxq5jqX", + "tokens": [], + "lockTime": 1652700935564, + "additionalData": "030300000180cc9dcdcc" + } + ] + }, + "scriptExecutionOk": true, + "contractInputs": [], + "generatedOutputs": [], + "inputSignatures": [], + "scriptSignatures": [] + } + ], + "nonce": "5c694b2fc6f235ff20bc02661ab3724b06e2d3ae92c97d47", + "version": 0, + "depStateHash": "74e3cb156bebf185dee4c3160841d1cfc812bf17be1a81744fbca18a0fefff79", + "txsHash": "73a5c883b253ef17faa935fe8edacf1ba9690f2d543dd206042b69e06170e631", + "target": "20ffffff" +} +``` + +Görüldüğü gibi, bir kontrat girişi var ve `outputRef.key`, daha önce oluşturduğumuz kontrata işaret ediyor. + +```json +"contractInputs": [ + { + "hint": 585739684, + "key": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c" + } +] +``` + +Bu sefer üç çıktımız var: iki varlık ve bir kontrat. İlk çıktı, kontrat sahibine ödenen 1 **ALPH** için yeni UTXO'dur. + +```json +{ + "type": "AssetOutput", + "hint": -1378902345, + "key": "68e0b6a089ce4f6abd47d818e9accf5a88ac7714fef4eaa5b9a9d2099e5ad726", + "alphAmount": "1000000000000000000", + "address": "1Dac89UqoyQ7NPvuoX5cnYDp44UQDDEo4iMrYQwToqiRG", + "tokens": [], + "lockTime": 0, + "additionalData": "" +} +``` + +İkinci çıktı, kontrat sahibine ödeme için tüketilen UTXO'ların değişimiyle eşdeğer yeni bir UTXO'dur. Ek olarak, `tokens` listesindeki ilk öğe, şimdi satın aldığımız tokenlere karşılık gelir! Kimlik, kontratımızın kimliğine karşılık gelir. + +```json +{ + "type": "AssetOutput", + "hint": 390767457, + "key": "a11564f890f1cd3108834e0664dc1f97424cb7e1be4b68982a921a8fa2099846", + "alphAmount": "498992000000000000000", + "address": "1Borbt3zgchtQyrTrLxhUeAknP4cxYqYkNQUrth5V7U6h", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "1000000000000000000000" + } + ], + "lockTime": 0, + "additionalData": "" +} +``` + +Üçüncü çıktı, takas sonrası kontrattır. Token miktarının `10000000000000000000000000000` den `9999999000000000000000000000` e değiştiğini gözlemliyoruz. Fark, satın aldığımız token miktarına eşittir. + +```json +{ + "type": "ContractOutput", + "hint": 585739684, + "key": "9f8296350b307d98914e54d748d1cef42293c277f57d3ad98b309c28edc5cdf8", + "alphAmount": "1000000000000", + "address": "2AKg3eFfeBANTSc1RPH4FUho8KrrzMdKMCiXeBc2X3taP", + "tokens": [ + { + "id": "e847a0a9212bcdc07ddc1b74526c0523f11042e13330c9d889e4bc16f74e084c", + "amount": "9999999000000000000000000000" + } + ] +} +``` + +Tebrikler! Alephium'da ilk akıllı kontratınızı başarıyla dağıttınız ve kullandınız! 🚀 + +## Kontrat Durumu + +Önceki bölümlerden görebileceğimiz gibi: + +- Bir kontrat oluşturulduğunda, bir kontrat çıkışı oluşturulur, token verilmiş olsa bile. Bir token verilmişse, çıkış token listesinde başlangıçta belirli bir sayıda token içerir. +- Kontratı çağırmak, kontrat çıkışını tüketir ve yeni bir kontrat çıkışı oluşturur. Yukarıdaki örnekte, kontratın oluşturulduğunda oluşturulan kontrat çıkışı tüketilir ve ardından yeni bir kontrat çıkışı oluşturulur. +- Kontratı çağırmak aynı zamanda kontratın durumunu değiştirebilir. Yukarıdaki örnekte, `MyToken.buy` çağrıldıktan sonra durum değişecektir. + +Kontrat durumunun özellikle neler içerdiğine bir göz atalım: + +```scala +final case class ContractState private ( + codeHash: Hash, + initialStateHash: Hash, + fields: AVector[Val], + contractOutputRef: ContractOutputRef +) +``` + + + +alanlar şunlardır: + +- `codeHash`: Kontrat kodunun hash'i. +- `initialStateHash`: Başlangıç kontrat durumunun hash'i +- `fields`: Durum değerlerinin vektörü. Örneğin, `MyToken` örneğinde `AVector(owner, remain)`. +- `contractOutputRef`: Kontrat çıkışına işaretçi + +Kontratı çağırma ve durumunu değiştirme süreci genellikle şöyle olur: + +1. Dünya Durumu'ndan kontrat durumunu yükleyin, bu, UTXO'lar, akıllı kontratlar durumu ve kodu için bir depolama alanıdır. +2. Yürütme yöntemi ödenebilir olduğunda `contractOutputRef` tarafından işaret edilen kontrat çıkışını yükleyin +3. Kontrat yürütmesi, kontrat durumunu değiştiriyorsa, Dünya Durumu'ndaki kontrat durumu güncellenecektir +4. Kontrat yeni bir kontrat çıkışı üretirse, kontrat durumu güncellenecek ve eski kontrat çıkışı silinecektir + +Ek olarak, kontratlar oluştururken ve çağırırken karşılaşılabilecek hatalar ve çözümleri hakkında kısaca bahsedeceğiz: + +- NotEnoughBalance: Bu yalnızca madencilik ödüllerinin veya diğer transferlerin elde edilmesiyle çözülebilir. +- OutOfGas: Varsayılan gaz oldukça küçüktür ve genellikle kontratlar oluşturulurken ve çağırılırken yeterli değildir, bu nedenle genellikle tüketilen gazı manuel olarak belirtmek gerekir. +- AmountIsDustOrZero: Sistemin, çok küçük miktarlardaki çıktıları reddetmesini önlemek için bir önlem olarak, sistem çok küçük miktarlardaki çıktıları reddeder. Daha fazla bilgi için lütfen [buraya](misc/On-dust-outputs-and-state-explosion.md) bakınız. + +İlgilenen kişiler, farklı kontratlar oluşturmayı deneyebilir ve ETH uygulamalarını Alephium'a göç edebilirler. \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/additional-resources.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/additional-resources.md.drop new file mode 100644 index 00000000..b7d48f2f --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/additional-resources.md.drop @@ -0,0 +1,9 @@ +--- +sidebar_position: 70 +title: Ek Kaynaklar +sidebar_label: Ek kaynaklar +--- + +:::uyarı +Aşağıdaki bazı bağlantılar, kaynak kodun belirli satırlarına atıfta bulunur, ancak kaynak kodu değişiklik gösterebileceğinden doğru olanlarla uyuşmayabilir. Projelerimizin en son değişikliklerini wiki'mizi güncel tutmak için elimizden geleni yapıyoruz. Anlayışınız için teşekkür ederiz! +::: diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/alephium-web3.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/alephium-web3.md new file mode 100644 index 00000000..08df30e3 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/alephium-web3.md @@ -0,0 +1,579 @@ +--- +sidebar_position: 25 +title: Web3 SDK +sidebar_label: Web3 SDK +--- + +## Kurulum + +``` +npm install --save @alephium/web3 +``` + +## Alephium'a bağlanma + +`NodeProvider`, Alephium ağına bir bağlantı soyutlamasıdır, bir `NodeProvider` alabilirsiniz: + +```typescript +const nodeProvider = new NodeProvider('http://localhost:22973') +``` + +Veya tam düğüm yapılandırma dosyanızda alephium.api.api-key bulunuyorsa API_KEY'i belirtin: + +```typescript +const API_KEY = // tam düğüm yapılandırma dosyanızdaki alephium.api.api-key +const nodeProvider = new NodeProvider('http://localhost:22973', API_KEY) +``` + +Bazen, projeniz için global bir NodeProvider kurmak uygun olabilir: + +```typescript +web3.setCurrentNodeProvider() +``` + +## Blockchain Sorgulama + +Bir `NodeProvider`'a sahip olduktan sonra, mevcut sözleşme durumunu sorgulamak, geçmiş sözleşme etkinliklerini almak, dağıtılmış sözleşmeleri aramak vb. gibi işlemler için kullanabileceğiniz bir blok zincirine bağlantınız olur. +' +```typescript +// Verilen zincir dizininden blok zincir yüksekliğini alın +await nodeProvider.blockflow.getBlockflowChainInfo({ + fromGroup: 0, + toGroup: 0 +}) +// { currentHeight: 315 } + +// Verilen blok özetinden bloğu alın +await nodeProvider.blockflow.getBlockflowBlocksBlockHash('1ccfe845988ebf878384dd2dc9e55920261566c2ad9143963180222059ffd3b0') +// { +// hash: '1ccfe845988ebf878384dd2dc9e55920261566c2ad9143963180222059ffd3b0', +// timestamp: 1665207807876, +// chainFrom: 0, +// chainTo: 0, +// height: 315, +// deps: [ +// '5e9209fbf2b4c656b136933684b8606382575f16795ddc7a6317c5d4b7e378c5', +// 'b5d69f03d4d0eea5a4c7e0bc0e2e8c5a8f99306050d641b599991b441ea0f9ea', +// 'f344b3dd45f39d62cfd200cfa3312c080018102908787c5565b8c8af3647368f', +// 'fa359ce0b5accb1584cd280ae3c32f210424a9fd32cb736b6cdfe64882651010', +// '8bc7d94ddfc66129049862e501ff5d5042e1e978b1a51d28e238321444a91071', +// '5896ee3cbc8c4f4432a0b221039113061b6cf7eeb794b25758d247120d0df712', +// 'fc312b0c04a0eeb0767ec98137b740047d7c5e8f64463531828b7015cbeaeaa3' +// ], +// transactions: [ +// { +// unsigned: [Object], +// scriptExecutionOk: true, +// contractInputs: [], +// generatedOutputs: [], +// inputSignatures: [], +// scriptSignatures: [] +// } +// ], +// nonce: '5da513de7183d7eb1a90b46c4ffe6f7ae4fdf012f0018f41', +// version: 0, +// depStateHash: '2edccc3e717d38a6564fb970f6714f0c00c074226b2cb1ee6272781d3c9bc870', +// txsHash: '738e879791e0c164a5a12b658e2b37e65ed9c415c2e152656c8469273f775f5a', +// target: '20ffffff' +// } + +// İşlem durumunu alın +await nodeProvider.transactions.getTransactionsStatus({ + txId: 'f33da0d8f4c00d68e2d5818cb9617219a1108b801f387fc8d1595287e4dbf2aa' +}) +// { +// type: 'Confirmed', +// blockHash: '47c95e02a7d7ca442ee1849d76a5987c7b72ddcad0b05e9f01df4bc4878f5980', +// txIndex: 0, +// chainConfirmations: 295, +// fromGroupConfirmations: 295, +// toGroupConfirmations: 295 +// } + +// Hesap bakiyesini al +await nodeProvider.addresses.getAddressesAddressBalance('1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH') +// { +// balance: '999972904436900000000000', +// balanceHint: '999972.9044369 ALPH', +// lockedBalance: '0', +// lockedBalanceHint: '0 ALPH', +// tokenBalances: [ +// { +// id: 'ee682f8182f56b55a36a7f916a901685752e00d0e4b90de073e6658156ae82a9', +// amount: '10000000000000000000' +// } +// ], +// utxoNum: 1 +// } +``` + +## Blokzinciri'ne Yazma + +İşlemler, blokzincirinin durumunu değiştirmek için kullanılır. Her işlem, özel bir anahtar ile imzalanmalıdır ve bunu `SignerProvider`aracılığıyla yapabilirsiniz.`alephium/web3-wallet` iki `SignerProvider` bulunmaktadır. + +### Web3 Cüzdanını Kurma + +``` +npm install --save @alephium/web3-wallet +``` + +:::note +Her iki cüzdan da sözleşme geliştirme ve dağıtımı için kullanılır, lütfen büyük miktarda jeton saklamak için kullanmayın. +::: + +### NodeWallet + +Tam bir düğüm cüzdanı oluşturmak için lütfen [rehberi](/wallet/node-wallet-guide) takip edin. + +```typescript +// Cüzdan adı ile bir düğüm cüzdanı oluşturun +const nodeWallet = new NodeWallet('alephium-web3-test-only-wallet', nodeProvider) + +// Şifre ile cüzdanı açın +await nodeWallet.unlock('alph') + +// Hesapları alın +await nodeWallet.getAccounts() +// [ +// { +// publicKey: '0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0', +// address: '1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH', +// group: 0 +// } +// ] + +// 1 ALPH'i 15Z54erRksUHb7qxegcKN5DePMv96tXdc1jW26fW3REwT adresine transfer edin +await nodeWallet.signAndSubmitTransferTx({ + signerAddress: '1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH', + destinations: [{ + address: '15Z54erRksUHb7qxegcKN5DePMv96tXdc1jW26fW3REwT', + attoAlphAmount: 10n ** 18n, + }] +}) +// { +// txId: '7d11b0e88f0158cdd94fcf4e7af04a76be1101293a50050523f72422a9269f36', +// fromGroup: 0, +// toGroup: 0 +// } + +// Cüzdanı kilitleyin +await nodeWallet.lock() +``` + +### PrivateKeyWallet + +```typescript +// Özel anahtar ile bir PrivateKeyWallet oluşturun +const wallet = new PrivateKeyWallet({privateKey: 'a642942e67258589cd2b1822c631506632db5a12aabcf413604e785300d762a5', keyType: undefined, nodeProvider: web3.getCurrentNodeProvider()}) + +// Mnemonik ve grup ile bir PrivateKeyWallet oluşturun, burada hesap grubu 0'da bir hesap oluşturur +const wallet = PrivateKeyWallet.FromMnemonicWithGroup( + 'vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge enroll refuse another lava', + 0, + undefined, + undefined, + undefined, + nodeProvider +) +console.log(wallet.account) +// { +// address: '1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH', +// publicKey: '0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0', +// group: 0 +// } + +// 1 ALPH'i 15Z54erRksUHb7qxegcKN5DePMv96tXdc1jW26fW3REwT adresine transfer edin +await wallet.signAndSubmitTransferTx({ + signerAddress: wallet.account.address, + destinations: [{ + address: '15Z54erRksUHb7qxegcKN5DePMv96tXdc1jW26fW3REwT', + attoAlphAmount: 10n ** 18n + }] +}) +// { +// txId: '9a23eab3796a56f538a4574d617b667fb9187721c8df9f39ac89d878cb9755a0', +// fromGroup: 0, +// toGroup: 0 +// } +``` + +## Sözleşmeler + +Ethereum'a benzer şekilde, bir sözleşme, Alephium blokzincirinde yaşayan program kodu soyutlamasıdır. Bir proje oluşturmak için lütfen aşağıdaki örneği kullanarak bir sözleşmenin nasıl test edileceğini, dağıtılacağını ve çağrılacağını göstermeyi düşünün, lütfen bir proje oluşturmak için [rehberi](/dapps/getting-started) takip edin. + +### Sözleşmeyi Test Etme +#### Birim testleri + +SDK, sözleşmeyi normal bir işlem gibi çağıran birim test işlevselliği sağlar, ancak blokzincir durumunu değiştirmek yerine, yeni sözleşme durumunu, işlem çıktılarını ve olayları döndürür. + +```typescript +web3.setCurrentNodeProvider('http://localhost:22973') +const wallet = new PrivateKeyWallet('a642942e67258589cd2b1822c631506632db5a12aabcf413604e785300d762a5') +// Projeyi ilk önce oluşturun +await Project.build() + +// `withdraw` metodunu `TokenFaucet` sözleşmesinde test edin, bu, blokzinciri durumunu DEĞİŞTİRMEZ +const testContractAddress = randomContractAddress() +// `TokenFaucet` başlangıç ​​rehberinde oluşturulur +const result = await TokenFaucet.tests.withdraw({ + address: testContractAddress, + // Test sözleşmesinin başlangıç durumu + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: 10n ** 18n, + balance: 10n + }, + // Bir test öncesi test kontratının sahip olduğu varlıklar + initialAsset: { + alphAmount: 10n ** 18n, + tokens: [{ + id: binToHex(contractIdFromAddress(testContractAddress)), + amount: 10n + }] + }, + // Test kontratının hedef fonksiyonunu test etmek için kullanılan argümanlar + testArgs: { amount: 1n }, + // Fonksiyon çağırıcısının sahip olduğu varlıklar + inputAssets: [{ + address: wallet.account.address, + asset: { alphAmount: 10n ** 18n } + }] +}) + +const contractState = result.contracts[0] as TokenFaucetTypes.State +expect(contractState.address).toEqual(testContractAddress) +``` + +Tam bir örnek, [`alephium-nextjs-template`](https://github.com/alephium/nextjs-template/blob/main/test/unit/token.test.ts) dosyasında bulunabilir. + +#### Entegrasyon testleri + +Birim testlerin yanı sıra, bazı entegrasyon testlerini de çalıştırabilirsiniz, ancak bunların blok zinciri durumunu değiştirebileceğine dikkat edin. + +```typescript +web3.setCurrentNodeProvider('http://127.0.0.1:22973', undefined, fetch) +await Project.build() + +const accounts = signer.getAccounts() +const account = accounts[0] +const testAddress = account.address +await signer.setSelectedAccount(testAddress) +const testGroup = account.group + +const deployed = deployments.getDeployedContractResult(testGroup, 'TokenFaucet') +const tokenId = deployed.contractInstance.contractId +const tokenAddress = deployed.contractInstance.address + +const faucet = TokenFaucet.at(tokenAddress) +const initialState = await faucet.fetchState() +const initialBalance = initialState.fields.balance + +// `withdraw` fonksiyonunu 10 kez çağır +for (let i = 0; i < 10; i++) { + await Withdraw.execute(signer, { + initialFields: { token: tokenId, amount: 1n }, + attoAlphAmount: DUST_AMOUNT * 2n + }) + + //!!! Blok zinciri durumu değişir !!! + const newState = await faucet.fetchState() + const newBalance = newState.fields.balance + expect(newBalance).toEqual(initialBalance - BigInt(i) - 1n) +} +``` + +Daha fazla detay, [entegrasyon test klasörümüzde](https://github.com/alephium/nextjs-template/blob/integration-test/test/integration) bulunabilir. + +### Sözleşmeyi dağıt + +```typescript +web3.setCurrentNodeProvider('http://localhost:22973') +const wallet = new PrivateKeyWallet('a642942e67258589cd2b1822c631506632db5a12aabcf413604e785300d762a5') +await Project.build() + +// Sözleşmenin dağıtılması için bir işlem oluşturun ve işlemi Alephium ağına gönderin: +// Sözleşmede alanlar varsa `initialFields` gereklidir +// `initialAttoAlphMiktarı`, 1 ALPH'den büyük veya eşit olmalıdır, varlıklar işlem gönderen hesaptan sözleşmeye gönderilir +// `issueTokenMiktarı`, çıkarılacak jeton miktarını belirtir +const issueTokenAmount = 10n +const deployResult = await TokenFaucet.deploy(wallet, { + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: issueTokenAmount, + balance: issueTokenAmount + }, + initialAttoAlphAmount: 10n ** 18n, + issueTokenAmount: issueTokenAmount +}) +console.log(JSON.stringify(deployResult, null, 2)) +// { +// "signature": "ea95754bae7935311acf15d3323293f03bce89bb6c82939427da5e3074f0ada93b0cda24138dcec1de4e21a1a66dc1f0c8e99297e6ff8fe10587d1821cbae23f", +// "fromGroup": 0, +// "toGroup": 0, +// "unsignedTx": "000401010103000000091500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c40de0b6b3a7640000a2144055050609121b4024402d404a010000000102ce0002010000000102ce0102010000000102ce0202010000000102ce0302010000000102a0000201020101001116000e320c7bb4b11600aba00016002ba10005b416005f14160403025446030b546f6b656e4661756365740212020a140301020a130aae188000dfdfc1174876e8000137a444479fa782e8b88d4f95e28b3b2417e5bc30d33a5ae8486d4a8885b82b224259c1e6000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b000", +// "gasAmount": 57311, +// "gasPrice": "100000000000", +// "txId": "c9adbbc02f34d2b3f2db8790354bca9f3d6f7a1fde9b9269a393d6693663c084", +// "contractAddress": "v8uU9yLfzUwqpJeS9Kd76DB75WJBcEuMdYgEQ2Gn8pLF", +// "groupIndex": 0, +// "contractId": "1581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c00", +// "instance": { +// "address": "v8uU9yLfzUwqpJeS9Kd76DB75WJBcEuMdYgEQ2Gn8pLF", +// "contractId": "1581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c00", +// "groupIndex": 0 +// } +// } + +// Sözleşme durumunu al +const tokenFaucet = deployResult.instance +const contractState = await tokenFaucet.fetchState() +console.log(JSON.stringify(contractState, null, 2)) +// { +// "address": "v8uU9yLfzUwqpJeS9Kd76DB75WJBcEuMdYgEQ2Gn8pLF", +// "contractId": "1581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c00", +// "bytecode": "050609121b4024402d404a010000000102ce0002010000000102ce0102010000000102ce0202010000000102ce0302010000000102a0000201020101001116000e320c7bb4b11600aba00016002ba10005b416005f", +// "initialStateHash": "236a82352f5e34f813ecf274385912ed0ba67f1c305c24f7a6934c18d32213b1", +// "codeHash": "641343b4f1c08b03969b127b452acc7535cad20231bc32af6c0b5f218dd8ff0c", +// "fields": { +// "symbol": "5446", +// "name": "546f6b656e466175636574", +// "decimals": "18", +// "supply": "10", +// "balance": "10" +// }, +// "fieldsSig": { +// "names": [ +// "symbol", +// "name", +// "decimals", +// "supply", +// "balance" +// ], +// "types": [ +// "ByteVec", +// "ByteVec", +// "U256", +// "U256", +// "U256" +// ], +// "isMutable": [ +// false, +// false, +// false, +// false, +// true +// ] +// }, +// "asset": { +// "alphAmount": "1000000000000000000", +// "tokens": [ +// { +// "id": "1581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c00", +// "amount": "10" +// } +// ] +// } +// } +``` + +Çıktıdan görebileceğimiz gibi, sözleşmeyi başarıyla dağıttık ve sözleşme varlığında 10 jeton bulunmaktadır. + +### Sözleşmeyi çağır + +Alephium blok zincirindeki sözleşmeleri çağırmak için betikler kullanabilirsiniz, betik kodu, işlem Alephium ağına gönderildiğinde yürütülür, ancak betik kodu blok zincirinin durumuna kaydedilmez. + +```typescript +web3.setCurrentNodeProvider('http://localhost:22973') +const wallet = new PrivateKeyWallet('a642942e67258589cd2b1822c631506632db5a12aabcf413604e785300d762a5') +await Project.build() + +// Dağıtım sonucundan sözleşme adresi +const contractAddress = deployResult.instance.address + +// Dağıtım sonucundan sözleşme kimliği +const contractId = deployResult.instance.contractId + +// Bir sözleşme çağrısı işlemi oluşturun, betik alanları varsa `initialFields` gereklidir +// `Withdraw`, başlangıç kılavuzunda oluşturulur +const executeResult = await Withdraw.execute(wallet, { + initialFields: { + token: contractId, + amount: 1n + } +}) +console.log(JSON.stringify(executeResult, null, 2)) +// { +// "signature": "16ec5eed788bfe7a803ec89f47d8ef7c1ac5f626ad88e4b46ecdde8be9fdef5719db49b09ef4e11a94901082e34c52629aafad4b9753483bf853ff695b19b9a4", +// "fromGroup": 0, +// "toGroup": 0, +// "unsignedTx": "0004010101030000000513010d0c1440201581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c0001058000a447c1174876e8000137a44447f11525fe8e58af5a02b2f81bbbf35ea3c1bdf319ffe76794709c9e9d4e80c599000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b000", +// "gasAmount": 42055, +// "gasPrice": "100000000000", +// "txId": "c29e9cb10b3e0b34979b9daac73151d98ee4de8f913e66aa0f0c8dc0cb99a617", +// "groupIndex": 0 +// } + +// Hesap bakiyesini al +const balance = await wallet.nodeProvider.addresses.getAddressesAddressBalance(wallet.account.address) +console.log(JSON.stringify(balance, null, 2)) +// { +// "balance": "999998990063400000000000", +// "balanceHint": "999998.9900634 ALPH", +// "lockedBalance": "0", +// "lockedBalanceHint": "0 ALPH", +// "tokenBalances": [ +// { +// "id": "1581cc793fc7bafce6ef89eaf66404c9eec17561ef0e169ef2a4329c9f190c00", +// "amount": "1" +// } +// ], +// "utxoNum": 2 +// } +``` + +### Geçmiş sözleşme etkinliklerini sorgula + +Sözleşme etkinlikleri, sözleşme adresleri tarafından belirli bir ofsetle dizinlenir ve bir sözleşme adresinin geçmiş etkinliklerini ofset ve limit (isteğe bağlı) belirterek sorgulayabilirsiniz. + +```typescript +const nodeProvider = new NodeProvider('http://localhost:22973') +// Sözleşme dağıtım sonucundan sözleşme adresi +const contractAddress = deployResult.instance.address + +// Sözleşme etkinliklerini indeks 0'dan sorgula ve `limit` 100'den büyük olamaz +const result = await nodeProvider.events.getEventsContractContractaddress( + contractAddress, {start: 0, limit: 100} +) + +// Sonraki sorguda `result.nextStart` ile başlayabilirsiniz +console.log(JSON.stringify(result, null, 2)) +// { +// "events": [ +// { +// "blockHash": "0c07e672c40629a5c943cc7e4ec677140cbd50fdc9dcacb6a1d30bc38c0e7b50", +// "txId": "c29e9cb10b3e0b34979b9daac73151d98ee4de8f913e66aa0f0c8dc0cb99a617", +// "eventIndex": 0, +// "fields": [ +// { +// "type": "Address", +// "value": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH" +// }, +// { +// "type": "U256", +// "value": "1" +// } +// ] +// } +// ], +// "nextStart": 1 +// } + +// Bazı durumlarda, blok yeniden düzenleme nedeniyle ana zincirde olmayan bloklardan etkinlikler yayımlanabilir, bloğun ana zincirde olup olmadığını kontrol edebilirsiniz +await nodeProvider.blockflow.getBlockflowIsBlockInMainChain({blockHash: events[0].blockHash}) +// true + +// Geçerli sözleşme etkinlik sayaçını alın +await nodeProvider.events.getEventsContractContractaddressCurrentCount(contractAddress) +// 1 + +// Ayrıca, `alephium.node.event-log.index-by-tx-id` tam düğüm yapılandırma dosyanızda etkinleştirilmişse, işlem kimliği ile etkinlikleri de alabilirsiniz +await nodeProvider.events.getEventsTxIdTxid('c29e9cb10b3e0b34979b9daac73151d98ee4de8f913e66aa0f0c8dc0cb99a617') +// { +// "events": [ +// { +// "blockHash": "0c07e672c40629a5c943cc7e4ec677140cbd50fdc9dcacb6a1d30bc38c0e7b50", +// "contractAddress": "v8uU9yLfzUwqpJeS9Kd76DB75WJBcEuMdYgEQ2Gn8pLF", +// "eventIndex": 0, +// "fields": [ +// { +// "type": "Address", +// "value": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH" +// }, +// { +// "type": "U256", +// "value": "1" +// } +// ] +// } +// ] +// } +``` + +### Etkinliklere dinleme + +Tek tek sorgulamaya ek olarak, etkinlik aboneliği ile etkinlikleri de alabilirsiniz. Yeni etkinlikleri periyodik olarak sorgulayacak ve alacak. + +```typescript +web3.setCurrentNodeProvider('http://localhost:22973') +// Dağıtım sonucundan `TokenFaucet` sözleşme örneği +const tokenFaucet = deployResult.instance +// `TokenFaucetTypes.WithdrawEvent` dağıtım kılavuzunda oluşturulur +const events: TokenFaucetTypes.WithdrawEvent[] = [] +const subscribeOptions = { + // Her `pollingInterval` zaman diliminde tam düğümden yeni etkinlikleri kontrol edecektir + pollingInterval: 500, + // Her etkinlik için geri çağrı işlevi çağrılacaktır + messageCallback: (event: TokenFaucetTypes.WithdrawEvent): Promise => { + events.push(event) + return Promise.resolve() + }, + // Bir hata oluştuğunda bu geri çağrı işlevi çağrılacaktır + errorCallback: (error: any, subscription): Promise => { + console.log(error) + subscription.unsubscribe() + return Promise.resolve() + } +} + +// Sözleşme etkinliklerini indeks 0'dan abone olun +const subscription = tokenFaucet.subscribeWithdrawEvent(subscribeOptions, 0) +await new Promise((resolve) => setTimeout(resolve, 1000)) +console.log(JSON.stringify(events, null, 2)) +// [ +// { +// "contractAddress": "v8uU9yLfzUwqpJeS9Kd76DB75WJBcEuMdYgEQ2Gn8pLF", +// "blockHash": "0c07e672c40629a5c943cc7e4ec677140cbd50fdc9dcacb6a1d30bc38c0e7b50", +// "txId": "c29e9cb10b3e0b34979b9daac73151d98ee4de8f913e66aa0f0c8dc0cb99a617", +// "eventIndex": 0, +// "name": "Withdraw", +// "fields": { +// "to": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH", +// "amount": "1" +// } +// } +// ] + +// Aboneliği iptal edin +subscription.unsubscribe() +``` + +## Araçlar + +### Sözleşme kimliği ile sözleşme adresi arasında dönüşüm + +```typescript +const contractId = 'bfc891f2f7fbb466bd7808f71cc022debb71fd3c1ceb752b623eb9c48ec4d165' +const contractAddress = addressFromContractId(contractId) +console.log(binToHex(contractIdFromAddress(contractAddress)) === contractId) +// true +``` + +### Adresin grubunu alın + +```typescript +const group = groupOfAddress('1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH') +console.log(group) +// 0 +``` + +### Alt sözleşme kimliğini alın + +```typescript +const contractId = 'bfc891f2f7fbb466bd7808f71cc022debb71fd3c1ceb752b623eb9c48ec4d165' +console.log(subContractId(contractId, '00')) +// 303483cfe0eaead281879233f884e8b64c2ecf26e368ccd4b05b2b5bda87ec3d +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/api-aliases.json b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/api-aliases.json new file mode 100644 index 00000000..52e26c01 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/api-aliases.json @@ -0,0 +1,62 @@ +{ + "current": [ + { + "from": "https://wallet.mainnet.alephium.org", + "to": "https://wallet-v20.mainnet.alephium.org" + }, + { + "from": "https://wallet.testnet.alephium.org", + "to": "https://wallet-v20.testnet.alephium.org" + }, + { + "from": "https://mainnet-wallet.alephium.org", + "to": "https://wallet-v20.mainnet.alephium.org" + }, + { + "from": "https://testnet-wallet.alephium.org", + "to": "https://wallet-v20.testnet.alephium.org" + }, + { + "from": "https://backend.mainnet.alephium.org", + "to": "https://backend-v113.mainnet.alephium.org" + }, + { + "from": "https://backend.testnet.alephium.org", + "to": "https://backend-v113.testnet.alephium.org" + }, + { + "from": "https://mainnet-backend.alephium.org", + "to": "https://backend-v113.mainnet.alephium.org" + }, + { + "from": "https://testnet-backend.alephium.org", + "to": "https://backend-v113.testnet.alephium.org" + }, + { + "from": "https://explorer.mainnet.alephium.org", + "to": "https://explorer-v113.mainnet.alephium.org" + }, + { + "from": "https://explorer.testnet.alephium.org", + "to": "https://explorer-v113.testnet.alephium.org" + }, + { + "from": "https://explorer.alephium.org", + "to": "https://explorer-v113.mainnet.alephium.org" + }, + { + "from": "https://testnet.alephium.org", + "to": "https://explorer-v113.testnet.alephium.org" + } + ], + "deprecated": [ + { + "from": "https://wallet-v17.mainnet.alephium.org", + "to": "https://wallet-v20.mainnet.alephium.org" + }, + { + "from": "https://wallet-v17.testnet.alephium.org", + "to": "https://wallet-v20.testnet.alephium.org" + } + ] +} diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-from-scratch.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-from-scratch.md new file mode 100644 index 00000000..6205155a --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-from-scratch.md @@ -0,0 +1,546 @@ +--- +sidebar_position: 15 +title: Sıfırdan dApp Oluşturma +sidebar_label: Sıfırdan dApp Oluşturma +--- + +Bu kılavuz, bir Alephium dApp projesi oluşturmanın temellerini keşfedecektir. + +Ön koşullar: + +- [TypeScript](https://www.typescriptlang.org/) dilinde kod yazabilme +- Bir [terminal](https://en.wikipedia.org/wiki/Terminal_emulator) kullanabilme +- Kurulu olan [nodejs](https://nodejs.org/en/) sürümü 16 veya daha yüksek olmalıdır +- `npm` sürümü 8 veya daha yüksek olmalıdır + +## Yeni bir dApp projesi oluşturun: Token Musluğu + +Bu öğreticide ilk dApp'ımızı yazacağız: Bir token musluğu. + +Buradaki kodlar, [başlangıç sayfamızdan](/dapps/getting-started) alınmıştır, ancak bu kılavuzu nasıl oluşturduğumuzu adım adım göreceğiz. + +Yeni bir proje klasörü oluşturun ve içine gidin: + +```sh +mkdir alephium-faucet-tuto +cd alephium-faucet-tuto +``` + +Şimdi tüm sözleşmelerimizi saklayacağımız bir `contracts` klasörü oluşturalım: + +```sh +mkdir contracts +``` + +İlk sözleşmemiz `token.ral` olacak ve [burada](https://github.com/alephium/nextjs-template/blob/main/contracts/token.ral). bulunabilir. Tüm dosyayı `contracts` klasörünüze kopyalayabilirsiniz. + +Şimdi, parça parça inceleyelim: + +```rust +import "std/fungible_token_interface" + +Contract TokenFaucet( + symbol: ByteVec, + name: ByteVec, + decimals: U256, + supply: U256, + mut balance: U256 +) implements IFungibleToken { +``` + +İlk dört alan, [IFungibleToken Arayüzümüze](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/fungible_token_interface.ral) hizmet etmek için gereken verileri saklayan değişmez değerler olacaktır. + +`mut balance`, bu muslukta kaç jetonun kaldığını takip eden değişken bir değerdir. + +Sözleşmemizin bir `event` yayınladığını ve bir `error`kodu tanımladığını görebilirsiniz. Daha fazla bilgi için [etkinlikler](https://wiki.alephium.org/ralph/getting-started#events) ve [hata işleme](https://wiki.alephium.org/ralph/getting-started#error-handling) hakkındaki bilgilere bakın. + +Bu, farklı sözleşme argümanları için 5 erişim yöntemiyle takip edilir. + +Büyünün gerçekleştiği son yöntem: + +```rust +@using(assetsInContract = true, updateFields = true, checkExternalCaller = false) +pub fn withdraw(amount: U256) -> () { + // Hata analizi için Hata Ayıklama etkinlikleri yararlı olabilir + emit Debug(`The current balance is ${balance}`) + + // Miktarın geçerli olduğundan emin olun + assert!(amount <= 2, ErrorCodes.InvalidWithdrawAmount) + // `!` ile sonlanan işlevler yerleşik işlevlerdir. + transferTokenFromSelf!(callerAddress!(), selfTokenId!(), amount) + // Ralph negatif değerlere izin vermez. + balance = balance - amount + + // Daha önce tanımladığımız etkinliği yayınlayın. + emit Withdraw(callerAddress!(), amount) +} +``` + +`assert!` ile aynı anda 2'den fazla jeton alan olmamasını sağlarız. +`transferTokenFromSelf`, jetonların gerçek transferini gerçekleştirir. +`mut balance` alanını yeni bakiye ile güncelliyoruz. Negatif durumda bir hata oluşur ve işlem gerçekleşmez. +`callerAddress!()` ve `selfTokenId!()` yerleşik işlevlerdir, bunlar hakkında daha fazla bilgiyi [yerleşik işlevler sayfamızda](/ralph/built-in-functions) bulabilirsiniz. +## Sözleşmenizi derleyin + +Derleyicinin sözleşmeyi derlemek için tam düğümle iletişime geçmesi gerekir, [geliştirme ağınızı oluştururken](/full-node/devnet) tanımlanan doğru bilgileri kullanmanız gerekir. Henüz başlatmadıysanız, şimdi zamanıdır. +Düğüm URL'sini aşağıdaki yapılandırma dosyası kullanarak tanımlıyoruz: `alephium.config.ts`. +Bu dosyayı projenizin kök dizininde oluşturun ve aşağıdaki kodu yapıştırın: + +```typescript +import { Configuration } from '@alephium/cli' + +export type Settings = {} + +const configuration: Configuration = { + networks: { + devnet: { + // İki değerin, geliştirme ağınızda bulunan değerlerle eşleştiğinden emin olun + nodeUrl: 'http://localhost:22973', + networkId: 2 + } + } +} + +export default configuration +``` + +Şimdi derleyelim: + +```sh +npx @alephium/cli@latest compile +``` + +Muhtemelen en son `@alephium/cli` paketini yüklemek için bir onay isteyecektir. Devam etmek için evet'i seçin. + +Yukarıdaki komut başarılı olduğunda, `artifacts` adında yeni bir klasör oluşturulduğunu fark edeceksiniz. Bu klasör, sözleşmenize ilişkin birkaç dosyayı içerir. Örneğin, `artifacts/ts/TokenFaucet.ts` , `at`, `fetchState`, `call*`, gibi birçok yardımcı işlev üretir, ayrıca birçok test işlevini içerir. + +## Sözleşmenizi test edin +SDK, bir işlem göndererek sözleşmeyi çağıran birim test işlevselliği sağlar, ancak blok zinciri durumunu değiştirmek yerine, yeni sözleşme durumu, işlem çıktıları ve etkinlikleri döndürür. + +Test çerçevesini yükleyin: + +```sh +npm install ts-jest @types/jest +``` + +Ayrıca `@alephium/web3` paketimize de ihtiyacınız olacak: + +```sh +npm install @alephium/web3 @alephium/web3-test +``` + +Bir `test` klasörü oluşturun: + +```sh +mkdir test +``` + +ve aşağıdaki içeriğe sahip `test/token.test.ts` adında minimal test dosyasını oluşturun: + +```typescript +import { web3, Project, addressFromContractId } from '@alephium/web3' +import { randomContractId, testAddress } from '@alephium/web3-test' +import { TokenFaucet } from '../artifacts/ts' + +describe('unit tests', () => { + it('TokenFaucet\'ten 1 jeton çeker', async () => { + + // Doğru ana bilgisayarı ve bağlantı noktasını kullanın + web3.setCurrentNodeProvider('http://127.0.0.1:22973') + await Project.build() + + const testContractId = randomContractId() + const testParams = { + // test kontratının bulunduğu rastgele bir adres + address: addressFromContractId(testContractId), + // bir testin öncesinde test kontratına ait varlıklar + initialAsset: { alphAmount: 10n ** 18n, tokens: [{ id: testContractId, amount: 10n }] }, + // test kontratının başlangıç durumu + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: 10n ** 18n, + balance: 10n + }, + // test kontratının hedef işlevini test etmek için argümanlar + testArgs: { amount: 1n }, + // işlevi çağrılayanın sahip olduğu varlıklar + inputAssets: [{ address: testAddress, asset: { alphAmount: 10n ** 18n } }] + } + + const testResult = await TokenFaucet.tests.withdraw(testParams) + console.log(testResult) + }) +}) +``` + +Daha karmaşık bir test, projemizdeki [şablonda](https://github.com/alephium/nextjs-template/blob/main/test/unit/token.test.ts) bulunabilir. + +Ayrıntılara fazla girmeden, TypeScript'in testi çalıştırabilmesi için bazı yapılandırmalara ihtiyacı vardır, bu yüzden projenizin kök dizininde `tsconfig.json` adında bir dosya oluşturun ve aşağıdaki gibi içeriğe sahip olduğundan emin olun: + +```json +{ + "compilerOptions": { + "outDir": "dist", + "target": "es2020", + "esModuleInterop": true, + "module": "commonjs", + "resolveJsonModule": true + }, + "exclude": ["node_modules"], + "include": ["src/**/*.ts", "test/**/*.ts", "scripts/**/*.ts", "alephium.config.ts", "artifacts/**/*.ts"] +} +``` + +Şimdi testleri çalıştırın: + +```sh +npx @alephium/cli@latest test +``` + +Çekme yöntemini çağırarak terminalinizde çıktıyı görebilmelisiniz. + +🎉 Tebrikler! İlk sözleşmenizi oluşturdunuz ve onu çağırmak ve yerel olarak test etmek için bir test yazdınız! Artık sözleşmenizi dağıtma zamanı geldi. + +## Sözleşmenizi Dağıtın + +Şimdi işler ciddiye biniyor, sözleşmemizi `devnet`imize dağıtacağız :rocket: + +`deploy` komutu, `scripts` klasörü içinde bulduğu tüm dağıtım betiklerini yürütür. Projemizin kök klasöründe `scripts` klasörünü oluşturun: + +```sh +mkdir scripts +``` + + `scripts` klasörüne `0_deploy_faucet.ts` adında bir dağıtım betik dosyası oluşturalım ve aşağıdaki kodu yapıştıralım. +Unutmayın ki dağıtım betikleri her zaman sayılarla başlamalıdır (`0`dan başlayarak). + +```typescript +import { Deployer, DeployFunction, Network } from '@alephium/cli' +import { Settings } from '../alephium.config' +import { TokenFaucet } from '../artifacts/ts' + +// Bu dağıtım fonksiyonu, cli dağıtım aracı tarafından otomatik olarak çağrılacaktır +// Dağıtım betiklerinin numaralandırılması gerektiğini unutmayın (0'dan başlayarak) +const deployFaucet: DeployFunction = async ( + deployer: Deployer +): Promise => { + const issueTokenAmount = 100n + const result = await deployer.deployContract(TokenFaucet, { + // Verilecek token miktarı + issueTokenAmount: issueTokenAmount, + // Musluk sözleşmesinin başlangıç durumları + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: issueTokenAmount, + balance: issueTokenAmount + } + }) + console.log('Token musluk sözleşme kimliği: ' + result.contractInstance.contractId) + console.log('Token musluk sözleşme adresi: ' + result.contractInstance.address) +} + +export default deployFaucet +``` + +Deployer'ın [deployContract](https://github.com/alephium/alephium-web3/blob/d2b5b63cae015e843aa77b4cf484bc62a070f1d5/packages/cli/src/types.ts#L133-L137) fonksiyonu, sözleşmemizi doğru argümanlarla dağıtır. Dağıtımı belirli bir adla etiketlemek için bir `taskTag` argümanı da ekleyebilirsiniz. Varsayılan olarak, sözleşme adını kullanacaktır, ancak aynı sözleşmeyi farklı başlangıç alanlarıyla birden çok kez dağıtırsanız, `.deployment` dosyanız geçersiz kılınır. Belirli bir `taskTag` kullanarak bu sorunu çözebilirsiniz. + +[DeployContractParams](https://github.com/alephium/alephium-web3/blob/d2b5b63cae015e843aa77b4cf484bc62a070f1d5/packages/web3/src/contract/contract.ts#L1286-L1293) arayüzünden, `initialFields`'in zorunlu olduğunu görebiliriz, çünkü bu, `TokenFaucet` sözleşmemizin argümanlarını içerir. + +`issueTokenAmount` ile kaç token ihraç etmek istediğinizi belirleyebilirsiniz, bu bir token oluşturmak istiyorsanız gereklidir, aksi takdirde token-id oluşturulmayacaktır. + +Şimdi, dağıtım yapalım! + +```sh +npx @alephium/cli@latest deploy +``` + +...HATA... Çalışmıyor mu??? + +Eğer `The node chain id x is different from configured chain id y` hatası alıyorsanız, `networkId`'nizi devnet yapılandırmanızda ve `alephium.config.ts` dosyanızda kontrol edin. + +`No UTXO found` ??? + +Tabii ki `how-to-use-my-utxos`'u sağlamadık, [privateKeys](https://github.com/alephium/alephium-web3/blob/d2b5b63cae015e843aa77b4cf484bc62a070f1d5/packages/cli/src/types.ts#L39-L46) alanımızı tanımlamamız gerekiyor. + +Cüzdan uzantımızdan özel anahtarları ihraç etmeniz gerekecek (daha sonra diğer cüzdanlarımızdan yapabiliriz), bir fon içeren bir cüzdanı kullanmaya dikkat edin, örneğin devnet'inizdeki genesis tahsisinden birinin cüzdanını kullanın. +Devnetinizi başlatmak için docker yoluyla başlattıysanız, kullandığımız cli paketimize [varsayılan özel anahtar](https://github.com/alephium/alephium-web3/blob/d2b5b63cae015e843aa77b4cf484bc62a070f1d5/packages/cli/src/types.ts#L75) tanımlıyoruz. + +Hadi `alephium.config.ts` dosyamızı güncelleyelim + +```typescript +const configuration: Configuration = { + networks: { + devnet: { + nodeUrl: 'http://localhost:22973', + networkId: 2, + //The private key of my genesis address 132mqFF2BuxGigdaMTGSruuW29kmEs2eEGcpquG4YZRNh + privateKeys: ['672c8292041176c9056bb0dd1d91d34711ceed2493b5afc83f2012b27df2c559'] + } + } +} +``` + +:::caution +Gerçek uygulamalar, `privateKeys` gibi hassas ayarlar için ortam değişkenleri veya benzer teknikleri kullanmalıdır. +Özel anahtarlarınızı kaynak kontrolüne göndermeyin. +::: + +ve tekrar dağıtılmaya çalışalım: + +```sh +npx @alephium/cli@latest deploy +``` + +```sh +Contracts are compiled already. Loading them from folder "artifacts" +Deploying contract TokenFaucet +Deployer - group 1 - 132mqFF2BuxGigdaMTGSruuW29kmEs2eEGcpquG4YZRNh +Token faucet contract id: d00e9c788ddd572b0c186f0599a264f4c79f009c632c8040b7c5f71bfc0ec301 +Token faucet contract address: 28h7qSmkAAeNyoBuQKGyp1WG8VfdKPePCCFGKwp2Y8yyA +✅ Deployment scripts executed! +``` + +Tebrikler! Sözleşmeniz dağıtıldı. Sözleşmenin bakiyesini kontrol edebiliriz. `curl` kullanarak ve çıkışı deployma sonucunuza göre değiştirerek sözleşme adresini kullanın: + +```sh +curl 'http://localhost:22973/addresses/28h7qSmkAAeNyoBuQKGyp1WG8VfdKPePCCFGKwp2Y8yyA/balance' +``` + +Yanıt şuna benzer olmalıdır: + +```json +{ + "balance": "1000000000000000000", + "balanceHint": "1 ALPH", + "lockedBalance": "0", + "lockedBalanceHint": "0 ALPH", + "tokenBalances": [ + { + "id": "d00e9c788ddd572b0c186f0599a264f4c79f009c632c8040b7c5f71bfc0ec301", + "amount": "100" + } + ], + "utxoNum": 1 +} +``` + +Oluşturmak istediğimiz 100 token ile token kimliğimizi görebiliriz. + +Şimdi, sözleşme durumunu kontrol edelim, önce adres grubumuzu alalım: + +```sh +curl 'http://localhost:22973/addresses/28h7qSmkAAeNyoBuQKGyp1WG8VfdKPePCCFGKwp2Y8yyA/group' +curl 'http://localhost:22973/contracts/28h7qSmkAAeNyoBuQKGyp1WG8VfdKPePCCFGKwp2Y8yyA/state?group=1' +``` + + +Sözleşme durumu yanıtı: +```json +{ + "address": "28h7qSmkAAeNyoBuQKGyp1WG8VfdKPePCCFGKwp2Y8yyA", + "bytecode": "050609121b4024402d404a010000000102ce0002010000000102ce0102010000000102ce0202010000000102ce0302010000000102a0000201020101001116000e320c7bb4b11600aba00016002ba10005b416005f", + "codeHash": "641343b4f1c08b03969b127b452acc7535cad20231bc32af6c0b5f218dd8ff0c", + "initialStateHash": "06595afa695949e915dfc1220dfb47125b01751d9e193f4c5fa1c7fc3566673d", + "immFields": [ + { + "type": "ByteVec", + "value": "5446" + }, + { + "type": "ByteVec", + "value": "546f6b656e466175636574" + }, + { + "type": "U256", + "value": "18" + }, + { + "type": "U256", + "value": "100" + } + ], + "mutFields": [ + { + "type": "U256", + "value": "100" + } + ], + "asset": { + "attoAlphAmount": "1000000000000000000", + "tokens": [ + { + "id": "d00e9c788ddd572b0c186f0599a264f4c79f009c632c8040b7c5f71bfc0ec301", + "amount": "100" + } + ] + } +} +``` + +`immFields` içinde başlangıçtaki `TokenFaucet` argümanlarımızı (`symbol`, `name`, `decimals`, `supply`) görebiliriz. Ayrıca `mutFields`'in mevcut token bakiyesini içerdiğini görebiliriz. Musluğu çağırdıktan sonra o alanı kontrol edeceğiz. + +`deploy` komutu ayrıca `.deployments.devnet.json` dosyası oluşturdu, dağıtım sonucuyla. Bu dosyayı sözleşmeyle kolayca etkileşime girmek için saklamak önemlidir, ancak tüm bilgiler blok zincirinde bulunabilir. + +# Dağıtılmış sözleşme ile etkileşime geçin + +Bir token musluğuna sahip olmak güzel, ondan token almak daha da iyidir. + +Artık musluk sözleşmesiyle etkileşim kurmak için birkaç kod yazabiliriz. + +`cli` paketimizi ve `typescript` bağımlılığını kurmamız gerekecek: + +``` +npm install @alephium/cli typescript +``` + +Artık blok zinciriyle etkileşim kurmanın farklı bir yolu var. Daha önce `scripts/_*` dosyalarımızla `DeployFunction`'ı kullanıyorduk, bu dosyalar CLI aracıyla otomatik olarak dağıtılıyordu. + +Başka bir yol, TypeScript kullanarak bir skelet web uygulama projesi oluşturmaktır. Projemizin kök klasöründe `src` klasörü ve içinde `tokens.ts` adında bir dosya oluşturun ve aşağıdaki içeriği yapıştırın. + +```typescript +import { Deployments } from '@alephium/cli' +import { DUST_AMOUNT, web3, Project, NodeProvider } from '@alephium/web3' +import { PrivateKeyWallet} from '@alephium/web3-wallet' +import configuration from '../alephium.config' +import { TokenFaucet, Withdraw } from '../artifacts/ts' + +async function withdraw() { + + //Select our network defined in alephium.config.ts + const network = configuration.networks.devnet + + //NodeProvider is an abstraction of a connection to the Alephium network + const nodeProvider = new NodeProvider(network.nodeUrl) + + //Sometimes, it's convenient to setup a global NodeProvider for your project: + web3.setCurrentNodeProvider(nodeProvider) + + //Connect our wallet, typically in a real application you would connect your web-extension or desktop wallet + const wallet = new PrivateKeyWallet({privateKey: '672c8292041176c9056bb0dd1d91d34711ceed2493b5afc83f2012b27df2c559' }) + + // Compile the contracts of the project if they are not compiled + Project.build() + + //.deployments contains the info of our `TokenFaucet` deployement, as we need to now the contractId and address + //This was auto-generated with the `cli deploy` of our `scripts/0_deploy_faucet.ts` + const deployments = await Deployments.from('.deployments.devnet.json') + + //Make sure it match your address group + const accountGroup = 1 + + const deployed = deployments.getDeployedContractResult(accountGroup, 'TokenFaucet') + + if(deployed !== undefined) { + const tokenId = deployed.contractInstance.contractId + const tokenAddress = deployed.contractInstance.address + + // Submit a transaction to use the transaction script + // It uses our `wallet` to sing the transaction. + await Withdraw.execute(wallet, { + initialFields: { token: tokenId, amount: 1n }, + attoAlphAmount: DUST_AMOUNT + }) + + // Fetch the latest state of the token contract, `mut balance` should have change + const faucet = TokenFaucet.at(tokenAddress) + const state = await faucet.fetchState() + console.log(state.fields) + + // Fetch wallet balance see if token is there + const balance = await wallet.nodeProvider.addresses.getAddressesAddressBalance(wallet.account.address) + console.log(balance) + } else { + console.log('`deployed` is undefined') + } +} + +// Let's perform one withdraw +withdraw() +``` + +Dikkatli insanlar için, `artifacts`'tan yeni bir şey göreceksiniz: [`Withdraw`](https://github.com/alephium/nextjs-template/blob/main/contracts/withdraw.ral), `TokenFaucet` sözleşmesiyle etkileşimde kullanılması gereken bir [`TxScript`](https://wiki.alephium.org/ralph/getting-started#txscript). Kodu oldukça basit. `contracts` klasöründe `withdraw.ral` adında bir dosya oluşturun ve aşağıdaki kodu yapıştırın: + + +```rust +TxScript Withdraw(token: TokenFaucet, amount: U256) { + token.withdraw(amount) +} +``` + +Şimdi, sözleşmelerimizi derlememiz gerekiyor ve `Withdraw` için sanatı almak için: + +```sh +npx @alephium/cli@latest compile +``` + +Artık TypeScript kodunu JavaScript'e derleyebilirsiniz: + +```sh +npx tsc --build . +``` + +HATA, `alephium.config.ts`'den gelen bir hata almalısınız, şimdiye kadar yapılandırma basit bir JSON olarak kullanıldı, ancak şimdi `TypeScript` onun [arayüzünü](https://github.com/alephium/alephium-web3/blob/d2b5b63cae015e843aa77b4cf484bc62a070f1d5/packages/cli/src/types.ts#L48-L62)ne saygı göstermesini istiyor. Özellikle `networks`, 3 `NetworkType` içeren bir kayıt olmalıdır. Kendiniz düzeltmeyi deneyebilir veya `alephium.config.ts` dosyanızı aşağıdaki gibi güncelleyebilirsiniz: + +```typescript +import { Configuration } from '@alephium/cli' + +export type Settings = {} + +const configuration: Configuration = { + defaultNetwork: 'devnet', + networks: { + devnet: { + nodeUrl: 'http://localhost:22973', + networkId: 2, //Use the same as in your devnet configuration + privateKeys: ['672c8292041176c9056bb0dd1d91d34711ceed2493b5afc83f2012b27df2c559'], + settings: {} + }, + testnet: { + nodeUrl: '', + privateKeys: [], + settings: {} + }, + mainnet: { + nodeUrl: '', + privateKeys: [], + settings: {} + } + } +} + +export default configuration +``` + +Şimdi tekrar derleyin + +``` +npx tsc --build . +``` + +Bir `dist` klasörü oluşturulmuş olmalı, devam edin ve dağıtılmış jeton musluğu ile etkileşime girin: + +``` +node dist/src/token.js +``` + +Artık oluşturduğunuz token'ın gururlu sahibi olmalısınız. + + +## Bundan Sonra Ne Var? + +Token musluğu öğreticisinin daha karmaşık bir örneğini [alephium/nextjs-template](https://github.com/alephium/nextjs-template) projesinde bulabilirsiniz. + +## Cüzdanlara Bağlanın + +dApp, dApp kullanıcılarının, Alephium blok zinciriyle kimlik doğrulaması yapmak ve etkileşimde bulunmak gibi işlemleri imzalamak için cüzdan entegrasyonunu gerektirir. Şu anda dApp'ler hem [Uzantı Cüzdanı](../wallet/extension-wallet/dapp) hem de [WalletConnect](../wallet/walletconnect) ile entegre edilebilir. Daha fazla ayrıntı için ilgili sayfalara başvurun. + +## Daha Fazla Bilgi + +- Ekosistem hakkında daha fazla bilgi edinmek için lütfen [ekosistem genel bakışına](/dapps/ecosystem) göz atın. +- Web3 SDK hakkında daha fazla bilgi edinmek için lütfen [web3 SDK kılavuzuna](/dapps/alephium-web3) göz atın. +- Ralph dili hakkında daha fazla bilgi edinmek için lütfen [Ralph kılavuzuna](/ralph/getting-started) göz atın. +- Bir Nextjs dApp nasıl oluşturulur, lütfen [Nextjs ile dApp oluşturma](/dapps/build-dapp-with-nextjs.md) sayfasına göz atın. \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-with-nextjs.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-with-nextjs.md new file mode 100644 index 00000000..29d310fc --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/build-dapp-with-nextjs.md @@ -0,0 +1,112 @@ +sidebar_position: 10 +title: Nextjs ile dApp Oluşturma +sidebar_label: Nextjs ile dApp Oluşturma +--- + +Bu, [başlangıç rehberinin](/dapps/getting-started.md) bir devamıdır. Bu rehberin sonunda, [başlangıç rehberinde](/dapps/getting-started.md) tartışılan jeton musluğu akıllı sözleşmeleriyle etkileşim kurabilen basit bir [Nextjs](https://nextjs.org/) dApp oluşturabilmeniz gerekmektedir. + +Önkoşullar: + +- [Typescript](https://www.typescriptlang.org/) ve [Nextjs](https://nextjs.org/) hakkında temel anlayış +- Makinenize [npm](https://www.npmjs.com/) ve [npx](https://www.npmjs.com/package/npx) kurulu olmalıdır. +- [Başlangıç rehberinde](/dapps/getting-started.md) jeton musluğu öğretici projesine aşina olun. +- [Uzantı Cüzdanını](/wallet/extension-wallet/overview) yükleyin +- Docker ve docker-compose yükleyin + +## Nextjs şablonunu kullanarak bir dApp projesi oluşturun + +```sh +npx @alephium/cli@latest init alephium-nextjs-tutorial --template nextjs +``` + +Bu, yeni bir dizin olan `alephium-nextjs-tutorial` oluşturur ve bu dizin içinde örnek bir Nextjs projesi başlatır. + +## Yerel geliştirme ağı başlatın + +`alephium-nextjs-tutorial/docker` dizinine gidin ve şunu çalıştırın + +```sh +cd alephium-nextjs-tutorial/docker +docker-compose up -d +``` + +TBu, hem Alephium tam düğümünü hem de [explorer arka ucu](https://github.com/alephium/explorer-backend)'nu `devnet` üzerinde başlatacaktır. Uzantı cüzdanının çalışması için Explorer arka ucu gereklidir. + +Şimdi [sözleşmenizi derleyebilir](/dapps/getting-started.md#sözleşmenizi-derleme), [test edebilir](/dapps/getting-started.md#sözleşmenizi-test-etme) ve [dağıtabilirsiniz](/dapps/getting-started.md#sözleşmenizi-dağıtma) jeton musluğu sözleşmelerinizi, [başlangıç rehberinde](/dapps/getting-started.md) açıklandığı gibi. + +Bir sonraki adıma geçmeden önce sözleşmenin dağıtıldığından emin olun. + + +```sh +npx @alephium/cli@latest deploy +``` + +## Nextjs dApp ile jeton musluğuyla etkileşim + +Proje kök dizinine gidin ve şunu çalıştırın + +```sh +npm install +npm run dev +``` + +Tarayıcınızda [http://localhost:3000](http://localhost:3000) adresini açın ve jeton musluğu uygulamasını görün. + + + +Yukarıda gösterildiği gibi, jeton musluğu dApp, bir cüzdanla bağlanmadan önce `Alephium'a Bağlan` düğmesini gösterir. Düğmeyi tıklayın ve uzantı cüzdanını açmak için `Uzantı Cüzdanı` seçeneğini seçin. `WalletConnect` yakında desteklenecek. + +Landing page +     +Create wallet + +Uzantı cüzdanının onay ekranını inceleyin ve `Bağlan`'ı tıklayın, jeton musluğu dApp, uzantı cüzdanına bağlanacaktır. + + +Landing page + +Çekilecek jeton miktarını girin (maksimum 2) ve `Bana Jeton Gönder` düğmesini tıklayın. İşlem ayrıntılarını inceleyin ve `Onayla`yı tıklayın. + +Landing page + +Tebrikler, jeton musluğundan hesabınıza bazı jetonlar aktardınız! + +## Uygulama + +[nextjs şablonunun](https://github.com/alephium/nextjs-template) amacı, bir Nextjs uygulamasından Alephium blok zinciriyle nasıl etkileşim kurulacağını göstermektir. + +Kimlik doğrulaması, [alephium/web3-react](https://github.com/alephium/alephium-web3/tree/master/packages/web3-react) bileşeni kullanılarak birkaç satırda yapılabilir: + +```tsx + + + // Your logic + +``` +``, bir [context](https://reactjs.org/docs/context.html) oluşturur ve uygulamanın bileşen ağacı boyunca iletilir. Context, Alephium blok zinciriyle etkileşim kurmak için gerekli olan [SignerProvider](https://github.com/alephium/alephium-web3/blob/8cf20fee4c16091cf581518e9f411e31ec37955e/packages/web3-react/src/contexts/alephiumConnect.tsx#L56) 'i içerir. + +Kullanıcı cüzdanla bağlandıktan sonra, [@alephium/web3-react](https://github.com/alephium/alephium-web3/tree/master/packages/web3-react) tarafından sağlanan bir dizi react hooks kullanarak Alephium blok zinciriyle etkileşime geçebiliriz. Örneğin, [şu anki bağlı cüzdanı](https://github.com/alephium/alephium-web3/blob/master/packages/web3-react/src/hooks/useWallet.tsx), [bakiyeyi](https://github.com/alephium/alephium-web3/blob/master/packages/web3-react/src/hooks/useBalance.tsx) ve [işlem durumunu](https://github.com/alephium/alephium-web3/blob/master/packages/web3-react/src/hooks/useTxStatus.tsx) almak gibi. + +Bir kullanıcı işlem yaptığında, `updateBalanceForTx` kullanarak kullanıcının bakiyesini güncelleyebilirsiniz. İşte basit bir örnek: + +```typescript +// The useBalance hook returns two values: +// 1. balance: the current balance +// 2. updateBalanceForTx: used to update the balance when the user makes a transaction. +const { balance, updateBalanceForTx } = useBalance() + +const withdrawCallback = useCallback(async () => { + const result = await withdraw(...) + updateBalanceForTx(result.txId) +}, [updateBalanceForTx]) +``` + +Daha fazla uygulama ayrıntısı için, lütfen [koda](https://github.com/alephium/nextjs-template) bakın. + +## Daha Fazla Bilgi + +- Nextjs şablonu test ağına dağıtılmış ve [buradan](https://alephium.github.io/nextjs-template/) erişilebilir. +- Ekosistem hakkında daha fazla bilgi edinmek için lütfen [ekosistem genel bakışına](/dapps/ecosystem) göz atın. +- Web3 SDK hakkında daha fazla bilgi edinmek için lütfen [web3 SDK kılavuzuna](/dapps/alephium-web3) göz atın. +- Ralph dili hakkında daha fazla bilgi edinmek için lütfen [Ralph kılavuzuna](/ralph/getting-started) göz atın. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dapp-recipes.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dapp-recipes.md new file mode 100644 index 00000000..e62540aa --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dapp-recipes.md @@ -0,0 +1,267 @@ +--- +sidebar_position: 30 +title: Dapp Tarifleri +sidebar_label: Dapp Tarifleri +--- + +## Sözleşme + +### Sözleşme durumunu alın + +Bir sözleşmeyi derlemek için `npx @alephium/cli compile` komutunu kullandığınızda, sözleşme koduna dayalı olarak TypeScript kodu üretecektir. +TokenFaucet sözleşmesini ([burada](https://github.com/alephium/nextjs-template/blob/main/contracts/token.ral) bir örnek olarak alalım), +üretilen TypeScript koduna [buradan](https://github.com/alephium/nextjs-template/blob/main/artifacts/ts/TokenFaucet.ts) erişebiliriz. +Oluşturulan TypeScript kodunu kullanarak sözleşme durumunu alabiliriz: + +```typescript +import { TokenFaucet } from 'artifacts/ts' // Note that you may need to change the import path according to your project directory structure +import { web3, NodeProvider } from '@alephium/web3' + +const nodeUrl = 'http://127.0.0.1:12973' +const nodeProvider = new NodeProvider(nodeUrl) +web3.setCurrentNodeProvider(nodeProvider) + +const tokenFaucetAddress = 'y1btMZHTvMvHEqLTdx1JHvEXq3tmVfqsY2rwM669upiT' +const tokenFaucet = TokenFaucet.at(tokenFaucetAddress) +const contractState = await tokenFaucet.fetchState() + +// The names in `contractState.fields` are the same as the field names in the TokeFaucet contract +const { symbol, name, decimals, supply, balance } = contractState.fields + +// You can also get the assets owned by the contract +const { alphAmount, tokens } = contractState.asset +``` + +### Sözleşme yöntemini çağırma + +Üretilen TypeScript kodunu sözleşme yöntemlerini çağırmak için kullanabilirsiniz, bu Ethereum'daki `eth_call` ile benzerdir: + +```typescript +import { TokenFaucet } from 'artifacts/ts' +import { web3, NodeProvider } from '@alephium/web3' + +const nodeUrl = 'http://127.0.0.1:12973' +const nodeProvider = new NodeProvider(nodeUrl) +web3.setCurrentNodeProvider(nodeProvider) + +const tokenFaucetAddress = 'y1btMZHTvMvHEqLTdx1JHvEXq3tmVfqsY2rwM669upiT' +const tokenFaucet = TokenFaucet.at(tokenFaucetAddress) +const totalSupply = await tokenFaucet.methods.getTotalSupply() +``` + +### Sözleşme etkinliklerine abone olma + +TokenFaucet sözleşmesinde ([burada](https://github.com/alephium/nextjs-template/blob/main/contracts/token.ral) bir örnek olarak), +[Withdraw](https://github.com/alephium/nextjs-template/blob/c846a675235198045cdf91ba0304aa287f2fc68d/contracts/token.ral#L18) adında bir etkinlik tanımladık. +`withdraw` işlevi çağrıldığında her zaman, sözleşme bir `Withdraw` etkinliği yayınlar. +Bu çekilme etkinliklerine şu yaklaşımı kullanarak abone olabiliriz: + +```typescript +import { TokenFaucet, TokenFaucetTypes } from 'artifacts/ts' +import { EventSubscribeOptions } from '@alephium/web3' + +// `TokenFaucetTypes.WithdrawEvent` is a generated TypeScript type +const options: EventSubscribeOptions = { + // We specify the pollingInterval as 4 seconds, which will query the contract for new events every 4 seconds + pollingInterval: 4000, + // The `messageCallback` will be called every time we recive a new event + messageCallback: (event: TokenFaucetTypes.WithdrawEvent): Promise => { + console.log(`Withdraw(${event.fields.to}, ${event.fields.amount})`) + return Promise.resolve() + }, + // The `errorCallback` will be called when an error occurs, here we unsubscribe the subscription and log the error + errorCallback: (error, subscription): Promise => { + console.error(error) + subscription.unsubscribe() + return Promise.resolve() + }, + // The `onEventCountChanged` callback is an optional parameter that will be called when the contract event count changes + onEventCountChanged: (eventCount): Promise => { + }, +} + +// We subscribe to contract events starting from event count 0. +// We can also persist the current event count within the `onEventCountChanged` callback, +// allowing us to subscribe from the last event count for the next subscription. +const fromEventCount = 0 +const subscription = tokenFaucet.subscribeWithdrawEvent(options, fromEventCount) + +// Unsubscribe the subscription +subscription.unsubscribe() +``` + +### Simüle Edilmiş Blok Zamanıyla İşlevleri Test Etme + +Blok zamanı simüle edilmiş işlevleri test etmek mümkündür. Testnet veya devnet'e dayalı entegrasyon testleri için blok zamanını değiştirme yolu yoktur. + +İşte basit bir örnek: + +```typescript +import { TokenFaucet } from 'artifacts/ts' + +const result = await TokenFaucet.tests.withdraw({ + blockTimeStamp: 1706284941000, // the unit is millisecond + address: ..., + initialFields: ..., + ... +}) +``` + +### Hata Ayıklama İletilerini Kaydetme + +Ralph, yerleşik `Debug` etkinliğini yayınlayarak hata ayıklama iletilerini destekler. Bu tür etkinlikler ana ağda görmezden gelinir. + +```typescript +// Simple Ralph contract +Contract Debug() { + pub fn debug() -> () { + emit Debug(`Hello, ${nullContractAddress!()}!`) + } +} + +// Unit test in Typescript +const result = await Debug.tests.debug() + +// The following line will appear in the console output and the full node's logs: +// Debug - tgx7VNFoP9DJiFMFgXXtafQZkUvyEdDHT9ryamHJYrjq - Hello, tgx7VNFoP9DJiFMFgXXtafQZkUvyEdDHT9ryamHJYrjq! + +// Retrieve all debug messages +console.log(result.debugMessages) +``` + +## İşlem + +### İşlem durumunu sorgulama + +İşlem durumunu aşağıdaki yaklaşımı kullanarak sorgulayabilirsiniz: + +```typescript +import { NodeProvider } from '@alephium/web3' + +const nodeUrl = 'http://127.0.0.1:12973' +const nodeProvider = new NodeProvider(nodeUrl) + +const txId = '919d4e4b1080d74beb56a1f78ea7c0569a358e3ea3988058987cc1addf4b93cc' +const txStatus = await nodeProvider.transactions.getTransactionsStatus({ txId }) +``` + +`txStatus.type` kullanarak işlem durumunu ayırt edebilirsiniz: + +1. `MemPooled`: bu, işlemin mempool'da olduğu anlamına gelir +2. `Confirmed`: işlem onaylandı ve `txStatus.chainConfirmations` kullanarak onayları alabilirsiniz +3. `TxNotFound`: işlem mevcut değil + +## Hooks + +`@alephium/web3-react` paketi, ön uç kullanıcı arayüzlerinin geliştirilmesini kolaylaştırmak için birkaç kancaya sahiptir. + +### useWalletConfig + +```typescript +import { useWalletConfig } from '@alephium/web3-react' + +export function Component() { + const { network, setNetwork, addressGroup, setAddressGroup } = useWalletConfig() + + return
+ + +
+} +``` + +`useWalletConfig` kancası, bağlantı düğmesi yapılandırmalarını ve bu yapılandırmaları güncellemek için yardımcı işlevleri döndürür. + +### useWallet + +```typescript +import { useWallet, Wallet } from '@alephium/web3-react' + +function Component() { + const { account, connectionStatus } = useWallet() + + if (connectionStatus === 'connecting') return
Connecting
+ if (connectionStatus === 'disconnected') return
Disconnected
+ + // connected + return
{account}
+} +``` + +Dönüş değeri `undefined` ise, cüzdanın bağlı olmadığını belirtir. Dönen cüzdanın aşağıdaki alanları vardır: + +* `wallet.signer`: işlemleri imzalamak için işaretçiyi kullanabilirsiniz +* `wallet.account`: bu, şu anda bağlı olan hesaptır +* `wallet.nodeProvider`: tam düğümle iletişim kurmak için düğüm sağlayıcıyı kullanabilirsiniz, bu değer belirsiz olabilir + +### useBalance + +```typescript +import { useBalance } from '@alephium/web3-react' + +const { balance, updateBalanceForTx } = useBalance() +``` + +`useBalance` kancası iki değer döndürür: + +1. `balance`: bağlı hesabın mevcut bakiyesi +2. `updateBalanceForTx`: kullanıcı bir işlem yaptığında bakiyeyi güncellemek için kullanılır. Bir işlem kimliğini parametre olarak alır ve bu işlem onaylandığında bakiyeyi günceller. + +### useTxStatus + +```typescript +import { useState } from 'react' +import { useTxStatus } from '@alephium/web3-react' + +const { txStatus } = useTxStatus(txId) +const confirmed = useMemo(() => { + return txStatus?.type === 'Confirmed' +}, [txStatus]) +``` + +`useTxStatus` kancası ayrıca isteğe bağlı bir geri çağrı parametresi kabul eder, türü `(txStatus: node.TxStatus) => Promise`, bu her işlem durumu sorgusu sonrasında çağrılacaktır. + +## Araçlar + +### Hız sınırlaması + +Bir dApp geliştirirken tam düğümle iletişim kurmak için `NodeProvider` kullanılır ve Alephium tarafından sağlanan [API hizmetleri](./public-services.md) kullanılabilir. Ancak, tüm API'lar spamı önlemek için hız sınırlamasına tabidir. Bu nedenle, istemcinin belirli bir süre içinde çok sayıda istek göndermesi durumunda, HTTP 429 hatası alacaktır. + +Bu sorunu çözmek için [fetch-retry](https://github.com/jonbern/fetch-retry)'yi kullanabilirsiniz: + +```typescript +import * as fetchRetry from 'fetch-retry' + +// We specify up to 10 retries, with 1 second retry delay +const retryFetch = fetchRetry.default(fetch, { + retries: 10, + retryDelay: 1000 +}) +const nodeProvider = new NodeProvider('node-url', undefined, retryFetch) +``` + +### Özel cüzdan bağlantı düğmesi + +`@alephium/web3-react`, kullanıcı arayüzlerinin geliştirilmesini kolaylaştırmak için `AlephiumConnectButton` bileşenini sağlar, bağlantı düğmesinin stiline özelleştirmek için `AlephiumConnectButton.Custom`'ı da kullanabilirsiniz: + +```typescript +import { AlephiumConnectButton } from '@alephium/web3' + +function CustomWalletConnectButton = () => { + return ( + + {({ isConnected, disconnect, show, account }) => { + return isConnected ? ( + + ) : ( + + ) + }} + + ) +} +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dust-amounts.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dust-amounts.md new file mode 100644 index 00000000..a7041a97 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/dust-amounts.md @@ -0,0 +1,58 @@ +--- +sidebar_position: 30 +title: Toz Miktarı +sidebar_label: Toz Miktarı +--- + +Alephium'un benzersiz [sUTXO](https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749) modeli, UTXO modelinin güvenliğini ve hesap modelinin ifade yeteneğini birleştirir. Alephium'daki tüm varlıklar, yerel ALPH ve diğer [jetonlar](/tokens/overview) dahil olmak üzere, UTXO'lar tarafından yönetilir. UTXO modeli birçok güvenlik avantajını masaya getirirken (örneğin, [Varlık İzin Sistemi'ni](http://localhost:3000/ralph/asset-permission-system) görün), aynı zamanda UX etkileri olan bir takasla da gelir: özellikle **toz miktarı** kavramı. Bu makalenin amacı bu konuda biraz netlik getirmektir. + +Her UTXO, sözde [UTXO setinin](https://en.wikipedia.org/wiki/Unspent_transaction_output#UTXO_set) boyutuna katkıda bulunur. Boyutunun kontrol edilmesi için etkili bir mekanizmanın olmaması durumunda, UTXO seti, özellikle IO'ya gelindiğinde, blockchain için önemli performans engelleri yaratabilir. Nispeten küçük bir UTXO setinin korunması, Alephium'un kendisinin en iyi sürümü olmaya devam etmesi için önemlidir: etkin, performanslı ve ölçeklenebilir. + +Çok küçük bir değere sahip UTXO'lar da harcanması ekonomik olmayabilir, çünkü bir UTXO'nun harcanma işlem ücreti, UTXO'nun değerinden daha fazla olabilir. Zamanla, bu, kullanıcıların sistemin uzun vadeli sağlığı ile uyumlu olmadığı bir durum yaratabilir. + +Bu, tüm UTXO tabanlı blockchain'lerin karşılaştığı bir sorundur. UTXO setinin boyutunu kontrol altında tutmak için, Bitcoin Core, [toz](https://bitcoin.stackexchange.com/questions/10986/what-is-meant-by-bitcoin-dust/41082#41082) kavramını tanıttı. Bir kullanıcı, bir UTXO'yu toz limitinin altında bir değerle oluşturmaya çalışırsa, Bitcoin Core, blockchain'in durum şişmesini önlemek için bunu ağa iletmez. Alephium'daki **toz miktarı** kavramı, Bitcoin'deki toz limitine benzer, ancak işlem türüne bağlı olarak değişmez, bu yüzden düşünmek daha da basittir. Bir işlem çıktısı, en az **toz miktarı** ALPH içermiyorsa, Alephium blockchain işlemi geçersiz olarak kabul eder. + +Düzenli UTXO'lar için, **toz miktarı** `0.001` ALPH'dir. Bu, aşağıdaki işlemlerin geçersiz olduğu anlamına gelir: + +``` +1) ---------------- + | | 0.0005 ALPH (ALPH too small) + 1 ALPH | | =============================> +================> | | + | | (0.9995 - gas fee) ALPH + | | =============================> + ---------------- + +2) ---------------- + | | + | | + | | 1 Token A + 1 Token A | | 0.0005 ALPH (ALPH too small) +================> | | =============================> + | | + 1 ALPH | | (0.9995 - gas fee) ALPH +================> | | =============================> + | | + | | + ---------------- + +3) ---------------- + | | + | | + 1 Token A | | 1 Token A (no ALPH) +================> | | =============================> + | | + 1 ALPH | | (1 - gas fee) ALPH +================> | | =============================> + | | + | | + ---------------- +``` + +İkinci ve üçüncü durum, kullanıcının niyetinin Jeton A'yı göndermek olsa bile, en az bir toz miktarı ALPH'nin de gönderilmesi gerektiğini göstermektedir. Özetle, her düzenli UTXO en az `0.001` ALPH gerektirir, aksi takdirde işlem başarısız olur. Bu basit yaklaşım, Alephium sistemindeki UTXO setinin boyutunun bir üst sınırının olmasını sağlar. + +Her sözleşmenin Alephium sisteminde tam olarak bir UTXO'su vardır. Sözleşme UTXO'ları için (ayrıca **sözleşme teminatı** olarak da bilinir) toz miktarı şu anda `1` ALPH olarak ayarlanmıştır. Düzenli UTXO'ların toz miktarına kıyasla, bu, sistemdeki sözleşme UTXO setinin boyutuna çok daha agresif bir üst sınır koyar ve aynı zamanda hesap modeli kullanılarak yönetilen sözleşme durumlarının boyutunu da sınırlar. Sözleşme yok edildikten sonra sözleşme teminatını geri almak mümkün olduğundan, umarım geliştiricilerin sözleşme durumunu sağlıklı bir seviyede tutmaları için doğru teşvikleri oluşturur. + +UX açısından, bunun anlamı bir sözleşmenin oluşturulması için en az `1` ALPH'nin sözleşme teminatı olarak gerektiğidir. Somut olarak, bir NFT'nin damga fiyatı `100` ALPH ise, sözleşme teminatını dikkate alarak toplam maliyet `101` ALPH olabilir. Ayrıca, herhangi bir işlem, sözleşmenin bakiyesini `1` ALPH'nin altına düşürüyorsa başarısız olur. + +Özetle, bazı UX zorlukları yaratmasına rağmen, UTXO'lar için **toz miktarı** (ve genişletilmiş olarak **sözleşme teminatı**) Alephium blockchain'inin performansı, ölçeklenebilirliği ve merkezi olmayanlığı için kilit bir öneme sahiptir. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/ecosystem.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/ecosystem.md new file mode 100644 index 00000000..7611c88c --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/ecosystem.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 30 +title: Ekosistem +sidebar_label: Ekosistem +--- + +## Ağ + +- [Yerel Geliştirme Ağı (Devnet)](https://github.com/alephium/alephium-stack#devnet) (dahil olan gezgin) +- Testnet ve Mainnet API'ları [burada belgelenmiştir](/dapps/public-services#api-aliases) + +## Dapp SDK +- [@alephium/web3](https://www.npmjs.com/package/@alephium/web3) +- [@alephium/web3-wallet](https://www.npmjs.com/package/@alephium/web3-wallet) +- [@alephium/web3-test](https://www.npmjs.com/package/@alephium/web3-test) +- [@alephium/cli](https://www.npmjs.com/package/@alephium/cli) +- [@alephium/web3-react](https://www.npmjs.com/package/@alephium/web3-react) +- [@alephium/get-extension-wallet](https://www.npmjs.com/package/@alephium/get-extension-wallet) +- [@alephium/walletconnect](https://www.npmjs.com/package/@alephium/walletconnect-provider) (güncellenecek) +- [@alephium/token-list](https://www.npmjs.com/package/@alephium/token-list) + +## Ralph Araçları +- [Vscode eklentisi](https://marketplace.visualstudio.com/items?itemName=alephium.ralph-vscode-alephium) +- [Vim eklentisi ](https://github.com/tdroxler/ralph.vim) + +## Dapp Cüzdanları +- [Masaüstü cüzdan](https://github.com/alephium/desktop-wallet/releases/latest) +- Uzantı cüzdanı: + - [Google Chrome Mağazası](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj) + - [Firefox Mağazası](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) +- Mobil cüzdan: + - [Android](https://play.google.com/store/apps/details?id=org.alephium.wallet) + - [Apple](https://apps.apple.com/us/app/alephium-wallet/id6469043072) + +## Örnekler + +Yeni dApp'ler inşa etmek için harika bir ilham kaynağı olabilecek, bakımı yapılan bazı dApp'ler. + +- [Örnekler](https://github.com/alephium/ralph-example) +- [DEX](https://github.com/alephium/alephium-dex/tree/master/contracts) +- [NFT](https://github.com/alephium/alephium-nft) +- [Alephium Köprüsü](https://github.com/alephium/wormhole-fork/tree/add-alephium-to-wormhole/alephium) diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/getting-started.md new file mode 100644 index 00000000..e3d2c74b --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/getting-started.md @@ -0,0 +1,358 @@ +--- +sidebar_position: 5 +title: Başlarken +sidebar_label: Başlarken +--- + +## Genel Bakış + +Alephium, dApp'lerinizi oluşturmanıza yardımcı olmak için çeşitli araçlar ve paketler önermektedir. + +Bu kılavuz, önerilen kurulumumuzu yüklemenize yardımcı olacaktır. + +Önkoşullar: + +- Kodu [TypeScript](https://www.typescriptlang.org/) ile yazın +- [Terminal](https://en.wikipedia.org/wiki/Terminal_emulator) ile çalışın +- Yüklü [nodejs](https://nodejs.org/en/) sürümü >= 16 +- `npm` sürümü >= 8 yüklü + +:::info +`npm` ve `npx` ile yavaşlık yaşarsanız, `bun` ve `bunx`'e bir şans vermek düşünülebilir. +::: + +## Yeni bir dApp projesi oluşturun + +Öğretici projesini oluşturmak için yeni bir terminal açın ve şunu çalıştırın: + +``` +npx @alephium/cli@latest init alephium-tutorial +``` + + +Bu, `alephium-tutorial` adında yeni bir dizin oluşturacak ve bu dizin içine örnek bir proje başlatacaktır. + +## Yerel geliştirme ağını başlatın + +Kontratlarınızı derlemek ve test etmek için yerel bir geliştirme ağı başlatmak gereklidir ve bir geliştirme ağı başlatmak için [bu kılavuzu](/full-node/devnet) takip edebilirsiniz. + +Yeni ağınız, [bu yapılandırmayı](https://github.com/alephium/alephium-stack/blob/master/devnet/devnet.conf) ve test amaçları için yeterli ALPH'ye sahip 4 grup ile oluşturulmuştur. + +Daha sonra, TypeScript SDK, REST uçları aracılığıyla ağla etkileşim kurabilir. + +## Kontratınızı derleyin + +Sonraki adımda, çalışma alanını öğretici projesine değiştirin: + +``` +cd alephium-tutorial +``` + + +`contracts/` klasörüne bir göz atın, `token.ral` ve `withdraw.ral` dosyalarını bulabilirsiniz: + +
+token.ral +

+ +```rust +import "std/fungible_token_interface" + +// `TokenFaucet` adında bir kontrat tanımlar. +// Bir kontrat, alanları (durumu) ve fonksiyonları içeren bir koleksiyondur. +// Dağıtıldıktan sonra, bir kontrat, Alephium blok zincirinde belirli bir adreste bulunur. +// Kontrat alanları kalıcı olarak kontrat depolamasında saklanır. +// Bir kontrat, dağıtımında bir başlangıç ​​miktarı jeton çıkarabilir. +Contract TokenFaucet( + symbol: ByteVec, + name: ByteVec, + decimals: U256, + supply: U256, + mut balance: U256 +) implements IFungibleToken { + + // Etkinlikler, blok zincirindeki faaliyetleri günlüğe kaydetmek için kullanılır. + // Alephium istemcileri, kontrat durum değişikliklerine tepki vermek için etkinlikleri dinleyebilir. + event Withdraw(to: Address, amount: U256) + + enum ErrorCodes { + InvalidWithdrawAmount = 0 + } + + // Kontratın tokeninin başlangıç ​​arzını döndüren genel bir fonksiyon. + // Alanın, çıkarılan token miktarı olarak başlatılması gerektiğini unutmayın. + pub fn getTotalSupply() -> U256 { + return supply + } + + // Tokenin sembolünü döndüren genel bir fonksiyon. + pub fn getSymbol() -> ByteVec { + return symbol + } + + // Tokenin adını döndüren genel bir fonksiyon. + pub fn getName() -> ByteVec { + return name + } + + // Tokenin ondalık sayılarını döndüren genel bir fonksiyon. + pub fn getDecimals() -> U256 { + return decimals + } + + // Kontratın mevcut bakiyesini döndüren genel bir fonksiyon. + pub fn balance() -> U256 { + return balance + } + + // Kendisini çağıran herkese tokenleri aktaran genel bir fonksiyon. + // Bu fonksiyon, kontrat alanlarını değiştirdiği için `updateFields = true` ile işaretlenmiştir. + // İşlev, kontrat varlıklarını kullandığı için contract assets olarak işaretlenmiştir. + @using(assetsInContract = true, updateFields = true, checkExternalCaller = false) + pub fn withdraw(amount: U256) -> () { + // Hata analizi için Hata ayıklama etkinlikleri yararlı olabilir + emit Debug(`Mevcut bakiye ${balance}`) + + // Miktarın geçerli olduğundan emin olun + assert!(amount <= 2, ErrorCodes.InvalidWithdrawAmount) + // '!' ile biten işlevler yerleşik işlevlerdir. + transferTokenFromSelf!(callerAddress!(), selfTokenId!(), amount) + // Ralph'da taşma olmaz. + balance = balance - amount + + // Önceden tanımlanmış etkinliği yayar + emit Withdraw(callerAddress!(), amount) + } +} +``` + +

+ +
+withdraw.ral +

+ +```rust +// Bir işlem betiği tanımlar. +// Bir işlem betiği, blok zincirindeki kontratlarla etkileşim için bir kod parçasıdır. +// İşlem betikleri genelde işlemlerin giriş varlıklarını kullanabilir. +// Bir betik tek kullanımlıktır ve sadece bir kez işlem ile birlikte yürütülür. +TxScript Withdraw(token: TokenFaucet, amount: U256) { + // token kontratının çekme işlevini çağırır. + token.withdraw(amount) +} +``` + +

+ +Kontratlarınızı derlemek için şunu çalıştırın: + +``` +npx @alephium/cli@latest compile +``` + +Derlenmiş artefaktlar `artifacts` dizinindedir. + +Bu komut ayrıca derlenmiş artefaklara dayalı olarak TypeScript kodu oluşturur. Oluşturulan TypeScript kodu `artifacts/ts`dizinindedir. Oluşturulan TypeScript kodunu kullanarak Alephium blok zinciriyle daha pratik bir şekilde etkileşim kurabilirsiniz. + +## Kontratınızı test edin + +Örnek proje, kontratınız için `test/unit/token.test.ts` adlı testlerle birlikte gelir: + +
+token.test.ts +

+ +```typescript +import { web3, Project, TestContractParams, addressFromContractId, AssetOutput, DUST_AMOUNT } from '@alephium/web3' +import { expectAssertionError, randomContractId, testAddress, testNodeWallet } from '@alephium/web3-test' +import { deployToDevnet } from '@alephium/cli' +import { TokenFaucet, TokenFaucetTypes, Withdraw } from '../artifacts/ts' + +describe('unit tests', () => { + let testContractId: string + let testTokenId: string + let testContractAddress: string + let testParamsFixture: TestContractParams + + // We initialize the fixture variables before all tests + beforeAll(async () => { + web3.setCurrentNodeProvider('http://127.0.0.1:22973') + await Project.build() + testContractId = randomContractId() + testTokenId = testContractId + testContractAddress = addressFromContractId(testContractId) + testParamsFixture = { + // a random address that the test contract resides in the tests + address: testContractAddress, + // assets owned by the test contract before a test + initialAsset: { alphAmount: 10n ** 18n, tokens: [{ id: testTokenId, amount: 10n }] }, + // initial state of the test contract + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: 10n ** 18n, + balance: 10n + }, + // arguments to test the target function of the test contract + testArgs: { amount: 1n }, + // assets owned by the caller of the function + inputAssets: [{ address: testAddress, asset: { alphAmount: 10n ** 18n } }] + } + }) + //See more test in `test/unit/token.test.ts` +}) +``` + +

+ +Bu testleri şu şekilde çalıştırabilirsiniz: + +``` +npm run test +``` + +veya + +``` +npx @alephium/cli@latest test +``` + +## Kontratınızı dağıtın + +Şimdi, kontratı dağıtmak için Alephium CLI ve bir dağıtım betiği olan `scripts/0_deploy_faucet.ts` kullanacağız: + +
+0_deploy_faucet.ts +

+ +```typescript +import { Deployer, DeployFunction, Network } from '@alephium/cli' +import { Settings } from '../alephium.config' +import { TokenFaucet } from '../artifacts/ts' + +// This deploy function will be called by cli deployment tool automatically +// Note that deployment scripts should prefixed with numbers (starting from 0) +const deployFaucet: DeployFunction = async ( + deployer: Deployer, + network: Network +): Promise => { + // Get settings + const issueTokenAmount = network.settings.issueTokenAmount + const result = await deployer.deployContract(TokenFaucet, { + // The amount of token to be issued + issueTokenAmount: issueTokenAmount, + // The initial states of the faucet contract + initialFields: { + symbol: Buffer.from('TF', 'utf8').toString('hex'), + name: Buffer.from('TokenFaucet', 'utf8').toString('hex'), + decimals: 18n, + supply: issueTokenAmount, + balance: issueTokenAmount + } + }) + console.log('Token faucet contract id: ' + result.contractInstance.contractId) + console.log('Token faucet contract address: ' + result.contractInstance.address) +} + +export default deployFaucet +``` + +

+ +Bunu kullanarak şunu çalıştırabilirsiniz: + +``` +npx @alephium/cli@latest deploy +``` + +Bu, token musluğunu devnet'in 0. grubuna dağıtacaktır. Testnet'te (veya başka bir ağda) dağıtmak için `alephium.config.ts` dosyanızı güncelleyin ve `--network` seçeneğini kullanın: + +``` +npx @alephium/cli@latest deploy --network testnet +``` + +## Dağıtılan kontratla etkileşime geçin + +Şimdi, `src/token.ts`dosyasını oluşturabilirsiniz: + +
+token.ts +

+ +```typescript +import { Deployments } from '@alephium/cli' +import { DUST_AMOUNT, web3, Project } from '@alephium/web3' +import { testNodeWallet } from '@alephium/web3-test' +import configuration from '../alephium.config' +import { TokenFaucet, Withdraw } from '../artifacts/ts' + +async function withdraw() { + web3.setCurrentNodeProvider('http://127.0.0.1:22973') + // Compile the contracts of the project if they are not compiled + Project.build() + + // Attention: test wallet is used for demonstration purpose + const signer = await testNodeWallet() + + const deployments = await Deployments.load(configuration, 'devnet') + + // The test wallet has four accounts with one in each address group + // The wallet calls withdraw function for all of the address groups + for (const account of await signer.getAccounts()) { + // Set an active account to prepare and sign transactions + await signer.setSelectedAccount(account.address) + const accountGroup = account.group + + // Load the metadata of the deployed contract in the right group + const deployed = deployments.getDeployedContractResult(accountGroup, 'TokenFaucet') + if (deployed === undefined) { + console.log(`The contract is not deployed on group ${account.group}`) + continue + } + const tokenId = deployed.contractInstance.contractId + const tokenAddress = deployed.contractInstance.address + + // Submit a transaction to use the transaction script + await Withdraw.execute(signer, { + initialFields: { token: tokenId, amount: 1n }, + attoAlphAmount: DUST_AMOUNT + }) + + const faucet = TokenFaucet.at(tokenAddress) + // Fetch the latest state of the token contract + const state = await faucet.fetchState() + console.log(JSON.stringify(state.fields, null, ' ')) + } +} + +withdraw() + +``` + +

+ +Sadece şunu çalıştırın: + +``` +npm run build +``` + +ve dağıtılan token musluğu ile etkileşime geçin: + +``` +node dist/src/token.js +``` + +## Cüzdanlara bağlanın + +dApp'ler, dApp kullanıcılarının kimlik doğrulaması yapmasını ve Alephium blok zinciriyle etkileşimde bulunmasını sağlamak için cüzdan entegrasyonu gerektirir, +örneğin işlem imzalama. Şu anda dApp'ler hem [Extension Wallet](../wallet/extension-wallet/dapp) hem de [WalletConnect](../wallet/walletconnect) ile entegre edilebilir. Daha fazla ayrıntı için ilgili sayfalara başvurun. + +## Daha fazlasını öğrenin + +- Ekosistem hakkında daha fazla bilgi edinmek için lütfen [ekosistem genel bakışına](/dapps/ecosystem) gidin. +- Web3 SDK hakkında daha fazla bilgi edinmek için lütfen [web3 SDK kılavuzuna](/dapps/alephium-web3) gidin. +- Ralph dili hakkında daha fazla bilgi edinmek için lütfen [Ralph kılavuzuna](/ralph/getting-started) gidin. +- Bir Nextjs dApp'in nasıl oluşturulacağını öğrenmek için lütfen [Nextjs ile dApp oluşturma](/dapps/build-dapp-with-nextjs.md) sayfasına gidin. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect-click-extensonwallet.png b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect-click-extensonwallet.png new file mode 100644 index 00000000..7fd47317 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect-click-extensonwallet.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect.png b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect.png new file mode 100644 index 00000000..498f3f28 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connect.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connected.png b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connected.png new file mode 100644 index 00000000..7ce18820 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-connected.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-open-connect.png b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-open-connect.png new file mode 100644 index 00000000..b243141d Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-open-connect.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-send-token.png b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-send-token.png new file mode 100644 index 00000000..1c8b4ec3 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/media/nextjs-template-send-token.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/dapps/public-services.md b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/public-services.md new file mode 100644 index 00000000..21941ea0 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/dapps/public-services.md @@ -0,0 +1,58 @@ +--- +sidebar_position: 50 +title: Halk Hizmetleri +sidebar_label: Halk hizmetleri +--- + +## Testnet Musluğu + +Testnet Musluğu, belirli bir cüzdana testnet-v1 jetonları almanın bir yoludur. + +### HTTP API'si Aracılığıyla + +Testnet-v16 jetonları almanın başka bir yolu, istek gövdesinde cüzdan adresinizi vererek bir HTTP çağrısı yapmaktır, aşağıdaki gibi: + +``` +curl -X POST -d '1H1GPLkoMGVUfxQcJgtjWTrKV1KJCQooEV5WxPMhP4Zjy' https://faucet.testnet.alephium.org/send +``` + +Musluk, istekleri birkaç dakika boyunca kısıtlamaktadır. + +## Node ve Gezgin API'ları + +Şu anda aşağıdaki API hizmetleri sürdürülmektedir. Tüm API'lar spamı önlemek için sınırlıdır. +* Ana ağ için `https://wallet-v20.mainnet.alephium.org`, node v2.X ile ([Dokümantasyon](https://wallet-v20.mainnet.alephium.org/docs)) +* Test ağı için `https://wallet-v20.testnet.alephium.org`, node v2.X ile ([Dokümantasyon](https://wallet-v20.testnet.alephium.org/docs)) +* Ana ağ için `https://backend-v113.mainnet.alephium.org`, gezgin arka uç v1.13.X ile ([Dokümantasyon](https://backend-v113.mainnet.alephium.org/docs)) +* Test ağı için `https://backend-v113.testnet.alephium.org`, gezgin arka uç v1.13.X ile ([Dokümantasyon](https://backend-v113.testnet.alephium.org/docs)) + +Proje hala aktif geliştirme aşamasında olduğu için, tüm API'lar sürümlenmiştir. Genellikle yalnızca en son sürümler sürdürülür, ancak API yükseltmeleri topluluğa önceden duyurulur. + +## API Takma Adları + +Kullanıcıların eski API'den geçmelerine zaman tanımak için aşağıdaki API takma adlarını sürdürüyoruz. + +import aliases from "./api-aliases.json"; + +export const Aliases = ({aliases, type}) => ( + + {aliases.length > 0 &&

{type} Takma Adlar

} +
    {aliases && aliases.map((alias) => { + const from = alias['from']; + const to = alias['to']; + const additionalPath = from.includes('wallet') ? '/infos/version' : from.includes('backend') ? '/infos' : ''; + return
  • {from} (Test) -> {to}
  • ; + })}
+
+) + + + + +## API Sınırlı Kullanımı + +En iyi performansı ve güvenliği sağlamak için tüm halka açık API'larımızda sınırlı kullanım uygulanmaktadır. Bu, belirli bir zaman dilimi içinde yapabileceğiniz istek sayısına bir sınır getirilmesi anlamına gelir. Hizmetlerimiz geliştikçe ve büyüdükçe, sınırların hizmetin gerçek kullanımına dayanarak ayarlanması mümkündür. + +Sınırlı kullanım içinde sorunsuz bir deneyim yaşamak için, API hizmetlerimize istek yaparken önbellek ve yeniden deneme mekanizmaları uygulamanızı kesinlikle öneririz. Yanıtların önbelleğe alınması, API çağrılarının sayısını azaltmaya yardımcı olurken, başarısız isteklerin yeniden denemesi geçici sorunları veya hataları ele alabilir. + +Uygulamanız React çerçevesi ile oluşturulmuşsa, npm'de bulunan ["SWR"](https://www.npmjs.com/package/swr) paketinden faydalanabilirsiniz. SWR, veri alımı ve önbelleğe alma için uygun kancalar sağlar, bu da API'larla çalışmayı kolaylaştırır. Özellikle değişken verileri işlemek için `useSWR` kancasını ve jeton meta verileri gibi değişmez verileri işlemek için `useSWRImmutable` kancasını kullanabilirsiniz. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/explorer-backend/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/explorer-backend/getting-started.md new file mode 100644 index 00000000..5dc7714c --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/explorer-backend/getting-started.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 10 +title: Başlarken +sidebar_label: Başlarken +--- + +## Gereksinimler + +- Java (11 veya 17 önerilir) +- [PostgreSQL](https://www.postgresql.org) +- [Çalışan tam düğüm](full-node/getting-started.md) + +## Uygulama Dosyasını İndirin + +[GitHub sürümünden](https://github.com/alephium/explorer-backend/releases/latest) `explorer-backend-x.x.x.jar` dosyasını indirin. + +## Veritabanını Oluşturun: + +1. `postgresql` servisini başlatın. +2. PostgreSQL kabuğuna varsayılan `postgres` kullanıcısı ile giriş yapın: + ```shell + psql postgres # or `psql -U postgres` depending on your OS + ``` +3. `postgres` rolünün var olduğundan ve yoksa oluşturulduğundan emin olun. + Tüm rolleri listele: + ```shell + postgres=# \du + ``` + `postgres` rolünü oluşturun: + ```shell + postgres=# CREATE ROLE postgres WITH LOGIN; + ``` +4. Daha sonra, veritabanını oluşturun: + ```shell + postgres=# CREATE DATABASE explorer; + ``` + +## Explorer-backend'inizi Başlatın + +```shell +java -jar explorer-backend-x.x.x.jar +``` + +Explorer-backend'iniz tam düğümle senkronize olmaya başlayacaktır. İlk sefer buzun sürebilir + +## Anlık Görüntüden Başlama + +İlk senkronizasyon süresini azaltmak için, anlık görüntülerden birini geri yükleyebilirsiniz. + +Anlık görüntüler [archives.alephium.org](https://archives.alephium.org/#mainnet/explorer-db/) adresinde bulunmaktadır. + +```shell +psql explorer < explorer-db-xxx.pg_dump +``` + +Lütfen `explorer` veritabanının önceden oluşturulmuş ve boş olması gerektiğini unutmayın. \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/devnet.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/devnet.md new file mode 100644 index 00000000..82d8aab3 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/devnet.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 50 +title: Geliştirme Ağı (Devnet) +sidebar_label: Geliştirme Ağı (Devnet) +--- + +# Yerel Bir Devnet Oluşturun + +## Docker Kullanarak + +Eğer yerel bir geliştirme ağı oluşturmak ve keşif desteği almak istiyorsanız, lütfen `docker-compose` kullanın ve [alephium-stack](https://github.com/alephium/alephium-stack#devnet) rehberindeki talimatları izleyin. + +## Jar dosyalarını manuel olarak kullanma + +### Tam düğüm + +Dosyayı (`alephium-x.x.x.jar`) [Github yayınından](https://github.com/alephium/alephium/releases/latest) indirin (çift tıklamayın, bu şekilde başlatılamaz). + +`~/.alephium/user.conf` adresinde bir yapılandırma dosyası yazın, aşağıdaki örnek [alephium-stack deposundan](https://github.com/alephium/alephium-stack/blob/master/devnet/devnet.conf) alınmıştır: + +```conf +# Bu tanımlama anahtarını içe aktarın, adresleriniz için ayrılmış 4'000'000 jeton almak için +# +# vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge enroll refuse another lava + +alephium.genesis.allocations = [ + { + address = "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH", + amount = 1000000000000000000000000, + lock-duration = 0 seconds + }, + { + address = "14UAjZ3qcmEVKdTo84Kwf4RprTQi86w2TefnnGFjov9xF", + amount = 1000000000000000000000000, + lock-duration = 0 seconds + }, + { + address = "15jjExDyS8q3Wqk9v29PCQ21jDqubDrD8WQdgn6VW2oi4", + amount = 1000000000000000000000000, + lock-duration = 0 seconds + }, + { + address = "17cBiTcWhung3WDLuc9ja5Y7BMus5Q7CD9wYBxS1r1P2R", + amount = 1000000000000000000000000, + lock-duration = 0 seconds + } +] + +alephium.consensus.num-zeros-at-least-in-hash = 0 +alephium.consensus.uncle-dependency-gap-time = 0 seconds +alephium.network.leman-hard-fork-timestamp = 1643500800000 # GMT: 30 Ocak 2022 00:00:00 + +alephium.network.network-id = 4 +alephium.discovery.bootstrap = [] +alephium.wallet.locking-timeout = 99999 minutes +alephium.mempool.auto-mine-for-dev = true +alephium.node.event-log.enabled=true +alephium.node.event-log.index-by-tx-id = true +alephium.node.event-log.index-by-block-hash = true + +alephium.network.rest-port = 22973 +alephium.network.ws-port = 21973 +alephium.network.miner-api-port = 20973 +alephium.api.network-interface = "0.0.0.0" +alephium.api.api-key-enabled = false +alephium.mining.api-interface = "0.0.0.0" +alephium.network.bind-address = "0.0.0.0:19973" +alephium.network.internal-address = "alephium:19973" +alephium.network.coordinator-address = "alephium:19973" + +# rastgele madencilik adresleri +alephium.mining.miner-addresses = [ + "1FsroWmeJPBhcPiUr37pWXdojRBe6jdey9uukEXk1TheA", + "1CQvSXsmM5BMFKguKDPpNUfw1idiut8UifLtT8748JdHc", + "193maApeJWrz9GFwWCfa982ccLARVE9Y1WgKSJaUs7UAx", + "16fZKYPCZJv2TP3FArA9FLUQceTS9U8xVnSjxFG9MBKyY" +] +``` + +Not: Mnemonik (24 kelime) ve ilgili adresler, geliştirme amaçları için oluşturulmuştur, bunu kullanabilir veya kendi mnemonik ve adresinizi oluşturabilirsiniz, ancak asla bunu mainnet üzerinde kullanmayın. +Daha fazla adres ekleyebilirsiniz. Adresleri daha sonra değiştirmek isterseniz, devnetinizi silip yeniden başlatmanız gerekecektir. +Şimdi `devnet`'inizi başlatabilirsiniz: + +```sh +java -jar alephium-x.x.x.jar +``` + +Artık tam düğümün API'sine şu adresten erişebilirsiniz: `http://localhost:22973/docs` + +### Explorer-backend + +Gereksinim: https://www.postgresql.org/ + +Dosyayı (`explorer-backend-x.x.x.jar`) [Github yayınından](https://github.com/alephium/explorer-backend/releases/latest) indirin. + +PostgreSQL'ye bağlanın ve devnetiniz için bir veritabanı oluşturun + +```sql +CREATE DATABASE devnet; +``` + +Hangi ayarların geçersiz kılınabileceğini görmek için [yapılandırma dosyasına](https://github.com/alephium/explorer-backend/blob/feature/contract-subcontract/app/src/main/resources/application.conf) bakabilirsiniz. Daha sonra `explorer-backend`'inizi yapılandırabilir ve başlatabilirsiniz: + +```sh +export BLOCKFLOW_NETWORK_ID=2 +export BLOCKFLOW_PORT=22973 +export DB_NAME=devnet +java -jar explorer-backend-x.x.x.jar +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/docker-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/docker-guide.md new file mode 100644 index 00000000..682d336e --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/docker-guide.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 20 +title: Dockerize Edilmiş Tam Düğüm Kılavuzu +sidebar_label: Dockerize edilmiş tam düğüm kılavuzu +--- + +`docker-compose` ile bir tam düğümü nasıl çalıştıracağınız hakkındaki talimatları burada 1 dakika içinde bulabilirsiniz: [https://github.com/alephium/alephium-stack](https://github.com/alephium/alephium-stack) diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/full-node-more.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/full-node-more.md new file mode 100644 index 00000000..954ea534 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/full-node-more.md @@ -0,0 +1,118 @@ +--- +sidebar_position: 40 +title: Daha Fazla ve Sorun Giderme +sidebar_label: Daha Fazla ve Sorun Giderme +--- + +## API Anahtarı + +Tam düğümünüzün dinlenme uç noktalarına erişimi sınırlamak için API anahtarını kullanmak iyi bir uygulamadır. + +### API Anahtarı Kurulumu + +Lütfen `user.conf` dosyanıza aşağıdaki satırları ekleyerek sıfırları kendi anahtarınızla (>= 32 karakter) değiştirin. + +``` +alephium.api.api-key = "--- 32 karakterden uzun kendi anahtarınız" +``` + + +Bu değişikliğin geçerli olması için tam düğümünüzü yeniden başlatın. + +#### API Anahtarı Oluşturma + +GNU/Linux üzerinde: `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 48 | head -n 1` + +### API Anahtarı Kullanımı + +1. Swagger UI'nin sağ üstündeki `Authorize` düğmesine tıklayın: + ![full-node-api-key-auth0](media/full-node-api-key-auth0.png) + +2. Değer kutusuna anahtarınızı yazın ve yetkilendirme düğmesine tıklayın: + ![full-node-api-key-auth1](media/full-node-api-key-auth1.png) + +Artık Swagger UI'yi API anahtarı olmadan kullanabilirsiniz. + +## Tam düğüm API'sinin genel erişilebilir hale getirilmesi nasıl yapılır? + +1. Yukarıdaki rehbere uygun şekilde API anahtarınızı ayarlayın. + +2. Aşağıdaki satırları `user.conf` dosyanıza ekleyin ve tam düğümünüzü yeniden başlatın. + +``` +alephium.api.network-interface = "0.0.0.0" +``` + +## Aynı alt ağdaki başka bir bilgisayardan tam düğümün Swagger UI'sine nasıl erişilir? + +1. Aşağıdaki satırları `user.conf` dosyanıza ekleyin ve tam düğümünüzü yeniden başlatın. + +``` +alephium.api.network-interface = "0.0.0.0" +``` + + +2. Swagger UI'nin `host`'unu tam düğümünüzün alt ağ IP'sine değiştirin. + +## Hata "java.lang.AssertionError: assumption failed" + +Bu hata genellikle düğüm senkronizasyonu sırasında bağlantı kaybından kaynaklanır ve bazı dosyaların bozulduğu anlamına gelir. +Sorunu düzeltmek için: + +1. .alephium klasörünü silin `rm .alephium` + +2. Düğümü yeniden başlatın ve senkronizasyonu bekleyin `java -jar alephium-x.x.x.jar` + +## Alephium veri klasörünün taşınması + +Birçok kullanıcı, Alephium veri klasörünü birincil önyükleme diskinin dışında farklı bir diske tutmayı tercih eder. Alephium tam düğüm jar'ı ile bunu yapmak için, `ALEPHIUM_HOME` ortam değişkenini kullanabilirsiniz: + +1. Alephium tam düğüm jar'ını durdurun +2. Alephium veri klasörünü (normalde Windows için `%userprofile%\.alephium` veya Linux ve macOS için `~/.alephium`) yeni konuma taşıyın +3. Yeni konuma işaret eden bir `ALEPHIUM_HOME` ortam değişkeni sisteme ekleyin. Bunun için değişkeni sistem düzeyinde ekleyebilirsiniz veya Alephium jar'ını başlatmadan önce değişkeni ayarlayan bir toplu dosya oluşturabilirsiniz. +4. Alephium düğümünü yeniden başlatın + +Docker tam düğümü kullanıyorsanız, sadece docker dosyasındaki monte edilen klasör tanımlarını yeni eve işaret etmek için değiştirin ve sonra yeniden başlatın. + +## Günlüğü Özelleştirme + +Günlükleme için kullanılan birkaç ortam değişkeni vardır: + +- `ALEPHIUM_LOG_LEVEL` konsol günlüğü seviyesini değiştirebilir. +- `ALEPHIUM_ENABLE_DEBUG_LOGGING` hata ayıklama günlüğünü etkinleştirebilir. +- `ALEPHIUM_HOME` tam düğümün ev klasörünü değiştirebilir, bu nedenle günlüklerin klasörü değişir + +Aşağıda tüm olası günlükleme seçenekleriyle bir örnek bulunmaktadır: + +``` +ALEPHIUM_HOM= ALEPHIUM_LOG_LEVEL= ALEPHIUM_ENABLE_DEBUG_LOGGING= java -jar alephium-x.x.x.jar +``` + +Ayrıca, Alephium'un [günlük yapılandırma dosyasını](https://github.com/alephium/alephium/blob/master/flow/src/main/resources/logback.xml) geçersiz kılabilirsiniz. + +``` +java -Dlogback.configurationFile=/path/to/config.xml alephium-x.x.x.jar +``` + +## Budama + +Tam senkronize edilmiş bir Alephium tam düğümü, blok zincir verilerini depolamak için 80 GB'den fazla disk alanı gerektirir. Versiyon `2.6.1`'den itibaren Alephium tam düğümü depolama budamasını destekler, bu da depolama gereksinimini önemli ölçüde azaltabilir. + +İşte Alephium tam düğümünü budamak için adımlar: + +### Jar Dosyası Kullanarak + +1. Alephium tam düğümünün durduğundan emin olun +2. `alephium-tools-x.y.z.jar` dosyasını https://github.com/alephium/alephium/releases adresinden indirin +3. Varsayılan Alephium ana dizinini değiştirdiyseniz, `ALEPHIUM_HOME` ortam değişkenini ayarlayın +4. Aşağıdaki komutu çalıştırın `java -cp alephium-tools-x.y.z.jar org.alephium.tools.PruneStorage` budamayı başlatmak için +5. Komutun tamamlanmasını bekleyin, disk alanı yaklaşık 20 GB'a düşmelidir +6. Alephium tam düğümünü yeniden başlatın + +### Docker Kullanarak + +1. Alephium tam düğümünün durduğundan emin olun +2. Aşağıdaki komutu çalıştırın `docker run -it -v ${YOUR_ALEPHIUM_HOME}:/alephium-home/.alephium alephium/alephium-tools:x.y.z org.alephium.tools.PruneStorage` +3. Komutun tamamlanmasını bekleyin, disk alanı yaklaşık 20 GB'a düşmelidir +4. Alephium tam düğümünü yeniden başlatın + diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/getting-started.md new file mode 100644 index 00000000..68aab245 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/getting-started.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 10 +title: Başlarken +sidebar_label: Başlarken +--- + +## Gereksinimler + +Bilgisayarınızda Java'nın kurulu olduğundan emin olun (11 veya 17 önerilir): + +- Windows veya macOS: [https://adoptopenjdk.net/](https://adoptopenjdk.net/) +- Ubuntu: Terminal'de `sudo apt install default-jdk` komutunu çalıştırın + +## Uygulama Dosyasını İndirme + +Dosyayı `alephium-x.x.x.jar` [Github sürümünden](https://github.com/alephium/alephium/releases/latest) indirin (bu şekilde çift tıklamayın, bu şekilde başlatılamaz). + +## Düğümünüzü Başlatın + +1. Arama kutusunu açın ve `Terminal` (Mac ve Ubuntu için) veya `Command Prompt` (Windows için) yazın. +2. Terminal/Komut İstemi programında, **alephium-x.x.x.jar** dosyasının kaydedildiği klasöre girmek için `cd your-jar-file-path` komutunu yazın. +3. Aşağıdaki komutu yazın ve Enter tuşuna basarak tam düğümü başlatın: + ```shell + java -jar alephium-x.x.x.jar + ``` + +🎉 _**Tada, düğümünüz çalışıyor**_ + +- Düğümünüz ağ ile senkronize olmaya başlayacaktır. İlk kez uzun sürebilir. Düğümünüz tamamen senkronize olmuş olacaktır terminal günlüklerindeki blok yüksekliği en son bloklardaki ile eşit olduğunda ([explorer]'da bulunan). +- Terminali kapatırsanız, düğüm kapanacaktır. +- Tüm blok zinciri verileri ev klasörünüzün altındaki `.alephium` klasöründe saklanır[^1]. + +### Swagger + +Tam düğümle etkileşimde bulunmak için OpenAPI kullanıyoruz. [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) adresinden Swagger UI'yi doğrudan açabilirsiniz. + +Alternatif olarak, herhangi bir OpenAPI istemcisini +bizim deposundaki (`openapi.json` dosyasını ([indir](https://github.com/alephium/alephium/raw/master/api/src/main/resources/openapi.json))) içe aktarabilirsiniz. + +### Madencilik + +Madencilik için öğretici için [Solo Madencilik Kılavuzu](mining/solo-mining-guide.md) veya [Havuz Madencilik Kılavuzu](mining/pool-mining-guide.md)'nu takip edebilirsiniz. + +### Cüzdan + +Masaüstü cüzdanı buradan [GitHub](https://github.com/alephium/desktop-wallet/releases/latest) indirebilirsiniz. + +Alternatif olarak, tam düğümümüz gelişmiş özelliklere sahip bir yerleşik cüzdan içerir, bunu nasıl kullanacağınızı öğrenmek için [Cüzdan Kılavuzu](wallet/node-wallet-guide.md)'nu takip edebilirsiniz. + +[^1]: Ev klasörü sistemlerinize bağlıdır: Windows'ta `C:\Users\`, macOS'ta `/Users/`, Linux'ta `/home/`. + +[explorer]: https://explorer.alephium.org diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/loading-snapshot.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/loading-snapshot.md new file mode 100644 index 00000000..de01d6c5 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/loading-snapshot.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 35 +title: Bir anlık görüntüden yükleme +sidebar_label: Bir anlık görüntüden yükleme +--- + +# Tam düğüm + +[başlangıç kılavuzunda](./getting-started) açıklandığı gibi, bir tam düğümün ilk çalıştırılması, diğer ağ düğümleriyle tam senkronize olana kadar birkaç saat alır veya farklı bir ifadeyle, tüm blok zincirinin bir kopyasını indirene kadar. + +Bu ilk senkronizasyon sürecini hızlandırmak için anlık görüntüler, [özel Alephium Arşivleri deposunda](https://archives.alephium.org) mevcuttur. Bir otomatik süreç, hem [test ağı](https://archives.alephium.org/#testnet/) hem de [ana ağ](https://archives.alephium.org/#mainnet/) için anlık görüntüler yükler. + +## Bir anlık görüntü indirme + +Tam düğümü ilk çalıştırmaya hazırlarken, başlatmadan hemen önce en son anlık görüntüyü indirebilir ve (bu bir `tar` dosyasıdır) doğru konuma çıkarabilirsiniz. Aşağıdaki kod parçacığı bunu hatta disk alanını ikiye katlamadan yapar, yani indirme ve anlık görüntünün çıkarılması için gerekli olan disk alanı ihtiyacını karşılar: + +```shell +ALEPHIUM_HOME=~/.alephium +ALEPHIUM_NETWORK=mainnet +curl -L "$(curl -sL https://archives.alephium.org/archives/$ALEPHIUM_NETWORK/full-node-data/_latest.txt)" | tar xf - -C "$ALEPHIUM_HOME/" +``` + +Özel bir `_latest.txt` dosyası, her zaman en son kullanılabilir anlık görüntüye işaret edecek şekilde güncellenir. + +## Hazır bir betik kullanma + +Yukarıda verilen komut işe yarasa da, tüm kenar durumları kapsamaz ve tam düğüm veritabanını tutarsız bir duruma getirebilecek hatalı durumları ele almaz. Neyse ki, bu görevi yapmak için hazır kullanıma hazır bir betik size yardımcı olur. + +```shell +ALEPHIUM_HOME=/tmp +ALEPHIUM_NETWORK=mainnet +curl -L https://github.com/touilleio/alephium-standalone/raw/main/snapshot-loader.sh | env ALEPHIUM_HOME=${ALEPHIUM_HOME} ALEPHIUM_NETWORK=${ALEPHIUM_NETWORK} sh +``` + +## Bağımsız bir konteyner başlatma + +Ve son olarak, bu kurulumu hızlı bir şekilde denemek istiyorsanız, resmi `alephium/alephium` görüntüsünü genişleten bir OCI görüntüsü, yukarıdaki adımları otomatik olarak yapmaktadır: `touilleio/alephium-standalone`. [Kaynak kodu](https://github.com/touilleio/alephium-standalone) +kullanımı hakkında gerekli tüm ayrıntıları sağlar. + +Bağımsız konteynerı çalıştırmak için hızlı bir referans komutu aşağıda verilmiştir: + +``` +ALEPHIUM_HOME=/tmp +ALEPHIUM_NETWORK=mainnet +docker run -p 39973:39973 -p 127.0.0.1:12973:12973 \ + -v ${ALEPHIUM_HOME}:/alephium-home/.alephium \ + -e ALEPHIUM_NETWORK=${ALEPHIUM_NETWORK} touilleio/alephium-standalone:latest +``` + +# Explorer veritabanı + +[Alephium Arşivleri deposu](https://archives.alephium.org) ayrıca keşif veritabanı anlık görüntüleri ile doldurulmuştur. Anlık görüntü, postgresql veritabanındaki keşif arka ucu (backend) için ilk çalıştırıldığında aşağıdaki komut kullanılarak yüklenebilir: + +```shell +ALEPHIUM_NETWORK=mainnet +curl -L $(curl -L -s https://archives.alephium.org/archives/${ALEPHIUM_NETWORK}/explorer-db/_latest.txt) | gunzip -c | psql -U $pg_user -d $database +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flashing.jpeg b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flashing.jpeg new file mode 100644 index 00000000..56b899da Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flashing.jpeg differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux1.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux1.png new file mode 100644 index 00000000..c72cb666 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux2.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux2.png new file mode 100644 index 00000000..1764f927 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux3.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux3.png new file mode 100644 index 00000000..66bc3b55 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux4.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux4.png new file mode 100644 index 00000000..ffd5d145 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/flux4.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth0.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth0.png new file mode 100644 index 00000000..b707550e Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth0.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth1.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth1.png new file mode 100644 index 00000000..67a4a834 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-api-key-auth1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-synced-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-synced-query.png new file mode 100644 index 00000000..18b9a040 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/full-node-synced-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/pies.jpeg b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/pies.jpeg new file mode 100644 index 00000000..5a4d9a5a Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/media/pies.jpeg differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/raspberry-pi.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/raspberry-pi.md new file mode 100644 index 00000000..ea33b045 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/raspberry-pi.md @@ -0,0 +1,157 @@ +--- +sidebar_position: 30 +title: Raspberry Pi'de Tam Düğüm +sidebar_label: Raspberry Pi'de Tam Düğüm +--- + +Bu kılavuzda öğreneceğiz: + +- Bir Raspberry Pi 4'ü nasıl kurulur +- Docker'laştırılmış bir Alephium tam düğümü örneğini nasıl çalıştıracağımız + +## Bir Raspberry Pi 4 kurulumu + +Bu ilk bölüm, bir Raspberry Pi 4'e Ubuntu 20.04 sunucusunu nasıl kuracağımın kişisel yolunu detaylandıracaktır. +Bunun için bir Raspberry Pi 4 (açıkçası), bir SD Kart (en az 8 GB) ve bir SD Kart okuyucusuna ihtiyacınız olacak. +SD Kartı flaşlamak için macOS'tan kabuk komutları kullanılacak, ancak Windows'ta karşılığını bulacaksınız. + +![Zor işe hazırlık yapılıyor](media/flashing.jpeg) + +İlk olarak, Ubuntu'nun kurulumunu yapılandıracağız. Bunun için Ubuntu 20.04 ve üstüne gömülü olan cloud-init kullanılacaktır. +Bu yapılandırma, varsayılan `ubuntu` kullanıcısından farklı bir kullanıcı oluşturur ve birkaç paket kurar. + +### Önyüklemeyi yapılandırın + +Aşağıdaki parçacığı `user-data.yml` adında bir dosyaya koyun ve kaydedin. Bu, `alephium` adında bir kullanıcı oluşturur ve `installfest2021` şifresini kurar. +Bu dosyanın içeriğini özelleştirebilirsiniz, eğer ne yaptığınızı biliyorsanız. + +```yaml +#cloud-config + +hostname: alephium + +ssh_pwauth: true + +users: + - name: alephium + gecos: "alephium" + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + groups: adm,sudo,docker + plain_text_passwd: installfest2021 + lock_passwd: false + chpasswd: { expire: false } +# ssh_authorized_keys: # Optionally ad ssh key here, if you don't want the password. +# - ssh-ed25519 xxxxxxxxxxxxxxxxxx + +packages: + - apt-transport-https + - ca-certificates + - curl + - gnupg-agent + - software-properties-common + - git + - openssh-server + - docker.io + - docker-compose + +runcmd: + - systemctl start docker + - systemctl enable docker + +package_update: true +package_upgrade: true + +power_state: + mode: reboot +``` + +### SD Kartı flaşla + +Şimdi, bu dosya `user-data.yml` ile birlikte SD Kartı flaşlayacağız. + +Bunun için [flash](https://github.com/hypriot/flash/) aracını kullanıyorum, çünkü çoğu zor işi sizin için yapıyor. + +```shell +curl -LO https://github.com/hypriot/flash/releases/download/2.7.2/flash +chmod +x flash + +./flash --userdata user-data.yml https://cdimage.ubuntu.com/releases/20.04/release/ubuntu-20.04.4-preinstalled-server-arm64+raspi.img.xz +``` + +Yukarıdaki komut, `/dev/disk2`'nin SD Kart olduğunu ve sabit diskiniz olmadığını onaylamanızı ve bir SD Kartı flaşlamanın yönetici ayrıcalıkları gerektirdiği için şifrenizi isteyecektir. + +Yukarıdaki komut tamamlandığında, SD Kartı Raspberry Pi'nize takabilir ve açabilirsiniz. +İlk başlatma tamamlanana kadar birkaç dakika sürer ve Raspberry Pi'niz kullanıma hazır hale gelir. +Düğüm hazır olduğunda, kullanıcı adı `alephium` ve şifre olarak `installfest2021` kullanarak ona ssh ile bağlanabilirsiniz! + +```shell +ssh alephium@alephium +``` + +Eğer `alephium` ana bilgisayarı bilinmiyorsa, düğümün IP adresini bulmanız gerekecek, muhtemelen router yapılandırma uygulaması/sayfasında. + +Ve işte bu, Raspberry Pi'niz Ubuntu 20.04 ile çalışıyor ve Docker'a hazır durumda, ve Alephium tam düğümünü çalıştırmaya hazır. + +🚀 + +![Raspberry pi 4](media/pies.jpeg) + +## Docker'laştırılmış Alephium tam düğümü örneğini çalıştırma + +Bu ikinci bölüm, bir Raspberry Pi ile ilgili değil, ancak herhangi bir sunucu/vm/bilgisayar için genelleştirilebilir ve SSH erişimine sahip olabilir. +En temel bir Alephium tam düğümünü docker kullanarak çalıştıracağız ve sonra kurulumumuzu daha kullanışlı hale getirmek için ilerleyeceğiz. + +Bu bölümün önkoşulu, SSH erişimine sahip bir sunucunun olması gerektiğidir ve daha kesin olarak Ubuntu 20.04 veya daha yeni bir sürümünün çalıştırılması gerekmektedir. +Önceki bölüm, bunu bir Raspberry Pi ile nasıl yapacağınızı açıklar, ancak AWS EC2 örneği de işi yapacaktır. + +### Sunucuya bağlanın + +Bu adım kolay olmalı, `ssh` komutunu kullanarak. Çalıştırın: + +```shell +ssh alephium@alephium +``` + +### Docker ve docker-compose kurulumu + +Docker ve docker-compose'u hızlı bir şekilde kurarak, Alephium tam düğümünü çalıştırmaya hazır olacağız. + +SSH ile bağlandıktan sonra, aşağıdaki komutları çalıştırın: + +```shell +sudo apt install -y docker.io docker-compose +``` + +Great, docker should be running: + +```shell +docker ps +``` + +### Tam düğümü çalıştırma + +Şimdi tam düğümü çalıştırabiliriz, tek bir satırda aşağıdaki gibi: + +```shell +docker run -it --rm -p 12973:12973 --name alephium alephium/alephium:latest +``` + +### Docker-compose + +Docker-compose, özellikle komut hacmi, daha fazla bağlantı noktası, ortam değişkenleri, vb. içeren komutlara sahipse, bir konteyner çalıştırmanın biraz daha uygun bir yoludur. + +Bu nedenle, aşağıda bir `docker-compose.yml` dosyasına koyabileceğiniz hizmet tanımı verilmiştir, ve bu tanımdan tam düğümünüzü başlatmak için `docker-compose up -d` komutunu çağırabilirsiniz. + +```yaml +version: "3" +services: + broker: + image: "alephium/alephium:latest" + restart: unless-stopped + ports: + - 9973:9973/tcp + - 9973:9973/udp + - 10973:10973/tcp + - 12973:12973/tcp +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/full-node/run-on-flux.md b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/run-on-flux.md new file mode 100644 index 00000000..1e551cee --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/full-node/run-on-flux.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 30 +title: Flux'ta Tam Düğüm +sidebar_label: Flux'ta Tam Düğüm +--- + +Bu kılavuzda, [Flux](https://runonflux.io/) üzerinde bir tam düğümü nasıl çalıştıracağımızı ve API'yi nasıl açacağımızı öğreneceğiz. + +Flux ile başlamanın nasıl yapılacağı bu sayfanın kapsamı dışındadır, ancak ihtiyacınız olursa Flux'un resmi belgelerine başvurabilirsiniz. Burada, bir Uygulama başlatmak için yeterli Flux'a sahip olduğunuzu varsayacağız. + +## Pazar Yerinden Tam Düğüm Uygulamasını Alın + +[https://home.runonflux.io/apps/marketplace?q=alephium](https://home.runonflux.io/apps/marketplace?q=alephium) +*AlephiumNode* adındaki Uygulamayı seçin. + +## API'yi Açma + +Varsayılan olarak, Tam Düğüm Uygulamasının yalnızca P2P bağlantı noktası (Flux düğümlerinde 39973) açıktır. API bağlantı noktasını açmak istiyorsanız, Flux Uygulamanızın belirtimini aşağıdaki gibi güncellemeniz gerekir. API'nin açılması, ne yaptığınızı biliyorsanız bir güvenlik endişesi olabilir. + +1. Uygulamanızı yönetin + +![Uygulamanızı yönetin](media/flux1.png) + +2. Belirtimleri güncelleyin + +![Belirtimleri güncelle](media/flux2.png) + +3. Bağlantıyı yapılandırın ve konteyner bağlantı noktası 12973'ü açın. Aşağıdaki ekran görüntüsünde, bağlantı noktası 42973 belirtilmiş ve API'nin açılacağı belirtilmiştir. Başka herhangi bir geçerli bağlantı noktası da çalışacaktır. Belirtim güncellemesini ağ üzerinde yayınlamak için imzalama işlemini yapın ve takip edin. + +![Bağlantıyı yapılandırın](media/flux3.png) + +4. Belirtim güncellemesini dikkate almak için uygulamanızı hafifçe yeniden dağıtın. + +![Uygulamayı yeniden hafifçe dağıtın](media/flux4.png) + +Bu kadar, API'niz artık Otomatik uç nokta aracılığıyla `_42973` (veya belirlediğiniz farklı bağlantı noktası) içerir şekilde açılmıştır. API uç noktasını `/infos/version` gibi kolayca doğrulayabilirsiniz, yani `https://alephiumnode1708292985626_42973.app.runonflux.io/infos/version` gibi bir şey. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/glossary.md b/i18n/tr/docusaurus-plugin-content-docs/current/glossary.md new file mode 100644 index 00000000..c772c7f7 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/glossary.md @@ -0,0 +1,222 @@ +--- +sidebar_position: 30 +sidebar_label: Sözlük +slug: /glossary +title: Sözlük +--- + +Bu, özellikle Alephium'u ve genel olarak Blok Zincirlerini anlamak için kullanışlı kavramların bir listesidir. + +## A + +### Alephium + +Alephium, PoW ve UTXO kavramlarını ölçeklendirme ve iyileştirme hedefiyle geliştirilen ilk operasyonel sharded L1 blok zinciridir. Merkeziyetsizlik, öz egemenlik ve güvenlik, yüksek performans, erişilebilirlik ve enerji verimliliği ile birleşir ve DeFi ve akıllı sözleşme uygulamaları için optimize edilmiş bir geliştirici dostu ağda buluşur. + +Teknik tasarımından arayüzlerine kadar Alephium, günümüzde merkezi olmayan uygulamaların karşılaştığı erişilebilirlik, ölçeklenebilirlik ve güvenlik sorunlarını ele almak üzere oluşturulmuştur. + +### Akıllı Sözleşme + +[Akıllı Sözleşme (AS)](https://tr.wikipedia.org/wiki/Ak%C4%B1ll%C4%B1_s%C3%B6zle%C5%9Fme), belirli bir kural setine göre yürütülebilen işlemlerin üçüncü bir tarafa, merkezi bir otoriteye veya harici mekanizmalara güvenmeye gerek kalmadan gerçekleştirilmesini sağlayan bir bilgisayar programıdır. Blok zincirinde, akıllı bir sözleşme, yerel Programlama Dili kullanılarak yazılır veya ona derlenir (çevrilir) ve genellikle blok zincirinin [Sanal Makinesi](#sanal-makine) üzerinde çalışır. + +Bir blok zincirindeki AS'ler, keyfi [durumu](#durum) saklayabilir ve keyfi işlemleri gerçekleştirebilir. Son kullanıcılar, aynı zamanda işlemlerle etkileşime girerken de işlemleri kullanır. Ve AS işlemleri ayrıca diğer AS'leri çağırabilir. Bu işlemler, durumu değiştirebilir ve jetonları bir akıllı sözleşmeden diğerine veya bir hesaptan diğerine gönderebilir. + +Alephium'da akıllı sözleşmeler, Ralph dili kullanılarak yazılır ve Alphred Sanal Makinesinde çalışır. + +## B + +### Blake 3 Algoritması (Hash Fonksiyonu) +[Blake 3 Algoritması](https://github.com/BLAKE3-team/BLAKE3), bir kriptografik hash fonksiyonudur. Bir hash fonksiyonu, herhangi bir uzunluktaki bir giriş dizisini alıp sabit uzunlukta bir çıkış dizesine dönüştüren matematiksel bir fonksiyondur. Sabit uzunluklu çıkış, hash değeri olarak bilinir. + +Hash fonksiyonlarının bir blok zincirinde birçok kullanım alanı vardır: [Merkle Ağacı](#merkle-ağacı), Proof of Work Consensus, Dijital İmzalar ve Blok Zinciri kendisi (çünkü bir blok zincirindeki her blok başlığı önceki bloğun başlığının hash'ini içerir). Örneğin, Bitcoin, SHA-256'yı kullanır. + +Alephium, madencilik için kriptografik hash fonksiyonu olarak Blake 3 Algoritmasını kullanır. + +### Blok Ödülü + +Blok ödülü, madencilerin ağı güvence altına almaları için bir ekonomik teşviktir. + +Blok zincirinin yerel jetonunda ödenir. Ağ küçük ve yeni olduğunda genellikle daha yüksektir ve zamanla olgunlaştıkça azalır. + +[Blok Ödülü GitHub Uygulaması](https://github.com/alephium/alephium/blob/master/protocol/src/main/scala/org/alephium/protocol/mining/Emission.scala) + +### Blok Boyutu + +Blok boyutu, her bloğun işleyebileceği veri limitidir. + +Farklı şekillerde ölçülebilir. Bazı blok zincirlerinde, bloğun gerçek veri taşıma kapasitesi olarak ifade edilir (örneğin, Zcash'te blok boyutu 2MB'dir). Diğer blok zincirlerinde, blok boyutu ağdan tüketebileceği hesaplama işlem sınırıyla ilişkilidir (genellikle gaz olarak ifade edilir). Ethereum'un ve Alephium'un blok boyutları bu şekilde ölçülür. + +### Blok Zamanı + +Blok Zamanı, işlemlerin bir blok içinde hesaplanması ve ağa gönderilmesi için gereken süredir. + +İşlemler bir blok içine toplanır ve madenciler (veya PoS blok zincirlerinde doğrulayıcılar) tarafından kontrol edilir. Genellikle, Blok Zamanı, ağın hesaplama kapasitesini (hashrate) belirlemek için ayarlanırken madencilik zorluğundan etkilenir. + +Alephium ağı her blokta zorluk ayarlaması yapar ve beklenen blok zamanı **64 saniyedir**. + +Ek kaynaklar: [Blok Zamanı ve Blok Boyutu Makalesi](https://medium.com/@alephium/block-time-and-block-size-16e37292444f) + +## C + +## Ç + +### Çoklu İmza + +Çoklu İmzalı veya Çok İmzalı, bir işlemin ağa gönderilmesi için birden fazla özel anahtarın imzalamasını isteme sürecidir. Bu, ek bir güvenlik adımı olarak kullanılır. + +Genellikle, çok imzalı kurulum, belirli bir işlemin onaylanması ve gönderilmesi için bir minimal kuartum gerektirir. Örneğin, 9 potansiyel eş imzacı arasından 5 imzacı gerektiren bir çoklu imza 5'ten 9'a kadar. + +Alephium'un [Tam Düğüm Cüzdanı](/wallet/node-wallet-guide), çoklu imza adreslerini destekler + +## D + +### Daha Az İş Kanıtı (veya PoLW) + +Bitcoin için Proof-of-Work veya Ethereum için Proof-of-Stake'e benzer şekilde, PoLW, Alephium'un konsensüs algoritmasıdır. Ağın enerji tüketimini güvenliği ve merkeziyetsizliği olumsuz etkilemeden optimize eder. Toplam birikmiş hashrate 1 Eh/s'yi geçtiğinde etkinleştirilir. + +Bu noktadan sonra, yeni bir blok çıkartmanın maliyetini kısmen içselleştirir, blok doğrulama sürecine bir sikke yakma mekanizması ekleyerek, genel olarak gerekli işlemci gücünün bir üst sınırını teşvik eder. Aynı ağ koşulları verildiğinde, Alephium'un, Bitcoin madenciliğinin tükettiğinin yalnızca ⅛'ini kullanması beklenir. + +Ek kaynaklar: [TECH TALK #1 — The Ultimate guide to Proof-of-Less-Work, the universe and everything…](https://medium.com/@alephium/tech-talk-1-the-ultimate-guide-to-proof-of-less-work-the-universe-and-everything-ba70644ab301) + +### Durum + +Durum, bir makinenin birden fazla duruma sahip olabileceği, ancak herhangi bir zamanda yalnızca bir durumda olabileceği [bilgisayar bilimi kavramıdır.](https://en.wikipedia.org/wiki/State_(computer_science)) Bir blok zinciri bir durum makinesi olarak kabul edilir. Durum, sistemin mevcut durumunu açıklar ve işlemler (girişler ve çıkışlar) durum geçişlerini tetikler. İşlemler süreci daha verimli hale getirmek için bloklara toplandığında, bir bloğun eklenmesi asıl blok zincir durumunu değiştirir. + +Alephium, diğer UTXO muhasebe modellerinden faydalanmasına izin veren tam özellikli bir durum kullanır. + +## E + +## F + +## G + +### Gaz Fiyatı + +Bu, gazın parasal değeridir. Gaz, bir blok zincirinde bir komutun yürütülmesi için gereken hesaplama çabası olarak tanımlanır. Gaz fiyatı, madencinin yaptığı iş için ödenen parasal karşılıktır. + +Alephium'daki mevcut en düşük gaz fiyatı 10^-7 ALPH veya 0.0000001 ALPH'tır. + +### Genesis Blok + +Genesis Blok, bir blok zincirinin madenciliğe başladığı ilk bloğun adıdır. Bloklar bir üstüne diğerine yerleştirildikçe, Genesis Blok, temel veya başlangıçtır. + +Bazen Blok 0 veya Blok 1 olarak da adlandırılır. Bir blok bir blok zincirine yayınlandığında, önceki bloğa referans verir. Referans alınacak önceki blok olmadığı için, genesis blokları genellikle yazılımın içine sert kodlanmıştır. + +Alephium'un genesis bloğu 8 Kasım 2021'de madencilik yapıldı + +## H + +### Harcanan Gaz Miktarı + +Harcanan Gaz, madencinin işlemleri yürütmek için kullandığı hesaplamaların miktarıdır. İşlemin daha fazla işlevi varsa, daha karmaşık bir yürütme ve daha fazla gaz harcanır. + +Şu anda, ve bir anti-spam önlemi olarak, Alephium'da herhangi bir işlem için minimum 20.000 gaz değeri bulunur, yani işlem ücretiniz en az 0,002 ALPH tutarında olur. + +Ağ olgunlaştıkça, bu gevşetilecek ve işlem ücretlerinin fiyatı piyasa tarafından belirlenecektir. + +## I + +## İ + +## J + +## K + +### Köprü + +Bir köprü, farklı blok zincirlerini birbirine bağlayarak etkileşimleri mümkün kılan bir protokoldür. Her blok zinciri genellikle kendi teknolojik özelliklerine sahiptir ve diğer protokollarla iletişim kurma doğal bir yolunun yoktur. Bu nedenle, köprü, bu farklı ekosistemleri bağlayan bir dizi akıllı sözleşmeden oluşur. + +Bir köprü daha özelleştirilebilir olabilir, yalnızca bir tür etkileşimi (örneğin, jeton transferleri gibi) izin verir veya daha genel amaçlı olabilir, köprülenmiş blok zincirleri arasında her türlü veri transferine izin verir. + +## L + +## M + +### Madencilik Ödülü + +![](media/Block%20reward.png) + +Alephium'un yeni oluşturulan bloklar için ödülü aynı zamanda Madencilik Ödülü (MR) olarak adlandırılır. Dağıtımdan sonra, [blok ödülleri](#blok-ödülü) 500 dakika boyunca kilitlenir. + +Madencilik ödülü, hashrate ve zaman damgasına dayalı iki eğriyle sınırlanmıştır. Belli bir zamanda ve belirli bir hashrate için blok başına ödül, zaman tabanlı ödül ve hashrate tabanlı ödül arasındaki minimumdur. + +Blok Ödülü = min (zaman tabanlı ödül, hashrate tabanlı ödül). + +Ek kaynaklar: [Alephium Blok Ödülleri](https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33) + +### Maksimum Çıkartılabilir Değer (MEV) + +Madenci veya [Maksimum Çıkartılabilir Değer (MEV)](https://ethereum.org/en/developers/docs/mev/), bir blok madenciliğinden standart blok ödülü ve gaz ücretleri fazlasıyla elde edilen değere atıfta bulunur. + +Bu fark, "aramacılar" olarak adlandırılan aktörler tarafından sunulur ve bir blok madenciliği için bir sonraki üretilen bloğun bir parçası olmak için seçilen bir işlemin bilgilerini değiştirerek, dahil ederek veya kaldırarak elde edilir. Gönderen veya alıcı adresi gibi belirli bir işlemin bilgilerini değiştirerek karlılık fırsatlarını arayan. İşlemlerinin bir sonraki bloğun bir parçası olması için madenci tarafından seçilme olasılığını artırmak için ortalama değerin çok üzerinde bir gaz ücreti ödemeye isteklidirler ve kârın bir kısmını "paylaşırlar". + +### Merkle Ağacı + +Merkle ağacı, bir blok zincirinde verileri daha verimli ve güvenli bir şekilde sıkıştırmak için kullanılan bir yapıdır. +Blok zinciri işlemleri bloklarda paketlenir. Her bloğun bir başlığı vardır ve bu başlığın bir hash'i vardır. Bu hash, Merkle Ağacında saklanır. Merkle Ağacından gelen hash, bir veri kümesinin blok içindeki içerik olmadan orijinal işlem kümesiyle aynı olduğunu doğrulamak için kullanılır. Görselleştirildiğinde, bu yapı bir ağaç gibi görünür ve "ikili hash ağacı" olarak da adlandırılabilir. + +Örneğin, Alephium, her grup başına üç Merkle ağacı kullanır ve bu ağaçlar varlık-UTXO'ları, sözleşme mantığı ve sözleşme durumu saklar. + +## N + +### Nihaiye Zamanı + +Nihaiye Zamanı, bir işlemin ağa gönderildiği ve nihai (ve değiştirilemez) olarak kabul edildiği zamana kadar geçen süredir. İki ana nihaiyet kategorisi vardır: olasılıksal nihaiyet ve kesin nihaiyet. + +Çoğu blok zincir sistemi, olasılıksal işlem nihaiyeti sunar - bu, bir işlemin geçerli ve geri dönülemez olduğu olasılığının, zincire daha fazla blok eklenmesiyle arttığı anlamına gelir, ancak kesinlikle kesin değildir. Ağ, işlemin yeterince zaman ve blok ekleyerek kesin olduğu konusunda uzlaşır. + +Alephium'un blok zamanı ve blok boyutu, ağın işlem kabul hızını ve işlem nihaiyetini belirler. Alephium'da işlem nihaiyeti, işlemin bir blok zincirindeki kaç blok sürdüğüne bağlıdır. + +## O + +## Ö + +## P + +### Parçalama + +Parçalama, büyük veritabanlarını daha küçük, daha hızlı ve daha kolay yönetilen bölümlere ayıran bir veritabanı yönetimi stratejisidir. + +Bu daha küçük parçalar, "parçalar" olarak adlandırılır, "bir bütünün küçük bir parçası" anlamına gelir. Parçalama, bir veritabanının çalıştırılması için gereken gücün bir tek bir bilgisayarın işleme kapasitesini aştığı durumlarda kullanılır. Parçalama, blok zincirinin boyutu, sanal makinenin işlemci kapasitesini ve ağın işlem kapasitesini aştığında gereklidir. Parçalama, ana blok zincirini ayrı parçalara böler ve düğümler yalnızca bir alt kümenin işlemlerini doğrular, paralel işlem doğrulamasına izin verir. Bu, ağın verimliliğini artırır. + +Alephium'un blok zinciri parçalıdır ve Blok Akışı algoritması bunu yönetir. Şu anda, her biri dört parçadan oluşan dört grup bulunmaktadır. + +## R + +## S + +### Sanal Makine + +Bir sanal makine, bir bilgisayarın yazılımını çalıştırmak için tasarlanmış bir yazılım uygulamasıdır. Fiziksel bir bilgisayarın donanımını simüle eder ve işletim sistemi ve diğer yazılım uygulamalarını çalıştırmak için bir ortam sağlar. Sanal makineler, fiziksel makineye benzer bir şekilde çalışır ve kendi işletim sistemleri ve uygulamaları vardır. + +Blok zincirlerinde, bir sanal makine, akıllı sözleşmeler gibi kod parçalarını çalıştırmak için kullanılır. Blok zinciri üzerinde çalışan her düğüm, bir sanal makineyi çalıştırır ve akıllı sözleşmeleri bu sanal makine üzerinde çalıştırır. + +Alephium'un Sanal Makinesi, Alphred olarak adlandırılır ve Ralph diliyle yazılan akıllı sözleşmeleri çalıştırır. + +### Sert Çatal + +Bir sert çatal, bir ağın protokolünde yapılan bir ana güncelleme, bu güncelleme ile önceki sürümü çalıştıran düğümler veya kullanıcılar artık ağda işlem gönderemez veya doğrulayamaz hale gelir. + +Güncelleme isteğe bağlı olduğundan, bazen düğümlerin veya kullanıcıların bir kısmı bunu yapmamaya karar verir ve bu da o noktadan itibaren farklı bir blok zinciri sürümünün oluşturulmasına neden olur. Örneğin, bu Ethereum ve Ethereum Classic'te meydana geldi. + +## Ş + +## T + +## U + +### UTXO + +UTXO, "kullanılmamış işlem çıkışı" anlamına gelir. Bir UTXO, bir işlemin bir girdisi olarak harcandığında kullanılır ve bir çıktı olarak bir işleme dahil edildiğinde kullanılmış olarak işaretlenir. + +Bitcoin ve diğer birçok kripto para birimi, UTXO tabanlı bir muhasebe modelini kullanır. Bu, bir hesabın dengesini izlemek yerine, her işlemin, tıpkı bir nakit paranın fiziksel olarak parçalanabilir olması gibi, bir girdi ve bir çıktı olarak kaydedilmesi anlamına gelir. + +Alephium'un ölçeklenebilirlik ve hızını artırmak için bir UTXO muhasebesi kullanır. + +## Ü + +## V + +## Y + +## Z diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/integration/exchange.md b/i18n/tr/docusaurus-plugin-content-docs/current/integration/exchange.md new file mode 100644 index 00000000..ae756977 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/integration/exchange.md @@ -0,0 +1,348 @@ +--- +sidebar_position: 40 +title: Borsa +sidebar_label: Borsa +--- + +Alephium'in SDK'sı ile entegrasyon prototipi: [https://github.com/alephium/alephium-web3/blob/master/test/exchange.test.ts](https://github.com/alephium/alephium-web3/blob/master/test/exchange.test.ts) + +Bu kılavuz, bir kripto para birimi borsasının Alephium'u entegre etmek için gereken temel API'ler ve bilgileri açıklar. + +## Başlarken + +### Yerel geliştirme ağı + +Alephium'u entegre etmek için bir borsanın bir tam düğüm çalıştırması gerekir. Ayrıca, hata ayıklama ve ek dizinleme için explorer-backend de çalıştırılabilir. + +Explorer desteği ile yerel bir geliştirme ağı oluşturmak için, [alephium-stack](https://github.com/alephium/alephium-stack#devnet) deposundaki talimatları izleyin. Başlatıldıktan sonra, Swagger UI, tam düğüm ve explorer backend için API arabirimine erişilebilir. + +* Tam düğüm Swagger UI'sı: [http://127.0.0.1:22973/docs](http://127.0.0.1:22973/docs) +* Explorer backend Swagger UI'sı: [http://127.0.0.1:9090/docs](http://127.0.0.1:9090/docs) +* Explorer ön ucu: [http://localhost:23000](http://localhost:23000) + +### API'ler + +Kılavuzu kısa tutmak için, ilgili API sorguları, Swagger UI ekran görüntüleri yerine belgelerde sağlanacaktır. + +[web3 SDK](https://github.com/alephium/alephium-web3#packages), hem [tam düğüm](https://github.com/alephium/alephium-web3/blob/master/packages/web3/src/api/api-alephium.ts) için hem de [explorer backend](https://github.com/alephium/alephium-web3/blob/master/packages/web3/src/api/api-explorer.ts) için oluşturulmuş TypeScript API'lerini içerir. + +### Test cüzdanı + +:::caution +Düğüm cüzdanı, tam düğümün API'lerini test etmek içindir. Yatırım yapmak için sıcak cüzdanlar için test cüzdanları oluşturmak için [cüzdan oluşturma](exchange#wallet-generation) kısmına bakın. +::: + +Aşağıdaki API'yi çalıştırarak test cüzdanını kurtaralım. Test cüzdanı için adres `1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH` adresi için 1 milyon ALPH'e sahiptir. + +```shell +curl -X 'PUT' \ + 'http://127.0.0.1:22973/wallets' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "password": "test", + "mnemonic": "vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge enroll refuse another lava", + "walletName": "test" +}' + +# Response +# { +# "walletName": "test" +# } +``` + +Adresin genel anahtarını sorgulayarak başlayalım: + +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/wallets/test/addresses/1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH' \ + -H 'accept: application/json' + +# Response +# { +# "address": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH", +# "publicKey": "0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0", +# "group": 0, +# "path": "m/44'/1234'/0'/0/0" +# } +``` + +## İşlem API'leri + +### Bir işlem oluşturma + +`1.23 ALPH`'yi `1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3` adresine göndermek için bir işlem oluşturalım. + +```shell +# `fromPublicKey` is the public key of the wallet address + +curl -X 'POST' \ + 'http://127.0.0.1:22973/transactions/build' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "fromPublicKey": "0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0", + "destinations": [ + { + "address": "1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3", + "attoAlphAmount": "1230000000000000000" + } + ] +}' + +# Response: +# { +# "unsignedTx": "00040080004e20c1174876e8000137a444479fa782e8b88d4f95e28b3b2417e5bc30d33a5ae8486d4a8885b82b224259c1e6000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b002c41111d67bb1bb000000a3cd757be03c7dac8d48bf79e2a7d6e735e018a9c054b99138c7b29738c437ec00000000000000000000c6d3c20ab5db74a5b8000000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000", +# "gasAmount": 20000, +# "gasPrice": "100000000000", +# "txId": "a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617", +# "fromGroup": 0, +# "toGroup": 1 +# } +``` + +### Bir işlemi imzalama + +İşlem kimliğini imzalayalım: + +```shell +curl -X 'POST' \ + 'http://127.0.0.1:22973/wallets/test/sign' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "data": "a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617" +}' + +# Response +# { +# "signature": "78a607ec26165b5a63d7e30a0c85657e8a0fe3b7efccdba78166e51b52c32c9020f921e0a29b6a436ec330c3b3eb2222ee851e718e3504b1a70d73ba45cd503c" +# } +``` + +### Bir işlem gönderme + +İşlemi ağa gönderelim: + +```shell +# `unsignedTx` is from the response of transaction building +# `signature` is from the response of transaction signing + +curl -X 'POST' \ + 'http://127.0.0.1:22973/transactions/submit' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "unsignedTx": "00040080004e20c1174876e8000137a444479fa782e8b88d4f95e28b3b2417e5bc30d33a5ae8486d4a8885b82b224259c1e6000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b002c41111d67bb1bb000000a3cd757be03c7dac8d48bf79e2a7d6e735e018a9c054b99138c7b29738c437ec00000000000000000000c6d3c20ab5db74a5b8000000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000", + "signature": "78a607ec26165b5a63d7e30a0c85657e8a0fe3b7efccdba78166e51b52c32c9020f921e0a29b6a436ec330c3b3eb2222ee851e718e3504b1a70d73ba45cd503c" +}' + +# Response +# { +# "txId": "a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617", +# "fromGroup": 0, +# "toGroup": 1 +# } +``` + +## Blok API'leri + +### İşlem Kimliği ile Blok Anahtarı Al + +Onaylanmış bir işlemin blok anahtarını almak için, tam düğüm API'sini kullanabilirsiniz: + +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/transactions/status?txId=a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617' \ + -H 'accept: application/json' + +# Response +# { +# "type": "Confirmed", +# "blockHash": "1d616d33a7aadc3cf49f5db1cc484b22a642140673f66020c13dc7648b9382d1", +# "txIndex": 0, +# "chainConfirmations": 1, +# "fromGroupConfirmations": 1, +# "toGroupConfirmations": 0 +# } +``` + +### Blok anahtarı ile blok al + +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/blockflow/blocks-with-events/ecbc7a3115eb0da1f82902db226b80950e861ef8cbb6623ed02fc42a6eeb69cb' \ + -H 'accept: application/json' + +# Response +# { +# "block": { +# "hash": "ecbc7a3115eb0da1f82902db226b80950e861ef8cbb6623ed02fc42a6eeb69cb", +# "timestamp": 1231006505000, +# "chainFrom": 2, +# "chainTo": 3, +# "height": 0, +# ... +# }, +# "events": [] +# } +``` + +### Bloklar için polling + +Alephium'da, bir dizi zincirde birden fazla zincirin aynı anda farklı yüksekliklerde çalıştığı bir parçalı blok zinciri olduğu için belirli bir zaman aralığı için tüm blokları alabilirsiniz. + +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/blockflow/blocks?fromTs=0&toTs=30' \ + -H 'accept: application/json' + +# Response: there are 16 chains, therefore 16 lists of block hashes +# { +# "blocks": [ +# [], +# ... +# [] +# ] +# } +``` + +Bu uç nokta kullanılarak her zincir için blokları alabilirsiniz: +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/blockflow/chain-info?fromGroup=2&toGroup=3' \ + -H 'accept: application/json' + +# Response +# { +# "currentHeight": 0 +# } + +curl -X 'GET' \ + 'http://127.0.0.1:22973/blockflow/hashes?fromGroup=2&toGroup=3&height=0' \ + -H 'accept: application/json' + +# Response +# { +# "headers": [ +# "ecbc7a3115eb0da1f82902db226b80950e861ef8cbb6623ed02fc42a6eeb69cb" +# ] +# } +``` + +## UTXO Management + +### Neden UTXO yönetimi? + +Uygulamada, bazı madenciler genellikle doğrudan borsa adreslerine madencilik ödülleri gönderirler, bu da borsanın sıcak cüzdanlarında çok sayıda düşük değerli UTXO'ya yol açar. Ancak, her işleme dahil edilebilecek sınırlı sayıda giriş olduğundan, sıcak cüzdan bu küçük UTXO'larla doluysa çekimler başarısız olabilir. + +### Düşük değerli UTXO'ları nasıl birleştirebilirsiniz? + +Bir borsanız zaten uygun bir UTXO yönetim çerçevesine sahipse, işleriniz yolundadır. Ancak, yoksa basit bir çözüm mevcuttur. Belirli bir adresin küçük değerli UTXO'larını birleştirmek için süpürme uç noktasını kullanabilirsiniz. Lütfen bu özelliğin tam düğüm `2.3.0` sürümünden itibaren erişilebilir olduğunu unutmayın. + +```shell +# `maxAttoAlphPerUTXO` refers to the maximum amount of ALPH in the UTXOs to be consolidated. + +curl -X 'POST' \ + 'http://127.0.0.1:22973/transactions/sweep-address/build' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "fromPublicKey": "0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0", + "toAddress": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH", + "maxAttoAlphPerUTXO": "100 ALPH" +}' +``` + +#### Belirlenen UTXO'larla nasıl çalışılır? + +İşlemleri daha verimli bir şekilde oluşturmak için, bir borsanın sıcak cüzdanlarının UTXO setini saklaması ve ardından API aracılığıyla belirli UTXO'ları sağlaması önerilir. + +```shell +curl -X 'POST' \ + 'http://127.0.0.1:22973/transactions/build' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "fromPublicKey": "0381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b0", + "destinations": [ + { + "address": "1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3", + "attoAlphAmount": "230000000000000000" + } + ] + "utxos": [ + { + "hint": 714242201, + "key": "3bfdeea82a5702cdd98426546d9eeecd744cc540aaffc5ec8ea998dc105da46f" + } + ] +}' +``` + +UTXO için `ipucu` ve `anahtar`'ı, oluşturduğumuz ilk işlemin ilk çıktısından alınır. `anahtar` benzersizdir ve UTXO'ları dizinlemek için kullanılabilir. + +```shell +curl -X 'GET' \ + 'http://127.0.0.1:22973/transactions/details/a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617' \ + -H 'accept: application/json' + +# Response +# { +# "unsigned": { +# "txId": "a6c14ad03597ce96ebf78b336aded654395f38e0274c810183c4847d9af3d617", +# ... +# "fixedOutputs": [ +# { +# "hint": 714242201, +# "key": "3bfdeea82a5702cdd98426546d9eeecd744cc540aaffc5ec8ea998dc105da46f", +# "attoAlphAmount": "1230000000000000000", +# "address": "1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3", +# ... +# }, +# { +# "hint": 933512263, +# "key": "087ee967733900cc7f7beada612ba514dd134ddffc2ad1b6ad8b6998915089c4", +# "attoAlphAmount": "999998768000000000000000", +# "address": "1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH", +# ... +# } +# ] +# }, +# ... +# } +``` + +## Daha Fazla Bilgi + +### Cüzdan oluşturma + +Kullanıcılar için birden fazla adres oluşturmak için [web3 SDK'daki HD-cüzdanı](https://github.com/alephium/alephium-web3/blob/master/packages/web3-wallet/src/hd-wallet.ts#L112-L185) kullanabilirsiniz. + +### Parçalama (Sharding) + +Alephium, bir parçalı blok zinciri olduğundan ve adresleri ana ağda 4 gruba ayrıldığından, bir işlemde aynı gruplara ait birden fazla adrese ALPH gönderebilirsiniz. Tüm hedef adreslerin aynı gruba ait olması gerekir. +Aynı gruplara ait birden fazla adresten ALPH gönderebilirsiniz. Tüm gönderme adreslerinin aynı gruba ait olması gerekir. +Aynı gruplara ait birden fazla adresten diğer bir gruba ait birden fazla adrese ALPH gönderebilirsiniz. Tüm gönderme adreslerinin aynı gruba ait olması gerekir ve tüm hedef adreslerin aynı gruba ait olması gerekir. + +Bir adresin grubunu almak için web3 SDK fonksiyonuna [groupOfAddress(address)](https://github.com/alephium/alephium-web3/blob/master/packages/web3/src/utils/utils.ts#L85-L103) bakabilirsiniz. + +### Gaz hesaplama + +Alephium'un işlem ücretleri, ayrılan gaz miktarı ve gaz fiyatına bağlıdır. Her işleme maksimum 625,000 gaz miktarı atanabilir. +Varsayılan gaz fiyatı, her gaz birimi başına `1e11` attoALPH olarak ayarlanmıştır. Basit bir transfer işlemi yaparken, gaz miktarı aşağıdaki sözde kod kullanılarak hesaplanabilir: + +```Typescript +txInputBaseGas = 2000 +txOutputBaseGas = 4500 +inputGas = txInputBaseGas * tx.inputs.length +outputGas = txOutputBaseGas * tx.outputs.length + +txBaseGas = 1000 +p2pkUnlockGas = 2060 // Currently there is only one signature + +txGas = inputGas + outputGas + txBaseGas + p2pkUnlockGas +minimalGas = 20000 + +gas = max(minimalGas, txGas) +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/integration/mining.md b/i18n/tr/docusaurus-plugin-content-docs/current/integration/mining.md new file mode 100644 index 00000000..518f54f1 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/integration/mining.md @@ -0,0 +1,104 @@ +--- +sidebar_position: 50 +title: Madencilik +sidebar_label: Madencilik +--- + +Bu belge, madencilik havuzlarının ve madencilerin alephium'u entegre etmesini kolaylaştırmayı amaçlamaktadır. Bu belge genellikle şunları içerir: + +* madencilik havuzu ile tam düğüm arasındaki iletişim protokolü +* madencinin maden işlerine dayanarak blok hash'ini nasıl hesapladığı + +Madencilik havuzu ile madenciler arasındaki iletişim protokolünün uygulanması hakkında daha fazla bilgi için, stratum protokolüne [buradan](/mining/alephium-stratum.md) bakabilirsiniz. Madencilik havuzları tam olarak protokolü takip etmez. + +Bu belgede bir referans olarak [madencilik havuzu](https://github.com/alephium/mining-pool) ve [gpu madencisi](https://github.com/alephium/gpu-miner) kodunu kullanacağım. + +## Madencilik Havuzu + +Madencilik havuzu, maden işleri almak için alephium tam düğümüne bağlanmalıdır ve varsayılan madencilik api sunucusu `localhost:10973` 'tür. + +Madencilik havuzu, tam düğümle bir binar protokol aracılığıyla iletişim kurar, mesaj formatı aşağıdaki gibidir: + +``` +MessageSize(4 bytes) + Message(1 byte MessageType + Payload) +``` + +### Tam Düğümden İşler Almak + +Her tam düğüm yeni bir blok aldığında, bir `Jobs` mesajı gönderir. Tam düğümün, yeni bir blok olmadığında da `Jobs` mesajı göndermek için zaman aralığını [buradaki](https://github.com/alephium/alephium/blob/master/flow/src/main/resources/system_prod.conf.tmpl#L6) madencilik yapılandırmasında ayarlayabilirsiniz. + +Alephium'da şu anda 16 zincir bulunduğundan, her `Jobs` mesajında 16 blok şablonu olacaktır. Ve blok şablonu aşağıdaki alanlardan oluşur: + +* `fromGroup` ve `toGroup`: blok şablonunun zincir dizini. +* `headerBlob`: [BlockHeader](https://github.com/alephium/alephium/blob/master/protocol/src/main/scala/org/alephium/protocol/model/BlockHeader.scala#L28) 'nin seri haldeki ikili verisi, ilk 24 baytı(nonce) hariç. +* `txsBlob`: işlemlerin seri haldeki ikili verisi. +* `targetBlob`: [Target](https://github.com/alephium/alephium/blob/master/protocol/src/main/scala/org/alephium/protocol/model/Target.scala#L32) 'nin seri haldeki ikili verisi. + +`Jobs` mesajının formatı ve `Jobs` mesajının nasıl ayrıştırılacağı hakkında daha fazla bilgi için sağlanan kodlara [buradan](https://github.com/alephium/mining-pool/blob/master/lib/messages.js) bakabilirsiniz. + +Madencilik havuzu, tam düğümden `Jobs` mesajını aldığında, madencilere hashrate'lerine dayanarak maden işlerini gönderebilir. Her zincir için, nonce hesaplamak yalnızca `targetBlob` ve `headerBlob` alanlarını gerektirir. Bu nedenle, madencilik havuzu, madencilere maden işlerini gönderirken `txsBlob` alanını dışarıda bırakarak bant genişliği tasarrufu yapabilir. Kodlara [buradan](https://github.com/alephium/mining-pool/blob/master/lib/blockTemplate.js#L51) bakabilirsiniz. + +### Blokları Tam Düğüme Gönderme + +Madencilik havuzu, bir madenciden geçerli bir `nonce` aldığında, bloğu tam düğüme gönderebilir, blok `nonce`, `headerBlob` ve `txsBlob`'dan oluşur, kodlara [buradan](https://github.com/alephium/mining-pool/blob/master/lib/pool.js#L119) bakabilirsiniz. + +Ardından, geçerli bir `SubmitBlock` mesajı oluşturmak için sağlanan kodlara [buradan](https://github.com/alephium/mining-pool/blob/master/lib/daemon.js#L49) bakabilirsiniz. + +Tam düğüm bloğu doğruladıktan sonra, madencilik havuzuna bloğun geçerli olup olmadığını belirten bir `SubmitBlockResult` mesajı gönderecektir, bu mesajın nasıl ayrıştırılacağına [buradan](https://github.com/alephium/mining-pool/blob/master/lib/messages.js#L72) bakabilirsiniz. + +## Madenci + +### Blok Hash'ini Hesaplama + +Alephium'da, `nonce`'un boyutu 24 bayttır ve bloğun hash'i: `blake3(blake3(serialize(blockHeader))` 'dir. Yukarıda belirtildiği gibi, her işteki `blockBlob`, `BlockHeader` 'ın seri haldeki ikili verisidir ve `nonce` alanını içermez. Bu nedenle, madenci blok hash'ini hesaplarken, `nonce`'u `headerBlob`'un önüne eklemesi gerekir, kodlara [buradan](https://github.com/alephium/gpu-miner/blob/master/src/worker.h#L135) ve [buradan](https://github.com/alephium/gpu-miner/blob/master/src/blake3/original-blake.hpp#L314) bakabilirsiniz. + +### Zincir Endeksini Kontrol Etme + +Madenci, hedefi kontrol etmenin yanı sıra, alephium zincir endeksini de kontrol etmelidir, çünkü alephium, zincir endeksini blok hash'ine kodlar. Zincir endeksinin blok hash'ının doğru olup olmadığını kontrol etmek için [buradan](https://github.com/alephium/gpu-miner/blob/master/src/blake3/original-blake.hpp#LL303C2-L303C2) kodlara bakabilirsiniz. + +## UTXO Yönetimi + +Her işlemde dahil edilebilecek girişlerin sınırlı sayıda olması nedeniyle, maden işçisinin cüzdanı küçük UTXO'larla doluysa, çekilmeler başarısız olabilir. Uygulamada, bazı madenciler maden ödüllerini doğrudan borsa adreslerine göndermeyi tercih ederler. Bu durumda lütfen [buradaki](/integration/exchange#utxo-management) kılavuzu izleyin. + +Eğer tam düğüm cüzdanı madencilik için kullanılıyorsa, aktif adres için UTXO'ları konsolide etmenin daha basit ve daha verimli yolları vardır. + +### Aktif adres için UTXO'ları konsolide etme + +```shell +# Consolidate UTXOs for the active address +curl -X 'POST' \ + 'http://127.0.0.1:22973/wallets/my-wallet/sweep-active-address' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "toAddress": "1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3" +}' +``` + +Unutmayın ki bu, yalnızca aktif adres için UTXO'ları konsolide eder. Diğer adresler için UTXO'ları konsolide etmek için, her birini aktif adres olarak güncellememiz ve yukarıdaki komutu çalıştırmamız gerekir. + +```shell +# Change active address +curl -X 'POST' \ + 'http://127.0.0.1:22973/wallets/my-wallet/change-active-address' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "address": "1AujpupFP4KWeZvqA7itsHY9cLJmx4qTzojVZrg8W9y" +}' +``` + +### Tüm adresler için UTXO'ları konsolide etme + +Tam düğüm cüzdanındaki tüm adresler için UTXO'ları konsolide etmenin en basit yolu `sweep-all-addresses` uç noktasını kullanmaktır: + +```shell +# Consolidate UTXOs for all addresses +curl -X 'POST' \ + 'http://127.0.0.1:22973/wallets/my-wallet/sweep-all-addresses \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "toAddress": "1C2RAVWSuaXw8xtUxqVERR7ChKBE1XgscNFw73NSHE1v3" +}' +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/media/186885966-b8d746fb-612b-433e-8f79-47e5a87ea375.png b/i18n/tr/docusaurus-plugin-content-docs/current/media/186885966-b8d746fb-612b-433e-8f79-47e5a87ea375.png new file mode 100644 index 00000000..6fba7b72 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/media/186885966-b8d746fb-612b-433e-8f79-47e5a87ea375.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/media/186886291-79745fc1-25dc-4307-a752-400ce1ff2d31.png b/i18n/tr/docusaurus-plugin-content-docs/current/media/186886291-79745fc1-25dc-4307-a752-400ce1ff2d31.png new file mode 100644 index 00000000..dda325ab Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/media/186886291-79745fc1-25dc-4307-a752-400ce1ff2d31.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/media/Block reward.png b/i18n/tr/docusaurus-plugin-content-docs/current/media/Block reward.png new file mode 100644 index 00000000..4df44c90 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/media/Block reward.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/alephium-stratum.md b/i18n/tr/docusaurus-plugin-content-docs/current/mining/alephium-stratum.md new file mode 100644 index 00000000..f19366cd --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/mining/alephium-stratum.md @@ -0,0 +1,63 @@ +--- +sidebar_position: 40 +title: Alephium Stratum +sidebar_label: Alephium stratum +--- + +Öneri: [https://eips.ethereum.org/EIPS/eip-1571](https://eips.ethereum.org/EIPS/eip-1571) adresindeki EIP-1571'e dayanmaktadır. +Mesajlar, EIP-1571'in JSON-RPC-2.0 belirtimini takip eder. + +? - bir özelliğin isteğe bağlı olduğunu belirtir + +``` +Yöntemler: + İstekler: + mining.hello + mining.subscribe + mining.authorize + mining.submit + mining.noop + connection.set_gzip + + Bildirimler + mining.set_extranonce + mining.set_target + mining.set_cleanjobs + mining.notify + +mining.hello +client { id: "0", method: "mining.hello", params: [, "AlephiumStratum/1.0.0"] } +server { id: "0", result: ["AlephiumStratum/1.0.0, , , , ] } + +optional connection.set_gzip +client { id: "1", method: "connection.set_gzip" } +server { id: "1", result: } + +mining.subscribe +client { id: "2", method: "mining.subscribe", params: } +server { id: "2", result: } + +mining.authorize +client { id: "3", method: "mining.authorize", params: [, ] } +server { id: "3", result: } + +mining.set_extranonce +server { method: "mining.set_extranonce", params: } + +mining.set_target +server { method: "mining.set_target", params: } + +mining.set_cleanjobs +server { method: "mining.set_cleanjobs", params: } + +mining.notify +server { method: "mining.notify", params: [, , ] } + +mining.submit +client { id: "4", method: "mining.submit", params: [, , ] } +server { id: "4", result: } + +mining.noop +client { id: "5", method: "mining.noop" } +server { id: "5", result: "1" } +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/full-node-synced-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/full-node-synced-query.png new file mode 100644 index 00000000..18b9a040 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/full-node-synced-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-balance-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-balance-query.png new file mode 100644 index 00000000..12480c8c Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-balance-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-change-active-address.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-change-active-address.png new file mode 100644 index 00000000..72ae20b0 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-change-active-address.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-query.png new file mode 100644 index 00000000..d9408eeb Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-response.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-response.png new file mode 100644 index 00000000..5e930555 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-create-response.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-query.png new file mode 100644 index 00000000..4f7648ee Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-response.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-response.png new file mode 100644 index 00000000..172f5c51 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-list-addresses-response.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-restore-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-restore-query.png new file mode 100644 index 00000000..e49a81e0 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-restore-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-sweep-all-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-sweep-all-query.png new file mode 100644 index 00000000..49b8b8ea Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-sweep-all-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-unlock-query.png b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-unlock-query.png new file mode 100644 index 00000000..92c689a5 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/mining/media/miner-wallet-unlock-query.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/miner-troubleshooting.md b/i18n/tr/docusaurus-plugin-content-docs/current/mining/miner-troubleshooting.md new file mode 100644 index 00000000..62e9befd --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/mining/miner-troubleshooting.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 30 +title: Sorun Giderme +--- + +# Sorun Giderme + +#### Neden 4 madenci adresimden sadece 1'ini geri yükleyebiliyorum? + +Madenci adresinizi geri yüklerken `isMiner = true` olarak belirtmeniz gerekmektedir. Lütfen buradaki örneğe bakınız: [Madenci Cüzdanını Geri Yükleme](solo-mining-guide.md#madenci-cüzdanınızı-geri-yükleyin) + +#### Madencimi aynı alt ağdaki başka bir bilgisayarımın tam düğümüne nasıl bağlarım? + +1. `user.conf` dosyanıza aşağıdakini ekleyin ve tam düğümünüzü yeniden başlatın. + +``` +alephium.mining.api-interface = "0.0.0.0" +``` + +2. Madencinizi `-a IP` ile çalıştırın, burada IP alt ağdaki tam düğümünüzün IP'sidir. + +#### VPS'de barındırılan tam düğümünün Swagger UI'ını nasıl kullanırım? + +SSH port yönlendirmesi önerilir: + +``` +ssh user@server -L 12973:127.0.0.1:12973 +``` + +#### Aynı alt ağdaki başka bir bilgisayardaki tam düğümümün Swagger UI'ına nasıl erişirim? + +1. `user.conf` dosyanıza aşağıdakini ekleyin ve tam düğümünüzü yeniden başlatın. + +``` +alephium.api.network-interface = "0.0.0.0" +``` + +2. Swagger UI'nın `host`unu tam düğümünüzün IP'si olarak değiştirin. + +#### Madencim (run-miner.sh ile) başka bir bilgisayardaki tam düğümüme bağlanamıyor + +`run-miner.sh` betiği varsayılan olarak `127.0.0.1` adresine bağlanır. `run-miner.sh` içine `-a IP` eklemeniz gerekecektir. + +#### Neden Madenci, HiveOS'ta büyük miktarda bellek kullanıyor? + +`logs-on` komutu ile `RAM'a yazma` seçeneğini devre dışı bırakmanız gerekmektedir. + +#### Cüzdanlar için otomatik kilitleme zamanlayıcısını nasıl özelleştiririm? + +Aşağıdaki yapılandırmayla cüzdanın otomatik kilitleme zaman aşımını değiştirebilirsiniz: + +``` +alephium.wallet.locking-timeout = 10 minutes +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/pool-mining-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/mining/pool-mining-guide.md new file mode 100644 index 00000000..1c02cfab --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/mining/pool-mining-guide.md @@ -0,0 +1,200 @@ +--- +sidebar_position: 20 +title: Havuz Madenciliği Kılavuzu +sidebar_label: Havuz madenciliği kılavuzu +--- + +# Havuz Madenciliği Kılavuzu + +Tüm bilinen madencilik havuzlarının tam listesini [bu bağlantıda bulabilirsiniz.](#community-pools) + +### Kendi Havuzunuzu Oluşturun + +Kendi madencilik havuzunuzu barındırmak istiyorsanız, lütfen [buradaki depoya bakınız](https://github.com/alephium/mining-pool/). Bir havuz oluşturursanız, havuzunuzu [listeye eklemek için bir Pull Request göndermekten](#community-pools) çekinmeyin. + +### Madencilik havuzu için örnek düğüm yapılandırması: + +> Bu bölüm, madencilik havuzu işletmecileri içindir, madenciler için değil. + +``` +// Blok propagasyonunu artırmak için daha fazla bağlantı +alephium.network.external-address = ":9973" +alephium.network.max-outbound-connections-per-group = 48 +alephium.network.max-inbound-connections-per-group = 256 + +alephium.mining.miner-addresses = [4 miner addresses] + +// Dış ağdan rest api'ye erişmiyorsanız aşağıdaki 2 satırın yorum satırına alın +alephium.api.network-interface = "0.0.0.0" +alephium.api.api-key = "" +``` + +## Topluluk Havuzları + +### ⚠️ Uyarı + +Bu, topluluk tarafından yönlendirilen madencilik havuzlarının eksiksiz bir listesi değildir. Bu havuzlar, Alephium tarafından onaylanmamıştır ve Alephium, Havuzunuzun seçimi için sorumlu tutulamaz. Burada listelenen havuzlar şimdiye kadar beklenildiği gibi davranmış olsa da, havuz seçimiyle ilgili güvenlik, itibar ve genel güvenlikle ilgili bazı araştırmalar yapmanız gerektiğini unutmayın. Bir yere başlamak için [Discord'da topluluktan yardım isteyebilirsiniz.](https://alephium.org/discord) + +### Havuzları Kullanma ve Destek Alma + +Bu havuz listesinin büyüdüğünü ve çeşitlendiğini görmekten mutluluk duyuyoruz. Lütfen onları deneyin. Bir havuzun çok büyümesi durumunda, merkezsizleşmeyi artırmak için farklı bir havuza geçmeyi düşünün. + +Alephium hala çok yeni ve güncellemeleri takip etmeniz önemlidir. Bu, madencilik havuzlarına katılmak için gereken yazılım için de geçerlidir. Unutmayın ki her havuzun, destek taleplerinizi ve sorularınızı karşılayan kanalları olan aktif bir topluluğu vardır. Bu nedenle, havuzla ilgili sorularınızı ilgili havuz grubuna sormak her zaman en iyisidir. Ayrıca, kendi dilinizde talimatlarımızı [buradaki topluluk çalma listelerinden birinde bulabilirsiniz.](https://www.youtube.com/channel/UCIX9Eww2Kch7sc0E6gCmEdg/playlists) + +### Şu anda bilinen ve aktif havuzlar + +Aşağıda, alfabetik sıraya göre sıralanmış madencilik havuzlarının bir listesi bulunmaktadır. Bu wiki'ye yükselen ve giden havuzları eklemek için [bir pull request göndermek](https://github.com/alephium/wiki/tree/master/docs/mining/pool-mining-guide.md) veya potansiyel kötü davranışlarını bildirmek için de göndermekten çekinmeyin. + +Ayrıca [https://miningpoolstats.stream/alephium](https://miningpoolstats.stream/alephium) adresinden kontrol edebilirsiniz. + +#### Alephium-havuz (Topluluk havuzu) + +- Web sitesi: https://alephium-pool.com/ +- Telegram: https://t.me/alephium_pool +- Discord: https://discord.gg/ZXYU2NGx + +#### ALPH.city + +- Web sitesi: https://alph.city/ +- Telegram: https://t.me/alphcity + +#### ALPH-havuz.com + +- Web sitesi: https://alph-pool.com/ +- Telegram: https://t.me/ALPH_pool_chat + +#### Alph2Mine.com + +- Web sitesi: https://alph2mine.com/ +- E-posta: alph2mine@gmail.com + +#### Cedric-CRISPIN.com + +- Web sitesi: https://alephium.cedric-crispin.com/ +- Twitter: https://twitter.com/Cedric_Crispin +- E-posta: webmaster@cedric-crispin.com + +#### Cloudiko Havuzu + +- Web sitesi: [https://cloudiko.io/](https://cloudiko.io/) +- Twitter: [https://twitter.com/Cloudiko_io](https://twitter.com/Cloudiko_io) +- Discord: [https://discord.gg/8sTGZf3Kpm](https://discord.gg/8sTGZf3Kpm) + +#### Coinhunters Havuzu + +- Web sitesi: https://alph.coinhunters.space +- Telegram (EN): https://t.me/alph_coinhunters_en +- Telegram (RU): https://t.me/alph_gravitsapapool_ru + +#### e4pool ALPH Havuzu + +- Web sitesi: https://e4pool.com/alph +- Telegram: https://t.me/E4piko +- Destek: https://t.me/e4pool_howto +- Forum: https://forum.e4pool.com/ + +#### Enigma Havuzu + +- Web sitesi: https://enigmapool.com/ +- Discord: https://discord.com/invite/enigmapool +- Hesap makinesi: https://enigmapool.com/tools/calculator + +#### Herominers Havuzu + +- Web sitesi: https://alephium.herominers.com/ +- Discord: https://discord.com/invite/gvWSs84 +- Telegram: https://t.me/HeroMinersPool + +#### Metapool (Topluluk havuzu) + +- Web sitesi: https://www.metapool.tech +- Hesap makinesi: https://metapool.tech/dashboard#calculator +- Telegram: https://t.me/metapool1 +- Discord: https://discord.gg/5TTzMDzJ + +#### Okminer + +- Web sitesi (CN): https://okminer.com +- Hesap makinesi: https://okminer.com/tools +- Telegram (CN): https://t.me/okminer_CN +- Telegram (EN): https://t.me/okminer_support + +#### p1pool.com + +- Web sitesi: https://p1pool.com/ +- Telegram: https://t.me/p1pool_com +- Discord: https://discord.gg/U8dh97XHk8 +- E-posta: info@p1pool.com + +#### Soloblocks + +- Web sitesi: https://soloblocks.org/alph/ + +#### Solopool.org + +- Web sitesi: https://alph.solopool.org/ +- Telegram: https://t.me/solopool_org +- Twitter: https://twitter.com/solopool_org +- E-posta: support@solopool.org + +#### Vipor.net + +- Web sitesi: https://vipor.net +- Discord: https://discord.gg/4tQU83Yq3Z +- Telegram: https://t.me/vipornet + +#### Wooly Pooly + +- Web sitesi: https://woolypooly.com/en/coin/alph +- Hesap makinesi: https://woolypooly.com/en/calc/what-to-mine-gpu +- Discord: https://woolypooly.com/discord +- Telegram: https://woolypooly.com/telegram + +⚠️ **Lütfen madencilik yazılımının en son sürümünü kullanın** + +### Alephium GPU-Miner + +- İndir: [https://github.com/alephium/gpu-miner](https://github.com/alephium/gpu-miner) +- Destek: [https://alephium.org/discord](https://alephium.org/discord) + +### bzMiner + +- İndir: [https://www.bzminer.com/](https://www.bzminer.com/) +- Destek: [https://discord.gg/NRty3PCVdB](https://discord.gg/NRty3PCVdB) + +### lolMiner + +- İndir: [https://lolminer.site/download/](https://lolminer.site/download/) + +### T-Rex + +- İndir: [https://trex-miner.com/](https://trex-miner.com/) + +### SRBMiner + +- İndir: [https://www.srbminer.com/download.html](https://www.srbminer.com/download.html) + +## Eğer HiveOS veya RaveOS ile ilgili sorularınız varsa, bu kaynaklar size yardımcı olacaktır + +### Hive OS + +- Web sitesi: [https://hiveos.farm](https://hiveos.farm) +- Forum: [https://hiveon.com/forum/](https://hiveon.com/forum/) +- Telegram: [https://t.me/hiveoschat_en](https://t.me/hiveoschat_en) +- Discord: [https://discord.gg/CVZeZdn](https://discord.gg/CVZeZdn) + +### Rave OS + +- E-posta desteği: support@raveos.com +- Web sitesi: [https://raveos.com/](https://raveos.com/) +- Telegram: [https://t.me/raveossupport](https://t.me/raveossupport) +- Discord: [https://discord.gg/Dcdadz2](https://discord.gg/Dcdadz2) + +### OKMiner Mobil İşletim Sistemi + +- iOS: [https://apps.apple.com/ru/app/okminer-os/id1494087547](https://apps.apple.com/ru/app/okminer-os/id1494087547) +- Android: [https://downap.okminer.com/hashapk/okminer.apk](https://downap.okminer.com/hashapk/okminer.apk) +- Web sitesi (CN): https://okminer.com +- Hesap makinesi: https://okminer.com/tools +- Telegram (CN): https://t.me/okminer_CN +- Telegram (EN): https://t.me/okminer_support diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/mining/solo-mining-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/mining/solo-mining-guide.md new file mode 100644 index 00000000..4b63d575 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/mining/solo-mining-guide.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 10 +title: Solo Madencilik Kılavuzu +sidebar_label: Solo madencilik kılavuzu +--- + +# Solo Madencilik Kılavuzu + +İlk olarak, [Tam Düğüm Başlangıç Kılavuzu](full-node/getting-started.md) adımlarını izlemeniz gerekmektedir. Bunu yaparak düğümünüzü indirebilir, başlatabilir ve Swagger [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) kullanabilirsiniz. + +## Madencilik bilgileri + +- Toplamda 4 adres grubu ve 16 zincir bulunmaktadır +- Hedef blok süresi 64 saniyedir +- Her gün ortalama olarak `24 * 60 * 60 / 64 * 16 = 21600` blok üretilmektedir +- Blok ödülleri şu anda 3 ALPH'tır +- Üretilen tüm paralar 500 dakika boyunca kilitlidir + +Daha fazla bilgi için lütfen bu makaleyi okuyun: [Blok Ödülleri](https://medium.com/@alephium/alephium-block-rewards-72d9fb9fde33). + +Ağ hash oranını tahmini olarak tam düğümünüzün günlük tutanaklarından veya tam düğümün Grafana gösterge tablosundan alabilirsiniz, eğer [docker-compose](full-node/docker-guide.md) ile çalıştırırsanız. + +## Madenci cüzdanı + +Öncelikle, madencilik için ayrılmış bir cüzdan oluşturmanız gerekmektedir. _Geleneksel bir cüzdanın_ aksine, bir _madenci cüzdanı_, her adres grubu için madencilik ödülleri toplamak için kullanılan birden fazla adres içerir. + +#### Madenci cüzdanınızı oluşturun + +![madenci-cuzdani-olustur-sorgu](media/miner-wallet-create-query.png) + +Sunucu size yeni cüzdanın ezgilerini döndürecektir. Lütfen bunu yedekleyin ve güvenli bir şekilde saklayın. + +![madenci-cuzdani-olustur-yanit](media/miner-wallet-create-response.png) + +#### Madenci adreslerinizi listeleme + +![madenci-cuzdani-listele-adresler-sorgu](media/miner-wallet-list-addresses-query.png) + +Sunucu size bir sonraki adımlar için 4 adres döndürecektir: + +![madenci-cuzdani-listele-adresler-yanit](media/miner-wallet-list-addresses-response.png) + +## Madenci adreslerini yapılandırma + +Şimdi 4 madenci adresinizi aldığınıza göre, düğümünüze atayarak madencilik yaparken ödül alabilirsiniz. Bunun için `.alephium/user.conf` dosyasına aşağıdaki içeriği eklemeniz gerekmektedir, ev klasörünüz altında[^1]: + + alephium.network.external-address = "x.x.x.x:9973" // buraya genel IP'nizi yazın; aksi halde bu satırı kaldırın + alephium.mining.miner-addresses = [ + "1HiYeRbypJQK4nc6EFYWiRVdsdYukQKq8SvKQsfJ3wiR8", + "1HD3q1G7qVoeyNA4U6HbBhFvv1FLUWNGwNavPamScpVLa", + "1CQiD2RQ58ymszcgPEszRomyMZxEjH1Rtp4tB84JY2qgL", + "19vvD3QbfEYbJexk6yCtnDNpRrfr3xQv2Pzc6x265MRhD" + ] + +Bu yeni yapılandırmaların etkili olması için lütfen düğümünüzü yeniden başlatın. Lütfen bunları aynı sırayla eklediğinizden emin olun, çünkü adresler gruplarına göre sıralanmıştır. + +## Güvenlik + +Varsayılan olarak, Alephium'un API arayüzü localhost'a bağlıdır, API uç noktalarınız güvenlidir. Ancak, `alephium.api.network-interface`'i yapılandırdıysanız, uç noktalarınız genel ağa açık hale gelebilir. Bu, herhangi birinin madenci cüzdanınıza erişebileceği tehlikeli olabilir. Lütfen API Anahtarını yapılandırmak için bu kılavuzu takip etmeyi düşünün: [API Anahtarı](full-node/full-node-more.md#api-key). + +Lütfen ayrıca düzenli olarak `sweep-all-addresses` uç noktasını kullanarak başka bir güvenli cüzdana daha fonlarınızı taşımayı düşünün. + +## Madenciliği Başlatma + +### Tam düğümünüzün senkronize olduğundan emin olun + +Bunu yaparak, bu uç noktayı yürüterek doğrulayabilirsiniz: + +![tam-dugum-senkron-sorgu](media/full-node-synced-query.png) + +Yanıtta `"synced": true` görürseniz, o zaman hazırsınız demektir. + +### Nvidia GPU + +Nvidia GPU'lar için gpu madencisini çalıştırmak için lütfen [https://github.com/alephium/gpu-miner](https://github.com/alephium/gpu-miner#readme) talimatlarını izleyin. + +Alternatif olarak, gpu-mineri docker ile çalıştırarak bu belgeleri takip edebilirsiniz: [https://github.com/alephium/alephium/tree/master/docker#gpu-miner-optional](https://github.com/alephium/alephium/tree/master/docker#gpu-miner-optional) + +### AMD GPU + +AMD GPU'lar için gpu madencisini çalıştırmak için lütfen [https://github.com/alephium/amd-miner](https://github.com/alephium/amd-miner#readme) talimatlarını izleyin. AMD madencinin performansının Nvidia madencinin performansıyla aynı olmadığını unutmayın. + +Herhangi bir sorunuz varsa, geliştiricilerle [Discord](https://alephium.org/discord) üzerinden iletişime geçmekten çekinmeyin. + +## Madenci cüzdanı hakkında daha fazla bilgi + +İşte madenciler için kullanışlı olan daha fazla uç nokta. + +#### Bakiyenizi alın + +![madenci-cuzdani-bakiye-sorgu](media/miner-wallet-balance-query.png) + +#### Etkin adresinizi değiştirme + +![madenci-cuzdani-etkin-adresi-degistir](media/miner-wallet-change-active-address.png) + +#### Etkin adreste bulunan tüm fonları başka bir adrese aktarın + +![madenci-cuzdani-tum-fonlari-aktar-sorgu](media/miner-wallet-sweep-all-query.png) + +#### Cüzdanınızı kilidini açın + +![madenci-cuzdani-kilidini-ac-sorgu](media/miner-wallet-unlock-query.png) + +#### Madenci cüzdanınızı geri yükleyin + +![madenci-cuzdani-geri-yukle-sorgu](media/miner-wallet-restore-query.png) + +[^1]: Ev klasörü sistemlerinize bağlıdır: Windows'ta `C:\Users\`, macOS'te `/Users/`, Linux'ta `/home/`. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/misc/internationalization-and-localization.md b/i18n/tr/docusaurus-plugin-content-docs/current/misc/internationalization-and-localization.md new file mode 100644 index 00000000..468a7eff --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/misc/internationalization-and-localization.md @@ -0,0 +1,60 @@ +--- +sidebar_position: 20 +title: Uluslararasılaştırma ve Yerelleştirme +sidebar_label: Uluslararasılaştırma ve yerelleştirme +--- + +# Uluslararasılaştırma ve Yerelleştirme (i18n) + +## Discord + +Aşağıdaki dilleri [resmi Discord'da](https://alephium.org/discord) bulabilirsiniz: + +- AR 🌙العربية +- CN 🐼 中文 +- CZ 🏒czech-slovakia +- DE 🌭deutsch +- FR 🥖français +- RU 🐻русский +- SP 🌮español +- TR 🐺türkçe + +## Bilinen yerelleştirilmiş topluluk destekli kullanıcı grupları + +### Telegram grupları + +Yerelleştirilmiş gruplar (bunlar resmi olmayan gruplardır, üçüncü taraflar tarafından oluşturulmuş ve moderasyonu yapılmıştır, Alephium'un kontrolü yoktur) + +Rusça 🇷🇺 - https://t.me/alephiumgroup_ru + +İspanyolca 🇪🇦 - https://t.me/minerosAlephium + +Çince 🇨🇳 - https://t.me/alephiumCN + +Almanca (DACH) 🇩🇪 - https://t.me/alphgermanofficial + +Türkçe 🇹🇷 - https://t.me/AlephiumTurkey + +Flemenkçe 🇳🇱 - https://t.me/AlephiumgroupNL + +Portekizce 🇵🇹 🇧🇷 - https://t.me/Alephium_pt + +Vietnamca 🇻🇳 - https://t.me/alephiumvn + +Endonezce 🇮🇩 - https://t.me/AlephiumID + +Fransızca FR - https://t.me/Alephiumfr + +Lehçe PL - https://t.me/alephiumPL + +Konu grupları + +Madencilik https://t.me/alephium_mining + +Ticaret https://t.me/alephium_trading + +Botlar + +Balina uyarıları https://t.me/alphwhalesalert + +Görüşler https://t.me/alephiumin \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/misc/multisig-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/misc/multisig-guide.md new file mode 100644 index 00000000..5bdb65b8 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/misc/multisig-guide.md @@ -0,0 +1,129 @@ +--- +sidebar_position: 30 +title: Çoklu İmza Kılavuzu +sidebar_label: Çoklu imza kılavuzu +--- + +Alephium, `m-of-n` çoklu imza adreslerini desteklemektedir. + +Çoklu imza ile ilgili komutu [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) adresindeki `Çoklu-imza` bölümünde bulabilirsiniz. Tam düğümünüzün çalıştığından emin olun, böylece Swagger UI'ye erişebilirsiniz. + +## Çoklu imza adresi oluşturma + +1. İmzalanacak hesapların tüm genel anahtarlarını alın. + + Genel anahtar, cüzdanı şu şekilde çağırarak alınabilir: + + ``` + GET /wallets/{wallet_name}/addresses/{address} + ``` + + cevap: + + ```json + { + "address": "{address}", + "publicKey": "d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28" + } + ``` + +2. Örneğin, 3 hesap ile (2-of-3) kilidini açmak için 2 imza gereken bir çoklu imza adresi oluşturmak istiyorsanız, şunu yapabilirsiniz: + + ``` + POST /multisig/address + { + "keys": [ + "d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28", + "8c1842cb159ac5ec04f384fe2d6f5da2d1b70d2226308b46da297486adb6b41a8f", + "e4a8c1842cb159ac5ec0b70d2226308b46da297486adb6b4f14f384fe2d6f5da31" + ], + "mrequired": 2 + } + ``` + + cevap: + + ```json + { + "address": "1AujpupFP4KWeZvqA7itsHY9cLJmx4qTzojVZrg8W9y9n" + } + ``` + + > ⚠️ UYARI: Genel anahtarların sırasını hatırlamayı unutmayın, daha sonra aynı sırayı sağlamanız gerekecektir. + +Artık bu adrese fon gönderilebilir. + +3. Fonları kullanmak için, çoklu imza işlemi oluşturmanız gerekir. +İmzalayacak genel anahtarları geçirin, örneğimizde 2. +Adres oluşturulurken aynı sıraya sahip olduğunuzdan emin olun: + + ``` + POST /multisig/build + { + "fromAddress": "1AujpupFP4KWeZvqA7itsHY9cLJmx4qTzojVZrg8W9y9n", + "fromPublicKeys": [ + "d1b70d2226308b46da297486adb6b4f1a8c1842cb159ac5ec04f384fe2d6f5da28", + "e4a8c1842cb159ac5ec0b70d2226308b46da297486adb6b4f14f384fe2d6f5da31" + ], + "destinations": [ + { + "address": "1jVZrg8W9y9AujpupFP4KWeZvqA7itsHY9cLJmTonx4zq", + "amount": "42 ALPH" + } + ] + } + ``` + + cevap: + + ```json + { + "unsignedTx": "0ecd20654c2e2be708495853e8da35c664247040c00bd10b9b13", + "txId": "798e9e137aec7c2d59d9655b4ffa640f301f628bf7c365083bb255f6aa5f89ef", + "fromGroup": 2, + "toGroup": 1 + } + ``` + +4. Şimdi txId'yi işlemi imzalaması gereken kişilere gönderebilirsiniz. Herkes cüzdanlarını kullanarak imzalayabilir: + + ``` + POST /wallets/{wallet_name}/sign + { + "data": "798e9e137aec7c2d59d9655b4ffa640f301f628bf7c365083bb255f6aa5f89ef" + } + ``` + + cevap: + + ```json + { + "signature": "9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b" + } + ``` + +5. İmzaları toplayın, örneğimizde 2 (çünkü `m=2`) ve son olarak işlemi gönderin: + + > NOT: İmza sırasının genel anahtarlarla aynı olması gerekir. + + ``` + POST /multisig/submit + { + "unsignedTx": "0ecd20654c2e2be708495853e8da35c664247040c00bd10b9b13", + "signatures": [ + "9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b", + "ab135272b834c1a639db9c89d673a8a30524042b0469672ca845458a5a0cf2cad53221b9e1a35b2931bd04e6780d01c36e3e5337941aa80f173cfe4f4e249c44" + ] + } + + ``` + + cevap: + + ```json + { + "txId": "503bfb16230888af4924aa8f8250d7d348b862e267d75d3147f1998050b6da69", + "fromGroup": 2, + "toGroup": 1 + } + ``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/misc/on-dust-outputs-and-state-explosion.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/misc/on-dust-outputs-and-state-explosion.md.drop new file mode 100644 index 00000000..f3a2d345 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/misc/on-dust-outputs-and-state-explosion.md.drop @@ -0,0 +1,18 @@ +--- +sidebar_position: 20 +title: On dust outputs and state explosion +--- + +This article follows a brainstorm between [Cheng](https://github.com/polarker) and [Tom](https://github.com/tshabs) + +Let’s consider mainly UTXO-based blockchain. The state of such kind of blockchains is mainly about the number of UTXOs. To ease the state explosion issue, we will need a proper design to invalidate UTXOs with small value. + +Let’s also assume that all the UTXOs are equally sized. Then the state explosion problem can be reduced to bound the number of UTXOs. As blockchain protocol applies the same validation rules to each UTXO, an upper bound on the number of UTXOs means a lower bound on the number of coins per UTXO (inflation and deflation are not considered as the rates of both are usually not so high ). Therefore, we come to the conclusion that a lower bound is necessary. + +However, it’s nearly impossible to find a fixed lower bound for the coin amount per UTXO. For example, for Bitcoin, 1mBTC might be a reasonable lower bound 10 years ago, but it cannot be used anymore nowadays. The second best is to find a dynamic lower bound that depends on the current state of the blockchain. Ideally, the lower bound would make attackers either impossible or cost high to inflate the state. When the market value of the blockchain is low, the cost to attack is low anyway, so the lower bound has to be high to make it impossible to create new utxos insanely. When the market value of the blockchain gets higher, the lower bound can be reduced. + +@Tom suggested designing such a lower bound based on averaged tx fee of the latest blocks. However, most of the blockchains would have “gas limit” as Ethereum. When the network is very congested, the tx fee would be equal to the gas limit always. In this case, the lower bound will not be dynamic enough in the long term. However, with a dynamic gas limit like EIP1559, it might perform well. + +@Cheng suggested designing the lower bound based on the hash rate of the blockchain. Theoretically, hash rate is a good index for energy consumption and block reward in fiat. In practice, when using a simple and efficient mining algorithm like Sha256, the cost per hash rate is pretty stable and predictable in the long run. The lower bound can be inversely proportional to (hash_rate / coinbase_reward) if follow this design. + +As noted by @Tom, there is an edge case that one UTXO might be above the lower bound when it’s created, but later might be invalid with a new lower bound. There are two ways to deal with it: 1) actively removing those invalid UTXOs, but this will probably make users angry and also make the system complicated; 2) just leave it there and users will still be able to use it as each tx can include multiple inputs. Note that this is not possible for Ethreum's native token, as there can be only one caller for each Eth tx. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/network/cpu-miner-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/network/cpu-miner-guide.md new file mode 100644 index 00000000..247ca56e --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/network/cpu-miner-guide.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 30 +title: CPU Madencilik Rehberi +sidebar_label: CPU madencilik rehberi +--- + +:::info + +CPU madenciliği yalnızca test amaçlıdır. Test ağı kullanmak için lütfen [Test Ağı Rehberi](network/testnet-guide.md)'ne göz atın. + +Üretimde madencilik yapmak için lütfen [Tek Başına Madencilik Rehberi](mining/solo-mining-guide.md) veya [Havuz Madenciliği Rehberi](mining/pool-mining-guide.md)'ni ziyaret edin. + +::: + +Önce [Tam Düğüm Rehberi](full-node/getting-started.md)'ndeki adımları izlemeniz gerekmektedir, böylece düğümünüzü indirebilir, yapılandırabilir, başlatabilir ve Swagger (veya diğer OpenAPI istemcileri) kullanabilirsiniz. + +Lütfen REST API için varsayılan adres ve bağlantı noktasının [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) olduğunu unutmayın. + +## Madenciliği Başlat + +Madencilik yapmadan önce yerel düğümünüzün tamamen senkronize olduğundan emin olun. Bir sonraki büyük sürümümüzde bunun için bir doğrulama ekleyeceğiz. + +Yerel düğümünüzde madenciliği başlatmak için `/miners/cpu-mining?action=start-mining` üzerine bir POST işlemi yaparak madenciliği **başlatabilirsiniz**. + +Sunucu, madencilik işleminin artık başladığını doğrulamak için basitçe `true` yanıtı vermelidir. + +Lütfen madencinizin adreslerini yapılandırmak için önce GPU Madenci Rehberi'nin [Yeni bir madenci cüzdanı oluşturun](mining/solo-mining-guide.md#bir-yeni-madenci-cüzdanı-oluşturun) bölümünü incelemeniz gerekecektir. + +## Madenciliği Durdur + +Benzer şekilde, yerel düğümünüzde madenciliği **durdurabilirsiniz** `/miners/cpu-mining?action=stop-mining` üzerine bir POST işlemi yaparak. + +## CPU Kullanımı + +Madencilik için CPU kaynaklarını nasıl ayarlayabileceğinizi aşağıdaki iki yapılandırma ile yapabilirsiniz: + + akka.actor.mining-dispatcher.fork-join-executor.parallelism-min = 1 // madencilik için minimum iş parçacığı sayısı + akka.actor.mining-dispatcher.fork-join-executor.parallelism-max = 4 // madencilik için maksimum iş parçacığı sayısı diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/network/devnet-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/network/devnet-guide.md new file mode 100644 index 00000000..8c6c448b --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/network/devnet-guide.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 20 +title: Geliştirme Ağı Rehberi +sidebar_label: Geliştirme ağı rehberi +--- + +Boş blok geçmişi ve isteğe bağlı miktarda jetonla başlayan yerel bir geliştirme ağı oluşturmak geliştiriciler için uygun olacaktır. + +Geliştirme ağı için tam düğümün kurulumu ana ağla aynıdır: [Tam Düğüm Başlangıç Rehberi](full-node/getting-started.md) + +**Tam düğümü başlatmadan önce `user.conf` dosyasını değiştirmeniz gerekmektedir**. + +Lütfen REST API için varsayılan adres ve bağlantı noktasının [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) olduğunu unutmayın. + +## Yapılandırma + +`$HOME/.alephium/user.conf` (`user.conf` kullanılıyorsa) dosyasına aşağıdaki satırları eklemelisiniz: + +``` +// çoğu durumda, aşağıdaki iki satırı değiştirin +alephium.genesis.allocations = [{address = "", amount = 1000000000000000000000000, lock-duration = 0 seconds}] // Adresinize tahsis edilen 1 milyon jeton +alephium.consensus.num-zeros-at-least-in-hash = 0 + +alephium.network.network-id = 4 +alephium.discovery.bootstrap = [] +alephium.wallet.locking-timeout = 99999 minutes +alephium.mempool.auto-mine-for-dev = true + +// isteğe bağlı madencilik adresleri +alephium.mining.miner-addresses = [ +"1FsroWmeJPBhcPiUr37pWXdojRBe6jdey9uukEXk1TheA", +"1CQvSXsmM5BMFKguKDPpNUfw1idiut8UifLtT8748JdHc", +"193maApeJWrz9GFwWCfa982ccLARVE9Y1WgKSJaUs7UAx", +"16fZKYPCZJv2TP3FArA9FLUQceTS9U8xVnSjxFG9MBKyY" +] +``` + +Lütfen kendi adreslerinizi genesis tahsisleri için kullanın. Ayrıca madencilik daha hızlı olsun istiyorsanız `num-zeros-at-least-in-hash` değerini azaltabilirsiniz. + +Daha fazla yapılandırma dosya yolunda `$HOME/.alephium/network-4/` bulunabilir ve günlükler `$HOME/.alephium/logs/` içinde bulunabilir. + +Eğer `user.conf` dosyasını değiştiriyorsanız, tam düğümü yeniden başlatmadan önce `$HOME/.alephium/network-4/` klasörünü temizlemeniz daha iyi olacaktır. + +## Madencilik + +Örnek yapılandırma dosyasıyla geliştirme ağı, tüm yeni işlemler için otomatik olarak yeni blokları kazabilir. Madencilik için CPU kullanmanıza gerek yoktur. + +Geliştirme ağını madencilik testleri için kullanmak istiyorsanız, lütfen şu şekilde göreceli yüksek bir zorluk belirleyin: + +``` +alephium.consensus.num-zeros-at-least-in-hash = 24 +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/network/testnet-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/network/testnet-guide.md new file mode 100644 index 00000000..585faa88 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/network/testnet-guide.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 10 +title: Testnet Rehberi +sidebar_label: Testnet rehberi +--- + +Testnet için tam düğümün kurulumu ana ağla aynıdır: [Tam Düğüm Başlangıç Rehberi](full-node/getting-started.md) + +**Tam düğümü başlatmadan önce `user.conf` dosyasını değiştirmeniz gerekmektedir**. + +Lütfen REST API için varsayılan adres ve bağlantı noktasının [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) olduğunu unutmayın. + +## Yapılandırma + +`$HOME/.alephium/user.conf` (`user.conf` kullanılıyorsa) dosyasına aşağıdaki satırları eklemelisiniz: + +``` +alephium.network.network-id = 1 +alephium.discovery.bootstrap = ["testnet-bootstrap0.alephium.org:9973","testnet-bootstrap1.alephium.org:9973"] +``` + +## Madencilik + +Testnet'te bazı ALPH almak için [CPU Madenci Rehberi](cpu-miner-guide.md)'ni kullanabilirsiniz. + +Madenci adreslerinizi `$HOME/.alephium/user.conf` dosyasına aşağıdaki gibi ekleyin: + +``` +alephium.mining.miner-addresses = [ +"1FsroWmeJPBhcPiUr37pWXdojRBe6jdey9uukEXk1TheA", +"1CQvSXsmM5BMFKguKDPpNUfw1idiut8UifLtT8748JdHc", +"193maApeJWrz9GFwWCfa982ccLARVE9Y1WgKSJaUs7UAx", +"16fZKYPCZJv2TP3FArA9FLUQceTS9U8xVnSjxFG9MBKyY" +] +``` + +:::info + +[Desktop cüzdanı](../wallet/desktop-wallet/configure-mining-wallet) yükleyerek kolayca madencilik adresleri oluşturabilir ve 4 adet adres içeren bir cüzdan oluşturabilirsiniz. Ardından adresleri kopyalayıp yukarıdaki `user.conf` dosyasına yapıştırabilirsiniz. + +::: + +## Yapılandırma örneği + +``` +alephium.api.network-interface = "0.0.0.0" +alephium.mining.api-interface = "0.0.0.0" +alephium.network.network-id = 1 +alephium.discovery.bootstrap = ["testnet-bootstrap0.alephium.org:9973","testnet-bootstrap1.alephium.org:9973"] +alephium.mining.miner-addresses = [ +"1FsroWmeJPBhcPiUr37pWXdojRBe6jdey9uukEXk1TheA", +"1CQvSXsmM5BMFKguKDPpNUfw1idiut8UifLtT8748JdHc", +"193maApeJWrz9GFwWCfa982ccLARVE9Y1WgKSJaUs7UAx", +"16fZKYPCZJv2TP3FArA9FLUQceTS9U8xVnSjxFG9MBKyY" +] +alephium.api.api-key-enabled = false +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/ralph/asset-permission-system.md b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/asset-permission-system.md new file mode 100644 index 00000000..22051dbb --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/asset-permission-system.md @@ -0,0 +1,182 @@ +--- +sidebar_position: 60 +title: Varlık İzin Sistemi (APS) +sidebar_label: Varlık İzin Sistemi (APS) +--- + +Varlık İzin Sistemi (APS), Ralph'ın benzersiz özelliklerinden biridir. Kod düzeyinde varlıkların akışını açıkça belirtir, geliştiricilere ve akıllı sözleşme kullanıcılarına tüm varlık transferlerinin amaçlandığı gibi gerçekleştiği konusunda güven sağlar. UTXO modeli ile birlikte, EVM gibi sistemlerdeki token onay risklerini ortadan kaldırarak daha basit ve daha güvenli bir kullanıcı deneyimi sunar. + +Alephium, varlıkların, dahil olmak üzere, yerel ALPH ve diğer tokenlerin UTXO'lar tarafından yönetildiği [sUTXO](https://medium.com/@alephium/an-introduction-to-the-stateful-utxo-model-8de3b0f76749) modelini kullanırken, akıllı sözleşmeler ve durumları hesap tabanlı model kullanılarak yönetilir. + +Bu birkaç sonuç doğurur: + +1. Kullanıcılar arasındaki basit varlık transferleri sadece UTXO'ları gerektirir ve varlıkları yönetme konusunda güvenliği kanıtlanmıştır. Burada akıllı sözleşmeler devreye girmez. +2. Akıllı sözleşmeler, sahiplerinin adına varlık transfer etmek istediğinde, ayrı onay işlemleri gerekmez. Onay, UTXO modelinde zımni olarak yapılır: belirli bir tokeni içeren girişin işlemde harcanmasına izin verilirse, sahibi o tokenin bu işlem bağlamında kullanımına zaten onay vermiş demektir; yani aynı işlemde çağrılan akıllı sözleşmeler potansiyel olarak tokeni aktarabilir. + +Şimdi soru şudur: ikinci durumda, UTXO modelini kullanarak işlemde zımni olarak onaylanan varlıkların akıllı sözleşmeler tarafından güvenli bir şekilde işleneceğinden nasıl emin olabiliriz? Cevap, Ralph'ın Varlık İzin Sistemi (APS)'dir. + +## Varlık Akışı + +Alephium'daki akıllı sözleşmelerle etkileşim kurmak için bir işlemin bir `TxScript`i yürütmesi gerekir. Aşağıdaki örnek işlemde iki giriş, bir sabit çıkış ve bir `TxScript` bulunmaktadır: + +``` + ---------------- + | | + | | + 1 Token A | | 1 ALPH (fixed output) +================> | | ========================> + 6.1 ALPHs | | ??? (generated output) +================> | | ========================> + | | + | | + | | + ---------------- +``` + +Burada iki şey dikkate değerdir: + +1. Yalnızca bir sabit çıkış olsa bile, bu işlem için daha fazla çıkış oluşturulacaktır. Oluşturulan çıkışlar, `TxScript` yürütmesinin sonucuna bağlıdır. +2. `TxScript` için mevcut olan toplam varlıklar (çağrılan akıllı sözleşmeler de dahil olmak üzere), `1` ALPH ve `1` Token A'dır, çünkü sabit çıkışta `1` ALPH çıkarılması gerekir. + +Varsayalım ki `TxScript` şuna benziyor: + +```rust +TxScript ListNFT( + tokenAId: ByteVec, + price: U256, + marketPlace: NFTMarketPlace +) { + let listingFee = marketPlace.getListingFee() + let minimalAlphInContract = 1 alph + let approvedAlphAmount = listingFee + minimalAlphInContract + + marketPlace.listNFT{callerAddress!() -> ALPH: approvedAlphAmount, tokenAId: 1}(tokenAId, price) +} +``` + +Muhtemelen tahmin ettiğiniz gibi, Token A bir NFT tokenidir ve yukarıdaki `TxScript` in amacı bunu bir pazar yeri akıllı sözleşmesi aracılığıyla listelemektir. + +Özellikle ilginç olan şu satırdır: + +```rust +marketPlace.listNFT{callerAddress!() -> ALPH: approvedAlphAmount, tokenAId: 1}(tokenAId, price) +``` + +Ayraçların içindeki kod, `approvedAlphAmount` ALPH ve `1` token A'nın, toplam varlıkların sırasıyla `5.1` ve `1` ALPH ve token A için mevcut olduğu halde, `marketPlace.listNFT` işlevinde harcanmasına izin verildiğini açıkça onaylar. + +Aşağıdaki senaryolar meydana gelebilir: + +1. Eğer `approvedAlphAmount`, `5.1` ALPH'den fazlaysa, o zaman işlem `YeterliBakiyeYok` hatası ile başarısız olur. +2. Eğer `approvedAlphAmount`, `5.1` ALPH'den azsa, örneğin `1.1` ALPH ise, o zaman `marketPlace.listNFT`'nin ele alabileceği varlıkların maksimum miktarı `1.1` ALPH ve `1` token A'dır. `marketPlace.listNFT`, kalan `4` ALPH'e erişemez. +3. Eğer `marketPlace.listNFT`, onaylanan varlıkların tamamını harcamamışsa, kalan varlıklar, `marketPlace.listNFT` döndüğünde sahiplerine geri döner. + +Şimdi biraz daha yakından `marketPlace.listNFT` işlevine bakalım: + +```rust +Contract NFTMarketPlace( + nftListingTemplateId: ByteVec +) { + // Other code are omitted for brevity + + pub fn getListingFee() -> U256 { + return 0.1 ALPH + } + + @using(preapprovedAssets = true, assetsInContract = true, updateFields = false) + pub fn listNFT( + tokenId: ByteVec, + price: U256 + ) -> (Address) { + assert!(price > 0, ErrorCodes.NFTPriceIsZero) + + // Only owner can list the NFT + let tokenOwner = callerAddress!() + + let (encodeImmutableFields, encodeMutableFields) = NFTListing.encodeFields!(tokenId, tokenOwner, selfAddress!(), commissionRate, price) + // Create the listing contract + let nftListingContractId = copyCreateSubContract!{tokenOwner -> ALPH: 1 alph, tokenId: 1}( + tokenId, nftListingTemplateId, encodeImmutableFields, encodeMutableFields + ) + + // Charge the listing fee + transferTokenToSelf!(tokenOwner, ALPH, listingFee) + + return contractIdToAddress!(nftListingContractId) + } +} +``` + +İlk dikkat edilmesi gereken şey, `listNFT` yöntemi için yapılan açıklamadır: + +```rust +@using(preapprovedAssets = true, assetsInContract = true, updateFields = false) +``` + +`preapprovedAssets = true`, `listNFT` yönteminin bazı varlıkları kullanmayı amaçladığını ve çağrıcının gerekli varlıkları onaylaması gerektiğini belirtir, aksi takdirde bir derleme hatası rapor edilir. Çağrıcının `preapprovedAssets = false` olduğu bir yöntem için varlıkları onaylamaya çalışması durumunda derleme de başarısız olacaktır. + +`assetsInContract = true`, `listNFT` yönteminin, `NFTMarketPlace` sözleşmesinin varlığını güncellemek istediğini VM'ye bildirir. Derleyici, `listNFT` yönteminin bunu gerçekten yapmasını sağlar, aksi takdirde bir derleme hatası rapor edilir. Bu durumda, `listNFT`, `listingFee`'yi aktararak `NFTMarketPlace` sözleşmesinin varlığını günceller: + +```rust +// Charge the listing fee +transferTokenToSelf!(tokenOwner, ALPH, listingFee) +``` + +`updateFields` açıklaması bu belgelendirme kapsamı dışındadır. + +`marketPlace.listNFT` yöntemi, aşağıda gösterildiği gibi `TxScript` `ListNFT` tarafından çağrılır: + +```rust +marketPlace.listNFT{callerAddress!() -> ALPH: approvedAlphAmount, tokenAId: 1}(tokenAId, price) +``` + +`marketPlace.listNFT`, `TxScript`'in çağrıcısından `1.1` ALPH ve `1` token harcaması için yetkilendirilmiştir. Eğer `marketPlace.listNFT` başka yöntemleri çağırıyorsa, bu onaylanan varlıkların bir alt kümesini o yönteme de onaylayabilir. Örneğin, `marketPlace.listNFT` içinde bir NFT listelemesi oluşturmak için aşağıdaki kodu bulunmaktadır: + +```rust +let nftListingContractId = copyCreateSubContract!{tokenOwner -> ALPH: 1 alph, tokenId: 1}( + tokenId, nftListingTemplateId, encodeImmutableFields, encodeMutableFields +) +``` + +Görüleceği gibi, `marketPlace.listNFT` yöntemi, kendi onaylanmış varlıklar havuzundan (`1.1` ALPH ve `1` Token A) `copyCreateSubContract!` yerleşik fonksiyonuna `1` ALPH ve `1` Token A'yı onaylar, ardından `listingFee`'yi `NFTMarketPlace` sözleşmesine göndermeden önce. Varlık akışı aşağıda gösterilmiştir: + +``` + Caller of the TxScript + (6.1 ALPH; 1 Token A) + || + || + || Subtract assets in + || Fixed outputs + || + || Approves Approves + \/ (1.1 ALPH; 1 TokenA) (1 ALPH; 1 TokenA) + (5.1 ALPH; 1 Token A) ========================> listNFT ========================> copyCreateSubContract! + || + || + || To self + || + \/ + (0.1 ALPH) +``` + +Daha büyük bir yöntem çağrı ağacına sahipsek, onaylanan fonlar, su gibi, ağacın kökünden yapraklara kadar akar. Varlık İzin Sistemi, bu fon akışını yöntem çağrıları boyunca açıkça belirginleştirir ve her bir yönteme hangi tokenlerin ve ne kadarının harcanabileceğine dair kısıtlamalar getirir. + +İşleme geri dönerek, `TxScript`in yürütülmesinden sonra oluşturulan çıkışlar aşağıdakilere benzemelidir: + +``` + ---------------- + | | + | | 1 ALPH (fixed output) + 1 Token A | | =========================================> +======================> | | 1 ALPH, 1 Token A (NFTListing contract) + 6.1 ALPHs | | =========================================> +======================> | | 0.1 ALPH (NFTMarketPlace contract) + | | =========================================> + | | 4 ALPH - gas (change output) + | | =========================================> + | | + ---------------- +``` + +## Özet + +Varlık İzin Sistemi (APS), akıllı sözleşmelerde varlıkların akışını belirler. Her yöntem çağrısı için varlıkların açıkça onaylanması, yöntemlerin yetkilendirildiklerinden fazlasını asla harcamayacaklarından emin olur. UTXO modeli ile birlikte, daha basit, daha güvenilir ve daha güvenli bir varlık yönetimi çözümü sunar. \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/ralph/built-in-functions.md b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/built-in-functions.md new file mode 100644 index 00000000..c9baaab7 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/built-in-functions.md @@ -0,0 +1,1435 @@ +--- +sidebar_position: 20 +title: Yerleşik Fonksiyonlar +sidebar_label: Yerleşik fonksiyonlar +--- + + + +:::info +Bu sayfa otomatik olarak oluşturulmuştur. Bu sayfada, Ralph'ın yerleşik işlevleri ve bunların kullanımı hakkında bilgi bulabilirsiniz. +Otomatik oluşturulduğu ve hızlıca değişebileceği için, bu sayfada yer alan bilgilerin çevirisi yapılmamıştır. +::: + +The built-in functions are divided into several categories: +[Contract](#contract-functions), +[SubContract](#subcontract-functions), +[Asset](#asset-functions), +[Utils](#utils-functions), +[Chain](#chain-functions), +[Conversion](#conversion-functions), +[ByteVec](#bytevec-functions), +[Cryptography](#cryptography-functions). +All built-in functions are suffixed with `!`. +All of the byte encoding use Big Endian byte order. + +## Contract Functions +--- +### createContract + +```Rust +fn createContract!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec) +``` + +Creates a new contract without token issuance. + +> @param **bytecode** *the bytecode of the contract to be created* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @returns *the id of the created contract* + +--- + +### createContractWithToken + +```Rust +fn createContractWithToken!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec) +``` + +Creates a new contract with token issuance. + +> @param **bytecode** *the bytecode of the contract to be created* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @param **issueTokenAmount** *the amount of token to be issued* +> +> @param **issueTo** *(optional) a designated address to receive issued token* +> +> @returns *the id of the created contract* + +--- + +### copyCreateContract + +```Rust +fn copyCreateContract!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec) +``` + +Creates a new contract without token issuance by copying another contract's code. This costs less gas than createContract!(...). + +> @param **contractId** *the id of the contract to be copied* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @returns *the id of the created contract* + +--- + +### copyCreateContractWithToken + +```Rust +fn copyCreateContractWithToken!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec) +``` + +Creates a new contract with token issuance by copying another contract's code. This costs less gas than createContractWithToken!(...). + +> @param **contractId** *the id of the contract to be copied* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @param **issueTokenAmount** *the amount of token to be issued* +> +> @param **issueTo** *(optional) a designated address to receive issued token* +> +> @returns *the id of the created contract* + +--- + +### selfAddress + +```Rust +fn selfAddress!() -> (Address) +``` + +Returns the address of the contract. + +> @returns *the address of the contract* + +--- + +### selfContractId + +```Rust +fn selfContractId!() -> (ByteVec) +``` + +Returns the id (ByteVec) of the contract. + +> @returns *the id (ByteVec) of the contract* + +--- + +### selfTokenId + +```Rust +fn selfTokenId!() -> (ByteVec) +``` + +Returns the token id (ByteVec) of the contract. + +> @returns *the token id (ByteVec) of the contract* + +--- + +### tokenId + +```Rust +fn tokenId!(contract:) -> (ByteVec) +``` + +Returns the id of the contract + +> @param **contract** *the contract variable* +> +> @returns *the id of the contract* + +--- + +### contractId + +```Rust +fn contractId!(contract:) -> (ByteVec) +``` + +Returns the id of the contract + +> @param **contract** *the contract variable* +> +> @returns *the id of the contract* + +--- + +### contractAddress + +```Rust +fn contractAddress!(contract:) -> (Address) +``` + +Returns the address of the contract + +> @param **contract** *the contract variable* +> +> @returns *the address of the contract* + +--- + +### callerContractId + +```Rust +fn callerContractId!() -> (ByteVec) +``` + +Returns the contract id of the caller. + +> @returns *the contract id of the caller* + +--- + +### callerAddress + +```Rust +fn callerAddress!() -> (Address) +``` + +Returns the address of the caller. When used in a TxScript, it returns the unique input address if the input addresses are the same, otherwise it fails. + +> @returns *the address of the caller. When used in a TxScript, it returns the unique input address if the input addresses are the same, otherwise it fails* + +--- + +### contractInitialStateHash + +```Rust +fn contractInitialStateHash!(contractId:ByteVec) -> (ByteVec) +``` + +Returns the initial state hash of the contract. + +> @param **contractId** *the id of the input contract* +> +> @returns *the initial state hash of the contract* + +--- + +### contractCodeHash + +```Rust +fn contractCodeHash!(contractId:ByteVec) -> (ByteVec) +``` + +Returns the contract code hash of the contract. + +> @param **contractId** *the id of the input contract* +> +> @returns *the contract code hash of the contract* + +--- + +### callerInitialStateHash + +```Rust +fn callerInitialStateHash!() -> (ByteVec) +``` + +Returns the initial state hash of the caller contract. + +> @returns *the initial state hash of the caller contract* + +--- + +### callerCodeHash + +```Rust +fn callerCodeHash!() -> (ByteVec) +``` + +Returns the contract code hash of the caller contract. + +> @returns *the contract code hash of the caller contract* + +--- + +### contractExists + +```Rust +fn contractExists!(contractId:ByteVec) -> (Bool) +``` + +Checks whether the contract exists with the given id. + +> @param **contractId** *the input contract id to be tested* +> +> @returns *ture if the contract exists on the chain, false otherwise* + +--- + +### destroySelf + +```Rust +fn destroySelf!(refundAddress:Address) -> () +``` + +Destroys the contract and transfer the remaining assets to a designated address. + +> @param **refundAddress** *the address to receive the remaining assets in the contract* +> +> @returns + +--- + +### migrate + +```Rust +fn migrate!(newBytecode:ByteVec) -> () +``` + +Migrates the code of the contract. + +> @param **newBytecode** *the new bytecode for the contract to migrate to* +> +> @returns + +--- + +### migrateWithFields + +```Rust +fn migrateWithFields!(newBytecode:ByteVec, newEncodedImmFields:ByteVec, newEncodedMutFields:ByteVec) -> () +``` + +Migrates both the code and the fields of the contract. + +> @param **newBytecode** *the bytecode for the contract to migrate to* +> +> @param **newEncodedImmFields** *the encoded immutable fields for the contract to migrate to* +> +> @param **newEncodedMutFields** *the encoded mutable fields for the contract to migrate to* +> +> @returns + +--- + +### isCalledFromTxScript + +```Rust +fn isCalledFromTxScript!() -> (Bool) +``` + +Checks whether the function is called by a TxScript. + +> @returns *true if the function is called by a TxScript, false otherwise* + +--- + +### selfContract + +```Rust +fn selfContract!() -> () +``` + +Returns self contract + +> @returns *self contract* + +--- + +## SubContract Functions +--- +### createSubContract + +```Rust +fn createSubContract!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec) +``` + +Creates a new sub-contract without token issuance. + +> @param **subContractPath** *the path of the sub-contract to be created* +> +> @param **bytecode** *the bytecode of the sub-contract to be created* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @returns *the id of the created contract* + +--- + +### createSubContractWithToken + +```Rust +fn createSubContractWithToken!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec) +``` + +Creates a new sub-contract with token issuance. + +> @param **subContractPath** *the path of the sub-contract to be created* +> +> @param **bytecode** *the bytecode of the sub-contract to be created* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @param **issueTokenAmount** *the amount of token to be issued* +> +> @param **issueTo** *(optional) a designated address to receive issued token* +> +> @returns *the id of the created contract* + +--- + +### copyCreateSubContract + +```Rust +fn copyCreateSubContract!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec) +``` + +Creates a new sub-contract without token issuance by copying another contract's code. This costs less gas than createSubContract!(...). + +> @param **subContractPath** *the path of the sub-contract to be created* +> +> @param **contractId** *the id of the contract to be copied* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @returns *the id of the created contract* + +--- + +### copyCreateSubContractWithToken + +```Rust +fn copyCreateSubContractWithToken!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec) +``` + +Creates a new sub-contract with token issuance by copying another contract's code. This costs less gas than createSubContractWithToken!(...). + +> @param **subContractPath** *the path of the sub-contract to be created* +> +> @param **contractId** *the id of the contract to be copied* +> +> @param **encodedImmFields** *the encoded immutable fields as a ByteVec* +> +> @param **encodedMutFields** *the encoded mutable fields as a ByteVec* +> +> @param **issueTokenAmount** *the amount of token to be issued* +> +> @param **issueTo** *(optional) a designated address to receive issued token* +> +> @returns *the id of the created contract* + +--- + +### subContractId + +```Rust +fn subContractId!(subContractPath:ByteVec) -> (ByteVec) +``` + +Returns the id of the sub contract. + +> @param **subContractPath** *the path of the sub-contract* +> +> @returns *the id of the sub contract* + +--- + +### subContractIdOf + +```Rust +fn subContractIdOf!(contract:, subContractPath:ByteVec) -> (ByteVec) +``` + +Returns the id of the sub contract. + +> @param **contract** *the parent contract of the sub-contract* +> +> @param **subContractPath** *the path of the sub-contract* +> +> @returns *the id of the sub contract* + +--- + +### subContractIdInParentGroup + +```Rust +fn subContractIdInParentGroup!(contract:, subContractPath:ByteVec) -> (ByteVec) +``` + +Returns the id of the sub contract. + +> @param **contract** *the parent contract of the sub-contract* +> +> @param **subContractPath** *the path of the sub-contract* +> +> @returns *the id of the sub contract* + +--- + +## Asset Functions +--- +### approveToken + +```Rust +fn approveToken!(fromAddress:Address, tokenId:ByteVec, amount:U256) -> () +``` + +Approves the usage of certain amount of token from the given address + +> @param **fromAddress** *the address to approve token from* +> +> @param **tokenId** *the token to be approved* +> +> @param **amount** *the amount of the token to be approved* +> +> @returns + +--- + +### tokenRemaining + +```Rust +fn tokenRemaining!(address:Address, tokenId:ByteVec) -> (U256) +``` + +Returns the amount of the remaining token amount in the input assets of the function. + +> @param **address** *the input address* +> +> @param **tokenId** *the token id* +> +> @returns *the amount of the remaining token amount in the input assets of the function* + +--- + +### transferToken + +```Rust +fn transferToken!(fromAddress:Address, toAddress:Address, tokenId:ByteVec, amount:U256) -> () +``` + +Transfers token from the input assets of the function. + +> @param **fromAddress** *the address to transfer token from* +> +> @param **toAddress** *the address to transfer token to* +> +> @param **tokenId** *the token to be transferred* +> +> @param **amount** *the amount of token to be transferred* +> +> @returns + +--- + +### transferTokenFromSelf + +```Rust +fn transferTokenFromSelf!(toAddress:Address, tokenId:ByteVec, amount:U256) -> () +``` + +Transfers the contract's token from the input assets of the function. + +> @param **toAddress** *the address to transfer token to* +> +> @param **tokenId** *the token to be transferred* +> +> @param **amount** *the amount of token to be transferred* +> +> @returns + +--- + +### transferTokenToSelf + +```Rust +fn transferTokenToSelf!(fromAddress:Address, tokenId:ByteVec, amount:U256) -> () +``` + +Transfers token to the contract from the input assets of the function. + +> @param **fromAddress** *the address to transfer token from* +> +> @param **tokenId** *the token to be transferred* +> +> @param **amount** *the amount of token to be transferred* +> +> @returns + +--- + +### burnToken + +```Rust +fn burnToken!(address:Address, tokenId:ByteVec, amount:U256) -> () +``` + +Burns token from the input assets of the function. + +> @param **address** *the address to burn token from* +> +> @param **tokenId** *the token to be burnt* +> +> @param **amount** *the amount of token to be burnt* +> +> @returns + +--- + +### lockApprovedAssets + +```Rust +fn lockApprovedAssets!(address:Address, timestamp:U256) -> () +``` + +Locks the current approved assets. + +> @param **address** *the address to lock assets to* +> +> @param **timestamp** *the timestamp that the assets will be locked until* +> +> @returns + +--- + +## Utils Functions +--- +### assert + +```Rust +fn assert!(condition:Bool, errorCode:U256) -> () +``` + +Tests the condition or checks invariants. + +> @param **condition** *the condition to be checked* +> +> @param **errorCode** *the error code to throw if the check fails* +> +> @returns + +--- + +### checkCaller + +```Rust +fn checkCaller!(condition:Bool, errorCode:U256) -> () +``` + +Checks conditions of the external caller of the function. + +> @param **condition** *the condition to be checked* +> +> @param **errorCode** *the error code to throw if the check fails* +> +> @returns + +--- + +### isAssetAddress + +```Rust +fn isAssetAddress!(address:Address) -> (Bool) +``` + +Returns whether an address is an asset address. + +> @param **address** *the input address to be tested* +> +> @returns *true if the address is an asset address, false otherwise* + +--- + +### isContractAddress + +```Rust +fn isContractAddress!(address:Address) -> (Bool) +``` + +Returns whether an address is a contract address. + +> @param **address** *the input address to be tested* +> +> @returns *true if the address is a contract address, false otherwise* + +--- + +### zeros + +```Rust +fn zeros!(n:U256) -> (ByteVec) +``` + +Returns a ByteVec of zeros. + +> @param **n** *the number of zeros* +> +> @returns *a ByteVec of zeros* + +--- + +### panic + +```Rust +fn panic!(errorCode?: U256) -> (Never) +``` + +Terminates the application immediately. + +> @param **errorCode** *(optional) the error code to be thrown when the panic!(...) is called* +> +> @returns + +--- + +### mulModN + +```Rust +fn mulModN!(x:U256, y:U256, n:U256) -> (U256) +``` + +Returns compute the x * y % n. + +> @param **x** *x* +> +> @param **y** *y* +> +> @param **n** *n* +> +> @returns *compute the x * y % n* + +--- + +### addModN + +```Rust +fn addModN!(x:U256, y:U256, n:U256) -> (U256) +``` + +Returns compute the (x + y) % n. + +> @param **x** *x* +> +> @param **y** *y* +> +> @param **n** *n* +> +> @returns *compute the (x + y) % n* + +--- + +### u256Max + +```Rust +fn u256Max!() -> (U256) +``` + +Returns the max value of U256. + +> @returns *the max value of U256* + +--- + +### i256Max + +```Rust +fn i256Max!() -> (I256) +``` + +Returns the max value of I256. + +> @returns *the max value of I256* + +--- + +### i256Min + +```Rust +fn i256Min!() -> (I256) +``` + +Returns the min value of I256. + +> @returns *the min value of I256* + +--- + +### nullContractAddress + +```Rust +fn nullContractAddress!() -> (Address) +``` + +Returns the null contract address with contract id being zeros. + +> @returns *the null contract address with contract id being zeros* + +--- + +## Chain Functions +--- +### networkId + +```Rust +fn networkId!() -> (ByteVec) +``` + +Returns the network id (a single byte). + +> @returns *the network id (a single byte)* + +--- + +### blockTimeStamp + +```Rust +fn blockTimeStamp!() -> (U256) +``` + +Returns the block timestamp. + +> @returns *the block timestamp* + +--- + +### blockTarget + +```Rust +fn blockTarget!() -> (U256) +``` + +Returns the block difficulty target. + +> @returns *the block difficulty target* + +--- + +### txId + +```Rust +fn txId!() -> (ByteVec) +``` + +Returns the current transaction id. + +> @returns *the current transaction id* + +--- + +### txInputAddress + +```Rust +fn txInputAddress!(txInputIndex:U256) -> (Address) +``` + +Returns the n-th transaction input address. + +> @param **txInputIndex** *the index of the transaction input* +> +> @returns *the n-th transaction input address* + +--- + +### txInputsSize + +```Rust +fn txInputsSize!() -> (U256) +``` + +Returns the number of transaction inputs. + +> @returns *the number of transaction inputs* + +--- + +### txGasPrice + +```Rust +fn txGasPrice!() -> (U256) +``` + +Returns the current transaction gas price. + +> @returns *the current transaction gas price* + +--- + +### txGasAmount + +```Rust +fn txGasAmount!() -> (U256) +``` + +Returns the current transaction gas amount. + +> @returns *the current transaction gas amount* + +--- + +### txGasFee + +```Rust +fn txGasFee!() -> (U256) +``` + +Returns the current transaction gas fee. + +> @returns *the current transaction gas fee* + +--- + +### verifyAbsoluteLocktime + +```Rust +fn verifyAbsoluteLocktime!(lockUntil:U256) -> () +``` + +Verifies that the absolute locktime is before the block timestamp, otherwise it fails. + +> @param **lockUntil** *the timestamp until which the lock is valid* +> +> @returns + +--- + +### verifyRelativeLocktime + +```Rust +fn verifyRelativeLocktime!(txInputIndex:U256, lockDuration:U256) -> () +``` + +Verifies that the input's creation timestamp + lock duration is before the block timestamp, otherwise it fails. + +> @param **txInputIndex** *the index of the transaction input* +> +> @param **lockDuration** *the duration that the input is locked for* +> +> @returns + +--- + +### dustAmount + +```Rust +fn dustAmount!() -> (U256) +``` + +Returns the dust amount of an UTXO. + +> @returns *the dust amount of an UTXO* + +--- + +## Conversion Functions +--- +### toI256 + +```Rust +fn toI256!(from:U256) -> (I256) +``` + +Converts U256 to I256. + +> @param **from** *a U256 to be converted* +> +> @returns *a I256* + +--- + +### toU256 + +```Rust +fn toU256!(from:I256) -> (U256) +``` + +Converts I256 to U256. + +> @param **from** *a I256 to be converted* +> +> @returns *a U256* + +--- + +### toByteVec + +```Rust +fn toByteVec!(from:Bool|I256|U256|Address) -> (ByteVec) +``` + +Converts Bool/I256/U256/Address to ByteVec + +> @param **from** *a Bool|I256|U256|Address to be converted* +> +> @returns *a ByteVec* + +--- + +### contractIdToAddress + +```Rust +fn contractIdToAddress!(contractId:ByteVec) -> (Address) +``` + +Converts contract id (ByteVec) to contract address (Address). + +> @param **contractId** *the input contract id* +> +> @returns *a contract Address* + +--- + +### addressToContractId + +```Rust +fn addressToContractId!(contractAddress:Address) -> (ByteVec) +``` + +Converts contract address (Address) to contract id (ByteVec) + +> @param **contractAddress** *the input contract address* +> +> @returns *a contract id* + +--- + +### byteVecToAddress + +```Rust +fn byteVecToAddress!(bytes:ByteVec) -> (Address) +``` + +Converts ByteVec to Address. + +> @param **bytes** *the input ByteVec* +> +> @returns *an Address* + +--- + +### u256To1Byte + +```Rust +fn u256To1Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 1 byte. + +> @param **u256** *the input U256* +> +> @returns *1 byte* + +--- + +### u256To2Byte + +```Rust +fn u256To2Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 2 big-endian bytes. + +> @param **u256** *the input U256* +> +> @returns *2 bytes* + +--- + +### u256To4Byte + +```Rust +fn u256To4Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 4 big-endian bytes. + +> @param **u256** *the input U256* +> +> @returns *4 bytes* + +--- + +### u256To8Byte + +```Rust +fn u256To8Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 8 big-endian bytes. + +> @param **u256** *the input U256* +> +> @returns *8 bytes* + +--- + +### u256To16Byte + +```Rust +fn u256To16Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 16 big-endian bytes. + +> @param **u256** *the input U256* +> +> @returns *16 bytes* + +--- + +### u256To32Byte + +```Rust +fn u256To32Byte!(u256:U256) -> (ByteVec) +``` + +Converts U256 to 32 big-endian bytes. + +> @param **u256** *the input U256* +> +> @returns *32 bytes* + +--- + +### u256ToString + +```Rust +fn u256ToString!(u256:U256) -> (ByteVec) +``` + +Converts U256 to string in ByteVec. + +> @param **u256** *the input U256* +> +> @returns *Converted string in ByteVec* + +--- + +### i256ToString + +```Rust +fn i256ToString!(i256:I256) -> (ByteVec) +``` + +Converts I256 to string in ByteVec. + +> @param **i256** *the input I256* +> +> @returns *Converted string in ByteVec* + +--- + +### boolToString + +```Rust +fn boolToString!(bool:Bool) -> (ByteVec) +``` + +Converts Bool to string in ByteVec. + +> @param **bool** *the input Bool* +> +> @returns *Converted string in ByteVec* + +--- + +### u256From1Byte + +```Rust +fn u256From1Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 1 byte to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +### u256From2Byte + +```Rust +fn u256From2Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 2 big-endian bytes to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +### u256From4Byte + +```Rust +fn u256From4Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 4 big-endian bytes to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +### u256From8Byte + +```Rust +fn u256From8Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 8 big-endian bytes to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +### u256From16Byte + +```Rust +fn u256From16Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 16 big-endian bytes to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +### u256From32Byte + +```Rust +fn u256From32Byte!(bytes:ByteVec) -> (U256) +``` + +Converts 32 big-endian bytes to U256. + +> @param **bytes** *the input ByteVec* +> +> @returns *an U256* + +--- + +## ByteVec Functions +--- +### size + +```Rust +fn size!(bytes:ByteVec) -> (U256) +``` + +Returns the size of the ByteVec. + +> @param **bytes** *a ByteVec* +> +> @returns *the size of the ByteVec* + +--- + +### byteVecSlice + +```Rust +fn byteVecSlice!(bytes:ByteVec, from:U256, until:U256) -> (ByteVec) +``` + +Selects an interval of bytes. + +> @param **bytes** *a ByteVec* +> +> @param **from** *the lowest index to include from the ByteVec* +> +> @param **until** *the lowest index to exclude from the ByteVec* +> +> @returns *a ByteVec containing the elements greater than or equal to index from extending up to (but not including) index until of this ByteVec* + +--- + +### encodeToByteVec + +```Rust +fn encodeToByteVec!(...any) -> (ByteVec) +``` + +Encodes inputs as big-endian ByteVec. + +> @param **any** *a sequence of input values* +> +> @returns *a ByteVec encoding the inputs* + +--- + +## Cryptography Functions +--- +### blake2b + +```Rust +fn blake2b!(data:ByteVec) -> (ByteVec) +``` + +Computes the Blake2b-256 hash of the input. + +> @param **data** *the input data to be hashed* +> +> @returns *the 32 bytes hash result* + +--- + +### keccak256 + +```Rust +fn keccak256!(data:ByteVec) -> (ByteVec) +``` + +Computes the Keccak256 hash of the input. + +> @param **data** *the input data to be hashed* +> +> @returns *the hash result* + +--- + +### sha256 + +```Rust +fn sha256!(data:ByteVec) -> (ByteVec) +``` + +Computes the Sha256 hash of the input. + +> @param **data** *the input data to be hashed* +> +> @returns *the hash result* + +--- + +### sha3 + +```Rust +fn sha3!(data:ByteVec) -> (ByteVec) +``` + +Computes the Sha3 hash of the input. + +> @param **data** *the input data to be hashed* +> +> @returns *the hash result* + +--- + +### verifyTxSignature + +```Rust +fn verifyTxSignature!(publicKey:ByteVec) -> () +``` + +Verifies the transaction SecP256K1 signature of a public key. The signature is signed against the transaction id. + +> @param **publicKey** *the public key (33 bytes) of the signer* +> +> @returns + +--- + +### getSegregatedSignature + +```Rust +fn getSegregatedSignature!() -> (ByteVec) +``` + +The segregated signature of the transaction + +> @returns *the segregated signature of the transaction* + +--- + +### verifySecP256K1 + +```Rust +fn verifySecP256K1!(data:ByteVec, publicKey:ByteVec, signature:ByteVec) -> () +``` + +Verifies the SecP256K1 signature of the input and public key. + +> @param **data** *the data (32 bytes) that was supposed to have been signed* +> +> @param **publicKey** *the public key (33 bytes) of the signer* +> +> @param **signature** *the signature (64 bytes) value* +> +> @returns + +--- + +### verifyED25519 + +```Rust +fn verifyED25519!(data:ByteVec, publicKey:ByteVec, signature:ByteVec) -> () +``` + +Verifies the ED25519 signature of the input and public key. + +> @param **data** *the data (32 bytes) that was supposed to have been signed* +> +> @param **publicKey** *the public key (32 bytes) of the signer* +> +> @param **signature** *the signature value (64 bytes)* +> +> @returns + +--- + +### verifyBIP340Schnorr + +```Rust +fn verifyBIP340Schnorr!(data:ByteVec, publicKey:ByteVec, signature:ByteVec) -> () +``` + +Verifies the BIP340 Schnorr signature of the input and public key. + +> @param **data** *the data (32 bytes) that was supposed to have been signed* +> +> @param **publicKey** *the public key (32 bytes) of the signer* +> +> @param **signature** *the signature value (64 bytes)* +> +> @returns + +--- + +### ethEcRecover + +```Rust +fn ethEcRecover!(data:ByteVec, signature:ByteVec) -> (ByteVec) +``` + +Recovers the ETH account that signed the data. + +> @param **data** *the data that was supposed to have been signed* +> +> @param **signature** *the signature value* +> +> @returns *the ETH account that signed the data* + +--- + diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/ralph/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/getting-started.md new file mode 100644 index 00000000..52556509 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/getting-started.md @@ -0,0 +1,771 @@ +--- +sidebar_position: 10 +title: Başlarken +sidebar_label: Başlarken +--- + +## Giriş + +Ralph, güvenlik, basitlik ve verimlilik olmak üzere üç ana hedefe odaklanan Alephium blockchain için akıllı sözleşme programlama dilidir. Bu öğretici, temiz, idiyomatik ve güvenli Ralph akıllı sözleşmeleri yazma ipuçları sağlar. Ralph tasarlarken aşağıdaki prensipleri takip ediyoruz: +1. Akıllı sözleşme DSL'ini mümkün olduğunca basit tutun. +2. Yapılacak tek ve tercihen açık bir yol olmalıdır. +3. İyi uygulamaları yerleşik hale getirin. + +## Türler + +Ralph, statik bir tipli dil olmasına rağmen, yerel değişkenler ve sabitler için tip belirtmenize gerek yoktur, çünkü tür çıkarımına sahiptir. +Ralph'ın tüm türleri değer türleridir, yani işlev argümanları olarak veya atanırken her zaman kopyalanırlar. +Şu anda, Ralph yalnızca aşağıdaki veri türlerini destekler: + +:::info +Türlerin ve fonksiyon tiplerinin çevirisi yapılmamıştır, çünkü Ralph'ın türleri ve fonksiyonları genellikle İngilizce'de kullanılan terimlerdir. +::: + +### Primitive Types + +#### U256 + +```rust +// The type of `a` ... `d` is U256. +let a = 10 +let b = 10u +let c = 1_000_000_000 +let d = 1e18 +``` + +#### I256 + +```rust +// The type of `a` ... `d` is I256. +let a = -10 +let b = 10i +let c = -1_000_000_000 +let d = -1e18 +``` + +#### Bool + +```rust +// The type fo `a` and `b` is Bool. +let a = false +let b = true +``` + +#### ByteVec + +```rust +// ByteVec literals must start with `#` followed by a hex string. +let a = #00112233 +// ByteVec concatenation +let b = #0011 ++ #2233 // `b` is #00112233 +// Empty ByteVec +let c = # +``` + +#### Address + +```rust +// Address literals must start with `@` followed by a valid base58 encoded Alephium address. +let a = @1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH +``` + +#### String + +Ralph does not have a native type for strings, but you can define string literals which are encoded in `ByteVec`. + +```rust +// String literals starts with `b`. +let a = b`Hello` +let b = b`World` +let c = a ++ b` ` ++ b +``` + +### Fixed Size Array + +The syntax for fixed-size arrays is influenced by Rust. + +```rust +// The type of `a0` is [U256; 4] +let a0 = [0, 1, 2, 3] + +// The type of `a1` is [[U256, 2]; 2] +let a1 = [[0, 1], [2, 3]] + +// The type of `a2` is [I256; 3] +let a2 = [0i; 3] + +// The type of `a3` is [ByteVec; 4] +let a3 = [#00, #11, #22, #33] +``` + +### Mapping + +Ralph uses [subcontract](/ralph/getting-started#subcontract) instead of map-like data structure to provide map-like functionality and mitigate the state bloat issue. + +### Struct + +Currently, Ralph does not support user-defined data types, but it will be supported in the future. + +## Functions + +Functions are the executable units of code, you can also define functions inside a contract. + +### Function Signatures + +```rust +// Public function, which can be called by anyone +pub fn foo() -> () + +// Private function, which can only be called inside the contract +fn foo() -> () + +// Function takes 1 parameter and has no return values +fn foo(a: U256) -> () + +// Function takes 2 parameters and returns 1 value +fn foo(a: U256, b: Boolean) -> U256 + +// Function takes 2 parameters and returns multiple values +fn foo(a: U256, b: Boolean) -> (U256, ByteVec, Address) +``` + +### Local Variables + +A function cannot have duplicate variable definitions, and the variable name in the function cannot be the same as the contract field name. + +```rust +fn foo() -> () { + // `a` is immutable, and it cannot be reassigned + let a = 10 + a = 9 // ERROR + + // `b` is mutable, and it can be reassigned + let mut b = 10 + b = 9 +} + +fn bar() -> (U256, Boolean) { + return 1, false +} + +fn baz() -> () { + // Both `a` and `b` are immutable + let (a, b) = bar() + // `c` is immutable, but `d` is mutable + let (c, mut d) = bar() + // Ignore the first return value of the function `bar` + let (_, e) = bar() +} +``` + +### Control Structures + +#### Return statements + +```rust +fn foo() -> (U256, Boolean, ByteVec) { + return 1, false, #00 +} +``` + +#### If-else statements/expressions + +```rust +fn foo() -> ByteVec { + // If else statement + if (a == 0) { + return #00 + } else if (a == 1) { + return #01 + } else { + return #02 + } +} + +fn foo() -> ByteVec { + return if (a == 0) #00 else if (a == 1) #01 else #02 +} +``` + +#### For loop + +```rust +// For loop +fn foo() -> () { + for (let mut index = 0; index <= 4; index = index + 1) { + bar(index) + } +} +``` + +#### While loop + +```rust +// While loop +fn foo() -> () { + let mut index = 0 + while (index <= 4) { + bar(index) + index += 1 + } +} +``` + +:::note +`break` and `continue` statements are not supported in `for-loop` and `while-loop` because they may be bad practice in some cases. It's recommended to replace them with early `return` or [assert function](/ralph/built-in-functions#assert). +::: + +:::note +In Ralph, each function has only one scope, so you can not define duplicated variables in the `while` or `for` block: + +```rust +let value = 0 +while (true) { + let value = 0 // ERROR, duplicated variable definitions + // ... +} +``` +This is an on-purpose design since variable shadowing is generally not a good practice. +::: + +### Error Handling + +Ralph provides two builtin assertion functions for error handling: [assert!](/ralph/built-in-functions#assert) and [panic!](/ralph/built-in-functions#panic). Assertion failure will revert all changes made to the world state by the transaction and stop the execution of the transaction immediately. + +```rust +enum ErrorCodes { + InvalidContractState = 0 +} + +fn foo(cond: Boolean) -> () { + // It will stop the transaction if `cond` is false. + // The Alephium client will return the error code if the transaction fails. + assert!(cond, ErrorCodes.InvalidContractState) +} + +fn bar(cond: Boolean) -> U256 { + if (!cond) { + // The difference between `panic!` and `asset!` is that the return type of `panic!` is bottom type + panic!(ErrorCodes.InvalidContractState) + } + return 0 +} +``` + +### Function Calls + +Functions of the current contract can be called directly ('internally') or recursively: + +```rust +Contract Foo() { + fn foo(v: U256) -> () { + if (v == 0) { + return + } + // Internal function call + bar() + // Recursive function call + foo(v - 1) + } + + fn bar() -> () { + // ... + } +} +``` + +Functions can also be called externally using the `bar.func()` notation, where `bar` is a contract instance and `func` is a function belonging to `bar`: + +```rust +Contract Bar() { + pub fn func() -> U256 { + // ... + } +} + +Contract Foo() { + pub fn foo() -> () { + // Instantiate the contract from contract id + let bar = Bar(#15be9537456726c336a3cd1aa36074759c457f151ac253a500085920afe3838a) + // External call + let a = bar.func() + // ... + } +} +``` + +### Builtin Functions + +Ralph provides lots of builtin functions, you can refer to [here](/ralph/built-in-functions). + +### Annotations + +The Ralph function also supports annotations, currently the only valid annotation is the `@using` annotation, and user-defined annotations will be supported in the future if necessary. + +The `@using` annotation has four optional fields: + +* `preapprovedAssets = true/false`: whether the function uses user-approved assets. The default value is `false` for contracts, `true` for scripts. +* `assetsInContract = true/false`: whether the function uses contract assets. The default value is `false` for contracts +* `checkExternalCaller = true/false`: whether the function checks the caller. The default value is `true` for contracts +* `updateFields = true/false`: whether the function changes contract fields. The default value is `false` for contracts + +#### Using Approved Assets + +In Ralph, if a function uses assets, then the caller needs to explicitly approve assets. And all functions in the call stack must be annotated with `@using(preapprovedAssets = true)`. + +```rust +Contract Foo() { + // Function `foo` uses approved assets, and it will transfer 1 ALPH and 1 token to the contract from the `caller` + @using(preapprovedAssets = true) + fn foo(caller: Address, tokenId: ByteVec) -> () { + transferAlphToSelf!(caller, 1 alph) + transferTokenToSelf!(caller, tokenId, 1) + } + + @using(preapprovedAssets = true) + fn bar(caller: Address, tokenId: ByteVec) -> () { + // We need to explicitly approve assets when calling function `foo` + foo{caller -> 1 alph, tokenId: 1}(caller, tokenId) + // ... + } +} +``` + +For the `preapprovedAssets` annotation, the compiler will do the following checks: + +1. If a function is annotated `preapprovedAssets = true` but don't use the braces syntax, the compiler will report an error +2. If a function call uses the braces syntax but the function is not annotated `preapprovedAssets = true`, the compiler will report an error + +#### Using Contract Assets + +```rust +Contract Foo() { + // Function `foo` uses the contract assets, and it will transfer 1 alph to the caller + @using(assetsInContract = true) + fn foo(caller: Address) -> () { + transferAlphFromSelf!(caler, 1 alph) + } + + // Function `bar` must NOT be annotated with `@using(assetsInContract = true)` + // because the contract assets will be removed after use + fn bar(caller: Address) -> () { + // ... + foo(caller) + } +} +``` + +For the `assetsInContract` annotation, the compiler will do the following checks: + +1. If a function is annotated `assetsInContract = true` but does not use contract assets, the compiler will report an error + +You can find more information about asset permission at [here](/ralph/asset-permission-system). + +#### Update Fields + +Functions that update fields will change the current contract fields. If a function changes the contract fields but without the `@using(updateFields = true)` annotation, the compiler will report a warning; if a function does not change the contract fields but annotated with `@using(updateFields = true)`, the compiler will report a warning as well. + +```rust +Contract Foo(a: U256, mut b: Boolean) { + // Function `f0` does not changes the contract fields + fn f0() -> U256 { + return a + } + + // Function `f1` changes the contract fields + @using(updateFields = true) + fn f1() -> () { + b = false + } + + // Function f2 calls function f1, even if function f1 changes the contract fields, + // function f2 still does not need to be annotated with `@using(updateFields = true)`, + // because function f2 does not directly change the contract fields + fn f2() -> () { + f1() + } +} +``` + +#### Check External Caller + +In smart contracts, we often need to check whether the caller of the contract function is authorized. To avoid bugs caused by unauthorized callers, the compiler will report warnings for all public functions that do not check for external callers. The warning can be suppressed with annotation `@using(checkExternalCaller = false)`. + +The compiler will skip the checking for simple view functions. A simple view function must satisfy all of the following conditions: + +1. It cannot change the contract fields. +2. It cannot use any assets. +3. All sub-function calls must also be simple view functions. + +To check the caller of a function, the built-in function [checkCaller!](/ralph/built-in-functions#checkcaller) has to be used. + +```rust +Contract Foo(barId: ByteVec, mut b: Boolean) { + enum ErrorCodes { + InvalidCaller = 0 + } + + // We don't need to add the `@using(checkExternalCaller = true)` because + // the `checkExternalCaller` is true by default for public functions. + pub fn f0() -> () { + // The `checkCaller!` built-in function is used to check if the caller is valid. + checkCaller!(callerContractId!() == barId, ErrorCodes.InvalidCaller) + b = !b + // ... + } + + // The compiler will report warnings for the function `f1` + pub fn f1() -> () { + b = !b + // ... + } + + // Function `f2` is a simple view function, we don't need to add the + // `using(checkExternalCaller = false)` for simple view functions. + pub fn f2() -> ByteVec { + return barId + } + + // The compiler will NOT report warnings because we checked the caller in function`f4`. + pub fn f3() -> () { + f4(callerContractId!()) + // ... + } + + fn f4(callerContractId: ByteVec) -> () { + checkCaller!(callerContractId == barId, ErrorCodes.InvalidCaller) + // ... + } +} +``` + +There is another scenario where the compiler will report warnings if a contract calls a function through an interface, this is because we do not know if the implementation of the function needs to check the external caller: + +```rust +Interface Bar() { + pub fn bar() -> () +} + +Contract Foo() { + // The compiler will report warnings for the function `Foo.foo` + pub fn foo(barId: ByteVec) -> () { + Bar(barId).bar() + } +} +``` + +## Contracts + +:::info +Each Alephium's contract has 3 forms of unique identification: +1. **Address**: each contract has a unique address +2. **Contract ID**: each contract has a unique contract ID +3. **Token ID**: each contract can issue a token with the same ID as its own contract ID + +In Ralph, the contract ID is used more frequently. Contract ids can be converted from/to other forms with Ralph's built-in functions or web3 SDK. +::: + +Contracts in Ralph are similar to classes in object-oriented languages. Each contract can contain declarations of contract fields, events, constants, enums, and functions. All these declarations must be inside a contract. Furthermore, contracts can inherit from other contracts. + +```rust +// This is a comment, and currently Ralph only supports line comments. +// Contract should be named in upper camel case. +// Contract fields are permanently stored in the contract storage. +Contract MyToken(supply: U256, name: ByteVec) { + + // Events should be named in upper camel case. + // Events allow for logging of activities on the blockchain. + // Applications can listen to these events through the REST API of an Alephium client. + event Transfer(to: Address, amount: U256) + + // Constant variables should be named in upper camel case. + const Version = 0 + + // Enums can be used to create a finite set of constant values. + enum ErrorCodes { + // Enum constants should be named in upper camel case. + InvalidCaller = 0 + } + + // Functions, parameters, and local variables should be named in lower camel case. + pub fn transferTo(toAddress: Address) -> () { + let payloadId = #00 + // ... + } +} +``` + +### Fields + +Contract fields are permanently stored in the contract storage, and the fields can be changed by the contract code. Applications can get the contract fields through the REST API of an Alephium client. + +```rust +// Contract `Foo` has two fields: +// `a`: immutable, it can not be changed by the contract code +// `b`: mutable, it can be changed by the contract code +Contract Foo(a: U256, mut b: Boolean) { + // ... +} + +// Contract fields can also be other contract. +// It will store the contract id of `Bar` in the contract storage of `Foo`. +Contract Foo(bar: Bar) { + // ... +} + +Contract Bar() { + // ... +} +``` + +### Contract Built-In Functions + +Sometimes we need to create a contract within a contract, and in such cases, we need to encode the contract fields into `ByteVec`. Ralph provides a built-in function called `encodeFields` that can be used to encode the contract fields into `ByteVec`. + +The parameter type of the `encodeFields` function is a list of the types of the contract fields, arranged in the order of their definitions. And the function returns two `ByteVec` values, where the first one is the encoded immutable fields, and the second one is the encoded mutable fields. + +There is an example: + +```rust +Contract Foo(a: U256, mut b: I256, c: ByteVec, mut d: Bool) { + // functions +} + +Contract Bar() { + @using(preapprovedAssets = true) + fn createFoo(caller: Address, fooBytecode: ByteVec, a: U256, b: I256, c: ByteVec, d: Bool) -> (ByteVec) { + let (encodedImmFields, encodedMutFields) = Foo.encodeFields!(a, b, c, d) + return createContract!{caller -> 1 alph}(fooBytecode, encodedImmFields, encodedMutFields) + } +} +``` + +### Events + +Events are dispatched signals that contracts can fire. Applications can listen to these events through the REST API of an Alephium client. + +```rust +Contract Token() { + // The number of event fields cannot be greater than 8 + event Transfer(to: Address, amount: U256) + + @using(assetsInContract = true) + pub fn transfer(to: Address) -> () { + transferTokenFromSelf!(selfTokenId!(), to, 1) + // Emit the event + emit Transfer(to, 1) + } +} +``` + +### SubContract + +Alephium's virtual machine supports subcontract. Subcontracts can be used as map-like data structure but they are less prone to the state bloat issue. A subcontract can be created by a parent contract with a unique subcontract path. + +```rust +Contract Bar(value: U256) { + pub fn getValue() -> U256 { + return value + } +} + +Contract Foo(barTemplateId: ByteVec) { + event SubContractCreated(key: U256, contractId: ByteVec) + + @using(preapprovedAssets = true, checkExternalCaller = false) + pub fn set(caller: Address, key: U256, value: U256) -> () { + let path = toByteVec!(key) + let (encodedImmFields, encodedMutFields) = Bar.encodeFields!(value) // Contract `Bar` has only one field + // Create a sub contract from the given key and value. + // The sub contract id is `blake2b(blake2b(selfContractId!() ++ path))`. + // It will fail if the sub contract already exists. + let contractId = copyCreateSubContract!{caller -> ALPH: 1 alph}( + path, + barTemplateId, + encodedImmFields, + encodedMutFields + ) + emit SubContractCreated(key, contractId) + } + + pub fn get(key: U256) -> U256 { + let path = toByteVec!(key) + // Get the sub contract id by the `subContractId!` built-in function + let contractId = subContractId!(path) + return Bar(contractId).getValue() + } +} +``` + +### Contract Creation inside a Contract + +Ralph supports creating contracts programmatically within contracts, Ralph provides some builtin functions to create contracts, you can find more information at [here](/ralph/built-in-functions#contract-functions). + +If you want to create multiple instances of a contract, then you should use the `copyCreateContract!` builtin functions, which will reduce a lot of on-chain storage and transaction gas fee. + +```rust +Contract Foo(a: ByteVec, b: Address, mut c: U256) { + // ... +} + +// We want to create multiple instances of contract `Foo`. +// First we need to deploy a template contract of `Foo`, which contract id is `fooTemplateId`. +// Then we can use `copyCreateContract!` to create multiple instances. +TxScript CreateFoo(fooTemplateId: ByteVec, a: ByteVec, b: Address, c: U256) { + let (encodedImmFields, encodedMutFields) = Foo.encodeFields!(a, b, c) + copyCreateContract!(fooTemplateId, encodedImmFields, encodedMutFields) +} +``` + +### Migration + +Alephium's contracts can be upgraded with two migration functions: [migrate!](/ralph/built-in-functions#migrate) and [migrateWithFields!](/ralph/built-in-functions#migratewithfields). Here are the three typical ways to use them: + +```Rust +fn upgrade(newCode: ByteVec) -> () { + checkOwner(...) + migrate!(newCode) +} + +fn upgrade(newCode: ByteVec, newImmFieldsEncoded: ByteVec, newMutFieldsEncoded: ByteVec) -> () { + checkOwner(...) + migrateWithFields!(newCode, newImmFieldsEncoded, newMutFieldsEncoded) +} + +fn upgrade(newCode: ByteVec) -> () { + checkOwner(...) + let (newImmFieldsEncoded, newMutFieldsEncoded) = ContractName.encodeFields!(newFields...) + migrateWithFields!(newCode, newImmFieldsEncoded, newMutFieldsEncoded) +} +``` + +## Inheritance + +Ralph also supports multiple inheritance, when a contract inherits from other contracts, only a single contract is created on the blockchain, and the code from all the parent contracts is compiled into the created contract. + +```rust +Abstract Contract Foo(a: U256) { + pub fn foo() -> () { + // ... + } +} + +Abstract Contract Bar(b: ByteVec) { + pub fn bar() -> () { + // ... + } +} + +// The field name of the child contract must be the same as the field name of parnet contracts. +Contract Baz(a: U256, b: ByteVec) extends Foo(a), Bar(b) { + pub fn baz() -> () { + foo() + bar() + } +} +``` + +:::note +In Ralph, abstract contracts are not instantiable, which means the following code is invalid: + +```rust +let bazId = // The contract id of `Baz` +Foo(bazId).foo() // ERROR +``` +::: + +## Interface + +Interfaces are similar to abstract contracts with the following restrictions: + +* They cannot have any functions implemented. +* They cannot inherit from other contracts, but they can inherit from other interfaces. +* They cannot declare contract fields. +* Contracts can only implements one interface. + +```rust +Interface Foo { + event E(a: U256) + + @using(assetsInContract = true) + pub fn foo() -> () +} + +Interface Bar extends Foo { + pub fn bar() -> U256 +} + +Contract Baz() implements Bar { + // The function signature must be the same as the function signature declared in the interface. + @using(assetsInContract = true) + pub fn foo() -> () { + // Inherit the event from `Foo` + emit E(0) + // ... + } + + pub fn bar() -> U256 { + // ... + } +} +``` + +And you can instantiate a contract with interface: + +```rust +let bazId = // The contract id of `Baz` +Foo(bazId).foo() +let _ = Bar(bazId).bar() +``` + +The reason why a contract can only implement one interface in Ralph is that, when calling contract methods, Ralph uses method indices to load and call contract methods. +If we allow a contract to implement multiple interface, calling contract methods through the interface may result in using the wrong method index. For example: + +``` +Interface Foo { + pub fn foo() -> (); +} + +Interface Bar { + pub fn bar() -> (); +} + +Contract Baz() implements Foo, Bar { + pub fn foo() -> () {} + pub fn bar() -> () {} +} +``` + +In this case, both `Foo(bazContractId).foo()` and `Bar(bazContractId).bar()` would use method index 0 to call the `Baz` contract. + +:::note +Deploying a contract requires depositing a certain amount of ALPH in the contract(currently 1 alph), so creating a large number of sub-contracts is not practical. +::: + +## TxScript + +A transaction script is a piece of code to interact with contracts on the blockchain. Transaction scripts can use the input assets of transactions in general. A script is disposable and will only be executed once along with the holder transaction. + +```rust +Contract Foo() { + pub fn foo(v: U256) -> () { + // ... + } +} + +// The `preapprovedAssets` is true by default for `TxScript`. +// We set the `preapprovedAssets` to false because the script does not need assets. +@using(preapprovedAssets = false) +// `TxScript` fields are more like function parameters, and these +// fields need to be specified every time the script is executed. +TxScript Main(fooId: ByteVec) { + // The body of `TxScript` consists of statements + bar() + Foo(fooId).foo(0) + + // You can also define functions in `TxScript` + fn bar() -> () { + // ... + } +} +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/ralph/language-reference.md.drop b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/language-reference.md.drop new file mode 100644 index 00000000..2ac10603 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/ralph/language-reference.md.drop @@ -0,0 +1,123 @@ +--- +sidebar_position: 10 +title: Ralph Language Reference +sidebar_label: Ralph language reference +--- + +:::caution +This page is WIP until our dApps stack is more stable 🚧. +::: + +A reference for the Ralph smart contract language. + +## Notation used in this document + +`` just means you replace it with the appropriately described text. For +example, `` means type a literal number value: 6, 7, 44, etc. + +`[thing]` means the text is optional unless otherwise specified (like array syntax). + +## Primitive types + +Ralph has a nice small core of primitives. + +| Type | Constructor | +| ---------------: | ------------------------------------------------------------------------------------------------------------- | +| **()** | None (a return statement with nothing) | +| **Bool** | false, true, <, >, >=, <=, ==, !=, &&, ||, ! | +| **I256** | -<number>, <number>i, +, -, \*, /, %, ⊕, ⊖, ⊗, <<, >>, >, ^, | | +| **U256** |  <number>, <number>u, +, -, \*, /, %, ⊕, ⊖, ⊗, <<, >>, >, ^, | | +| **Address** | `@
`, `nullAddress!()` | +| **ByteVec** | `#, ++` | +| **[type; size]** | `[]`, type example: `[Address; 6]` | + +You'll notice there is no `String` type. Instead the `ByteVec` type can be used +to hold onto textual data, or a `[U256; N]` array if you need to modify it. + +:::note +For numbers you can also use the following: + +- 1_000_000_000 +- 0.000_001 +- 1e18 +- 1e-18 +- 1_000e9 + +::: + +## Syntax + +Ralph as you'll soon learn is a simple language. So simple that it can be summed +up in this table below, which presents various mechanisms which are normally +available in programming languages. + +:::note +**Ralph does not use semi-colons!** It can be easy to accidentally add them due +to muscle memory. +::: + +| Token | Constructor | +| --------------: | ---------------------------------------------------------------------------------- | +| **Comment** | `//` | +| **Assignment** | `let [mut] = ...` | +| **Assignment** | ` = ` or `(, ) = funcMultipleRetVals()` | +| **Function** | `[pub] [payable] fn (arg: ) -> { return }` | +| **Conditional** | `if { } [else if { } else { ... }]` | +| **Iteration** | `while { }` | +| **Event** | `event (field1: , field2: , fieldN: , ...)` | +| **Event** | `emit (, , , ...)` | +| **Structure** | `interface { ... }` | +| **Structure** | `Contract ContractName([mut] fieldN: ) [extends ] { ... }` | +| **Structure** | `TxScript ([mut] fieldN: ) { ... }` | + +### Interfaces, Contracts, and TxScripts + +Below is a "code template" of the general structure of what smart contracts will +look like. They take on a class-like appearance, similar to JavaScript, C#, and +other OOP languages. + +``` +// To create an interface: +interface InterfaceName { + event TupleName(field1: U256, field2: U256) + pub fn foo() -> () +} + +// To create a contract: +Contract ContractName([mut] arg1: , [mut] arg2: , ...etc) implements InterfaceName { + [@using(preapprovedAssets = , assetsInContract = )] + [pub] fn functionName(arg1: , ...etc) -> () { + return + } + + fn foo() { + emit TupleName(1, 2) + } +} + +// To invoke the contract: +TxScript ScriptNameCanBeAnything { + // Note this signature. It must be just like this. + [pub] [payable] fn main() -> () { + contract = ContractName(#) + result = contract.functionName(arg) + anotherFunc() + } + + fn anotherFunc() -> () { + ... + } +} +``` + +`pub` means the function can be called outside the contract / script. + +`@using` is a function annotation. + +To understand `preapprovedAssets` and `assetsInContract` please go read about +the [Asset Permission System](/dapps/Asset-Permission-System]. + +:::note +You can call contract methods right after the contract constructor, i.e. +`ContractName(...).function()`. +::: diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/fungible-tokens.md b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/fungible-tokens.md new file mode 100644 index 00000000..1ec735cf --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/fungible-tokens.md @@ -0,0 +1,121 @@ +--- +sidebar_position: 20 +title: Takas edilebilir Jetonlar +sidebar_label: Takas edilebilir Jetonlar +--- + +### Takas edilebilir Jetonl Standardı + +Alephium'da, yeni jetonlar yeni sözleşmeler yayımlandığında oluşturulabilir. Yeni oluşturulan jetonun kimliği, onu yayınlayan sözleşmenin kimliğiyle aynıdır. Bu konuda ayrıntılı bilgi için [bu kılavuzu](/dapps/build-dapp-from-scratch) inceleyebilirsiniz. + +Jetonlar genellikle `ad`, `ondalık`, `toplamArz` gibi bilgilerle ilişkilendirilir. Jeton standardının amacı, jeton yayımlama sözleşmesine kısıtlamalar getirerek dApp'lerin ve cüzdanların jeton türlerini kolayca çıkarmasını ve jeton bilgilerini almasını sağlamaktır. + +Standart [değiştirilebilir jeton arayüzü](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/fungible_token_interface.ral), jetonun `sembol`, `ad`, `ondalık` ve `toplamArz` bilgilerini almak için yöntemler tanımlar. Ayrıca, `@std` belirteci ile `#0001` kimliğiyle işaretlenmiştir: + +```rust +// Değiştirilebilir jetonlar için standart arayüz +@std(id = #0001) +Interface IFungibleToken { + pub fn getSymbol() -> ByteVec + pub fn getName() -> ByteVec + pub fn getDecimals() -> U256 + pub fn getTotalSupply() -> U256 +} + +// `IFungibleToken` arayüzünü uygulayan bir `TokenFaucet` sözleşmesi +Contract TokenFaucet( + symbol: ByteVec, + name: ByteVec, + decimals: U256, + supply: U256 +) implements IFungibleToken { + pub fn getTotalSupply() -> U256 { + return supply + } + + pub fn getSymbol() -> ByteVec { + return symbol + } + + pub fn getName() -> ByteVec { + return name + } + + pub fn getDecimals() -> U256 { + return decimals + } +} +``` + +Bir jeton sözleşmesi, yukarıdaki gibi +[IFungibleToken](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/fungible_token_interface.ral) +arayüzünü uyguladığında, SDK'nın bilgileri standart bir şekilde almasını sağlar: + +```typescript +// SDK'yı yöntemleri ayrı ayrı çağırmak için kullanın +const getDecimalResult = await tokenFaucet.methods.getDecimals() +const getTotalSupplyResult = await tokenFaucet.methods.getTotalSupply() +const getNameResult = await tokenFaucet.methods.getName() +console.log("TokenFaucet adı, ondalık, toplamArz", getNameResult.returns, getDecimalResult.returns, getTotalSupplyResult.returns) + +// SDK'yı aynı anda birden çok yöntemi çağırmak için kullanın +const multicallResult = await tokenFaucet.multicall({ + getDecimals: {}, + getTotalSupply: {}, + getName: {}, +}) +console.log("TokenFaucet adı, ondalık, toplamArz", multicallResult.getName.returns, multicallResult.getDecimal.returns, multicallResult.getTotalSupply.returns) +``` + +Aslında, SDK, bir değiştirilebilir jeton için tüm meta verileri almak için kanonik bir yol sağlar. + +```typescript +const metadata = await web3.getCurrentNodeProvider().fetchFungibleTokenMetaData(tokenFaucet.contractId) +console.log("TokenFaucet adı, ondalık, toplamArz", metadata.name, metadata.decimals, metadata.totalSupply) +``` + +[IFungibleToken](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/fungible_token_interface.ral) +, bir jetonun türünü tahmin etmek için de SDK'ya olanak tanır, böylece dApp'ler ve cüzdanlar onları ilgili şekilde işleyebilir: + +```typescript +// Jeton türünü tahmin edin +const tokenType = await web3.getCurrentNodeProvider().guessStdTokenType(tokenFaucet.contractId) +expect(tokenType).toEqual('fungible') + +// Jeton arayüz kimliğini tahmin edin +const tokenInterfaceId = await web3.getCurrentNodeProvider().guessStdInterfaceId(tokenFaucet.contractId) +expect(tokenInterfaceId).toEqual('0001') +``` + +Çalışan ve daha kapsamlı bir örnek için, lütfen +[nextjs-template](https://github.com/alephium/nextjs-template) deposuna göz atın. + +### Cüzdan Desteği + +Hem [Masaüstü Cüzdanı](/wallet/desktop-wallet/overview) hem [Uzantı +Cüzdanı](/wallet/extension-wallet/overview), değiştirilebilir jetonlar için doğal destek sağlar. + +Aşağıda, uzantı cüzdanı kullanarak `PACA` jetonunu görüntüleme ve transfer etme örneği bulunmaktadır: + +\`\`\`jsx +Jeton Genel Bakışı +     +Jeton Gönderme +     +İmzala Tx +\`\`\` + +### Jeton Listesi + +Temel bilgilerin yanı sıra `ad`, `sembol` ve +`ondalık` gibi diğer metaverileri içerir. Değiştirilebilir jetonlar genellikle dApp'lerin ve cüzdanların bunları düzgün bir şekilde göstermesi için `açıklama` ve `logoURI` gibi diğer metaverileri içerir. + +[Jeton listesi](https://github.com/alephium/token-list), Alephium ekosistemindeki tanınmış jetonların kimlik ve metaverileri için bir güven kaynağı olmayı amaçlar, böylece cüzdanlar ve dApp'ler kullanıcıları doğrulanmamış jetonlar konusunda uyarabilir. İşte uzantı cüzdanının bir jetonu eklenmeden önce ve sonra nasıl görüntülediği: + +\`\`\`jsx +Doğrulanmamış +     +Doğrulanmış +\`\`\` + +Şu anda, jeton metaverilerini jeton listesine eklemek için bir pull isteği gereklidir. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/create-flow-page.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/create-flow-page.png new file mode 100644 index 00000000..4f903669 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/create-flow-page.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/flow-page.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/flow-page.png new file mode 100644 index 00000000..6cab942b Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/flow-page.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/ipfs-imagine-directory.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/ipfs-imagine-directory.png new file mode 100644 index 00000000..c1bd9755 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/ipfs-imagine-directory.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/marketplace-testnet.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/marketplace-testnet.png new file mode 100644 index 00000000..73a1ab70 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/marketplace-testnet.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/show-nft-collection-extension-wallet.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/show-nft-collection-extension-wallet.png new file mode 100644 index 00000000..057f23ba Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/show-nft-collection-extension-wallet.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-1.png new file mode 100644 index 00000000..38c07740 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-2.png new file mode 100644 index 00000000..ab914da7 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-3.png new file mode 100644 index 00000000..b8fe96ca Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-alphpaca-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-nft-collection-extension-wallet.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-nft-collection-extension-wallet.png new file mode 100644 index 00000000..36b6c2fb Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/transfer-nft-collection-extension-wallet.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-nft-collection.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-nft-collection.png new file mode 100644 index 00000000..a1a131b4 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-nft-collection.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-token.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-token.png new file mode 100644 index 00000000..8819dc2f Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/unverified-token.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-nft-collection.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-nft-collection.png new file mode 100644 index 00000000..e0a99ca3 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-nft-collection.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-token.png b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-token.png new file mode 100644 index 00000000..4ae77400 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/media/verified-token.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/non-fungible-tokens.md b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/non-fungible-tokens.md new file mode 100644 index 00000000..65d86f63 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/non-fungible-tokens.md @@ -0,0 +1,215 @@ +--- +sidebar_position: 30 +title: Değiştirilebilir Olmayan Jetonlar (NFT'ler) +sidebar_label: Değiştirilebilir Olmayan Jetonlar (NFT'ler) +--- + +Alephium'daki değiştirilebilir olmayan jetonlar (NFT'ler), diğer blok zincirlerindeki NFT'lerle karşılaştırıldığında birkaç benzersiz özelliğe sahiptir: + +- UTXO modeline dayalı gerçek sahiplik: Alephium'daki diğer türdeki jetonlar gibi, NFT'ler de adresler tarafından doğrudan sahip olunan UTXO'larla güvenli bir şekilde yönetilir. UTXO'lar, kullanıcıların özel anahtarlarıyla korunduğundan, NFT sözleşmesinde hatalar olsa bile, kullanıcıların varlıkları güvende kalır. + +- NFT'ler için birinci sınıf destek: Jetonlar, Alephium'da yerel varlıklardır. Sonuç olarak, kullanıcıların NFT'leri, üçüncü taraf hizmetlerine bağlı olmadan cüzdanlar, gezginler ve dApp'ler tarafından kolayca keşfedilip gösterilebilir. + +- Alephium'un VM ve sözleşme dili sayesinde daha yüksek güvenlik: Alephium'un sanal makinesi (VM) ve sözleşme dili, NFT ticaretinde ayrı bir onay işlemine gerek kalmadan, ilişkili riskleri azaltarak daha yüksek güvenlik sağlar. Bu, [Varlık İzin Sistemi](/ralph/asset-permission-system) gibi araçların yardımıyla geliştiriciler için güvenli NFT sözleşmeleri yazma sürecini basitleştirir. + +- Alt sözleşme sistemi: Alephium'da [eşleme](https://docs.soliditylang.org/en/v0.8.7/types.html#mapping-types) veri yapısı bulunmaz. Koleksiyonlar, bir ana sözleşme (koleksiyon) ve [alt sözleşmeler](http://localhost:3000/ralph/built-in-functions#subcontract-functions) (öğeler) ile oluşturulur. Her alt sözleşme, bu koleksiyondaki bir NFT'yi temsil eder ve tüm metaveri ona bağlıdır. Bu, Alephium Blok Zinciri'nin doğal bir özelliğidir ve Alephium'un NFT'lerinin benzersiz (bir alt sözleşme başına bir jeton) veya yarı-değiştirilebilir olmasını sağlar, çünkü aynı basım sözleşmesi birden fazla jeton oluşturabilir. + +- Verimli işlem toplu işleme: Tek bir işlemde birden fazla NFT ve kullanıcı yer alabilir. + +- Daha düşük işlem ücretleri ve daha yüksek işlem hızı: NFT işlemleri, Alephium'un parçalanma algoritmasından faydalanacaktır. + +- NFT kıtlığı: Alephium'daki NFT'lerin arzı sınırlıdır, çünkü her NFT'nin kendi bireysel alt sözleşmesinin dağıtılması gerekmektedir ve bu da bir ALPH depozitosunu gerektirir - şu anda 1 `ALPH`. Bu benzersiz yapı, platformdaki NFT'lerin kıtlığını güçlendiren bir sınırlama getirir. + +### Değiştirilebilir Olmayan Jeton Standartı + +Hem NFT koleksiyonları hem de bireysel NFT'lerle ilişkilendirilen metaveriler bulunmaktadır, örneğin `collectionUri`, `totalSupply` ve `tokenUri` vb. [INFTCollection](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/nft_collection_interface.ral) ve [INFT](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/nft_interface.ral) arabirimleri, bu metaverileri almak için yöntemleri standartlaştırır. + +```rust +// Standard interface for NFT collection +@std(id = #0002) +Interface INFTCollection { + pub fn getCollectionUri() -> ByteVec + pub fn totalSupply() -> U256 + pub fn nftByIndex(index: U256) -> INFT + pub fn validateNFT(nftId: ByteVec, nftIndex: U256) -> () // Validates that the NFT is part of the collection, otherwise throws exception. +} + +// Standard interface for NFT +@std(id = #0003) +Interface INFT { + pub fn getTokenUri() -> ByteVec + pub fn getCollectionIndex() -> (ByteVec, U256) // Returns collection id and index of the NFT in the collection. +} +``` + +Bu arabirimler, dApp'lerin ve cüzdanların sözleşme/jeton tiplerini çıkarmasını kolaylaştırmak için `@std` açıklamaları ile işaretlenmiştir. + +```typescript +// Guess NFT token type +const nftTokenType = await web3.getCurrentNodeProvider().guessStdTokenType(nft.contractId) +expect(nftTokenType).toEqual('non-fungible') + +// Check if a contract is a NFT collection +const isNFTCollection = await web3.getCurrentNodeProvider().guessFollowsNFTCollectionStd(nftCollection.contractId) +console.log("Is NFT collection", isNFTCollection) +``` + +[INFTCollection](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/nft_collection_interface.ral) ve [INFT](https://github.com/alephium/alephium-web3/blob/master/packages/web3/std/nft_interface.ral) arabirimlerini uygulayan sözleşmeler için, SDK, ilgili metaverileri almanın kanonik bir yolunu sunar: + +```typescript +// NFT Collection Metadata +const collectionMetadata = await web3.getCurrentNodeProvider().fetchNFTCollectionMetaData(nftCollection.contractId) +console.log("NFT Collection URI, totalSupply", collectionMetadata.collectionUri, collectionMetadata.totalSupply) + +// NFT Metadata +const nftMetadata = await web3.getCurrentNodeProvider().fetchNFTMetadata(nft.contractId) +console.log("NFT Token URI, collection address", nftMetadata.tokenUri, nftMetadata.collectionAddress) +``` + +NFT koleksiyonu için, metaverilerden biri `collectionUri`dir, bu, aşağıdaki şemaya sahip bir JSON belgesine işaret eden bir URI'dir: + +```typescript +interface NFTCollectionUriMetaData { + name: string // Name of the NFT collection + description: string // General description of the NFT collection + image: string // A URI to the image that represents the NFT collection +} +``` + +Bireysel NFT için, metaverilerden biri `tokenUri`dir, bu, aşağıdaki şemaya sahip bir JSON belgesine işaret eden bir URI'dir: + +```typescript +interface NFTTokenUriMetaData { + name: string // Name of the NFT + description?: string // General description of the NFT + image: string // A URI to the image that represents the NFT + attributes?: [ // Attributes of the NFT + { + trait_type: string + value: string | number | boolean + } + ] +} +``` + +### AlephiumNFT Pazarı + +[AlephiumNFT](https://github.com/alephium/alephium-nft) pazarı, Alephium'daki NFT'lerin yeteneklerini sergilemek için bir kanıt-of-konsept NFT pazarıdır. Burada NFT koleksiyonları oluşturabilir, keşif yapabilir, NFT'ler basabilir ve ticaret yapabilirsiniz. Ayrıca, NFT koleksiyonlarınız için [Opensea + Drop](https://docs.opensea.io/docs/drops-on-opensea) tarzında halka açık satış kampanyaları başlatabilirsiniz. Bu kampanyalar, `AlephiumNFT` pazarında `Akışlar` olarak adlandırılır. + +Kendi NFT koleksiyonlarınızı oluşturmak oldukça +basittir. Daha fazla ayrıntı için bu [Twitter +dizisini](https://twitter.com/alephium/status/1674397159947649030) takip edin. Eğer bir `Flow` oluşturmak istiyorsanız, `@alephium/cli` sizin için yardımcı olabilecek bir `nft` alt komutuna sahiptir. + +#### Akışlar Oluşturun + +Diyelim ki `5` bireysel NFT'ye sahip NFT koleksiyonunuz için halka açık bir satış başlatmak istiyorsunuz. Bunu yapmadan önce, bunun için hazır `5` görüntünüz olmalı. Değilse, `@alephium/cli`, OpenAI'in [DALL.E](https://openai.com/research/dall-e) modellerini kullanarak görüntüler oluşturmanıza yardımcı olacak bir komuta sahiptir: + +```bash +export OPENAI_API_KEY=xxxx-xxxx-xxxx-xxxx +npx @alephium/cli@latest nft generate-images-with-openai --number 5 -d /tmp/imagine "imagine all the people, living life in peace" +``` + +Bu, `imagine all the +people, living life in peace` girişi ile `5` görüntü oluşturacak ve bunları `/tmp/imagine` dizini altında saklayacaktır. Eğer koleksiyonunuz için görüntüleri zaten tasarladıysanız, bu adımı atlayabilirsiniz. + +Görüntülerin `/tmp/imagine` dizini altında hazır olduğunu varsayalım. Bir sonraki adım, koleksiyonunuz için YAML formatında bir metaveri dosyası oluşturmaktır. İşte `imagine.yaml` adlı bir YAML dosyası örneği: + + +```bash +> ls /tmp/imagine +0.jpg 1.jpg 2.jpg 3.jpg 4.jpg + +> cat imagine.yaml +0.jpg: # File name of the image + attributes: # Attributes of the NFT, optional + - color: blue # Value of the attributes can be `number`, `boolean` or `string` + - is_outdoor: true +1.jpg: + description: Imagine is too naive # Description of the NFT, optional +2.jpg: + name: Imagine in Asia # Name of the NFT, optional + attributes: + - color: blue + - is_outdoor: false +3.jpg: # Name is auto-generated as #${index} if not specified, e.g. #04 +4.jpg: +``` + +Görüntülerinizden ve koleksiyonunuzun metaverisinden memnun olduğunuzda, aşağıdaki komutu kullanarak görüntüleri ve metaveriyi IPFS'e yükleyin: + +```bash +> export IPFS_INFURA_PROJECT_ID=xxxx-xxxx-xxxx-xxxx +> export IPFS_INFURA_PROJECT_SECRET=xxxx-xxxx-xxxx-xxxx +> npx @alephium/cli@latest nft upload-images-and-metadata-to-ipfs -m imagine.yaml -d /tmp/imagine -i imagine +NFTBaseUri: +https://ipfs.io/ipfs/QmaTXEGJQe5ZLg9TVEBJEpz3dwbzG9m7b6NWVogxnYgnbJ/ +``` + +`NFTBaseUri`, `imagine.yaml` dosyasındaki sırasına göre adlandırılmış ve depolanmış `5` belgeye işaret eden bir IPFS dizinini gösterir: + +IPFS Imagine Directory + +Her belge, bir NFT'nin metaverisine işaret eder ve dizin içindeki sırasına göre referanslanabilir. Örneğin `https://ipfs.io/ipfs/QmaTXEGJQe5ZLg9TVEBJEpz3dwbzG9m7b6NWVogxnYgnbJ/2`, 3. NFT'nin metaverisine işaret eder: + +```bash +> curl https://ipfs.io/ipfs/QmaTXEGJQe5ZLg9TVEBJEpz3dwbzG9m7b6NWVogxnYgnbJ/2 | jq +{ + "name": "Imagine in Asia", + "image": "https://ipfs.io/ipfs/QmbLevU4kVnQCCoYt23mKhdowJ7TnNNT9dRyVw9AyQDJty/2.jpg", + "attributes": [ + { + "trait_type": "color", + "value": "blue" + }, + { + "trait_type": "is_outdoor", + "value": false + } + ] +} +``` + +Bir `NFTBaseUri`'nin geçerli olup olmadığını doğrulayabilirsiniz: + +```bash +> npx @alephium/cli@latest nft validate-enumerable-nft-base-uri --nftBaseUri https://ipfs.io/ipfs/QmbLevU4kVnQCCoYt23mKhdowJ7TnNNT9dRyVw9AyQDJty/ --maxSupply 5 +Token Metadataz: +[ + { + name: '#0', + .... + }, + .... +] +``` + +`NFTBaseUri` oluşturulduktan sonra, `Akış`'ı `AlephiumNFT` Pazarı'nda başlatmaya hazırız: + +Flow Sayfası Oluştur + +Yukarıdaki gibi, koleksiyon görüntüsünü, maksimum toplu basım boyutunu, basım fiyatını, koleksiyonun adını ve açıklamasını, ve en önemlisi, bir önceki adımda oluşturduğumuz NFT taban URI'yi girebilirsiniz. `NFT Koleksiyonu Oluştur` düğmesine tıkladıktan ve işlemi imzaladıktan sonra, ilk `Flow`'unuzu başarıyla oluşturacak ve bağlantıyı paylaşacak ve NFT koleksiyonunuzun halka açık satışını başlatacaksınız! + +Flow Sayfası + +### Cüzdan Desteği + +Hem [Masaüstü Cüzdanı](/wallet/desktop-wallet/overview) hem de [Uzantı +Cüzdanı](/wallet/extension-wallet/overview) değiştirilebilir olmayan jetonlar için doğal destek sağlar. + +Aşağıda, uzantı cüzdanında `Imagine Collection` içinde bir NFT'nin görüntülenmesi ve transfer edilmesi örneği bulunmaktadır: + +Koleksiyonu Göster +     +NFT Transferi + +### Jeton Listesi + +Diğer NFT koleksiyonlarını taklit etmek ve kullanıcıları dolandırmak çok zor değildir. [Jeton listesi](https://github.com/alephium/token-list), Alephium ekosistemindeki tanınmış NFT koleksiyonlarını beyaz listeye alır, böylece dApp'ler ve cüzdanlar kullanıcıları doğrulanmamış NFT koleksiyonları konusunda uyarabilir. İşte uzantı cüzdanının, bir NFT koleksiyonunu jeton listesine eklenmeden önce ve sonra nasıl gösterdiği: + +Doğrulanmamış +     +Doğrulanmış + +Şu anda, NFT koleksiyonunu jeton listesine eklemek için bir pull isteği gereklidir. \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/tokens/overview.md b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/overview.md new file mode 100644 index 00000000..292a0f2f --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/tokens/overview.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 10 +title: Genel Bakış +sidebar_label: Genel Bakış +--- + +Alephium'da jetonlar birinci sınıf vatandaşlardır. Yerel jeton ALPH gibi, Alephium'daki tüm jetonlar, adresler tarafından doğrudan sahip olunan UTXO'lar tarafından yönetilir. + +Bu tasarım, diğer blok zincirlerine göre birkaç avantaja sahiptir: + +- Kullanıcılar arasındaki jeton transferleri yalnızca UTXO'ları gerektirir ve varlıkları yönetme güvenliği açısından test edilmiştir. +- Cüzdanlar ve dApp'lerin, hem değiştirilebilir hem de değiştirilemez jetonlar dahil, kullanıcıların jetonlarını keşfetmesi daha kolaydır. +- Akıllı sözleşmelerin jeton transferi yapması gerektiğinde, UTXO modelinde izin artık gerektirilmediği için ek bir onay işlemi gereksizdir. Alephium, jetonların akıllı sözleşmeler tarafından güvenli bir şekilde ele alınmasını sağlamak için benzersiz [Varlık İzin Sistemi](/ralph/asset-permission-system)'ni kullanır. +- Jeton transferi çok ölçeklenebilirdir çünkü Alephium'un [Parçalanma](/glossary.md#sharding) tasarımından tam olarak faydalanabilirler. + +Alephium ekosisteminde jetonlarla çalışmayı kolaylaştırmak için: + +- [Jeton + standartları](https://github.com/alephium/alephium-web3/tree/master/packages/web3/std) + SDK'da tanıtılmıştır, bu standartlar, hem değiştirilebilir hem de değiştirilemez jetonlar için standart arabirimler tanımlar. +- SDK'da, dApp'ler ve cüzdanlar için yaygın görevleri kolaylaştırmak için yardımcı program işlevleri tanımlanmıştır, örneğin jeton türlerini tahmin etme ve jeton metaverisinin çıkarılması. +- [Jeton listesi](https://github.com/alephium/token-list), tanınmış değiştirilebilir jetonlar ve NFT koleksiyonları için güven kaynağı oluşturmak için kullanılır. +- Cüzdanlarda ve gezginlerde hem değiştirilebilir hem de değiştirilemez jetonlar için doğal destek. +- [Opensea + Drop](https://docs.opensea.io/docs/drops-on-opensea) tarzında NFT halka açık satışını başlatmaya yardımcı olan `Flow` adı verilen araçlar. + +[Fungible Tokens](/tokens/fungible-tokens) sayfasında, değiştirilebilir jeton standartını, değiştirilebilir jetonların nasıl ihraç edileceğini, jeton metaverisinin nasıl alınacağını ve cüzdanlarda değiştirilebilir jetonların nasıl transfer edileceğini öğreneceksiniz. + +[Değiştirilebilir Olmayan Jetonlar](/tokens/non-fungible-tokens) sayfasında, değiştirilebilir olmayan jeton standartını, kendi NFT koleksiyonlarınızı nasıl oluşturacağınızı ve ilk NFT halka açık satış kampanyanızı `Flows` adı verilen [NFT pazarında](https://testnet.nft.alephium.org/) nasıl başlatacağınızı öğreneceksiniz. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Basic functions.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Basic functions.md new file mode 100644 index 00000000..87770aed --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Basic functions.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 70 +title: Temel Fonksiyonlar +sidebar_label: Temel Fonksiyonlar +--- + +# Temel Fonksiyonlar + +## Uzantı Cüzdanında Belirli Bir Grup İçin Yeni Bir Adres Nasıl Oluşturulur + +Belirli bir gruba bir adres oluşturmanın nasıl yapılacağına dair bir rehber burada bulunmaktadır. +Bazen bu, Alephium Blok Zincirindeki dApp'lerle etkileşim kurmak için gereklidir. (Gruplar ve Alephium'daki [sharding](https://medium.com/@alephium/an-introduction-to-blockflow-alephiums-sharding-algorithm-bbbf318c3402) hakkında daha fazla bilgi için [buraya](https://twitter.com/alephium/status/1681307477961482241) tıklayın). + +1. Uzantı Cüzdanınızı kilitleyin. + +![adım01](https://github.com/alephium/docs/assets/88235023/efa34122-c996-4a5b-a1bc-a2c3d97b36bd) + +2. Sol üst köşedeki Cüzdan Adına tıklayın. + +![adım02](https://github.com/alephium/docs/assets/88235023/8c169719-ebe5-4556-a967-ffae987bc4c3) + +3. Sağ üst köşedeki “+” düğmesine basın. + +![adım03](https://github.com/alephium/docs/assets/88235023/a84a7019-d8b2-4045-9133-f10a115e3512) + +*4. “Grup” açılır menüsüne tıklayın ve istediğiniz bir grubu seçin. + +![adım04](https://github.com/alephium/docs/assets/88235023/f3192c1e-9cf8-432b-9283-784c97ea3108) + +İsteğe bağlı olarak Schnorr imzalarını kullanmayı seçebilirsiniz (bu özelliğe ilişkin daha fazla bilgi [burada](https://twitter.com/alephium/status/1648310494661595137) bulunabilir). İşiniz bittiğinde, “Yeni Bir Alephium Hesabı Oluştur” düğmesine tıklayın. + +Bu işlemi her grup (0, 1, 2, 3) için istediğiniz adres için tekrarlayabilirsiniz. + + + +## Masaüstü Cüzdanında Belirli Bir Grup İçin Yeni Bir Adres Nasıl Oluşturulur + +Belirli bir gruba bir adres oluşturmanın nasıl yapılacağına dair bir rehber burada bulunmaktadır. +Bazen bu, Alephium Blok Zincirindeki dApp'lerle etkileşim kurmak için gereklidir. (Gruplar ve Alephium'daki [sharding](https://medium.com/@alephium/an-introduction-to-blockflow-alephiums-sharding-algorithm-bbbf318c3402) hakkında daha fazla bilgi için [buraya](https://twitter.com/alephium/status/1681307477961482241) tıklayın). + +1. Masaüstü Cüzdanınızı kilitleyin. + +![adım01](https://github.com/alephium/docs/assets/88235023/549cf7e5-472d-40f9-82c3-95d55d87bd73) + +2. “Adresler & İletişim” menüsüne tıklayın. + +![adım02](https://github.com/alephium/docs/assets/88235023/fa500925-2282-4cbb-a4fe-8287f156fd05) + +3. Mavi “Yeni Adres” düğmesine basın. + +![adım03](https://github.com/alephium/docs/assets/88235023/57595a9a-1588-43ff-a7cc-8d57b08e108f) + +Menü göründüğünde, yeni adresiniz için bir isim ve renk seçin. + +Ardından, “Gelişmiş seçenekler” anahtarını açın ve yeni adresinizi oluşturmak istediğiniz grubu seçin. + +“Oluştur” a basın. Bu işlemi her grup için istediğiniz adres için tekrarlayabilirsiniz (0, 1, 2, 3) veya toplu adres oluşturma için bir sonraki yöntemi kullanabilirsiniz. + +## Masaüstü Cüzdanında Tüm Gruplar İçin Bir Anda Yeni Bir Adres Nasıl Oluşturulur + +1. Masaüstü Cüzdanınızı kilitleyin. + +![adım01](https://github.com/alephium/docs/assets/88235023/549cf7e5-472d-40f9-82c3-95d55d87bd73) + +2. “Adresler & İletişim” menüsüne tıklayın. + +![adım02](https://github.com/alephium/docs/assets/88235023/fa500925-2282-4cbb-a4fe-8287f156fd05) + +3. “Anahtar” simgesine (gelişmiş işlemler) tıklayın. + +![adım04](https://github.com/alephium/docs/assets/88235023/19999aec-b9dc-4b40-bb7b-3ee8dfab49cf) + +Menü göründüğünde, "Her gruba bir adres oluştur" bölümünde mavi "Başlat" düğmesine tıklayın. Açılan pencerede, cüzdanlar için bir isim seçin. Daha sonra mavi "Oluştur" düğmesine tıklayın. + +Şimdi her grupta bir adresiniz var. (Gruplar ve Alephium'daki [sharding](https://medium.com/@alephium/an-introduction-to-blockflow-alephiums-sharding-algorithm-bbbf318c3402) hakkında daha fazla bilgi için [buraya](https://twitter.com/alephium/status/1681307477961482241) tıklayın). + + +## Uzantı Cüzdanında Testnet ALPH İsteği + +1. "Ana Ağ"dan "Test Ağı"na geçin + +![faucet001](https://github.com/alephium/docs/assets/88235023/2c83938e-d91a-4f64-9aa9-5ff275a77fd2) + +2. “+Fon Ekle”'ye tıklayın ve ardından “$ALPH isteği”'ni seçin + +![faucet002](https://github.com/alephium/docs/assets/88235023/85c4403d-1281-4005-b8dc-e1704b60c508) + +1-2 dakika içinde bakiyenize 12 testnet $ALPH almalısınız. + +# Masaüstü Cüzdanında Testnet ALPH İsteği + +1. "Ana Ağ"dan "Test Ağı"na geçin + +![faucet01](https://github.com/alephium/docs/assets/88235023/b0c6dcc1-3e21-4dac-92fc-2f371ef9d513) + +2. “Ayarlar”'ı açın, “Geliştirici Araçları”'nu seçin, “geliştirici araçlarını etkinleştir”'i etkinleştirin ve “test ağı tokenlerini al”'ı tıklayın + +![faucet02](https://github.com/alephium/docs/assets/88235023/d8ba431b-f556-4734-afe3-faef821822c4) + +Yaklaşık 1-2 dakika içinde 12 Testnet $ALPH alacaksınız! diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Multisig GUI.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Multisig GUI.md new file mode 100644 index 00000000..f1ea27c4 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/Multisig GUI.md @@ -0,0 +1,149 @@ +--- +sidebar_position: 90 +title: Çoklu İmza Arayüzü +sidebar_label: Çoklu İmza Arayüzü +--- + +## Alephium Araç Seti: Çoklu İmza Cüzdanı Oluşturma Kılavuzu + +*Çoklu imza cüzdanları, daha fazla granülerlik ve güvenlik sağladığı için olgunlaşan bir altyapıda temel bir rol oynarlar. Çekirdek ekibimiz, Alephium Araç Seti'nin ilk parçası olan Çoklu İmza Cüzdanı Oluşturma aracını gururla sunmaktan mutluluk duyuyor!* + +![image](https://github.com/alephium/docs/assets/88235023/29f9c9e9-02e4-4d26-80bb-7d0e5c14b6d0) + + +### Neden Çoklu İmza Kullanmalı? + +Kripto paralarda çoklu imza (multi-signature) cüzdanlar, artırılmış güvenlik ve varlıkların ortak kontrolü için kullanılır. Bir işlemi yetkilendirmek için birden fazla imza gerektirir, bu da saldırganların fonlara erişimini zorlaştırır. Harcamadan önce uzlaşma gereken kişiler veya kuruluşlar için faydalıdır, bir anahtar kaybolduğunda yedek bir çözüm olarak hizmet eder, düzenleyici uyumluluğa yardımcı olur ve tek anahtarlı cüzdanlarla ilişkilendirilen tek bir başarısızlık noktası riskini azaltır. + +Fonların birden fazla kişi tarafından yönetilmesini istiyorsanız (örneğin, fonlar bir şirkete veya derneğe aitse) veya kendi cüzdanınız için birden fazla anahtarınız olmasını istiyorsanız, bunu çoklu imza cüzdanında yapmak iyi bir güvenlik uygulamasıdır. Bu konuda daha önce konuştuk! + +Aşağıdaki kılavuzu kullanarak bir çoklu imza cüzdanı oluşturun ve işlemleri hazırlama, imzalama ve gönderme konusunda bilgi edinin. Discord'da herhangi bir sorunuz varsa çekinmeden bize bildirin. + +### Çoklu imzanın nasıl çalıştığı? +Çoklu imza işlemleri, basit işlemlere benzer olmasına rağmen, işlem sürecinde bazı yapısal farklılıklar bulunmaktadır. + +İlk olarak, birisi işlemi oluşturmalıdır, yani alıcıyı, miktarı ve işlemi imzalamak için kaç (ve hangi) imzalayıcının gerektiğini belirtmelidir. + +Ardından, imzalayıcılar işlemi imzalamalı ve imzalarını rapor etmelidir. + +Son olarak, oluşturucu imzaları birleştirir ve işlemi gönderir. + +Bu örnek eğitimde, M'nin N kişinin işlemi imzalaması gereken bir çoklu imza hayal edeceğiz. + + +**1 — Tüm Halka Açık Anahtarları Alın** + +İlk adım, çoklu imza'nın tüm imzalayıcılarının Halka açık anahtarlarını almak için şunları içerir. + +Tüm imzalayıcılar aşağıdaki adımları tamamlamalıdır: + +* https://alephium.github.io/alephium-toolkit/ adresine erişin. +* Karşılama sayfası "Cüzdan Bilgisi"dir. +* Sağ üst köşedeki "Alephium'a Bağlan" düğmesine tıklayın. +* dApp ile bağlanmak istediğiniz cüzdan türünü seçin. +* Başarılı bağlantıdan sonra, cüzdan bilgileriniz cüzdan bilgisi bölümünde görüntülenecektir. +* Halka açık anahtarınızı kopyalayın ve çoklu imzanın oluşturucusuna gönderin. + +![image](https://github.com/alephium/docs/assets/88235023/235b6c73-5519-4231-9f46-21e822843bfe) + + +**2 — Cüzdanı Oluşturun** + +İkinci adım, tüm imzalayıcıların halka açık anahtarlarıyla çoklu imzayı oluşturmaktan oluşur. Çoklu imzanın oluşturucusu (imzalayıcılardan herhangi biri (veya başka biri) olabilir) şunları tamamlamalıdır: + +![image](https://github.com/alephium/docs/assets/88235023/43f25034-30af-4b70-9565-2514b656138c) + +* [Çoklu İmza Cüzdanı Oluştur](https://alephium.github.io/alephium-toolkit/) sayfasına gidin +* Çoklu imzanız için bir ad seçin +* Her imzalayıcının "halka açık anahtarlarını" girin (ve bunları doğru bir şekilde adlandırın!). Olası imzalayıcılar kadar ekleyin. +* Bir işlemi gönderebilmek için gereken imzaların sayısını seçin (3'ten 2, 5'ten 3 veya herhangi bir M'den N'ye): bu çoklu imzanızın gerçekte bir işlem gönderebilmek için gereken kotağıdır. +* "Çoklu İmza Oluştur" a tıklayın +* Sonraki ekran, çoklu imzanın yapılandırmasının bir özetini gösterir. Her şeyin yolunda olduğunu kontrol edin. +* "Dışa Aktar" a tıklayın: Bu, diğer tüm imzalayıcılara geri göndermeleri için ihtiyacınız olan cüzdan bilgilerini kopyalar. + +**3 — Çoklu imza cüzdanını içe aktarın** + +Bu üçüncü adımda, imzalayıcılar işlemleri imzalamak için çoklu imza cüzdanını içe aktaracaklardır. Tüm imzalayıcılar aşağıdakileri tamamlamalıdır: + +![image](https://github.com/alephium/docs/assets/88235023/ddf154db-31c7-45b4-bd37-48c61811ebc5) + +* [Çoklu İmza Cüzdanını İçe Aktar](https://alephium.github.io/alephium-toolkit/#/multisig/import) sayfasına gidin +* "Çoklu İmza İçe Aktar" a tıklayın +* Artık bu belirli çoklu imzada işlem oluşturabilir ve/veya imzalayabilirsiniz +* Bir sonraki adım, bazı fonları çoklu imzaya koymaktır, böylece gerçekten bir işlem oluşturabilir, imzalayabilir ve ardından gönderebilirsiniz! + + +**4 — $ALPH'yi çoklu imzaya gönderin** + +Çoklu imza ile işlem yapmadan önce, ona bir miktar $ALPH göndermeniz gerekir. + +![image](https://github.com/alephium/docs/assets/88235023/f16d17dd-1520-4869-8506-6ab0e0cc8209) + +* [Çoklu İmza Cüzdanını Göster](https://alephium.github.io/alephium-toolkit/#/multisig/show) sayfasına gidin +* "Adres" içeriğini kopyalayın +* İstediğiniz cüzdanınıza gidin (başka bir çoklu imza, masaüstü veya uzantı cüzdanı olabilir) ve adresi alıcı alanına yapıştırın, miktarı, tokenı seçin ve gönderin! — Bu adresi başkasına da çoklu imzaya ödeme yapması için verebilirsiniz! +* (Bir token göndermek istiyorsanız, yine de gaz için bazı $ALPH göndermeniz gerekeceğini unutmayın, bu yüzden biraz da gönderin) + + +**5 — Bir işlem oluşturun** + +Herhangi bir çoklu imza cüzdanı tarafından şimdi bir işlemi oluşturma yetkisine sahip olabilir. Dolayısıyla işlem oluşturucusu olarak harekete geçin ve bir işlem oluşturmaya başlayın: + +![image](https://github.com/alephium/docs/assets/88235023/25a813a5-bbdc-4ade-874f-aa1d3c256368) + +* [İşlem Oluştur](https://alephium.github.io/alephium-toolkit/#/multisig/build-tx) sayfasına gidin +* Listeden çoklu imzanızı seçin, ihtiyacınız/istediğiniz imzalayıcıları, miktarı ve işlem için alıcının adresini seçin. Doğru imzalayıcıları seçtiğinizden ve kota gereksinimini karşıladığınızdan emin olun! +* "İşlem Oluştur" a tıklayın. Bir işaretsiz işlem olan temel bir metin parçası alırsınız. +* Bunun kopyasını alın ve seçtiğiniz imzalayıcılara gönderin. + +![image](https://github.com/alephium/docs/assets/88235023/df652c60-e247-4b6d-8363-e847729ef0d7) + +**6 — İşlemi İmzalayın** + +Bir çoklu imza işlemine taraf olduğunuzda, işlem oluşturucusu tarafından bir işlemi imzalamak için uzun bir metin parçası olarak gönderilen bir işlemi imzalamak istiyorsunuzdur, işte yapmanız gerekenler: + +![image](https://github.com/alephium/docs/assets/88235023/2c4bc5fa-c262-4d8b-a102-03ab20529689) + +* [İşlem İmzalama](https://alephium.github.io/alephium-toolkit/#/multisig/sign-tx) sayfasına gidin +* Çoklu imzaya taraf olduğunuzdan emin olun (çoklu imza cüzdanını içe aktarmadıysanız, bu çalışmayacak, bkz. adım 3) +* İşlem ayrıntılarını girin +* İşlem parametrelerini doğrulayın! +* "İmzala" ya tıklayın +* Cüzdanınız açılacak ve işlemi gösterecek: işlemi imzalayın. +* "İmzala işlem" sayfasında, işlem kimliğinin altında, bir imza görünecektir +* İmzayı kopyalayın ve "İşlem Oluştur" sayfasına yapıştırın (veya işlem oluşturucusuna geri gönderin!) + +![image](https://github.com/alephium/docs/assets/88235023/c11ff378-ff58-4eef-9db3-021041205c3d) + +**7 — İşlemi Gönderin** + +Bu aşamada, cüzdan oluşturuldu, bir işlem oluşturuldu ve tüm imzalayıcılara dağıtıldı, işlemleri imzaladılar ve imzaları oluşturucuya geri gönderdiler. Şimdi yapması gerekenler şunlardır: + +![image](https://github.com/alephium/docs/assets/88235023/2c1107b7-11f7-4cd0-982a-4c60ee90d924) + +* [“İşlemi Oluştur”](https://alephium.github.io/alephium-toolkit/#/multisig/build-tx) sayfasına geri dönün +* İmzaları ilgili alana girin +* "Gönder" e tıklayın: işlem gönderilecektir. +* İzleyicide kontrol etmek için “keşfedici üzerinde görüntüle” ye tıklayabilirsiniz + +![image](https://github.com/alephium/docs/assets/88235023/6fcec318-8c61-4c33-9157-d9cd66f0e3d8) + +Ve işte bu kadar! + +Alephium üzerinde başarılı bir şekilde çoklu imza cüzdanı oluşturdunuz ve bir işlem göndermek için kullandınız. Hem güvenlik hem de esneklik değer verenler ve fonların sahipliğini başkalarıyla paylaşma ihtiyacı duyanlar için, çoklu imza cüzdanı kripto silahınızda güçlü bir araçtır. Unutmayın, finansın geleceği yalnızca dijital varlıklara sahip olmakla ilgili değil, [akıllıca güvenliğini sağlamakla ilgilidir](https://medium.com/@alephium/ttxoo-2-the-road-to-self-custody-cfea4ae89444). + +*Düşüncelerinizi bize bildirin, kodun gelişimini [Github](https://github.com/alephium) üzerinden takip edin, haberleri [Twitter](https://twitter.com/alephium) & [Medium](https://medium.com/@alephium) üzerinden takip edin veya [Discord](https://discord.com/invite/GEbcpajCJG) & [Telegram](https://t.me/alephiumgroup) üzerinde etkileşime geçin!* + +### Çoklu İmza SSS: + +**Neden çoklu imza cüzdan adresi çok uzun?** + +Yerel çoklu imzayı mümkün olduğunca basit hale getirmek istedik, bu nedenle adres şu anda daha fazla bilgi içerir. Sonunda, Ethereum'da kullanılabilir olan akıllı sözleşmelere dayalı daha kısa çoklu imza adreslerini de benzer şekilde uygulayabiliriz. + +**5'ten 3, herhangi 3'ten 5'i mi ifade ediyor?** + +Hayır. Bir işlem oluşturduğunuzda, 5 imzalayıcıdan 3'ünün belirtilmesi gereken 3 imzalayıcıyı belirlemelisiniz. Bir işlem, sadece oluşturma sürecinde belirlenen 3 imzalayıcı tarafından imzalandığında geçerlidir. Bir işlem için imzalayıcı kümesini değiştirmek istiyorsanız, yeniden oluşturmanız gerekir. + +**Araç takımı, çoklu imza cüzdanlarını oluşturmak ve kullanmak için tek yol mudur?** + +Hayır, çoklu imza cüzdanları düğüm cüzdanını kullanarak oluşturulabilir ve yönetilebilir. Buna ilişkin öğreticiyi [burada](https://docs.alephium.org/misc/multisig-guide/) bulabilirsiniz. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/advanced-features.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/advanced-features.md new file mode 100644 index 00000000..52956b8d --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/advanced-features.md @@ -0,0 +1,66 @@ +--- +sidebar_position: 40 +title: Gelişmiş Özellikler +sidebar_label: Gelişmiş Özellikler +--- + +# Gelişmiş Özellikler + +## 1. UTXO birleştirme + +:::info + +UTXO'nun doğası gereği, her bir işlem yapıldığında, çeşitli miktarda ALPH içeren yeni Kullanılmamış İşlem Çıktıları (UTXO) oluşturulur. Bu UTXO'lar zaman zaman birleştirilmezse, bir UTXO, "toz" olarak adlandırılan bir noktaya ulaşabilir. Bir UTXO'daki miktar, içerdiği ALPH'leri göndermek için gereken GAZ maliyetinden daha küçükse, bu ALPH'ler artık taşınamaz. + +Bunu önlemek için, cüzdan size bir düğmeye tıklayarak UTXO'larınızı kolayca birleştirme imkanı sunar. + +::: + +`Adresler` sekmesinde, `Gelişmiş işlemler` simgesine tıklayın ve `UTXO'ları birleştir` seçeneğini seçin. + +UTXO birleştirme + +UTXO birleştirme + +UTXO'ları birleştirmek istediğiniz adresi seçin ve hedef adresi seçin (aynı adres olabilir). `Birleştir` düğmesine tıklayın ve UTXO'larınız birleştirilecektir. + +Ana sayfa + +## 2. Parola (GELİŞMİŞ GÜVENLİK ÖZELLİĞİ) + +Sürüm 1.3.0'da tanıtıldı + +:::caution +Bu özelliği kullanmadan önce lütfen aşağıdaki belgelendirmeyi ve bu [makaleyi](https://medium.com/@alephium/bip39-passphrase-implementation-f87adecd6f59) okuyun. +::: + +### 1. Önemli Noktalar + +- Parola, mevcut Gizli Kurtarma Cümlesi'ne eklediğiniz bir ek kelime olan gelişmiş bir güvenlik özelliğidir. +- Bir Parola kullanmak, yalnızca Gizli Kurtarma Cümlesi ile erişilemeyen tamamen yeni bir cüzdan oluşturur. +- Masaüstü cüzdan parolası, Gizli Kurtarma Cümlesini şifrelemek ve depolamak için yalnızca bilgisayarınızda kullanılır. Parola, cüzdanda depolanmaz ve Gizli Kurtarma Cümlesine ek bir kelimedir. +- Başka bir güvenlik katmanı eklemenin yanı sıra, Parola size inkar edilebilirlik sağlar. +- **Parola kullanmaya karar verirseniz, Parolayı Gizli Kurtarma Cümlesinden farklı bir fiziksel konumda güvenli bir şekilde depolamak ve yedeklemek çok önemlidir. Parolanızı mükemmel bir şekilde hatırlamalısınız. Tek bir karakteri değiştirmek (örneğin, küçük harften büyük harfe geçmek bile), tamamen yeni bir cüzdanın oluşturulmasına neden olur.** + +Masaüstü cüzdan uygulamasını kullanarak bir cüzdan oluşturduğunuzu varsayalım. Bu cümle, cüzdanınızı geri yüklemek ve fonlarınıza erişmek için kullanılabilir. Bu 24 kelimelik Gizli Kurtarma Cümlesi çalınırsa, saldırgan fonlarınızı çalabilir. Masaüstü cüzdan kullanıcılarımızın güvenliğini artırmak ve 24 kelimelik Gizli Kurtarma Cümlesinin çalınması nedeniyle fon kaybını önlemek için [BIP39 parola](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed) özelliğini uyguladık. + +Parola, kendiniz için istediğiniz ek isteğe bağlı 25. kelime olup, herhangi bir küçük/büyük harf karakteri, sayı ve/veya işaret içerebilir ve istediğiniz kadar uzun olabilir. + +### 2. Parola nasıl kullanılır + +:::warning + +Herhangi bir benzersiz Parola'nın tamamen yeni bir cüzdan oluşturacağını ve erişim sağlayacağını hatırlamak önemlidir. Parolayı Gizli Kurtarma Cümlesinden farklı bir fiziksel konumda güvenli bir şekilde depolamak ve yedeklemek çok önemlidir. **Parolanızı mükemmel bir şekilde hatırlamalısınız. Tek bir karakteri değiştirmek (örneğin, küçük harften büyük harfe geçmek bile), tamamen yeni bir cüzdanın oluşturulmasına neden olur.** + +::: + +Parola kullanmak için, sadece `İsteğe bağlı parolayı kullan (gelişmiş)` seçeneğini işaretleyin ve istediğiniz isteğe bağlı Parolayı girin. + +Ana sayfa + +### 3. Parola etkinleştirilmiş cüzdanların sınırlamaları + +1. Oluşturulan adresler için renkli etiketleri kullanamazsınız (henüz). +2. Her oturum açmadan sonra ek olarak oluşturulan adresler yeniden oluşturulmalıdır. + +Bu gelecekte değişebilir. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/configure-mining-wallet.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/configure-mining-wallet.md new file mode 100644 index 00000000..d0349645 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/configure-mining-wallet.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 30 +title: Madencilik Cüzdanını Yapılandırma +sidebar_label: Madencilik Cüzdanını Yapılandırma +--- + +# Madencilik Cüzdanını Yapılandırma + +Bir madencilik cüzdanı biraz farklıdır ve **her grup için bir adres** içermelidir. Şu anda Alephium 4 grup çalıştırıyor, bu da 4 adresin gerektiği anlamına geliyor. Masaüstü cüzdanı bunları kolayca oluşturabilir. + +Bunu yapmak için, cüzdan oluşturma sürecinin sonunda hoş geldin ekranında `Gelişmiş Ayarlar`'ı açmanız yeterlidir. + +Yeni bir cüzdan oluşturma uyarısı + +Alternatif olarak, cüzdanınıza giriş yaptıktan sonra `Adresler` sekmesine giderek `Gelişmiş işlemler` simgesine tıklayın ve `Her grup için bir adres oluştur` seçeneğini seçebilirsiniz. + +Gelişmiş yönetim bölümü diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/getting-started.md new file mode 100644 index 00000000..95aa4ccd --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/getting-started.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 20 +title: Başlarken +sidebar_label: Başlarken +--- + +# Başlarken + +## 1. Kurulum + +1. [En son sürümü](https://github.com/alephium/desktop-wallet/releases/latest)nden indirin ve çift tıklayarak uygulamayı kurun. İşletim sisteminize uygun olanı seçin (macOS, Windows, Linux). +2. Linux ve Windows'ta masaüstü cüzdanını başlatmak için uygulamaya çift tıklayın. macOS'ta, Uygulamalar klasörüne gidip Alephium uygulamasına sağ tıklayın ve ardından _Aç_ seçeneğini tıklayın (çift tıklama yapmayın, çalışmaz, ancak Sistem Tercihlerinden izin verirseniz çalışır). + +## 2. Cüzdan Oluşturma + +:::info + +Varsayılan olarak, cüzdan Alephium genel düğümüne bağlanır. Kişisel düğümünüzü kullanmak veya cüzdanı çevrimdışı oluşturmak isterseniz, uygulamanın sağ üst köşesindeki ayar çarkına tıklayarak Node Host'u localhost olarak değiştirebilir veya boş bırakabilirsiniz. + +::: + +Masaüstü Cüzdanı Ana Sayfası + +Yeni cüzdan oluşturma uyarısı + +Bir isim seçme ve şifre belirleme uyarısı + +1. `Yeni bir cüzdan oluştur / İçe aktar` seçeneğine tıklayın, ardından `Yeni cüzdan` seçeneğini tıklayın. + +2. Cüzdanınızı bilgisayarınızda korumak için bir cüzdan adı seçin ve bir şifre belirleyin. Bu şifre, cüzdanınızın 24 kelime Gizli Kurtarma Cümlesiyle değiştirmez. Yalnızca yeni oluşturulan cüzdanı kilitlemek ve açmak için kullanılır. + `Devam` seçeneğine tıklayın. + +24 gizli kelimenin görüntüsü + +24 gizli kelimenin doğrulama uyarısı + +Yeni bir cüzdanın ana sayfası + +3. Vurgulanan kutuda, cüzdanınızın 24 kelime Gizli Kurtarma Cümlesi görünecektir. Bu en değerli bilginizdir ve dikkatlice, güvenli ve özenli bir şekilde saklamalısınız. + +4. Şimdi, 24 kelime Gizli Kurtarma Cümlesini doğru bir şekilde aldığınızı doğrulamanız istenecektir. `Hazır` seçeneğine tıklayın ve doğru sırayla kelimeleri seçin. İşlem doğru yapıldıysa, kelimeler yeşil renge döner. Bir hata yapıldıysa, kelimeler kırmızı renge döner: endişelenmeyin, kelimeleri doğru bir şekilde sıralayana kadar yeniden düzenleyebilirsiniz. + +5. Her şey hazır! Yeni cüzdanınıza hoş geldiniz. + +## 3. ALPH Transferi + +Masaüstü Cüzdanı Ana Sayfası + +Hedef adres ve işlem miktarını girmek için uyarı + +Hedef adres ve işlem miktarını girmek için uyarı + +1. ALPH göndermek için, sol menüdeki `Gönder` düğmesine tıklayın. + +2. ALPH miktarını (örneğin 100) ve alıcının adresini girin. + +3. (İsteğe bağlı) Kilit süresini belirlemek için ilgili kutuyu işaretleyebilirsiniz. Bu durumda, ALPH alıcı adresine gönderilecek, ancak belirttiğiniz tarihe kadar zincir üzerinde kilitli kalacaktır. Lütfen unutmayın, işlem gönderildikten sonra kilit süresini değiştirmek mümkün değildir. + +4. İşlem detaylarını dikkatlice kontrol etmek için `Kontrol Et` seçeneğine tıklayın. `Gönder`e tıkladığınızda ALPH alıcıya transfer edilecektir. + +:::info + +İşlem, belirli bir adrese tıklandığında hem `Genel Bakış` hem de `Adresler` sekmesinde görülebilir. + +::: + +## 4. Adresleri Yönetme + +Mevcut tüm adresler, etiketleri, bakiyeleri, grup numaraları vb. bilgilerle bir liste halinde `Adresler` sekmesinde görüntülenir. + +Adres sayfası + +`+ Yeni adres` düğmelerinden birine tıklamak, yeni adresi oluşturma ve etiketleme sayfasına götürür. Varsayılan olarak, adresler rastgele bir grupta oluşturulur. `Gelişmiş seçenekler` bölümünde belirli bir grup seçebilirsiniz. + +Yeni bir adres oluşturma uyarısı + +Bir adresin üzerine tıkladığınızda, adresin ayrıntılarını ve işlem geçmişini göreceksiniz. + +Tek bir adresin görünümü + +Uygulamanın üstündeki Ayarlar çarkını kullanarak Adres etiketini düzenleyebilir, varsayılan adres olarak seçebilir veya kilidi açık olan tüm fonları istediğiniz bir adrese aktarabilirsiniz. + +Adres seçeneklerini yapılandırma uyarısı diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af1.png new file mode 100644 index 00000000..bb2d8621 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af2.png new file mode 100644 index 00000000..793e2c46 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af3.png new file mode 100644 index 00000000..c88cd9e1 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af4.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af4.png new file mode 100644 index 00000000..3bd2a10c Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af4.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af5.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af5.png new file mode 100644 index 00000000..7dca96cf Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/af5.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs1.png new file mode 100644 index 00000000..1c41bcf9 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs10.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs10.png new file mode 100644 index 00000000..e6e29233 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs10.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs11.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs11.png new file mode 100644 index 00000000..391584ca Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs11.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs12.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs12.png new file mode 100644 index 00000000..bd69c409 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs12.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs13.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs13.png new file mode 100644 index 00000000..01adc960 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs13.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs2.png new file mode 100644 index 00000000..a16e8b23 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs3.png new file mode 100644 index 00000000..bab09449 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs4.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs4.png new file mode 100644 index 00000000..e99d6667 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs4.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs5.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs5.png new file mode 100644 index 00000000..d3a6e57a Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs5.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs6.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs6.png new file mode 100644 index 00000000..082c5316 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs6.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs7.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs7.png new file mode 100644 index 00000000..cd2f3448 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs7.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs8.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs8.png new file mode 100644 index 00000000..96e05985 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs8.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs9.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs9.png new file mode 100644 index 00000000..013f7ea9 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/gs9.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw1.png new file mode 100644 index 00000000..f1ecf2b9 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw2.png new file mode 100644 index 00000000..6e2533a4 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/mw2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview1.png new file mode 100644 index 00000000..313cdad6 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview2.png new file mode 100644 index 00000000..240263f1 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/media/overview2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/overview.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/overview.md new file mode 100644 index 00000000..6f45a488 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/desktop-wallet/overview.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 10 +title: Genel Bakış +sidebar_label: Genel Bakış +--- + +# Genel Bakış + +Masaüstü cüzdanı, bugün mevcut olan en kullanıcı dostu Alephium cüzdanıdır. Kullanıcıların Alephium blok zincirinde varlıklarını depolamasına ve yönetmesine olanak tanır. + +Karanlık modda Masaüstü Cüzdanı + +Aydınlık modda Masaüstü Cüzdanı + +Başlangıç sayfasında, masaüstü cüzdanının kurulum kılavuzunu ve hesap yönetimi, varlık transferi vb. gibi bazı yaygın kullanım durumlarını bulabilirsiniz. Daha fazla bilgi için gelişmiş özelliklere ait sayfalara göz atabilirsiniz. +Masaüstü cüzdanı, uygulamanın güvenliğine güvenmenizi gerektirdiği ve varsayılan olarak bir genel düğüme bağlı olduğu için, bazıları tarafından düğüm cüzdanına göre biraz daha az gizlilik koruyucu ve güvenli olarak kabul edilebilir. Bununla birlikte, cüzdanı doğrudan GitHub deposundan derleyebilir ve yerel bir düğüm kullanabilir veya bazı riskleri azaltmak için cüzdanınızı tamamen çevrimdışı oluşturabilirsiniz. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/dapp.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/dapp.md new file mode 100644 index 00000000..85b011fb --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/dapp.md @@ -0,0 +1,105 @@ +--- +sidebar_position: 40 +title: dApp'ler için Uzantı Cüzdanı +sidebar_label: dApp entegrasyonu +--- + +Alephium uzantı cüzdanı, kullanıcının etkileşimde bulunduğu dApp'lere +`window.alephiumProviders.alephium` global bir nesne enjekte eder. dApp'ler, +bu nesneyi kullanarak kullanıcıyı doğrulayabilir, kullanıcı hesabını +isteyebilir ve Alephium blockchain ile iletişim kurabilir, örneğin kullanıcı +bakiyesini alabilir, sözleşme durumunu alabilir ve işlemler gönderebilir, vb. + +### Temel Kurulum + +`window.alephiumProviders.alephium` nesnesini algılamak için +[@alephium/get-extension-wallet](https://www.npmjs.com/package/@alephium/get-extension-wallet) +paketini kullanmanızı öneririz. + +``` +npm install --save @alephium/get-extension-wallet +``` + +Aşağıdaki kod, TypeScript kullanarak uzantı cüzdanına nasıl bağlanılacağını göstermektedir: + +```ts +import { getDefaultAlephiumWallet } from "@alephium/get-extension-wallet" + +async function tryConnect() { + // Returns the `window.alephiumProviders.alephium` object after user selects + // the extension wallet. + const windowAlephium = await getDefaultAlephiumWallet() + // Authenticate user to the current dApp, return the selected account + const selectedAccount = await windowAlephium?.enable() + + if (windowAlephium && selectedAccount) { + // From here, you can execute various transactions: + // + // windowAlephium.signAndSubmitTransferTx(...) + // windowAlephium.signAndSubmitDeployContractTx(...) + // windowAlephium.signAndSubmitExecuteScriptTx(...) + // ... + } +} +``` + +`windowAlephium?.enable()` yöntemi çağrıldığında, kullanıcılardan mevcut dApp'e bağlanmaları istenecektir: + +Connect dApp + +Kullanıcı "Bağlan" düğmesine tıkladıktan sonra, dApp kullanıcının uzantı cüzdanıyla bağlantı kurar. + +### Web3 React + +React ile oluşturulan dApp'ler için, +[@alephium/web3-react](https://www.npmjs.com/package/@alephium/web3-react) +uzantı cüzdanı dahil olmak üzere cüzdanları kullanarak dApp'lere kimlik doğrulaması yapmanın daha kolay bir yolunu sunar. + +``` +npm install --save @alephium/web3-react +``` + +Aşağıda basit bir örnek verilmiştir: + +```typescript +const App = () => { + return ( + + /* Your App */ + + + ); +``` + +Bu, dApp'inize `retro` dahili temalı bir düğme yerleştirecektir. Kullanıcı düğmeye tıkladığında, bir açılır pencere görüntülenir ve kullanıcıdan bir cüzdan seçmesi istenir: + +Connect dApp Web3 React + +Kullanıcı `Extension Wallet` seçerse, kullanıcı tekrar mevcut dApp'e bağlanması için uyarılır. Kullanıcı `Bağlan` düğmesine tıkladıktan sonra, dApp kullanıcının uzantı cüzdanıyla bağlantı kurulur. + +Daha çalışan ve daha kapsamlı bir örnek için +[nextjs-template](https://github.com/alephium/nextjs-template) deposuna başvurun. + +### İşlemleri İmzalama + +`windowAlephium` nesnesi, işlem imzalamak için aşağıdaki yöntemleri sunan +[InteractiveSignerProvider](https://github.com/alephium/alephium-web3/blob/master/packages/web3/src/signer/signer.ts#L80)'ı uygular: + +```ts +abstract signAndSubmitTransferTx(params: SignTransferTxParams): Promise +abstract signAndSubmitDeployContractTx(params: SignDeployContractTxParams): Promise +abstract signAndSubmitExecuteScriptTx(params: SignExecuteScriptTxParams): Promise +abstract signAndSubmitUnsignedTx(params: SignUnsignedTxParams): Promise +abstract signUnsignedTx(params: SignUnsignedTxParams): Promise +// İmzalanmadan önce mesaj 'Alephium İmzalı Mesaj: ' ile öne eklenir +// böylece elde edilen imza, işlem oluşturmak için yeniden kullanılamaz. +abstract signMessage(params: SignMessageParams): Promise +``` + +Herhangi bir bu yöntem çalıştırıldığında, uzantı cüzdanı işlem türüne bağlı olarak gerekli bilgileri sağlayacak ve kullanıcıdan imza isteyecektir. + +Aşağıda, bir token transferi için bir işlem örneği verilmiştir: Kullanıcı, `Salary` hesabından `Saving` hesabına `2` `TokenFaucet` token transfer ediyor. + +Transaction Signing Transfer + +Kullanıcı `İmzala` düğmesine tıkladıktan sonra, işlem uzantı cüzdanı tarafından imzalanacak ve Alephium blockchain'e gönderilecektir. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/getting-started.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/getting-started.md new file mode 100644 index 00000000..5c7b3a27 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/getting-started.md @@ -0,0 +1,108 @@ +--- +sidebar_position: 20 +title: Başlarken +sidebar_label: Başlarken +--- + +### Kurulum + +Alephium uzantı cüzdanı hem [Chrome](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj) hem de [Firefox](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) için mevcuttur. + +### Cüzdan Oluşturma + +Cüzdan oluşturma + +1. Tarayıcınızdaki Alephium uzantı cüzdanı simgesine tıklayın. +2. Ana sayfada, `Yeni cüzdan` düğmesine tıklayın. +3. Cüzdanınızı korumak için şifreyi girin. +4. Tamamlandı! Cüzdanınız oluşturuldu. + +Şimdi cüzdanınızda herhangi bir varlık bulunmamaktadır. Bir sonraki adımda, bu cüzdana bazı ALPH tokenları transfer edelim. + +### Varlık Transferi + +#### ALPH Token Faucet + +`devnet` ve `testnet` için, uzantı cüzdanında yerleşik bir `ALPH` token faucet bulunur. Her seferinde `devnet` için `1000` `ALPH` ve `testnet` için `12` `ALPH` alabilirsiniz. + +Fon Al +     +Token Faucet +     +Token Alındı + +#### ALPH Transferi + +Başka bir hesaptan `ALPH` transferi de yapabilirsiniz: + +Genel Bakış +     +Transfer Sayfası +     +Transferi İncele + +Transfer işlemini imzaladıktan sonra, işlemin durumunu `Aktivite` sekmesinden takip edebilirsiniz. İşlem onaylandığında, transfer edilen `ALPH` miktarı alıcı hesapta yansıtılır. + +Bekleyen İşlem +     +Onaylanmış İşlem +     +ALPH Alındı + +Bu kadar! Başarıyla bir miktar `ALPH` transfer ettiniz. + +#### Token Transferi + +Diğer değiştirilebilir tokenların transfer süreci, `ALPH` tokenını transfer etme süreciyle temelde aynıdır: + +Token Transferi 1 +     +Token Transferi 2 +     +Token Transferi 3 + +Daha fazla bilgi için lütfen [Değiştirilebilir Tokenlar](/tokens/fungible-tokens) rehberine başvurun. + +### NFT Desteği + +Alephium uzantı cüzdanı ayrıca NFT'leri görüntüleme ve transfer etme desteği sunar, aşağıda gösterildiği gibi: + +Koleksiyonları Görüntüle +     +Koleksiyonu Görüntüle +     +NFT Transferi + +Daha fazla bilgi için lütfen [Değiştirilemez Tokenlar (NFT'ler)](/tokens/non-fungible-tokens) rehberine başvurun. + +### Hesap Yönetimi + +Alephium uzantı cüzdanındaki hesap, bir genel adres ve buna karşılık gelen özel anahtar içeren bir dijital konteyneri temsil eder ve kullanıcının Alephium blok zincirinde varlık almasına, saklamasına ve transfer etmesine olanak tanır. + +Alephium uzantı cüzdanı, kullanıcıların aynı anda birden fazla hesabı yönetmelerine olanak tanır. Örneğin, Alice `Maaş`, `Tasarruf` ve `2023 Tatili` için ayrı ayrı birer hesap sahibi olabilir. + +#### Hesap Oluşturma +Ek bir hesap eklemek için aşağıdaki adımları izleyin: + +Genel Bakış +     +Hesap Listesi +     +Hesap Ekle + +Hesap oluşturmadan önce seçebileceğimiz birkaç seçenek bulunur: + +- `Grup`: Mevcut seçenekler `0`, `1`, `2` veya `3`'tür. `herhangi` seçilirse, oluşturulan hesabın ait olduğu grup rastgele olacaktır. +- `İmza`: Mevcut seçenekler `varsayılan` ve `schnorr`dur. `varsayılan`, Alephium işlemlerini imzalamak için kullanılan varsayılan Alephium imza türünü temsil ederken, `schnorr`, [Nostr](https://nostr.com/) gibi protokollerle etkileşimde bulunurken kullanışlı olan `BIP340` Schnorr imza türünü temsil eder. +- `Hesap Türü`: Mevcut seçenekler `Alephium Hesabı` veya `Ledger Hesabı`'dır. Ledger entegrasyonu hakkında daha fazla bilgi için lütfen [Ledger](/wallet/ledger) rehberine başvurun. + +İstenen seçenekleri seçtikten sonra, yeni bir hesap oluşturulacak ve kullanıma hazır olacaktır. + +#### Hesap Düzenleme +Varolan bir hesabın adını düzenleyebilir, özel anahtarını dışa aktarabilir, bir hesabı silebilir vb.: + +Hesap Listesi +     +Hesap Düzenleme +     +Özel Anahtarı Dışa Aktar diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp-2.png new file mode 100644 index 00000000..c647cc33 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp.png new file mode 100644 index 00000000..eb95a85a Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/connect-dapp.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-1.png new file mode 100644 index 00000000..e3d0b63f Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-2.png new file mode 100644 index 00000000..1fd2a3fb Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/dapp-connections-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collection.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collection.png new file mode 100644 index 00000000..82976309 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collection.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collections.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collections.png new file mode 100644 index 00000000..3402c46f Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/display-nft-collections.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/execute-txscript.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/execute-txscript.png new file mode 100644 index 00000000..7451100b Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/execute-txscript.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/landing.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/landing.png new file mode 100644 index 00000000..8d528aaf Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/landing.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-1.png new file mode 100644 index 00000000..de82eaff Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-2.png new file mode 100644 index 00000000..5e29859e Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-3.png new file mode 100644 index 00000000..7f0379ae Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-4.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-4.png new file mode 100644 index 00000000..6c0f2daf Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-4.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-5.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-5.png new file mode 100644 index 00000000..5bf1dcce Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-5.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-6.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-6.png new file mode 100644 index 00000000..7f4cc6e8 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/manage-accounts-6.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-1.png new file mode 100644 index 00000000..acc5df3d Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-2.png new file mode 100644 index 00000000..16e5c710 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/new-wallet-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-1.png new file mode 100644 index 00000000..98a06533 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-2.png new file mode 100644 index 00000000..b8325662 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-3.png new file mode 100644 index 00000000..03b5dc4b Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/received-alph-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-1.png new file mode 100644 index 00000000..d89f7f04 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-2.png new file mode 100644 index 00000000..faa95fb5 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-3.png new file mode 100644 index 00000000..684c5c4f Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/token-faucet-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transaction-signing-transfer.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transaction-signing-transfer.png new file mode 100644 index 00000000..06ab2ff6 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transaction-signing-transfer.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-1.png new file mode 100644 index 00000000..64ae5e02 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-2.png new file mode 100644 index 00000000..302afe31 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-3.png new file mode 100644 index 00000000..39eea9f2 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alph-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-1.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-1.png new file mode 100644 index 00000000..38c07740 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-1.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-2.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-2.png new file mode 100644 index 00000000..ab914da7 Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-2.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-3.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-3.png new file mode 100644 index 00000000..b8fe96ca Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-alphpaca-3.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-nft.png b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-nft.png new file mode 100644 index 00000000..becec0cc Binary files /dev/null and b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/media/transfer-nft.png differ diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/overview.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/overview.md new file mode 100644 index 00000000..5ac5a2df --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/extension-wallet/overview.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 10 +title: Genel Bakış +sidebar_label: Genel Bakış +--- + +Alephium uzantı cüzdanı, kullanıcıların varlıklarını (yerel `ALPH` jetonu, diğer değiştirilebilir jetonlar ve NFT'ler gibi) Alephium blok zincirinde depolamalarına ve yönetmelerine yardımcı olur. Ayrıca, dApp'lerin güvenli bir şekilde cüzdanlarla etkileşimde bulunmasını sağlar, böylece dApp kullanıcıları tarayıcıdan doğrudan işlem imzalayabilir, akıllı sözleşmelerle etkileşimde bulunabilir, vb. + +İşlem Komutunu Yürüt + +[Başlarken](/wallet/extension-wallet/getting-started) sayfasında, uzantı cüzdanının kurulum kılavuzunu ve hesap yönetimi, jeton transferi, NFT'lerin görüntülenmesi gibi yaygın kullanım senaryolarını bulabilirsiniz. Daha fazla bilgi için dApp entegrasyonunu içeren [dApp Entegrasyonu](/wallet/extension-wallet/dapp) sayfasını inceleyebilirsiniz. diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/ledger.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/ledger.md new file mode 100644 index 00000000..50d600de --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/ledger.md @@ -0,0 +1,134 @@ +--- +sidebar_position: 50 +title: Ledger +sidebar_label: Ledger +--- + +![IMG_8932-2](https://github.com/alephium/alephium/assets/88235023/010e915e-0ecd-4f8f-808e-4223202eaecd) + +## Bu, Ledger'ınıza Alephium Uygulamasını nasıl kuracağınızı ve işlemleri imzalamak için nasıl kullanacağınızı anlatan bir rehberdir + +🚨 *Önemli bilgi: Alephium Cihazları için Alephium Uygulaması, Alephium tarafından özel/topluluk Uygulaması olarak geliştirilmiştir. Şu anda Ledger Live'da mevcut değildir. Bu işlemi nasıl gerçekleştireceğinizi anladığınızdan eminseniz devam edin!* + +🚨 *Bu, erken Alfa sürümü olduğundan, üzerinde yönetilen başka paralar olmayan yeni/başlangıç bir cihaz kullanmanız önerilir.* + +🚨 *Şu anda Ledger uygulaması sadece en son sürüm (v0.7.0) uzantı cüzdanıyla çalışmaktadır.* + +### Video Rehberi +Video formatında bir rehber burada bulunabilir: https://www.youtube.com/watch?v=YBQy_siZh6w + +### Yazılı Rehber + +**1 — Yeni cüzdan sürümünü şuradan indirin**: Chrome — [Uzantı Cüzdanı](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj) / Firefox — [Uzantı Cüzdanı](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) + + +**2 — Gerekli yazılımı kurun** (eğer zaten PIP ve Python kuruluysa, adım 3'e geçin) + +Ledger'ınıza Alephium Uygulamasını almak için bilgisayarınızda Python ve PIP kurulu olması gerekmektedir: + +* Python ([Windows için nasıl](https://www.simplilearn.com/tutorials/python-tutorial/python-installation-on-windows#:~:text=Python%20indirmek%20i%C3%A7in%2C%20Python%20web,and%20run%20the%20installer.), [Mac için nasıl](https://docs.python.org/3/using/mac.html), [Linux için nasıl](https://docs.python-guide.org/starting/install3/linux/)) +* PIP ([Windows için nasıl](https://www.dataquest.io/blog/install-pip-windows/), [Mac için nasıl](https://www.groovypost.com/howto/install-pip-on-a-mac/), [Linux için nasıl](https://docs.python-guide.org/starting/install3/linux/)) + + +**3 — Ledger Python Kütüphanesini Kurun** + +![image](https://github.com/alephium/docs/assets/88235023/fade8c08-f3a1-41b2-b7e9-9a3cd638a683) + +Ledger Python Kütüphanesini kullanacağız (burada bulabilirsiniz). Bu, özel bir Uygulamayı Ledger Cihazınıza yükleyeceğiniz için gereklidir. + +Ledger Python Kütüphanesini kurmak için terminal penceresini açın ve aşağıdaki komutu yazın: + +**pip3 install — upgrade protobuf setuptools ecdsa** + +**pip3 install ledgerwallet** + +Bu, tüm yükseltmeleri yapacak ve bir sonraki adımda gerekecek olan Ledger Cüzdan Kütüphanesini kuracaktır. + +![Ledger Uygulamasını Yükle](https://github.com/alephium/docs/assets/88235023/f3f096e3-fb9b-4a8c-9a98-a060112b0f5f) + +**4 — Alephium Ledger Uygulamasını bilgisayarınıza indirin** + +Aşağıdaki GitHub deposuna gidin: https://github.com/alephium/ledger-alephium ve indirin. + +🚨*Depoyu indirmek için, "Code" yeşil düğmesine tıklayın ve "Download Zip" seçeneğini seçin.* + +![image](https://github.com/alephium/docs/assets/88235023/f699b669-1b00-4b2e-9649-5cedd221e0cb) + +İndirin ve kolayca erişebileceğiniz ve tüm okuma/yazma izinlerine sahip olduğunuz bir klasöre çıkarın. + +**5 — Alephium Uygulamasını Ledger Cihazınıza Kurun** + +Ledger'ınız şimdi bilgisayarınıza bağlanmalı ve kilidi açılmalıdır. + +GitHub deposuna gidin (https://github.com/alephium/ledger-alephium/tree/master) ve sizin Ledger sürümünüze uygun olan komutu bulmak için aşağı kaydırın: + +![image](https://github.com/alephium/docs/assets/88235023/6c5df18d-c59f-4ae4-ad8c-3e7bceb65014) + +Bu bilgiyle, konsol terminaline gidin ve Alephium Uygulamasını kurmak için komutu çalıştırın: + +🚨 *Önemli bilgi: Komutu GitHub'dan dosyaları indirdiğiniz klasörün içinde çalıştırmanız gerekmektedir.* + +Bu örnekte, Ledger Nano S kullanılmaktadır: + +![image](https://github.com/alephium/docs/assets/88235023/d92896ef-5f9b-43a6-8f53-ab56f38c1700) + +Bu komutu çalıştırdıktan sonra, Alephium Uygulamasını Ledger Cihazınıza kurma işlemini doğrulamanız gerekecektir. Kurulumu doğrulamak için tüm onayları geçirin ve pininizi ekleyin. + +Başarılı olduğunda, Alephium simgesi cihazınızda görünecektir. + +![image](https://github.com/alephium/docs/assets/88235023/7c41b2d3-ea5a-44ca-bd05-46338cf3274c) + +Şimdi Ledger'ınızı Alephium'da işlemleri imzalamak için kullanmaya hazırsınız! 🎉 + +**6 — Uzantı Cüzdanınızı Ledger ile kullanın** + +Uzantı cüzdanınızı kurduğunuz tarayıcıya gidin ve açın. + +🚨 *Şu anda Ledger uygulaması sadece en son sürüm (v0.7.0) uzantı cüzdanıyla çalışmaktadır. Eğer yoksa, [buradan (Chrome)](https://chrome.google.com/webstore/detail/alephium-extension-wallet/gdokollfhmnbfckbobkdbakhilldkhcj/related) veya [buradan (Firefox)](https://addons.mozilla.org/en-US/firefox/addon/alephiumextensionwallet/) yükleyebilirsiniz.* + +Uzantı cüzdanınızda yeni bir adres oluşturun: Mevcut adres adına tıklayın ve ardından " +" simgesine tıklayın. Bu sizi Ledger Bağlantı sayfasına yönlendirecektir: + +* Ledger'ınızı takın ve kilidini açın; +* Alephium Uygulamasını açın (tüm adımları doğruladığınızdan emin olun!) +* Listeden Ledger cihazınızı seçin; +* Yapılandırmayı tamamlayın. + +![yeni cüzdan kurulumu](https://github.com/alephium/alephium/assets/88235023/5fa7e000-2f77-4b44-9dfa-13b784e05eba) + +**7 — İşlem Göndermek için Ledger Cihazını Kullanın!** + +Buradaki tüm adımlar, uzantı cüzdanını kullanarak gördüğümüz tipik adımlardır: + +* "Gönder" düğmesine tıklayın + +![image](https://github.com/alephium/docs/assets/88235023/17eaf25a-5629-48cb-bee7-996513e9a7b4) + +* Göndermek istediğiniz tokenı seçin: + +![image](https://github.com/alephium/docs/assets/88235023/60a3ed3b-04f7-447a-9472-886147d2b5d4) + +* Alıcının adresini seçin: + +![image](https://github.com/alephium/docs/assets/88235023/b6b7aae2-4c9e-4048-934e-95caa93bf577) + +* İşlem detaylarını gözden geçirin ve "Ledger ile imzala" ya tıklayın. + +![image](https://github.com/alephium/docs/assets/88235023/fde7b7c2-b864-468e-bb3f-66448fe8a4d2) + +* İşlemi Ledger Cihazınızda imzalayın ve "Aktivite" bölümünde tamamlanmasını izleyin: + +![image](https://github.com/alephium/docs/assets/88235023/efffc0de-01f8-48d7-a67c-ed1487c95483) + +** 8 — Ledger Cihazıyla Alephium'da dApp'lerle etkileşime girin** + +Artık Ledger Cihazınızla bir işlem imzaladınız, sıra onu bir dApp'e bağlamakta. Bu işlem de kolaydır. + +[Testnet'te Alephium DEX'e](https://alephium.github.io/alephium-dex) erişin. Sağ üst köşedeki "Alephium ile Bağlan" düğmesine tıklayın. İstekte bulunun ve uzantı cüzdanını ve Ledger hesabını seçin. + +![dex ile bağlan](https://github.com/alephium/alephium/assets/88235023/f3e6cf9e-e632-4bc0-84a8-67f38d067311) + +Artık Alephium DEX'e bağlısınız. Bir takas işlemi yapın ve bunu imzalamak için Ledger'ınızı kullanın. İşlem, bir transfer işlemine benzer şekilde gerçekleşir. + +![isimsiz](https://github.com/alephium/alephium/assets/88235023/bb263f71-3801-4be3-86cd-d7a18b525e0a) + +Sorularınız veya önerileriniz varsa, lütfen [Alephium'un Discord](http://alephium.org/discord), [Telegram](https://t.me/alephiumgroup) kanalına gelin veya [Twitter'dan](https://twitter.com/alephium) bize ulaşın! diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/node-wallet-guide.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/node-wallet-guide.md new file mode 100644 index 00000000..c85164f7 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/node-wallet-guide.md @@ -0,0 +1,103 @@ +--- +sidebar_position: 40 +title: Node Cüzdanı +sidebar_label: Node Cüzdanı +--- + +Cüzdan API'sine [http://127.0.0.1:12973/docs](http://127.0.0.1:12973/docs) adresindeki Swagger UI aracılığıyla veya `curl` kullanarak erişilebilir. Tam düğümünüzün çalıştığından emin olun, böylece Swagger UI'ye erişebilirsiniz. + +## Yeni bir cüzdan oluşturun + +Aşağıdaki verilerle `/wallets` adresine POST işlemi yaparak yeni bir cüzdan oluşturabilirsiniz. + +```json +{ + "password": "123456", + "walletName": "foo" //isteğe bağlı (varsayılan olarak wallet-x) +} +``` + +Sunucunun, yeni cüzdan mnemoniklerimizi size başarıyla vermesi gerekmektedir. + +```json +{ + "walletName": "foo", + "mnemonic": "laptop tattoo torch range exclude fuel bike menu just churn then busy century select cactus across other merge vivid alarm asset genius mountain transfer" +} +``` + +Yeni cüzdan adresinizi `GET /wallets/{wallet_name}/addresses` ile alın. + +```json +{ + "activeAddress": "T1J2yrmQrNwuFW8z2W6xXFLtJoBCWEm7gLg9BuY8tzKjxw", + "addresses": ["T1J2yrmQrNwuFW8z2W6xXFLtJoBCWEm7gLg9BuY8tzKjxw"] +} +``` + +Daha önce bir kez bir cüzdan oluşturduysanız ancak silindi veya şifrenizi hatırlamıyorsanız, `mnemonic` kullanarak cüzdanınızı geri yükleyebilirsiniz: +``` +PUT /wallets +{ + "password": "123456", + "mnemonic": "laptop tattoo torch range exclude fuel bike menu just churn then busy century select cactus across other merge vivid alarm asset genius mountain transfer", + "walletName": "foo" //optional +} +``` + +## Kilitleme/Açma + +Bir süre sonra cüzdanınız otomatik olarak kilitlenecektir, kullanmak istiyorsanız kilidini açmanız gerekecektir: + +``` +POST /wallets/{wallet_name}/unlock +{ + "password": "123456" +} +``` + +Ayrıca manuel olarak kilitleyebilirsiniz: + +``` +POST /wallets/{wallet_name}/lock +``` + +## Bakiye sorgusu + +Mevcut bakiyeyi `GET /wallets/{wallet_name}/balances` ile kontrol edebilirsiniz. Yanıt: + +```json +{ + "totalBalance": 0, + "balances": [ + { + "address": "T1J2yrmQrNwuFW8z2W6xXFLtJoBCWEm7gLg9BuY8tzKjxw", + "balance": 0 + } + ] +} +``` + +## Fon transferi + +Bir cüzdandan bir adrese bir işlem gönderebilirsiniz: + +``` +POST /wallets/{wallet_name}/transfer +{ + "destinations ": [{ + "address": "", + "amount ": "42 ALPH" + }] +} +``` + +Sunucu, işlem kimliği ve grup bilgileriyle başarılı bir şekilde yanıt vermelidir. + +```json +{ + "txId": "50318e5bfd56796690890f4a9c5aae2725629a15a71cad909bbf4a669c32c2f4", + "fromGroup": 0, + "toGroup": 3 +} +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/wallet/walletconnect.md b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/walletconnect.md new file mode 100644 index 00000000..61b61aec --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/wallet/walletconnect.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 40 +title: WalletConnect +sidebar_label: WalletConnect +--- + +Çok yakında! \ No newline at end of file diff --git a/i18n/tr/docusaurus-theme-classic/footer.json b/i18n/tr/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000..b5bfed2d --- /dev/null +++ b/i18n/tr/docusaurus-theme-classic/footer.json @@ -0,0 +1,62 @@ +{ + "link.title.Community": { + "message": "Topluluk", + "description": "Altbilgide 'Community' başlığına sahip olan alt bilgi bağlantıları sütununun başlığı" + }, + "link.title.Resources": { + "message": "Kaynaklar", + "description": "Altbilgide 'Resources' başlığına sahip olan alt bilgi bağlantıları sütununun başlığı" + }, + "link.title.More": { + "message": "Daha fazla", + "description": "Altbilgide 'More' başlığına sahip olan alt bilgi bağlantıları sütununun başlığı" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "https://alephium.org/discord adresine yönlendiren ve 'Discord' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Telegram": { + "message": "Telegram", + "description": "https://t.me/alephiumgroup adresine yönlendiren ve 'Telegram' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Reddit": { + "message": "Reddit", + "description": "https://www.reddit.com/r/alephium adresine yönlendiren ve 'Reddit' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Twitter": { + "message": "Twitter", + "description": "https://twitter.com/alephium adresine yönlendiren ve 'Twitter' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Explorer": { + "message": "Gezgin", + "description": "https://explorer.alephium.org adresine yönlendiren ve 'Explorer' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Get the wallet": { + "message": "Cüzdanı Edinin", + "description": "https://github.com/alephium/desktop-wallet/releases/latest adresine yönlendiren ve 'Get the wallet' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Tokenomics": { + "message": "Token Ekonomisi", + "description": "https://medium.com/@alephium/tokenomics-of-alephium-61d59b51029c adresine yönlendiren ve 'Tokenomics' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.White papers": { + "message": "Teknik Dokümanlar", + "description": "https://github.com/alephium/white-paper/ adresine yönlendiren ve 'White papers' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "https://github.com/alephium adresine yönlendiren ve 'GitHub' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Alephium Website": { + "message": "Alephium Web Sitesi", + "description": "https://alephium.org adresine yönlendiren ve 'Alephium Website' etiketi taşıyan altbilgi bağlantısı" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "https://medium.com/@alephium adresine yönlendiren ve 'Blog' etiketi taşıyan altbilgi bağlantısı" + }, + "copyright": { + "message": "Bazı hakları saklıdır 2024 Alephium. Docusaurus ile oluşturuldu.", + "description": "Altbilgi telif hakkı bildirimi" + } +} diff --git a/i18n/tr/docusaurus-theme-classic/navbar.json b/i18n/tr/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000..ff3500af --- /dev/null +++ b/i18n/tr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,10 @@ +{ + "title": { + "message": "Alephium", + "description": "The title in the navbar" + }, + "item.label.GitHub": { + "message": "GitHub", + "description": "Navbar item with label GitHub" + } +}