mrtdlgc
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Developing # Geliştirme Osmosis Daemon, CLI, Modüller hakkında bilgi edinin ve testnet veya mainnet’e katılmak için bir node oluşturun --- https://docs.osmosis.zone/developing/ # Osmosis'te Geliştirmeye Giriş Osmosis, ekosisteme katkıda bulunmak isteyen geliştiriciler için çeşitli alanlar sunmaktadır. Kendi Cosmwasm dApp'lerinnizi oluşturarak, Osmosois temel modüllerine katkıda bulunarak veya araçlar ve panolar oluşturarak başlayabilirsiniz. **Osmosis Cosmwasm Geliştirme** Osmosis & Cosmwasm ile kontratlar & dApp'ler olutuşturma **Osmosis Temel Geliştirme** Zincir Geliştirme, Modüller ve dahası. **Osmosis Araçları** Araçlar veya Panolar **Osmosis Önyüz** Osmosis önyüz sitesi hakkında bilgiler --- https://docs.osmosis.zone/developing/dapps/get_started/ # Osmosis üzerinde dApp Geliştirme :::info CosmWasm geliştirici araçları kısa süre içerisinde erişilebilir olacak! Bu sırada, Osmosis'te CosmWasm geliştirmenin temel prensiplerini anlamak için oldukça önemli olan CLI ve Javascript kütüphaneleri ile nasıl etkileşime geçileceğine dair kılavuzlar yayınlıyoruz. ::: ## Başlangıç **LocalOsmosis ile Cosmwasm** Osmosis blok zincirinde kontrat birleştirme, yükleme ve etkileşime girme. **Wasm Yönetişim Teklifi Gönderme** Nasıl wasm binary teklifi gönderileceğine dair bir örnek. **Testnet ile CosmWasm** Testnet'e kontrat deploy etme. **Osmosis Kontrat Listesi** Osmosis'te kabul edilen kod ID'lerini içeren repository. **İlk Kontratınız** Resmi CosmWasm Dokümanları ## Frontend Geliştirme **Cosmwasm & Javascript** Node.js ve tarayıcılar gibi Javascript çalıştırıcılar ile etkileşime geçme. **Osmosis dApp'leri Geliştirme** Çok yakında. ## Araçlar **Beaker** Osmosis geliştirme ortamı. Çok yakında. **LocalOsmosis** Osmosis'i lokalde çalıştırın. **OsmosJS** Osmosis Stargate Client **Osmosis daemon** Osmosisd yükleme. ## Ağlar **Local Osmosis** Osmosis geliştirme ortamı **Testnet'e Katılma** Osmosis testnet'te node kurma **Mainnet'e Katılma** Osmosis mainnet'te node kurma **Açık endpoint'ler** Resmi ve üçüncü taraf API endpoint'leri --- https://docs.osmosis.zone/developing/dapps/get_started/cosmwasm-localosmosis.html # CosmWasm & LocalOsmosis Aşağıda verilenler, Osmosis local ortamda bir kontrat deploy etmenin temellerini açıklamaktadır. Bu rehber aşağıdakileri içerecektir: * İlk Kurulum * Rust * Osmosis yükleyici ile LocalOsmosis * osmosisd binary, otomatik olarak localOsmosis'inize bağlanacak şekilde yapılandırılır * $HOME dizininde localOsmosis kurulumu (~/localosmosis) * Akıllı kontrat deploy etme * Temel şablon bir kontrat'ın clone'lanması * Kontratın compile edilmesi * Kontratin optimizasyonu * Local anahtar oluşturma * Kontratın depolanması * Başlatma * Kontrat adresini alma * Kontratı sorgulama * Kontrat sayacını artırma * Kontrat sayacını sıfırlama * Kontrat durumunu alma * Kontrat bilgisini sorgulama * Bütün kontratları listeleme ## İlk Kurulum Bu rehber, localOsmosis tarafından desteklenecek şekilde local Osmosis ortamınıza kontrat deploy etmek için Osmosis'e özel geliştirici araçlrından faydalanmaktadır. ### Rust Kurulumu Rust, CosmWasm akıllı kontratlarında kullanılan temel programlama dilidir. WASM akıllı kontratları teorik olarak bütün programlama dillerinde yazılabilmesine rağmen, CosmWasm kütüphaneleri ve araçları en iyi Rust ile çalışır. Önce, [Rust](https://www.rust-lang.org/tools/install)'ın son versiyonunu yükleyin. Daha sonra aşağıdaki komutları çalıştırın: ``` # 1. Set 'stable' as the default release channel: rustup default stable # 2. Add WASM as the compilation target: rustup target add wasm32-unknown-unknown # 3. Install the following packages to generate the contract: cargo install cargo-generate --features vendored-openssl cargo install cargo-run-script ``` ### LocalOsmosis Kurulumu localOsmosis kurulumunun en kolay yolu, [otomatik yükleyiciyi](https://get.osmosis.zone/) indirmektir. localOsmosis hakkında daha ayrıntılı bilgiye resmi repo'da bulunan [README](https://github.com/osmosis-labs/localosmosis) dokümanından erişebilirsiniz. Aşağıdaki komutu çalıştırıp opsiyon #3'ü seçin. ``` curl -sL https://get.osmosis.zone/install > i.py && python3 i.py ``` ![](https://i.imgur.com/8M73aQK.png) ### localOsmosis'i Başlatın Ayrı bir pencerede, ~/localosmosis2e kurulu localOsmosis'inizi başlatın. ``` cd ~/localosmosis docker-compose up ``` Terminalde LocalOsmosis blok aktivitesini görmeye başlayacaksınız. Yeni bir terminal penceresinde ilerleyen adımları gerçekleştirirken LocalOsmosis çalışır halde kalsın. ![](https://i.imgur.com/boNx8sC.png) :::info LocalOsmosis cüzdan bilgisi için, [LocalOsmosis hesap sayfasını](https://github.com/osmosis-labs/localosmosis#accounts)) ziyaret ediniz. ::: ## Akıllı Kontrat Deploy etme ### cw-tpl-osmosis'i clone'layın Bu örnekte, [cw-template](https://github.com/InterWasm/cw-template) repo ile oluşturulan cw-tpl-osmosis'i (CosmWasm Template Osmosis) kullanacağız. ``` git clone https://github.com/osmosis-labs/cw-tpl-osmosis ``` ### Stabil toolchain ile wasm kontratını compile edin ``` rustup default stable cargo wasm ``` Compile işlemi tamamlandıktan sonra `target/wasm32-unknown-unknown/release/cw_tpl_osmosis.wasm.` içerisinde bir dosya oluşturmalıdır. ls -lh yaptığınızda, yaklaşık 1.8MB görünmelidir. Bu build, release build'i olmasına rağmen gereksiz kodların tamamı temizlenmemiştir. Çok daha küçük bir versiyon oluşturmak için, compiler'a kullanılmayan tüm kodları sildirmek için şu komutu çalıştırabilirsiniz: ``` RUSTFLAGS='-C link-arg=-s' cargo wasm ``` Bu işlem sonucunda, yaklaşık 149kB'lık bir dosya oluşur. Aşağıda daha fazla optimizasyon yapacağız. ### Optimize Compile Gas maliyetlerini düşürmek açısından binary boyutu mümkün olduğunca küçük olmalıdır. Böylece deploy ederken nispeten daha az gas ödenir ve bütün etkileşimler için de ödenecek ücretler azalır. Üretim kodunu, rust-otpmizer kullanarak optimize edebilirsiniz. rust-optimizer CosmWasm akıllı kontratlarının yeniden üretilebilir build'lerini oluşturur. Böylece üçüncü taraflar, kontratın gerçekten iddia edilen koda sahip olup olmadığını doğrulayabilir. ``` sudo docker run --rm -v "$(pwd)":/code \ --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ cosmwasm/rust-optimizer:0.12.6 ``` Binary, artifacts/osmosis_cw_tpl.wasm klasöründe olacak, boyutu ise 138k olacaktır. ### Local Anahtar oluşturma localOsmosis'te verilen tohumlardan birini kullanarak bir anahtar oluşturun. ``` osmosisd keys add <unsafe-test-key-name> --recover ``` Örnekteki test1 anahtarı [buradan](https://github.com/osmosis-labs/localosmosis#accounts): ``` notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius ``` ### localOsmosis chain'inizi depolayın Kontratı localOsmosis'e veya testnet'e deploy edebilirsiniz. Bu örnekte localOsmosis'e deploy edeceğiz. ``` cd artifacts osmosisd tx wasm store cw_tpl_osmosis.wasm --from <unsafe-test-key-name> --chain-id=<chain-id> --gas-prices 0.1uosmo --gas auto --gas-adjustment 1.3 -b block -y ``` `<unsafe-test-key-name>` = Local anahtarınızın adı. `<chain-id>` = localosmosis `<unsafe-test-key-name>`'i local anahtarlarınızdaki anahtar ismi ile değiştirin. `<chain-id>`'yi localosmosis veya osmo-test-4 olarak değiştirin. Yukarıdaki komutun çıktısındaki CODE_UD'yi lokal değişken olarak kaydedin. `CODE_ID=XX` ### Veya CODE_ID'yi Depolama Yukarıdaki komutta code_id'ye bakmak yerine, aşağıdaki komutu çalıştırarak CODE_ID'yi değişken olarak ayarlayabilirsiniz. ``` TX=$(osmosisd tx wasm store cw_tpl_osmosis.wasm --from <unsafe-test-key-name> --chain-id=<chain-id> --gas-prices 0.1uosmo --gas auto --gas-adjustment 1.3 -b block --output json -y | jq -r '.txhash') CODE_ID=$(osmosisd query tx $TX --output json | jq -r '.logs[0].events[-1].attributes[0].value') echo "Your contract code_id is $CODE_ID" ``` Yeni bir localOsmosis instance'ı ise, `1` olmalıır. ### Kontratı somutlaştırma ``` INITIAL_STATE='{"count":100}' osmosisd tx wasm instantiate $CODE_ID $INITIAL_STATE --amount 50000uosmo --label "Counter Contract" --from <unsafe-test-key-name> --chain-id <chain-id> --gas-prices 0.1uosmo --gas auto --gas-adjustment 1.3 -b block -y --no-admin ``` Örnek: ``` INITIAL_STATE='{"count":100}' osmosisd tx wasm instantiate $CODE_ID $INITIAL_STATE --amount 50000uosmo --label "Counter Contract" --from c1 --chain-id localosmosis --gas-prices 0.1uosmo --gas auto --gas-adjustment 1.3 -b block -y --no-admin ``` ### Kontrat adresini alma ``` CONTRACT_ADDR=$(osmosisd query wasm list-contract-by-code $CODE_ID --output json | jq -r '.contracts[0]') ``` ## Kontratı Sorgulama ### Kontrat sayacını artırma ``` INCREMENT_MSG='{"increment":{}}' osmosisd tx wasm execute $CONTRACT_ADDR "$INCREMENT_MSG" --from c1 ``` ### Kontrat sayacını sıfırlama ``` RESET_MSG='{"reset":{"count":0}}' osmosisd tx wasm execute $CONTRACT_ADDR "$RESET_MSG" --from c1 ``` ### Kontrat durumunu alma ``` GET_STATE_MSG='{"get_count":{}}' osmosisd query wasm contract-state smart $CONTRACT_ADDR "$GET_STATE_MSG" ``` ### Kontrat bilgisini sorgulama ``` osmosisd query wasm contract $CONTRACT_ADDR ``` ### Tüm kontratları listeleme ``` osmosisd query wasm list-code ``` Süper! Artık kontrat geliştirmeyi öğrenmeye başlayabilirsiniz. Bunun içn [resmi CosmWasm kontratlarını](https://docs.cosmwasm.com/docs/1.0/getting-started/intro) ziyaret edebilir ve dokümantasyonu inceledikçe Osmosis Blokzinciri ile nasıl etkileşime geçilebileceğini öğrenebilirsiniz. --- https://docs.osmosis.zone/developing/dapps/get_started/submit_wasm_proposal.html # Wasm Yönetişim Teklifi Gönderme Aşağıdaki rehber, Osmosis'te nasıl wasm binary teklifi gönderileceğine dair basit bir örnek sunmaktadır. Bu örnek, localOsmosis üzerinde gösterilmiştir; ancak testnet'te de kullanılabilir. ## Localosmosis localOsmosis kurulumunun en kolay yolu, [otomatik yükleyiciyi](https://get.osmosis.zone/) indirmektir. localOsmosis hakkında daha ayrıntılı bilgiye resmi repo'da bulunan [README](https://github.com/osmosis-labs/localosmosis) dokümanından erişebilirsiniz. Aşağıdaki komutu çalıştırıp opsiyon #3'ü seçin. ``` curl -sL https://get.osmosis.zone/install > i.py && python3 i.py ``` ![](https://i.imgur.com/8M73aQK.png) ### localOsmosis'i Başlatın Ayrı bir pencerede, ~/localosmosis2e kurulu localOsmosis'inizi başlatın. ``` cd ~/localosmosis docker-compose up ``` Terminalde LocalOsmosis blok aktivitesini görmeye başlayacaksınız. Yeni bir terminal penceresinde ilerleyen adımları gerçekleştirirken LocalOsmosis çalışır halde kalsın. ![](https://i.imgur.com/boNx8sC.png) :::info LocalOsmosis cüzdan bilgisi için, [LocalOsmosis hesap sayfasını](https://github.com/osmosis-labs/localosmosis#accounts)) ziyaret ediniz. ::: ## Örnek kontrat indirin ``` curl -s -L -O https://github.com/CosmWasm/cw-plus/releases/download/v0.12.1/cw20_base.wasm ``` ## Değişkenleri tanımlayın ``` CHAIN_ID=localosmosis CONTRACT=cw20_base ``` ## Teklif ID'yi tanımlayın Bunu programatik bir şekilde yapamıyoruz. Teklif `1`, yeni bir zincirde ilk kez gönderildikten sonra ortaya çıkacak. Aynı state'te birden fazla test gerçekleştirirken bunu manuel olarak güncelleyebilirsiniz. ``` PROPOSAL=1 ``` ## Tohumdan local cüzdan oluşturun Bu tohumun zaten [şurada](https://github.com/osmosis-labs/localosmosis#accounts) gösterildiği şekilde localOsmosis'in bir parçası olduğunu belirtelim. ``` echo "satisfy adjust timber high purchase tuition stool faith fine install that you unaware feed domain license impose boss human eager hat rent enjoy dawn" | osmosisd keys add validator --keyring-backend test --recover VAL=$(osmosisd keys show -a validator --keyring-backend test) ``` ## Teklifi gönderin ``` osmosisd tx gov submit-proposal wasm-store $CONTRACT.wasm --title "Add $CONTRACT" \ --description "Let's upload this contract" --run-as $VAL \ --from validator --keyring-backend test --chain-id $CHAIN_ID -y -b block \ --gas 9000000 --gas-prices 0.025uosmo ``` ## Teklifi sorgulayın ``` osmosisd query gov proposal $PROPOSAL ``` ## Teklife depozito yatırın ``` osmosisd tx gov deposit $PROPOSAL 10000000uosmo --from validator --keyring-backend test \ --chain-id $CHAIN_ID -y -b block --gas 6000000 --gas-prices 0.025uosmo ``` ## Oy Vermek için ``` osmosisd tx gov vote $PROPOSAL yes --from validator --keyring-backend test \ --chain-id $CHAIN_ID -y -b block --gas 600000 --gas-prices 0.025uosmo ``` ## Sonuçları kontrol etmek için Sonuçların görünmesi için bir iki dakika bekleyin. ``` osmosisd query wasm list-code ``` ### Daha Fazla Bilgi için: https://github.com/CosmWasm/wasmd/blob/main/x/wasm/Governance.md --- https://docs.osmosis.zone/developing/dapps/get_started/cosmwasm-testnet.html#deploying-cosmwasm-contracts-to-the-testnet # Testnet ile CosmWasm ## Testnet'e Cosmwasm Kontratlarını Deploy Etme Bu bölüm üzerinde henüz çalışıyoruz; ancak [localOsmosis](https://docs.osmosis.zone/developing/dapps/get_started/cosmwasm-localosmosis.html) rehberini izleyerek testnet'e uyarlayabilirsiniz. --- https://docs.osmosis.zone/developing/dapps/get_started/javascript.html#prerequisites # Javascript & Akıllı Kontratlar Bu rehber, Node.js ve tarayıcılar gibi Javascript çalıştırıcılar ile Osmosis Akıllı kontratlarıyla nasıl etkileşime geçileceğini açıklamaktadır. ## Ön Gereklilikler * npm ve node.js * localosmosis - (Mainnet'e bağlanırken gerekli değil) * Keplr bwoser, bu rehberde henüz kullanılmamıştır Yeni bir proje başlatın ``` npm init -y ``` Cosmwasm'ı yükleyin ``` npm i cosmwasm ``` package.json dosyasını bir kod düzenleyicide açıp aşağıdakini ekleyin ``` "type": "module",. { // ... "type": "module", // ... } ``` Yeni bir index.ts dosyası oluşturun ``` touch index.ts ``` Class CosmWasmClient, CosmJS package @ cosmjs/cosmwasm-stargte'ten dışa aktarılmıştır. Ayrıntılı bilgi için bkz. [resmi dokümanlar](https://cosmwasm.github.io/CosmWasmJS/clients/reading/CosmWasmClient.html). ``` import { CosmWasmClient } from "cosmwasm"; // This is your rpc endpoint const rpcEndpoint = "http://localhost:26657/"; async function main() { const client = await CosmWasmClient.connect(rpcEndpoint); console.log(client); } main(); ``` :::info Mainnet'e rpcEndpoint'i https://rpc.osmosis.zone/ ile değiştirerek de bağlanabilirsiniz. [Ayrıntılı bilgi için.](https://docs.osmosis.zone/developing/network/public-endpoints.html#official-endpoints) ::: ## Çalıştırın ``` npm index.js ``` Şöyle bir ekranla karşılaşacaksınız: ![](https://i.imgur.com/X5MK3s3.png) ## Diğer Yöntemler [Resmi dokümanlarda](https://cosmwasm.github.io/CosmWasmJS/clients/reading/CosmWasmClient.html#available-methods) belgelendiği şekilde: ``` async function moreExamples() { const client = await CosmWasmClient.connect(rpcEndpoint); const chainId = await client.getChainId() const getHeight = await client.getHeight() const getAccount = await client.getAccount("osmo1phaxpevm5wecex2jyaqty2a4v02qj7qmlmzk5a") const getSequence = await client.getSequence("osmo1phaxpevm5wecex2jyaqty2a4v02qj7qmlmzk5a") const getBlock = await client.getBlock(1) const getBalance = await client.getBalance("osmo1phaxpevm5wecex2jyaqty2a4v02qj7qmlmzk5a","uosmo") console.log(chainId); console.log(client); console.log(getHeight); console.log(getAccount); console.log(getSequence); console.log(getBlock); console.log(getBalance); } moreExamples(); ``` ## İşlemler | Yöntem | Açıklama | Parametreler | | -------- | -------- | -------- | | .getTx() | | id: string | | .searchTx() | | query: SearchTxQuery, filter: SearchTxFilter = {} | | .txsQuery() | | query: string | ## Kodlar | Yöntem | Açıklama | Parametreler | | -------- | -------- | -------- | | .getCodes() | | none | | .getCodeDetails() | | codeId: number | ## Akıllı Kontratlar | Yöntem | Açıklama | Parametreler | | -------- | -------- | -------- | | .getContracts() | | cideId: number | | .getContract() | | address: string | | .queryContractRaw() | | address: string, key: Uint8Array | | .queryContractSmart() | | address: string, queryMsg: Record<string, unknown> | # Akıllı Kontratları Sorgulama :::warning Akıllı kontratları localOsmosis'te sorgulamadan önce, [şu rehberi izleyerek deploy etmemiz](https://docs.osmosis.zone/developing/dapps/get_started/cosmwasm-localosmosis.html) gerekmektedir. ::: Akıllı kontratı deploy ettikten sonra, aşağıdaki komutu çalıştırarak `<CONTRACT-ID>`'yi alabilirsiniz: ``` osmosisd query wasm list-code ``` ![](https://i.imgur.com/LGKZF9c.png) Bu örnekte, 7 kontrat bulunmaktadır. Sonuncusu 7'dir. Artık aşağıdaki komut ile kontrat adresini alabilirsiniz: ``` osmosisd query wasm list-contract-by-code <CONTRACT-ID> ``` ![](https://i.imgur.com/PDtbGC6.png) Kontrat id 7 için kontrat adresimiz: `osmo1zlmaky7753d2fneyhduwz0rn3u9ns8rse3tudhze8rc2g54w9ysq725p3a` ## Kontratı Alma ``` import { CosmWasmClient } from "cosmwasm"; // This is your rpc endpoint const rpcEndpoint = "http://localhost:26657/"; async function queryContract() { const client = await CosmWasmClient.connect(rpcEndpoint); const getContract = await client.getContract("osmo1zlmaky7753d2fneyhduwz0rn3u9ns8rse3tudhze8rc2g54w9ysq725p3a") console.log(getContract); } queryContract(); ``` Aşağıdaki kodu çalıştırın ``` node index.js ``` Çıktı şu şekilde olmalıdır: ![](contract_details.png) ## Kontrattan sayaç rakamını alma Etkileşime geçtiğimiz kontrat, birkaç basit fonksiyona sahiptir. `get_count`, `increment` ve `reset`. Bu iki fonksiyon, `queryContractSmart` yöntemi ile çağrılabilir. :::info [Burada](cosmwasm-localosmosis.html), localOsmosis üzerinde örnek bir kontratın nasıl yükleneceğine dair ayrıntılı bir rehber bulunmaktadır. ::: ``` async function getCount() { const client = await CosmWasmClient.connect(rpcEndpoint); const getCount = await client.queryContractSmart("osmo1zlmaky7753d2fneyhduwz0rn3u9ns8rse3tudhze8rc2g54w9ysq725p3a",{ "get_count": {}}) console.log(getCount); } getCount(); ``` ## Sayacı artırma ``` async function increaseCounter() { const client = await CosmWasmClient.connect(rpcEndpoint); const increaseCounter = await client.queryContractRaw("osmo1zlmaky7753d2fneyhduwz0rn3u9ns8rse3tudhze8rc2g54w9ysq725p3a","{\"increment\":{}}") console.log(increaseCounter); } queryContract(); ``` Bu sayfadaki çalışma devam etmektedir. Güncellenecektir. --- https://docs.osmosis.zone/developing/tools/localosmosis.html#what-is-localosmosis #LocalOsmosis ## LocalOsmosis Nedir? LocalOsmosis (Local Terra fork'u), Docker ile derlenmiş ve basit bir `docker-compose` ile organize edilmiş eksiksiz bir Osmosis testnet ve ekosistemidir. Akıllı kontrat geliştiricilerin, kontratlarını testnet veya mainnet'e deploy etmeden önce bir sandbox'ta test etmelerini kolaylaştırır. LocalOsmosis, standart test ortamları için önceden düşünülmüş bazı varsayılan yapılandırmalara sahiptir. Diğer projeler, LocalOsmosis'te test yapılmasından bahsediyorsa, bu repo'da tanımlanan ayarlardan bahsediyorlardır. LocalOsmosis açık testnet'e göre aşağıdaki avantajlara sahiptir: * Kolayca modifiye edilebilir world state'ler * Hızlı tekrarlar için çabukça sıfırlama olanağı * Farklı senaryolar için basit simülasyonlar * Kontrol edilebilir validatör davranışı ## Ön Gereksinimler * [`Docker`](https://www.docker.com/) * [`docker-compose`](https://github.com/docker/compose) * [`Osmosisd`](https://get.osmosis.zone) * Opsiyon 3'ü (localosmosis) seçin, yükleyici sizin için tüm yapılandırmaları gerçekleştirecektir. * Local bilgisayarınızdaki osmosisd daemon, Docker container'ın içinde çalışan localosmosis daemon ile iletişim kurmak için kullanılır. * Desteklendiği bilinen mimari: x86_64 * 16+ GB RAM önerilir ## LocalOsmosis Kurulumu 1. Aşağıdaki komutu çalıştırın: ``` git clone https://github.com/osmosis-labs/LocalOsmosis.git cd LocalOsmosis ``` 2. Docker daemon'un arka planda çalıştığından ve [`docker-compose`](https://github.com/docker/compose)'un yüklü olduğundan emin olun. Linux üzerinde çalıştırıyorsanız, bu araçları aşağıdaki komutlar ile yükleyebilirsiniz: * docker ``` sudo apt-get remove docker docker-engine docker.io sudo apt-get update sudo apt install docker.io -y ``` * docker-compose ``` sudo apt install docker-compose -y ``` ## LocalOsmosis'i başlatma, durdurma ve sıfırlama * LocalOsmosis'i başlatmak için: ``` make start ``` Şu anda ortamınızda aşağıdakiler bulunmaktadır: * `tcp://localhost:26657` üzerinde çalışan [osmosisd](https://github.com/osmosis-labs/osmosis) RPC node'u * `http://localhost:1317` üzerinde çalışan LCD LocalOsmosis'i durdurmak (ve zincir bilgisini tutmak) için: ``` make stop ``` LocalOsmosis'i durdurmak (ve zincir bilgisini silmek) için: ``` make restart ``` ## Entegrasyonlar ### osmosisd 1. Local bilgisayarınızda ve LocalOsmosis Docker container'da `osmosisd`'nin aynı versiyonu bulunduğundan emin olun. localosmosis versiyonunu, docker-compose.yml dosyasının image'ini kontrol ederek ve local makinanızdaki osmosid versiyonunu ise `osmosisd version` ile kontrol edebilirsiniz. 2. LocalOsmosis `osmosisd` node'u ile iletişime geçmek için lokal makinanızdaki `osmosisd`'yi kullanın: ``` osmosisd status ``` Bu komut, `osmosisd` varsayılan olarak `localhost:26657`'ye bağlı olduğundan dolayı otomatik olarak çalışır. Aşağıdaki komut, yukarıdakinin daha açık şeklidir: ``` osmosisd status --node=tcp://localhost:26657 ``` 3. Aşağıdaki örnekte gösterildiği şekilde, osmosisd komutlarından herhangi birini LocalOsmosis ağınıza karşı çalıştırın: ``` osmosisd query account osmo1l0jjmvdtj4c3f8cxzzgfhq0zhdzf2x8cgpg056 ``` ## LocalOsmosis Yapılandırması LocalOsmosis'in büyük çoğunluğu, `docker-compose.ym`l dosyası ile uygulandığından dolayı kolayca ihtiyaca özgü ayarlanabilir. LocalOsmosis'i, Docker container'lar ile kendi lokal Osmosis testnet'inizin kurulumunu yaparken başlangıç şablon noktası olarak kullanabilirsiniz. Orijinal haliyle, LocalOsmosis aşağıdakiler gibi önceden tanımlanmış ayarlar ile gelir: * RPC (26657) ve LCD (1317) için tanımlı portlar * standart [hesaplar](https://docs.osmosis.zone/developing/tools/localosmosis.html#accounts) ### Node yapılandırmasının modifiye edilmesi `config/config.toml` ve `config/app.toml` dosyaları içerisindeki validatörünüzün node yapılandırmasını modifiye edebilirsiniz. #### İpucu: Blok Zamanını Hızlandırma Blok zamanını düşürmek için, `config/config.toml` dısyasındaki `[consensus]` parametrelerini düzenleyin ve kendi değerlerinizi belirtin. Aşağıdaki örnekte, zaman aşımları `200ms` olarak yapılandırılmıştır: ``` ##### consensus configuration options ##### [consensus] wal_file = "data/cs.wal/wal" - timeout_propose = "3s" - timeout_propose_delta = "500ms" - timeout_prevote = "1s" - timeout_prevote_delta = "500ms" - timeout_precommit_delta = "500ms" - timeout_commit = "5s" + timeout_propose = "200ms" + timeout_propose_delta = "200ms" + timeout_prevote = "200ms" + timeout_prevote_delta = "200ms" + timeout_precommit_delta = "200ms" + timeout_commit = "200ms" ``` Ek olarak, zaman aşımlarını yapılandırmak için aşağıdaki tek satırı kullanabilirsiniz: ``` sed -E -i '/timeout_(propose|prevote|precommit|commit)/s/[0-9]+m?s/200ms/' config/config.toml ``` ### Genesis'in modifiye edilmesi `config/genesis.json`'ı düzenleyerek, `genesis.json` dosyasını değiştirebilirsiniz. Değişikliklerinizi yüklemek için LocalOsmosis'i yeniden başlatın. ## Hesaplar LocalOsmosis, bir validatör ile birlikte ION ve OSMO bakiyelerine sahip 10 hesap barındıran bir önyapılandırmaya sahiptir. | Hesap | Adress | Mnemonic | | --------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | validatör | `osmo1phaxpevm5wecex2jyaqty2a4v02qj7qmlmzk5a`<br/>`osmovaloper1phaxpevm5wecex2jyaqty2a4v02qj7qm9v24r6` | `satisfy adjust timber high purchase tuition stool faith fine install that you unaware feed domain license impose boss human eager hat rent enjoy dawn` | | test1 | `osmo1cyyzpxplxdzkeea7kwsydadg87357qnahakaks` | `notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius` | | test2 | `osmo18s5lynnmx37hq4wlrw9gdn68sg2uxp5rgk26vv` | `quality vacuum heart guard buzz spike sight swarm shove special gym robust assume sudden deposit grid alcohol choice devote leader tilt noodle tide penalty` | | test3 | `osmo1qwexv7c6sm95lwhzn9027vyu2ccneaqad4w8ka` | `symbol force gallery make bulk round subway violin worry mixture penalty kingdom boring survey tool fringe patrol sausage hard admit remember broken alien absorb` | | test4 | `osmo14hcxlnwlqtq75ttaxf674vk6mafspg8xwgnn53` | `bounce success option birth apple portion aunt rural episode solution hockey pencil lend session cause hedgehog slender journey system canvas decorate razor catch empty` | | test5 | `osmo12rr534cer5c0vj53eq4y32lcwguyy7nndt0u2t` | `second render cat sing soup reward cluster island bench diet lumber grocery repeat balcony perfect diesel stumble piano distance caught occur example ozone loyal` | | test6 | `osmo1nt33cjd5auzh36syym6azgc8tve0jlvklnq7jq` | `spatial forest elevator battle also spoon fun skirt flight initial nasty transfer glory palm drama gossip remove fan joke shove label dune debate quick` | | test7 | `osmo10qfrpash5g2vk3hppvu45x0g860czur8ff5yx0` | `noble width taxi input there patrol clown public spell aunt wish punch moment will misery eight excess arena pen turtle minimum grain vague inmate` | | test8 | `osmo1f4tvsdukfwh6s9swrc24gkuz23tp8pd3e9r5fa` | `cream sport mango believe inhale text fish rely elegant below earth april wall rug ritual blossom cherry detail length blind digital proof identify ride` | | test9 | `osmo1myv43sqgnj5sm4zl98ftl45af9cfzk7nhjxjqh` | `index light average senior silent limit usual local involve delay update rack cause inmate wall render magnet common feature laundry exact casual resource hundred` | | test10 | `osmo14gs9zqh8m49yy9kscjqu9h72exyf295afg6kgk` | `prefer forget visit mistake mixture feel eyebrow autumn shop pair address airport diesel street pass vague innocent poem method awful require hurry unhappy shoulder` | --- https://docs.osmosis.zone/developing/tools/osmosisd.html # Osmosisd ## Minimum Gereksinimler Osmosisd çalıştırmak için önerilen minimum spesifikasyonlar aşağıdaki gibidir: * 8-çekirdek (4 fiziksel çekirdek), x86_64 mimari işlemci * 32 GB RAM (veya dengi swap dosya kurulumu) * 1 TB depolama alanı [Buradan](https://quicksync.io/networks/osmosis.html) osmosisd'yi çalıştırmak için yeterince depolama alanına sahip olup olmadığınızı kontrol edebilirsiniz ## Komutlar Ayrıntılı bilgi için [komutlar](https://docs.osmosis.zone/developing/tools/commands) sayfasına gidiniz. ## Hızlı Başlangıç https://get.osmosis.zone/ adresine gidin veya terminalinize aşağıdakini kopyalayıp yapıştırarak ekrandaki talimatları izleyin: ``` curl -sL https://get.osmosis.zone/install > i.py && python3 i.py ``` ![](https://i.imgur.com/rKJvPQs.png) ## Manuel Kurulum ### Sistemi Güncelleyin Bu kılavuz, osmosisd binary'i sisteminize nasıl yükleyebileceğinizi açıklayacaktır. Ubuntu'da sisteminizi güncelleyerek başlayın: ``` sudo apt update ``` ``` sudo apt upgrade --yes ``` ### Build Gereksinimlerini Kurun Make ve gcc'yi kurun. ``` sudo apt install git build-essential ufw curl jq snapd --yes ``` Go'yu kurun: ``` wget -q -O - https://git.io/vQhTU | bash -s -- --version 1.17.2 ``` Yükledikten sonra uygun bir şekilde yeni terminali açıp go'yu yükleyin. ### Osmosis Binary'i Kurun Osmosis repo'yu klonlayıp v.7.0.3'ü kurun: ``` cd $HOME git clone https://github.com/osmosis-labs/osmosis cd osmosis git checkout v7.0.3 make install ``` > **Not:** > Buraya testnet node talimatlarından geldiyseniz [geri dönmek için buraya tıklayın](https://docs.osmosis.zone/developing/network/join-testnet). > Mainnet node talimatlarından geldiyseniz [geri dönmek için buraya tıklayın.](https://docs.osmosis.zone/developing/network/join-mainnet) ## Komutlar Bu bölüm, `osmosisd`'de bulunan komutları ve çalışan bir `osmosisd` işlemine bağlanan komut satırı arayüzünü açıklamaktadır. ### `add-genesis-account` `genesis.json`'a bir genesis hesabı ekler. **Sentaks** ``` osmosisd add-genesis-account <address-or-key-name> '<amount><coin-denominator>,<amount><coin-denominator>' ``` **Örnek** ``` osmosisd add-genesis-account acc1 '200000000uOsmo,550000ukrw' ``` ### `collect-gentxs` Genesis işlemlerini topplayarak `genesis.json`'a çıktı olarak verir. **Sentaks** ``` osmosisd collect-gentxs ``` ### `debug` Uygulamada hata ayıklamaya ayrdımcı olur. Sentaks ve altkomutlardan oluşan liste için bkz [debug altkomutları](subcommands.md#debug-addr). ### `export` State'i JSON olarak dışa aktarır. **Sentaks** ```bash osmosisd export ``` ### `gentx` `genesis.json`'a genesis işlemi ekler. **Sentaks** ```bash osmosisd gentx <key-name> <amount><coin-denominator> ``` **Örnek** ```bash osmosisd gentx myKey 1000000uOsmo --home=/path/to/home/dir --keyring-backend=os --chain-id=test-chain-1 \ --moniker="myValidator" \ --commission-max-change-rate=0.01 \ --commission-max-rate=1.0 \ --commission-rate=0.07 \ --details="..." \ --security-contact="..." \ --website="..." ``` ### `help` Yardım bilgisini gösterir. **Sentaks** ```bash osmosisd help ``` ### `init` Bir validatör ve bir node için yapılandırma dosyalarını başlatır. **Sentaks** ```bash osmosisd init <moniker> ``` **Örnek** ```bash osmosisd init myNode ``` ### `keys` Keyring komutlarını yönetir. Sentaks ve altkomutlardan oluşan liste için bkz [keys alt komutlar](subcommands.md#keys-add) ### `migrate` Kaynak genesis'i hedef versiyona taşır ve STDOUT'a yazdırır. **Sentaks** ```bash osmosisd migrate <path-to-genesis-file> ``` **Örnek** ```bash osmosisd migrate /genesis.json --chain-id=testnet --genesis-time=2020-04-19T17:00:00Z --initial-height=4000 ``` ### `query` Sorguları yönetir. Sentaks ve altkomutlardan oluşan liste için bkz [query alt komutları](subcommands.md#query-account) ### `rosetta` Bir Rosetta sunucusu oluşturur. **Sentaks** ```bash osmosisd rosetta ``` ### `start` İşlem içinde veya dışında, tam node uygulamayı Tendermint ile çalıştırır. Varsayılan olarak, uygulama işlem içerisinde Tendermint ile çalışır. **Sentaks** ```bash osmosisd start ``` ### `status` Uzak node'un durumunu gösterir. **Sentaks** ```bash osmosisd status ``` ### `tendermint` Tendermint protokolü yönetir. Alt komutlar için bkz []() ### `testnet` Belirtilen sayıda dizin ile bir testnet oluşturur ve her bir dizine gerekli dosyaları yükler. **Sentaks** ```bash osmosisd testnet ``` **Örnek** ```bash osmosisd testnet --v 6 --output-dir ./output --starting-ip-address 192.168.10.2 ``` ### `tx` Hash, hesap sekansı veya imza ile bir işlemi getirir. Tüm sentaks ve alt komutlardan oluşan liste için bkz [tx alt komutları](subcommands.md#tx-authz-exec) **Hash sorgusu için sentaks** ```bash osmosisd query tx <hash> ``` **Hesap sekansı sorgusu için sentaks** ```bash osmosisd query tx --type=acc_seq <address>:<sequence> ``` **İmza sorgusu için sentaks** ```bash osmosisd query tx --type=signature <sig1_base64,sig2_base64...> ``` ### `txs` Sonuçları sayfalara ayıracak şekilde, belirtilen olaylara karşılık gelen işlemleri getirir. **Sentaks** ```bash osmosisd query txs --events '<event>' --page <page-number> --limit <number-of-results> ``` **Örnek** ```bash osmosisd query txs --events 'message.sender=cosmos1...&message.action=withdraw_delegator_reward' --page 1 --limit 30 ``` ### `unsafe-reset-all` Blok zincir veritabanını sıfırlar, adres defteri dosyalarını siler ve `data/priv_validator_state.json`'ı genesis durumuna sıfırlar. **Sentaks** ```bash osmosisd unsafe-reset-all ``` ### `validate-genesis` Varsayılan lokasyonda veya belirtilen lokasyonda genesis dosyasını doğrular. **Sentaks** ```bash osmosisd validate-genesis </path-to-file> ``` **Örnek** ```bash osmosisd validate-genesis </genesis.json> ``` ### `version` Çalıştırdığınız Osmosis versiyonunu getirir. **Sentaks** ```bash osmosisd version ``` --- https://docs.osmosis.zone/developing/network/join-testnet.html # Testnet'e Katılım ## Osmosis Binary'i Kurun Aşağıdaki talimatları izlemeden önce [Osmosis Binary (CLI) kurulu](https://docs.osmosis.zone/developing/cli/install#manual-installation) olduğundan emin olun. Her şeyin otomatik olarak gerçekleşmesini istiyorsanız [Osmosis installer](https://docs.osmosis.zone/developing/cli/install#quick-start)'ı da kullanabilirsiniz. ## Faucet Testnet tokenlerini edinmek için [faucet](https://faucet.osmosis.zone/)'i kullanın. ## Osmosis Node'u Başlatın Node'unuzu başlatmak için osmosisd'yi kullanın (`NODE NAME`'i dilediğiniz isimle değiştirin) ``` osmosisd init NODE_NAME --chain-id=osmo-test-4 ``` Seed'leri ve persistent peers'i düzenlemek için config.toml'i açın. ``` cd $HOME/.osmosisd/config nano config.toml ``` Page down veya ok tuşlarını kullanarak seeds ="" satırına gelerek aşağıdaki kodu yerleştirin. ``` seeds = "0f9a9c694c46bd28ad9ad6126e923993fc6c56b1@137.184.181.105:26656" ``` Daha sonra persistent peers'i ekleyin: ``` persistent_peers = "4ab030b7fd75ed895c48bcc899b99c17a396736b@137.184.190.127:26656,3dbffa30baab16cc8597df02945dcee0aa0a4581@143.198.139.33:26656" ``` Kaydetmek için `Ctrl+O`'ya bastıktan sonra çıkış için `Ctrl+X`'i kullanın. ## Cosmovisor'ı Kurun Güncellemelerin kusursuz bir şekilde gerçekleşmesi için cosmovisor'ı kurun. Cosmovisor'ı kurmak için: ``` go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.0.0 ``` Gerekli dizinleri oluşturun: ``` mkdir -p ~/.osmosisd/cosmovisor mkdir -p ~/.osmosisd/cosmovisor/genesis mkdir -p ~/.osmosisd/cosmovisor/genesis/bin mkdir -p ~/.osmosisd/cosmovisor/upgrades ``` Ortam değişkenlerini (environment variables) ayarlayın: ``` echo "# Setup Cosmovisor" >> ~/.profile echo "export DAEMON_NAME=osmosisd" >> ~/.profile echo "export DAEMON_HOME=$HOME/.osmosisd" >> ~/.profile echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=false" >> ~/.profile echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ~/.profile echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ~/.profile echo "export UNSAFE_SKIP_BACKUP=true" >> ~/.profile source ~/.profile ``` `UNSAFE_SKIP_BACKUP=true` satırını eklemeyebilirsiniz; ancak backup epey zaman almaktadır ve eski state'lerin snapshot'ları erişilebilirdir. Genesis dosyasını indirip değiştirin: ``` cd $HOME/.osmosisd/config wget wget https://github.com/osmosis-labs/networks/raw/main/osmo-test-4/genesis.tar.bz2 tar -xjf genesis.tar.bz2 && rm genesis.tar.bz2 ``` Mevcut osmosisd binary'i cosmovisor/genesis klasörüne kopyalayın: ``` cp $GOPATH/bin/osmosisd ~/.osmosisd/cosmovisor/genesis/bin ``` Yaptıklarınızı kontrol etmek için cosmovisor ve osmosid versiyonlarının aynı olduğundan emin olun: ``` cosmovisor version osmosisd version ``` Bu iki komut da 7.0.3 çıktısını vermelidir. Private validator dosyasını genesis state'e sıfırlayın: ``` osmosisd unsafe-reset-all ``` ## Zincir verisini indirin: * Aşağıda dilediğiniz node türünü seçebilirsiniz (Pruned veya Archive) Pruned: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmotestnet-4-pruned")|select (.mirror=="Netherlands")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Archive: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmotestnet-4-archive")|select (.mirror=="Netherlands")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` ## Osmosis Service Kurulumunu Yapın Cosmovisor'ın arka planda çalışmasına ve herhangi bir sorunla karşılaşması halinde otomatik olarak yeniden başlamasına olanak sağlayacak servisin kurulumunu yapın: ``` echo "[Unit] Description=Cosmovisor daemon After=network-online.target [Service] Environment="DAEMON_NAME=osmosisd" Environment="DAEMON_HOME=${HOME}/.osmosisd" Environment="DAEMON_RESTART_AFTER_UPGRADE=true" Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false" Environment="DAEMON_LOG_BUFFER_SIZE=512" Environment="UNSAFE_SKIP_BACKUP=true" User=$USER ExecStart=${HOME}/go/bin/cosmovisor start Restart=always RestartSec=3 LimitNOFILE=infinity LimitNPROC=infinity [Install] WantedBy=multi-user.target " >cosmovisor.service ``` Bu yeni dosyayı systemd dizinine taşıyın: ``` sudo mv cosmovisor.service /lib/systemd/system/cosmovisor.service ``` ## Osmosis Service'i Başlatın Servisi yeniden yükleyin ve başlatın: ``` sudo systemctl daemon-reload systemctl restart systemd-journald sudo systemctl start cosmovisor ``` Servisin durumunu kontrol edin: ``` sudo systemctl status cosmovisor ``` Servisin günlük kayıtlarını görmek için: ``` journalctl -u cosmovisor -f ``` ## Cosmovisor'ı V7'ye Güncelleyin Osmosisd'nin V6'dan V7'ye otomatik olarak yükseltilmesini istiyorsanız yükseltme eşiğinden (3214657) önce aşağıdaki adımları izleyin. Bu adım, yalnızca genesis'ten senkronizasyon yapılırken 3215657 bloğunun henüz geçilmediği durumlarda gereklidir. ``` mkdir -p ~/.osmosisd/cosmovisor/upgrades/v7/bin cd $HOME/osmosis git pull git checkout v7.0.3 make build systemctl stop cosmovisor.service cp build/osmosisd ~/.osmosisd/cosmovisor/upgrades/v7/bin systemctl start cosmovisor.service cd $HOME ``` --- https://docs.osmosis.zone/developing/network/join-mainnet.html # Mainnet'e Katılım ## Osmosis Binary'i Kurun Aşağıdaki talimatları izlemeden önce [Osmosis Binary (CLI) kurulu](https://docs.osmosis.zone/developing/cli/install#manual-installation) olduğundan emin olun. Her şeyin otomatik olarak gerçekleşmesini istiyorsanız [Osmosis installer](https://docs.osmosis.zone/developing/cli/install#quick-start)'ı da kullanabilirsiniz. ## Osmosis Node'u Başlatın Node'unuzu başlatmak için osmosisd'yi kullanın (NODE NAME'i dilediğiniz isimle değiştirin): ``` osmosisd init NODE_NAME ``` Genesis dosyasını indirip osmosis config dosyasına yerleştirin: ``` wget -O ~/.osmosisd/config/genesis.json https://github.com/osmosis-labs/networks/raw/main/osmosis-1/genesis.json ``` ## Son versiyon (v10) yükseltme bilgileri ### Go Gerekliliği Osmosis'in bu versiyonu için go1.18 kullanmanız gerekmektedir. Aşağıdaki komut aracılığıyla go1.18 kullanıp kullanmadığınızı kontrol edebilirsiniz. ``` go version ``` go1.18 kullanmıyorsanız yükseltme veya alçaltma yapmanız gerekmektedir. Linux üzerinde go 1.18'e yükseltme veya alçaltma yapmanın birçok yolundan birisi şu şekildedir: ``` wget -q -O - https://git.io/vQhTU | bash -s -- --remove wget -q -O - https://git.io/vQhTU | bash -s -- --version 1.18 ``` ### Hafıza Gereklilikleri Her zaman olduğu gibi, 64GB hafıza öneriyoruz. ### Cosmovisor'ı Kurun Güncellemelerin kusursuz bir şekilde gerçekleşmesi için cosmovisor'ı kurun. Cosmovisor'ı kurmak için: ``` go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.0.0 ``` Gerekli dizinleri oluşturun: ``` mkdir -p ~/.osmosisd/cosmovisor mkdir -p ~/.osmosisd/cosmovisor/genesis mkdir -p ~/.osmosisd/cosmovisor/genesis/bin mkdir -p ~/.osmosisd/cosmovisor/upgrades ``` Ortam değişkenlerini (environment variables) ayarlayın: ``` echo "# Setup Cosmovisor" >> ~/.profile echo "export DAEMON_NAME=osmosisd" >> ~/.profile echo "export DAEMON_HOME=$HOME/.osmosisd" >> ~/.profile echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=false" >> ~/.profile echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ~/.profile echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ~/.profile echo "export UNSAFE_SKIP_BACKUP=true" >> ~/.profile source ~/.profile ``` `UNSAFE_SKIP_BACKUP=true` satırını eklemeyebilirsiniz; ancak backup epey zaman almaktadır ve eski state'lerin snapshot'ları erişilebilirdir. Genesis dosyasını indirip değiştirin: ``` cd $HOME/.osmosisd/config wget wget https://github.com/osmosis-labs/networks/raw/main/osmo-test-4/genesis.tar.bz2 tar -xjf genesis.tar.bz2 && rm genesis.tar.bz2 ``` Mevcut osmosisd binary'i cosmovisor/genesis klasörüne kopyalayın: ``` cp $GOPATH/bin/osmosisd ~/.osmosisd/cosmovisor/genesis/bin ``` Yaptıklarınızı kontrol etmek için cosmovisor ve osmosid versiyonlarının aynı olduğundan emin olun: ``` cosmovisor version osmosisd version ``` ### Zincir Verisini İndirin Bir snapshot sağlayıcıdan en güncel zincir verisini indirin. Aşağıdaki komutlarda zincir verisini indirmek için https://quicksync.io/networks/osmosis.html bağlantısını kullanacağız. İhtiyaçlarınıza göre pruned veya archive seçebilirsiniz. Sıkıştırılmış dosyayı kullanabilmek için liblz4-tool'u indirin. ``` sudo apt-get install wget liblz4-tool aria2 -y ``` Zincir verisini indirin: * Aşağıda dilediğiniz node türünü seçebilirsiniz (Default, Pruned veya Archive) * Size en yakın bölgeyi seçin (Hollanda, Singapur veya Sanfransico ve komutları kopyalayın) Default Hollanda: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-default")|select (.mirror=="Netherlands")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Default Singapur: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-default")|select (.mirror=="Singapore")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Default San Fransico: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-default")|select (.mirror=="SanFrancisco")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Pruned Hollanda: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-pruned")|select (.mirror=="Netherlands")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Pruned Singapur: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-pruned")|select (.mirror=="Singapore")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Pruned San Francisco: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-pruned")|select (.mirror=="SanFrancisco")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` Archive Hollanda: ``` URL=`curl https://quicksync.io/osmosis.json|jq -r '.[] |select(.file=="osmosis-1-archive")|select (.mirror=="Netherlands")|.url'` cd $HOME/.osmosisd/ wget -O - $URL | lz4 -d | tar -xvf - ``` ### Osmosis Service Kurulumunu Yapın Cosmovisor'ın arka planda çalışmasına ve herhangi bir sorunla karşılaşması halinde otomatik olarak yeniden başlamasına olanak sağlayacak servisin kurulumunu yapın: ``` echo "[Unit] Description=Cosmovisor daemon After=network-online.target [Service] Environment="DAEMON_NAME=osmosisd" Environment="DAEMON_HOME=${HOME}/.osmosisd" Environment="DAEMON_RESTART_AFTER_UPGRADE=true" Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false" Environment="DAEMON_LOG_BUFFER_SIZE=512" Environment="UNSAFE_SKIP_BACKUP=true" User=$USER ExecStart=${HOME}/go/bin/cosmovisor start Restart=always RestartSec=3 LimitNOFILE=infinity LimitNPROC=infinity [Install] WantedBy=multi-user.target " >cosmovisor.service ``` Bu yeni dosyayı systemd dizinine taşıyın: ``` sudo mv cosmovisor.service /lib/systemd/system/cosmovisor.service ``` Osmosis Service'i Başlatın Servisi yeniden yükleyin ve başlatın: ``` sudo systemctl daemon-reload systemctl restart systemd-journald sudo systemctl start cosmovisor ``` Servisin durumunu kontrol edin: ``` sudo systemctl status cosmovisor ``` Servisin günlük kayıtlarını görmek için: ``` journalctl -u cosmovisor -f ``` ## Cosmovisor'ı V10'a Güncelleyin Osmosisd'nin V9'dan V10'a otomatik olarak yükseltilmesini istiyorsanız yükseltme eşiğinden (4713065) önce aşağıdaki adımları izleyin: ``` mkdir -p ~/.osmosisd/cosmovisor/upgrades/v9/bin cd $HOME/osmosis git pull git checkout v10.0.0 make build cp build/osmosisd ~/.osmosisd/cosmovisor/upgrades/v9/bin ``` --- https://docs.osmosis.zone/developing/network/public-endpoints.html # Açık Endpoint'ler Osmosis aşağıdaki RPC protokollerini desteklemektedir: * URI over HTTP * JSON-RPC 2.0 over HTTP * JSON-RPC 2.0 over websockets (ilerleyen zamanlarda desteklenmeyebilir). İsteyen herkes, Osmosis blok zinciriyle iletişim kuabilmek için endpoint'ler ile kendi node'unu kurabilir; kullanım rahatlığı açısından zinciri sorgulamak için herkese açık endpoint'ler de bulunmaktadır. Bunlar, geliştirme ve test maksadıyla önerilir. Maksimum kontrol ve güvenilirlik için, kendi node'unuzu çalıştırmanızı öneririz. ## Resmi Endpoint'ler | Network| Chain ID | GRPC endpoint | RPC endpoint | LCD endpoint | REST Docs | Faucet | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | Testnet | osmo-test-4| grpc-test.osmosis.zone | rpc-test.osmosis.zone | lcd-test.osmosis.zone | [Swagger](https://lcd-test.osmosis.zone/swagger/) | [faucet.osmosis.zone](https://faucet.osmosis.zone/) | | Mainnet | osmosis-1 | grpc.osmosis.zone | rpc.osmosis.zone | lcd.osmosis.zone | [Swagger](https://lcd.osmosis.zone/swagger/) | yok | ### URI over HTTP Örneği ``` curl https://rpc.osmosis.zone/abci_info? ``` veya, tarayıcınızda şu url'i açabilirsiniz: https://rpc.osmosis.zone/abci_info? ### JSON-RPC 2.0 over HTTP Örneği ``` curl --header "Content-Type: application/json" --request POST --data '{"method": "block", "params": ["4261881"], "id": 1}' https://rpc.osmosis.zone:443 ``` ## Chain Registry Bu repo'da cosmos-sdk temelli zincirler için bir chain.json ve assetlist.json bulunmaktadır. chain.json içerisindeki veriler node kurmak ve node'lar ile etkileşime geçmeyi kolaylaştırmaktadır. * [Chain Registry](https://github.com/cosmos/chain-registry) : `https://github.com/cosmos/chain-registry` ## Diğer Sağlayıcılar * [DataHub](https://datahub.figment.io) : `https://datahub.figment.io` --- https://docs.osmosis.zone/developing/osmosis-core/#get-started # Zincirde Geliştirme Bu sayfadaki rehberler, Osmosis üzerinde geliştirme sürecini açıklayacaktır. ## Başlarken **Osmosis Kaynak Kodunu Oluşturma ve Test Etme** Osmosis kod tabanını oluşturma ve test etmeye başlangıç **IDE Kurulumu** Go'da Osmosis üzerinde geliştirme için önerilen IDE setup'ı **Osmosis Daemon** Ağa katılmak için osmosid yükleme **Modüller** Osmosis modülleri ve ilgili CLI komutları **Relay** Osmosis ve diğer zincirler arasında IBC paketleri aktarma **Varlıklar** Karşılık gelen kanalları ve IBC denomları ile Osmosis'te desteklenen varlıklar **Anahtar Yönetimi** CLI yoluyla ve çoklu imzalı cüzdanlar gibi ileri düzey operasyonlarla anahtar yönetimi **İşlem Yapısı** Osmosis blok zincirinde işlem yapısını anlama **Katkıda Bulunma** Osmosis temel gelişimine katkıda bulunma rehberi ## Ağlar **Local Osmosis** Osmosis geliştirme ortamı **Edgenet'e Katılma** Osmosis edgenet üzerinde node kurulumu **Testnet'e Katılma** Osmosis testnet üzerinde node kurulumu **Mainnet'e Katılma** Osmosis mainnet üzerinde node kurulumu # Web Geliştirme Bu sayfadaki kılavuzlar, Osmosis front-end arayüzünde geliştirme sürecini açıklayacaktır. **Web Geliştirici Rehberi** Geliştirme ortamında Osmosis front-end'i çalıştırma --- https://docs.osmosis.zone/developing/osmosis-core/build.html # Osmosis Kaynak Kodunu Oluşturma ve Test Etme ## Go 1.18'i Yükleyin Şu anda, Osmosis kodu compile etmek için Go 1.18'i kullanmaktadır. Talimatları izleyerek [Go 1.18](https://go.dev/doc/install)'i yükleyin. Terminalinize `go version` yazarak kurulumu doğrulayın. ``` $ go version go version go1.18.1 darwin/amd64 ``` ## Osmosis'i Oluşturma Flink oluşturmak için kaynak koda ihtiyaç duyacaksınız. [Bir sürümün kaynağını indirebilir](https://github.com/osmosis-labs/osmosis/releases) veya [git repository'i clone'layabilirsiniz](https://github.com/osmosis-labs/osmosis). Kaynak kodundan Osmosis'i oluşturun. ``` cd osmosis make build ``` Oluşturduktan sonra `osmosis/build/osmosisd` içerisinde yürütülebilir yeni bir dosya göreceksiniz. ## Testler Kaynak kodundan testleri yapın: ``` cd osmosis make test ``` --- https://docs.osmosis.zone/developing/osmosis-core/ide-guide.html # Osmosis IDE Kurulumu Go'da Osmosis üzerinde geliştirme için önerilen IDE kurulumu. ## Go'yu ve VSCode'u Yükleyin Önce VSCode'u yükleyin: https://code.visualstudio.com/download Ardından, Go'yu yükleyin: https://go.dev/doc/install ## Osmosis ve Cosmos SDK'i Klonlayın Lokal ortamı Osmosis'e uygun ayarlamak için Osmosis repo'yu klonlayın: ``` git clone https://github.com/osmosis-labs/osmosis.git ``` Bir sonraki adım zorunlu değildir; ancak referans olarak oldukça faydalıdır. Cosmos SDK repo'yu klonlamak için: ``` git clone https://github.com/cosmos/cosmos-sdk.git ``` Artık VSCode'u başlatarak `File -> Open` yoluyla Osmosis klasörünü açabilirsiniz. Son olarak, `File -> Add Folder to Workspace` aracılığıyla seçerek Cosmos SDK'i çalışma alanınıza ekleyin. Aynı VSCode sayfasında hem Osmosis hem de Cosmos SDK görünecektir! ## İlgili VSCode Uzantılarını Ekleyin VSCode'unuza aşağıdaki uzantıları ekleyin: 1. [Go by Google](https://marketplace.visualstudio.com/items?itemName=golang.Go) 2. [VSCode Proto 3 by zxh404](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3) 3. [Git Lens by GitKraken](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) 4. [Tabnine AI by Tabnine](https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode) ## Vscode Yapılandırması Değişikliklerinizi her kaydettiğinizde ortamınızın test yapması için `VSCode -> Preferences -> settings -> Extensions -> Go`'a gidin. * `Go: Lint tool`'u `golint` olarak ayarlayın. Dilerseniz `staticcheck`'i de kullanabilirsiniz; ama çok fazla işlem kaynağı harcar. * Osmosis kodundaki aynı yapılandırmayı kullanmak isterseniz `golangci-lint` kullanın. * Muhtemelen seçtiğiniz linter'in kurulumuna dair bir ekranla karşılacaksınız, install butonuna tıklayın. * `Go: Format tool`'u `goreturns` veya `gofumports` olarak ayarlayın. * Muhtemelen seçtiğiniz formatlayıcının kurulumuna dair bir ekranla karşılaşacaksınız, install butonuna tıklayın. * `Go: Test on Save`'i kontrol edin. ## Lisans Bu çalışma Apache 2.0 ve MIT kapsamında çift lisanslıdır. Bu çalışmayı kullandığınızda ikisinden birini seçebilirsiniz. `SPDX-License-Identifier: Apache-2.0 OR MIT`

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully