<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>0xatakan</title>
        <link>https://paragraph.com/@theyavuzarslan</link>
        <description>undefined</description>
        <lastBuildDate>Wed, 13 May 2026 15:41:48 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0xatakan</title>
            <url>https://storage.googleapis.com/papyrus_images/f38e8970c09f22defae9b7c60123b2da216bae31205c6590101a22b5e0d39348.jpg</url>
            <link>https://paragraph.com/@theyavuzarslan</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Sovereign SDK Nasıl Çalışır]]></title>
            <link>https://paragraph.com/@theyavuzarslan/sovereign-sdk-nas-l-al-r</link>
            <guid>70tVvzaGqoM298pkAZzs</guid>
            <pubDate>Sat, 18 Feb 2023 23:30:18 GMT</pubDate>
            <description><![CDATA[Duyuru içim yazdığımız blog yazımızda, bir zk-rollup oluşturmanın bir dapp yaratmak kadar kolay olduğu bir gelecek vizyonu çizdik. Bu blog yazısı, bu vizyonu nasıl gerçekleştireceğimizi açıklamayı amaçlıyor. Konuya girmeden önce kısa bir uyarıda bulunalım - bu yazı biraz teknik olacak ancak tamamen teknik konular üzerine olmayacak. Sovereign SDK&apos;ya teknik olmayan bir giriş yapmak istiyorsanız buraya bakabilirsiniz. Tamamen teknik bir giriş istiyorsanız, GitHub&apos;da Sovereign SDK&apos;...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/sovlabs.eth/V-nUycehpu-cwCRaStz7984mYGOKpRGMyC-tTDaQIsk">Duyuru içim yazdığımız blog yazımızda</a>, bir zk-rollup oluşturmanın bir dapp yaratmak kadar kolay olduğu bir gelecek vizyonu çizdik. Bu blog yazısı, bu vizyonu nasıl gerçekleştireceğimizi açıklamayı amaçlıyor. Konuya girmeden önce kısa bir uyarıda bulunalım - bu yazı biraz teknik olacak ancak tamamen teknik konular üzerine olmayacak. Sovereign SDK&apos;ya teknik olmayan bir giriş yapmak istiyorsanız <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sovereign.xyz/learn">buraya</a> bakabilirsiniz. Tamamen teknik bir giriş istiyorsanız, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign">GitHub&apos;da Sovereign SDK&apos;nın taslak özelliklerini ve uygulamasını bulabilir</a> veya <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/kbykCcPrcA">Discord&apos;dan ulaşabilirsiniz.</a> Bunu aradan çıkardığımıza göre, başlayalım!</p><h2 id="h-neden-zk-rolluplar" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Neden ZK Rolluplar?</h2><p>Bu bölümde, neden zk-rollup&apos;ların blok zincirleri için &quot;oyunun sonu&quot; olduğunu düşündüğümüzü ilk prensiplerden yola çıkarak açıklamaya çalışacağız.</p><h3 id="h-atomik-birlestirilebilirligin-bedeli" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Atomik Birleştirilebilirliğin Bedeli</h3><p>Ethereum&apos;un can alıcı özelliğinin EVM&apos;nin kendisi değil, atomik birleştirilebilirlik olduğu tezinden yola çıkıyoruz. Herhangi bir akıllı sözleşme diğer herhangi bir akıllı sözleşme ile etkileşime girebilir ve sistem, çağrı yığınının ilerisinde bir şeyler ters gitse bile, çağıranın bazı ara durumlarda takılıp kalmayacağını garanti eder. Bu, programlama modelini büyük ölçüde basitleştirerek Ethereum&apos;u geliştiriciler için en dostane ortamlardan biri olmasını sağlar. Ancak atomik birleştirilebilirliğin bir bedeli var. Bir çağrıyı atomik olarak yürütmek için, tam düğümlerin(full node) çağrı yığınındaki tüm sözleşmelerin ilgili durumuna gerçek zamanlı olarak erişmesi gerekir. Bu da ilgili tüm durumların yerel olarak depolanması ve çok hızlı bir şekilde yüklenebilmesi gerektiği anlamına gelir. Başka bir deyişle, tam düğümlerin SSD satın almaları ve tüm zincir durumunu depolamak için yeterli sayıda SSD’ye sahip olması gerekir.</p><p>Ölçeklenebilirliği en üst düzeye çıkarmak için Near gibi sistemler bu gereksinimleri gevşetmeye çalışır. Near, atomik birleştirilebilirlik yerine yalnızca asenkron çapraz sözleşme çağrılarına izin verir. Her bir sözleşmenin durumu yalnızca tam düğümlerin özel bir alt kümesinde saklanabildiğinden, bu kurulum çok daha fazla ölçeklenebilirlik sağlar. Ancak bunun programcıya büyük bir maliyeti vardır - programcı kod yollarının kombinatoryal patlaması üzerinden mantık yürütmek zorundadır.</p><h3 id="h-her-iki-dunyanin-en-iyisi" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Her İki Dünyanın En İyisi</h3><p>Bizim vizyonumuz bu iki uç noktanın sentezi. Tamamen atomik hiçbir sistemin tüm dünyanın ihtiyaçlarını karşılayamayacağına inanıyoruz. Ancak aynı zamanda, atomikliğin basit ve birleştirilebilir akıllı sözleşmelerin geliştirilmesinde oynadığı ana rolün de farkındayız. Bu nedenle, her iki dünyanın da en iyisini elde etmeye çalışıyoruz: her biri atomik birleştirilebilirlik sağlayan, ekosistem boyunca hızlı (ancak eşzamansız) zincirler arası köprülerle birbirine bağlanan optimize edilmiş zincirlerden oluşan bir ekosistem.</p><p>Tek bir zincir içinde, geliştiriciler atomik birleştirilebilirliği korurlar. Sözleşme tasarımları nispeten basit olabilir ve kullanıcılar işlemlerinin sonuçlarını neredeyse gerçek zamanlı olarak öğrenebilirler. Ancak aynı zamanda, hiçbir tam düğüm kümesi tüm dağıtık defterlerin güncel durumunu saklamak ve güncellemekten sorumlu değildir.</p><h3 id="h-blockchainler-degil-rolluplar-olusturun" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Blockchain&apos;ler değil, rollup&apos;lar oluşturun</h3><p>Bu doğrultuda düşünen ilk insanlar kesinlikle biz değiliz. Bildiğimiz kadarıyla, entegre bir çoklu zincir sistemi oluşturmaya yönelik ilk girişim Cosmos&apos;tu. Bizim vizyonumuza çok benzeyen Cosmos, hızlı ve güvenilir köprüleme ile heterojen zincirlerden oluşan aşağıdan yukarıya bir ekosistem. Cosmos&apos;un yetersiz kaldığı nokta yeni zincirler yaratma becerisi. Bir zincir kullanılabilir hale gelmeden önce, işleyişinin arkasına anlamlı bir ekonomik ağırlık koyacak bir &quot;doğrulayıcı setine&quot; ihtiyaç duyar. Sermaye maliyetleri ne olursa olsun, zincir önemli gelirler yaratmak için yeterli kullanıma sahip olana kadar bir doğrulayıcı setini bir zincire çekmek son derece zordur. Ancak hiçbir kullanıcı parasını güvensiz bir zincir için riske atmak istemez. Bu da tavuk-yumurta ikilemine yol açmakta ve yeni zincirlerin başlatılmasını zorlu bir girişim haline getirmektedir.</p><p>Buna ek olarak, Cosmos zincirleri köprülerin uygulanmasında temel zorluklarla karşılaşmaktadır. Hafif istemci köprülerinin (IBC) bakımı pahalıdır çünkü başlıkların zincir üzerinde işlenmesi gerekir. Bu da köprülerin seyrek kurulmasına yol açar ve kullanıcı deneyimi de bundan kötü etkilenir. Daha da kötüsü, bir zincir <em>uzun mesafeli bir yeniden yapılanma saldırısına(long distance reorg attack)</em> maruz kalırsa veya doğrulayıcı seti geçersiz bir durum geçişi gerçekleştirirse fonlar kaybedilebilir.</p><p>Bu sorunlara çözümümüz basittir: bir doğrulayıcı setini diğer birçok zincirle paylaşmak. Başka bir deyişle, blok zincirler oluşturmayın; rollup oluşturun.</p><p>Bu, nihayet bizi fikrimize götürüyor: Sovereign SDK</p><h3 id="h-sovereign-sdk-nedir" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sovereign SDK nedir?</h3><p>Sovereign SDK, <em>eşzamansız olarak kanıtlanmış, egemen zk-rollup&apos;lar</em> oluşturmak için bir geliştirme kitidir. Bu oldukça uzun bir ifade, bu yüzden parça parça inceleyelim.</p><p>İlk olarak, işlemlerin eşzamansız olarak kanıtlanması ne anlama geliyor? Basitçe, ham işlem verilerinin bir sıralayıcı tarafından gerçek zamanlı olarak L1&apos;e gönderildiği ve kanıtların daha sonra oluşturulduğu anlamına gelir. Bu, kanıtların zincire herhangi bir veri gönderilmeden önce zincir dışında oluşturulduğu StarkNet gibi rollupların tersidir. Eşzamansız kanıtlamanın avantajı, işlemlerin gerçek zamanlı olarak sonuçlandırılmasına olanak tanıyarak Optimistic rolluplar gibi bir yanıt verebilirlik kazandırmasıdır.</p><p>İkinci olarak, bir rollupın egemen olması ne anlama gelir? Bunu anlamanın en kolay yolu &quot;akıllı sözleşme&quot; rollupları ile karşılaştırmaktır. Bir akıllı sözleşme rollupında, L2 durumu ancak L1&apos;deki bir akıllı sözleşme tarafından kabul edildiğinde nihai hale gelir (hafif istemciler açısından). Günümüzün L1 zincirleri bu kadar sınırlı iş hacmine sahip olduğundan, akıllı sözleşme toparlamaları kanonik zincir içi durumlarını nispeten seyrek olarak güncellemek zorunda kalmaktadır. Öte yandan, egemen rollupların hafif düğümleri, belirli bir bloğun kabul edilip edilmeyeceğine kendileri karar vermekten sorumludur. Bu, egemen rolluplarda işlemlerin çok daha hızlı bir şekilde sonuçlandırılmasına olanak sağlar, çünkü blok alanı sıkışık L1&apos;lere hizmet sunmak için güncelleme sıklıklarını kısmak zorunda kalmazlar.</p><h3 id="h-nasil-calisir" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Nasıl Çalışır?</h3><p>Sovereign SDK, bir zk-rollup&apos;ın işlevselliğini arayüzler hiyerarşisine soyutlayarak çalışır. Hiyerarşinin her seviyesinde, geliştiriciler SDK tarafından sağlanan önceden paketlenmiş uygulamalardan birini kullanmakta veya kendi işlevlerini sıfırdan oluşturmakta özgürdür. Mantığı iyi tanımlanmış arayüzlerin arkasına hapsederek, esneklikten ödün vermeden basit bir geliştirici deneyimi yaratan, eklenebilir bileşenler sağlayabiliyoruz.</p><h3 id="h-cekirdek-apiler" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Çekirdek API&apos;ler</h3><p>En yüksek soyutlama düzeyinde, her Sovereign SDK zinciri üç farklı unsuru bir araya getirir:</p><ol><li><p>DA(Veri uygunluğu) ve mutabakat sağlayan bir L1 blok zinciri</p></li><li><p>Zincirin &quot;iş mantığını&quot; uygulayan bir durum geçiş fonksiyonu (Rust dilinde yazılmış)</p></li><li><p>(1) öz yineleme ve (2) Rust&apos;ın bir alt kümesini çalıştırabilen sıfır bilgi ispat sistemi</p></li></ol><pre data-type="codeBlock" text="interface DaLayer {
  // Gets all transactions from a particular da layer block that are relevant to the rollup
  // Used only by full-nodes of the rollup
  function get_relevant_txs(header: DaHeader) -&gt; Array&lt;DaTxWithSender&gt;
  // Gets all transactions from a particular da layer block that are relevant to the rollup,
  // along with a merkle proof (or similar) showing that each transaction really was included in the da layer block.
  // Depending on the DA layer, may need to include auxiliary information to show that no 
  // relevant transactions were omitted.
  // Used by provers
  function get_relevant_txs_with_proof(header: DaHeader) -&gt; (Array&lt;DaTxWithSender&gt;, DaMultiProof, CompletenessProof&gt;
  // Verifies that a list of Da layer transactions provided by an untrusted prover is both 
  // complete and correct.
  // Used by the &quot;verifier&quot; circuit in the zkVM
  function verify_relevant_tx_list(txs: Array&lt;DaTxWithSender&gt;, header: DaHeader, witness: DaMultiProof, completenessproof: CompletenessProof)
}

// The interface to a state transition function, inspired by Tendermint&apos;s ABCI
interface StateTransitionFunction {
    // Called once at rollup Genesis to set up the chain
  function init_chain(config: Config) 
  // A slot is a DA layer block, and may contain 0 or more rollup blocks
  function begin_slot(slotnumber: u64) 
  // Applies a batch of transactions to the current rollup state, returning a list of the
  // events from each transaction, or slashing the sequencer if the batch was malformed
  function apply_batch(batch: Array&lt;Transaction&gt;, sequencer: Bytes): Array&lt;Array&lt;Event&gt;&gt; | ConsensusSetUpdate
  // Process a zero-knowledge proof, rewarding (or punishing) the prover
  function apply_proof(proof: RollupProof): Array&lt;ConsensusSetUpdate&gt;
  // Commit changes after processing all rollup messages
  function end_slot(): StateRoot
}

interface ZkVM { 
  // Runs some code, creating a proof of correct execution
  function run(f: Function): Proof
  // Verifies a proof, returning its public outputs on success
  function verify(p: Proof): (Result&lt;Array&lt;byte&gt;&gt;)
}
"><code>interface <span class="hljs-title class_">DaLayer</span> {
  <span class="hljs-comment">// Gets all transactions from a particular da layer block that are relevant to the rollup</span>
  <span class="hljs-comment">// Used only by full-nodes of the rollup</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">get_relevant_txs</span>(<span class="hljs-params">header: DaHeader</span>) -> <span class="hljs-title class_">Array</span>&#x3C;<span class="hljs-title class_">DaTxWithSender</span>>
  <span class="hljs-comment">// Gets all transactions from a particular da layer block that are relevant to the rollup,</span>
  <span class="hljs-comment">// along with a merkle proof (or similar) showing that each transaction really was included in the da layer block.</span>
  <span class="hljs-comment">// Depending on the DA layer, may need to include auxiliary information to show that no </span>
  <span class="hljs-comment">// relevant transactions were omitted.</span>
  <span class="hljs-comment">// Used by provers</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">get_relevant_txs_with_proof</span>(<span class="hljs-params">header: DaHeader</span>) -> (<span class="hljs-title class_">Array</span>&#x3C;<span class="hljs-title class_">DaTxWithSender</span>>, <span class="hljs-title class_">DaMultiProof</span>, <span class="hljs-title class_">CompletenessProof</span>>
  <span class="hljs-comment">// Verifies that a list of Da layer transactions provided by an untrusted prover is both </span>
  <span class="hljs-comment">// complete and correct.</span>
  <span class="hljs-comment">// Used by the "verifier" circuit in the zkVM</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">verify_relevant_tx_list</span>(<span class="hljs-params">txs: <span class="hljs-built_in">Array</span>&#x3C;DaTxWithSender>, header: DaHeader, witness: DaMultiProof, completenessproof: CompletenessProof</span>)
}

<span class="hljs-comment">// The interface to a state transition function, inspired by Tendermint's ABCI</span>
interface <span class="hljs-title class_">StateTransitionFunction</span> {
    <span class="hljs-comment">// Called once at rollup Genesis to set up the chain</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">init_chain</span>(<span class="hljs-params">config: Config</span>) 
  <span class="hljs-comment">// A slot is a DA layer block, and may contain 0 or more rollup blocks</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">begin_slot</span>(<span class="hljs-params">slotnumber: u64</span>) 
  <span class="hljs-comment">// Applies a batch of transactions to the current rollup state, returning a list of the</span>
  <span class="hljs-comment">// events from each transaction, or slashing the sequencer if the batch was malformed</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">apply_batch</span>(<span class="hljs-params">batch: <span class="hljs-built_in">Array</span>&#x3C;Transaction>, sequencer: Bytes</span>): <span class="hljs-title class_">Array</span>&#x3C;<span class="hljs-title class_">Array</span>&#x3C;<span class="hljs-title class_">Event</span>>> | <span class="hljs-title class_">ConsensusSetUpdate</span>
  <span class="hljs-comment">// Process a zero-knowledge proof, rewarding (or punishing) the prover</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">apply_proof</span>(<span class="hljs-params">proof: RollupProof</span>): <span class="hljs-title class_">Array</span>&#x3C;<span class="hljs-title class_">ConsensusSetUpdate</span>>
  <span class="hljs-comment">// Commit changes after processing all rollup messages</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">end_slot</span>(<span class="hljs-params"></span>): <span class="hljs-title class_">StateRoot</span>
}

interface <span class="hljs-title class_">ZkVM</span> { 
  <span class="hljs-comment">// Runs some code, creating a proof of correct execution</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">run</span>(<span class="hljs-params">f: <span class="hljs-built_in">Function</span></span>): <span class="hljs-title class_">Proof</span>
  <span class="hljs-comment">// Verifies a proof, returning its public outputs on success</span>
  <span class="hljs-keyword">function</span> <span class="hljs-title function_">verify</span>(<span class="hljs-params">p: Proof</span>): (<span class="hljs-title class_">Result</span>&#x3C;<span class="hljs-title class_">Array</span>&#x3C;byte>>)
}
</code></pre><h3 id="h-genellestirilmis-tam-dugum" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Genelleştirilmiş Tam Düğüm</h3><p>Az önce açıkladığımız çekirdek arayüzleri kullanan Sovereign SDK, herhangi bir veri kullanılabilirlik katmanı üzerinde neredeyse tüm durum geçiş işlevlerini çalıştırabilen genelleştirilmiş bir tam düğüm uygulaması(full-node implementation) sağlayacaktır. Genel anlamda, tam düğüm, az önce açıkladığımız çekirdek arayüzlerin arkasındaki rollup işlevselliğini kapsülleyerek ve rollup verilerini depolanabilen ve iletilebilen opak bayt dizeleri şeklinde ele alarak çalışır. Tam düğümün nasıl çalışacağına dair bir fikir vermek için, burada çekirdek olay döngüsünün nasıl görüneceğine dair kabaca bir örnek verilmiştir.</p><pre data-type="codeBlock" text="// A pseudocode illustration of block execution. Plays fast and loose
// with types for the sake of brevity.
function run_next_da_block(self, prev_proof: Proof, db: Database) {
  // Each proof commits to the previous state as a public output. Use that state 
  // to initialize the state transition processor
  let prev_state = deserialize(prev_proof.verify());
  let current_da_header = db.get_da_header(prev_state.slot_number + 1);
  let processor = stf::new(db, current_da_header, prev_state);
  
  // Fetch the relevant transactions from the DA layer
  let (da_txs, inclusion_proof, completeness_proof) = da::get_relevant_txs_with_proof(current_header);
  da::verify_relevant_tx_list(da_txs, inclusion_proof, completeness_proof)
  
  // Process the relevant DA transactions 
  processor.begin_slot(prev_state.slot_number + 1)
  for da_tx in da_txs { 
    let msg = parse_msg(da_tx);
    if msg.is_batch() { 
      processor.apply_batch(msg)
    } else {
      processor.apply_proof(msg)
    }
  }
  processor.end_slot();
}
"><code><span class="hljs-comment">// A pseudocode illustration of block execution. Plays fast and loose</span>
<span class="hljs-comment">// with types for the sake of brevity.</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">run_next_da_block</span>(<span class="hljs-params"><span class="hljs-built_in">self</span>, prev_proof: Proof, db: Database</span>) </span>{
  <span class="hljs-comment">// Each proof commits to the previous state as a public output. Use that state </span>
  <span class="hljs-comment">// to initialize the state transition processor</span>
  let prev_state <span class="hljs-operator">=</span> deserialize(prev_proof.verify());
  let current_da_header <span class="hljs-operator">=</span> db.get_da_header(prev_state.slot_number <span class="hljs-operator">+</span> <span class="hljs-number">1</span>);
  let processor <span class="hljs-operator">=</span> stf::<span class="hljs-keyword">new</span>(db, current_da_header, prev_state);
  
  <span class="hljs-comment">// Fetch the relevant transactions from the DA layer</span>
  let (da_txs, inclusion_proof, completeness_proof) <span class="hljs-operator">=</span> da::get_relevant_txs_with_proof(current_header);
  da::verify_relevant_tx_list(da_txs, inclusion_proof, completeness_proof)
  
  <span class="hljs-comment">// Process the relevant DA transactions </span>
  processor.begin_slot(prev_state.slot_number <span class="hljs-operator">+</span> <span class="hljs-number">1</span>)
  <span class="hljs-keyword">for</span> da_tx in da_txs { 
    let <span class="hljs-built_in">msg</span> <span class="hljs-operator">=</span> parse_msg(da_tx);
    <span class="hljs-keyword">if</span> <span class="hljs-built_in">msg</span>.is_batch() { 
      processor.apply_batch(<span class="hljs-built_in">msg</span>)
    } <span class="hljs-keyword">else</span> {
      processor.apply_proof(<span class="hljs-built_in">msg</span>)
    }
  }
  processor.end_slot();
}
</code></pre><h3 id="h-eklenebilir-bilesenler" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Eklenebilir Bileşenler</h3><p>Tam düğüm uygulaması tamamen genel olduğundan, geliştiriciler zincirlerinin özelliklerini değiştirmek için modülleri kolayca değiştirebilirler. Örneğin, <code>calldata</code> maliyeti konusunda çok endişeli olan bir geliştirici muhtemelen Celestia blok zinciri ile entegrasyonumuz olan <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/Jupiter">Jupiter&apos;i</a> kullanacaktır. Öte yandan, öncelikle likiditeye erişimi önemseyen bir geliştirici Ethereum veya EigenDA üzerine inşa edebilir (bunun için de takılabilir bir modülümüz olacak, ancak prototip aşamasından sonraya kadar geliştirilmeyecek).</p><p>Benzer şekilde, geliştiriciler no_std Rust ve birkaç shim API&apos;sini desteklediği sürece kendi zkVM&apos;lerini seçmekte özgürdür. Standart bir derleyici araç zinciri ve VM arayüzü kullanmayı tercih eden geliştiriciler muhtemelen <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/risc0/risc0">Risc0&apos;</a>ı seçerken, küçük kanıt boyutlarına değer verenler <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://nil.foundation/">=nil; foundation</a> gibi başka bir VM seçebilirler.</p><h3 id="h-varsayilan-moduller" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Varsayılan Modüller</h3><p>Bir soyutlama katmanını atlayan Sovereign SDK, durum geçiş fonksiyonları oluşturma sürecini de basitleştirmeyi amaçlamaktadır. Bu amaçla, Cosmos SDK&apos;sından esinlenerek esnek bir şekilde şekillendirilebilir bir modül sistemi sağlayacağız. Zaman içinde işlevsellik geliştirmeye devam edecek olsak da, en azından şu modüllerle başlamayı planlıyoruz: depolama, köprüleme, (değiştirilebilir) tokenlar ve kanıtlama / sıralama.</p><p>Bu yazı yazıldığı sırada modül sisteminin tasarımı hala ilk aşamalarında - bu nedenle bu bölümde okuduğunuz her şey hızlı bir değişime tabidir. Ancak, yine de üzerinde çalıştığımız bazı tasarımların taslağını çıkarmanın, size neler olacağına dair bir fikir vermesi açısından yararlı olacağını düşünüyoruz.</p><h4 id="h-kopruleme-modulu" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Köprüleme Modülü</h4><p>İlk olarak, köprüleme modülüne bakalım. Ayrı zincirler arasında köprü kurmanın aksine (ki bunun güçlü güven varsayımları olmadan <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://spiral.imperial.ac.uk/bitstream/10044/1/75810/6/2019-1128.pdf">imkansız olduğu bilinmektedir</a>), paylaşılan bir DA(veri uygunluğu) katmanındaki rolluplar arasında köprü kurmak temelde zor değildir. Sovereign SDK&apos;da, varsayılan olarak düşük gecikmeli güven minimize edilmiş köprüler sağlamak için bu gerçekten tam olarak faydalanmayı planlıyoruz.</p><p>Şöyle çalışıyor: Paylaşılan bir DA(veri uygunluğu) katmanında çalışan 50 rollupınız olduğunu varsayın. Standart paradigmada her biri arasında güven minimize edilmiş köprüler çalıştırmak için, her bir rollupın diğer her rollupın zincir içi hafif istemcisini çalıştırması gerekir. Hesaplama yaparsak, bu 50 * 49 = 2450 zincir üstü hafif istemci anlamına gelir. Bunu gerçekleştirmek oldukça pahalı olacağından, bunun yerine çok atlamalı köprüler kullanmaya geri dönersiniz. Her bir zincirin (diyelim ki) 3 diğer zincire bağlanmasını sağlarsınız ve - ağlarınızın makul bir topolojiye sahip olduğunu varsayarsak - 3 veya 4 atlama kullanarak herhangi bir zincir çifti arasında mesajları yönlendirebilirsiniz.</p><p>Zk&apos;nın gücü ile çok daha iyisini yapabiliriz. Herhangi iki sıfır bilgi kanıtının (VM modelinde) üçüncü bir kanıtta toplanabileceğini ve bu yeni kanıtın doğrulanmasının orijinallerinden daha pahalı olmadığını hatırlayın. Bu iç görüden yararlanarak, 50 rollup ispatının tamamını zincir dışında öz yinelemeli olarak toplayabilir ve ardından bu rollup ispatını her bir rollup üzerinde doğrulayabiliriz. Böylece 2450 hafif istemci bağlantısını sürdürmek yerine, bir zincir dışı kanıt toplama ve 50 zincir içi kanıt doğrulaması yapabiliriz. Başka bir deyişle, tümden tüme köprülemenin iletişim karmaşıklığını O(n^2)&apos;den O(n)&apos;ye düşürdük.</p><h4 id="h-depolama-modulu" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Depolama Modülü</h4><p>Verimli zk-rollupların temel bileşenlerinden biri durum yönetimidir. Kimliği doğrulanmış bir veri deposu tasarlarken, geliştiricilerin birbiriyle yarışan çeşitli kaygıları dengelemesi gerekir. Bir yandan, duruma yapılan her okuma ve yazma işleminin sıfır bilgi kanıtı içinde doğrulanması gerektiğinden, devre içinde temsil edilmesi verimli bir şey isterler. Öte yandan, tam düğümleri ve sıralayıcıları darboğaza sokmaması için yerel yürütme sırasında hızlı ve hafif bir şey istiyorlar.</p><p>Sovereign SDK&apos;da, bu iki tasarım hedefini dengeleyen varsayılan bir depolama modülü sağlamayı planlıyoruz. zkVM dışında verimlilik için, kimliği doğrulanmış durum verilerini depolamak üzere orijinal olarak Diem tarafından geliştirilen <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://developers.diem.com/papers/jellyfish-merkle-tree/2021-01-14.pdf">Jellyfish Merkle Tree&apos;yi (JMT)</a> kullanacağız. Hızlı erişim için, ham durumu tutmak üzere disk üzerinde düz bir veri yapısı da tutacağız. Devre içi verimlilik için, JMT&apos;mizi hash fonksiyonu üzerinde genel hale getireceğiz, böylece geliştiriciler kendi zkVM seçimlerine göre uyarlanmış bir hashi kolayca ekleyebilirler.</p><h4 id="h-hepsini-bir-araya-getirmek-blok-yasam-dongusu" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Hepsini Bir Araya Getirmek: Blok Yaşam Döngüsü</h4><p>Bir Sovereign zincirine blok eklemek üç adımda gerçekleşir. İlk olarak, bir sıralayıcı L1 zincirine yeni bir işlem verisi bloğu gönderir. Blok L1&apos;de sonlandırılır sonlandırılmaz, yeni bir mantıksal rollup durumu da sonlandırılır.</p><blockquote><p>BLOB: binary large object.</p></blockquote><p>Her L1 bloğu sonlandırıldığında, rollup tam düğümleri bunu tarar ve rollup durum geçiş işleviyle ilgili blobları belirler. Ardından, toparlamanın STF&apos;sini bu blobların her birine sırayla uygulayarak yeni rollup durum kökünü hesaplarlar. Bu noktada blok, tam düğümlerin bakış açısından öznel olarak sonlandırılır.</p><p>Daha sonra, kanıtlayıcı düğümler (bir zkVM içinde çalışan tam düğümler) tam düğümlerle aynı işlemi gerçekleştirir - DA(veri uygunluğu) bloğunu tarar ve tüm veri bloblarını sırayla işler. Ancak tam düğümlerin aksine, kanıtlayıcılar kanıt oluşturmak ve bunları zincirde yayınlamak için birbirleriyle yarışırlar. Geçerli bir kanıt oluşturan ilk uygun düğüm, toparlamanın gaz ücretlerine (bir kısmına) karşılık gelen tokenlarla ödüllendirilir. Belirli bir yığın için bir kanıt zincir üzerinde yayınlandıktan sonra, yığın hafif istemciler için öznel olarak nihaidir.</p><p>Son olarak, bir aktarıcı, başka bir zincirdeki bir köprü akıllı sözleşmesine (altta yatan DA katmanı ya da başka bir toparlama) yeni bir toparlama kanıtı göndermeyi seçebilir. Verimlilik açısından, aktarıcılar muhtemelen güncellemeleri göndermeden önce birçok toplamanın geçerlilik kanıtlarını tek bir kanıtta birleştirmek için kanıt toplamayı kullanacaktır.</p><h4 id="h-sonuc" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Sonuç</h4><p>Buraya kadar geldiyseniz, artık Sovereign SDK hakkında iyi bir üst düzey anlayışa sahip olmalısınız. Daha fazlasını öğrenmek istiyorsanız, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign">github&apos;ımıza</a> dalın (katkılara açığız!), <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/sovereign_labs">Twitter&apos;dan ulaşın</a> veya <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/kbykCcPrcA">Discord&apos;da takılın!</a> Ayrıca, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sovereign.xyz/join">iş ilanlarımıza göz atın!</a></p>]]></content:encoded>
            <author>theyavuzarslan@newsletter.paragraph.com (0xatakan)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d229db476ba4e25c4f96c33b31287a5cf92c4ed4e40c0bac2c314243b8dec4ad.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Karşınızda Sovereign]]></title>
            <link>https://paragraph.com/@theyavuzarslan/kar-n-zda-sovereign</link>
            <guid>xD97SYPiucKcE5PnVxma</guid>
            <pubDate>Tue, 31 Jan 2023 16:47:15 GMT</pubDate>
            <description><![CDATA[Sovereign açık, birbirine bağlı bir rollup ekosistemidir. Amacımız, tüm geliştiricilerin herhangi bir blok zincirinde çalışabilen, sorunsuz bir şekilde birlikte çalışabilir ve ölçeklenebilir rolluplar yaratmalarını sağlamak. Bu nedenle, güvenli ve birlikte çalışabilir egemen zk-rolluplar oluşturmak için en basit çerçeve olan Sovereign SDK&apos;yı oluşturuyoruz.Sorun: Blok Zinciri Uygulamaları ÖlçeklenemiyorMonolitik L1’ler ÖlçeklenemiyorBlok zinciri uygulamalarını ölçeklendirme arayışında üç ...]]></description>
            <content:encoded><![CDATA[<p>Sovereign açık, birbirine bağlı bir <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sovereign.xyz/learn">rollup</a> ekosistemidir. Amacımız, tüm geliştiricilerin herhangi bir blok zincirinde çalışabilen, sorunsuz bir şekilde birlikte çalışabilir ve ölçeklenebilir rolluplar yaratmalarını sağlamak. Bu nedenle, güvenli ve birlikte çalışabilir egemen zk-rolluplar oluşturmak için en basit çerçeve olan Sovereign SDK&apos;yı oluşturuyoruz.</p><h2 id="h-sorun-blok-zinciri-uygulamalari-olceklenemiyor" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Sorun: Blok Zinciri Uygulamaları Ölçeklenemiyor</h2><h3 id="h-monolitik-l1ler-olceklenemiyor" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Monolitik L1’ler Ölçeklenemiyor</h3><p>Blok zinciri uygulamalarını ölçeklendirme arayışında üç baskın paradigma ortaya çıkıyor: uygulamaya özel L1&apos;ler, optimistik rolluplar ve zk-rolluplar. Uygulamaya özel L1&apos;ler tasarlanması ve uygulaması en basit olanlardır - ancak önemli bir dezavantajları vardır. Her L1 kendi doğrulayıcı setini oluşturmak ve onları,ı zinciri saldırılara karşı savunmak için yeterli sermayeyi yatırmaya ikna etmek zorundadır. Maliyetler ne olursa olsun, bu yaklaşım yalnızca iyi finanse edilen birkaç uygulama için uygulanabilir.</p><h3 id="h-optimistik-rolluplar-uyumlulugu-bozar" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Optimistik Rolluplar Uyumluluğu Bozar</h3><p>Rolluplar bu sorunu, geliştiricilerin yeni blok zincirleri başlatmak yerine mevcut blok zincirlerini yeni mantıkla genişletmelerine olanak tanıyarak çözmeye çalışır. Bu da uygulamaya özel zinciri geliştirmenin önündeki bariyeri büyük ölçüde azaltmaktadır.</p><p>Ancak opitmistik rolluplar (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://l2beat.com/scaling/tvl">bugün piyasaya hakim olan rolluplar</a>) her derde deva değildir. Paylaşılan doğrulayıcı setini üzerindeki yükü en aza indirmek için optimistik rolluplar yanlış davranışları önlemek için dolandırıcılık kanıtlarına(fraud proof) güvenir. Saldırı sırasında, bu dolandırıcılık kanıtları sansürlenebilir - bu nedenle optimistik rolluplarda işlemlerin ağa kesin olarak işlenmesi uzun sürer, bunun sebebi ise bir dolandırıcılık kanıtı oluşması halinde bu zararlı işlemlerin geri alınması için belirli bir süreye ihtiyaç duyulmasıdır. Bu da optimistik rolluplardan varlıklarınızı çekmeyi yavaş ve maliyetli hale getirir.</p><p>Dolayısıyla, optimistik rollup geliştiricileri zor bir seçim yapmak zorundadır: dar, özel amaçlı rolluplar inşa edip kullanıcıların zincirler arasında sık sık köprü kurmasını mı bekleyecekler yoksa kullanıcının tüm ihtiyaçlarını tek bir yerde karşılamaya çalışan genel amaçlı rolluplar mı inşa edecekler? Her iki seçenek de iyi değildir. Optimistik zincirler arasında günlük kullanım için köprü kurmak çok yavaş, çok pahalı ve daima alınabilecek bir risk değildir. Ancak genel amaçlı optimistik rolluplar, monolitik L1&apos;lerin dezavantajlarının çoğundan muzdariptir: yalnızca kendi ölçeklenebilirlik sorunlarından muzdarip olmakla kalmazlar, aynı zamanda uygulamaya özel zincirlerin oluşturabileceği tam işlevsellik çeşitliliğini de destekleyemezler.</p><h3 id="h-gelecek-zk-rolluplar" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Gelecek: ZK Rolluplar</h3><p>Tüm bu nedenlerden dolayı, zk-rollupların baskın ölçeklendirme paradigması olarak ortaya çıkmasını bekliyoruz. Optimistik rollupların avantajlarına sahipler ve işlemlerin kesinleşmesi için uzun süreler beklemek zorunda kalmıyoruz. Bir dolandırıcılık kanıtının ortaya çıkıp çıkmadığını görmek için günlerce beklemek yerine, kullanıcılar bir geçerlilik kanıtı oluşturulur oluşturulmaz işlemlerinin nihai olduğundan emin olabilirler - bu işlem yalnızca saniyeler sürebilir.</p><p>Peki zk-rolluplar üstün ölçeklendirme çözümüyse neden herkes bunları kullanmıyor? Çünkü şimdiye kadar zk-rollupları oluşturmak çok zordu ve uzman kriptografi mühendislerinin yıllarca çalışmasını gerektiriyordu.</p><h2 id="h-sovereigna-merhaba-deyin-rolluplarin-interneti" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Sovereign&apos;a merhaba deyin: Rollupların İnterneti</h2><h3 id="h-sovereign-sdk-nedir" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sovereign SDK nedir?</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign-sdk">Sovereign SDK</a>, Cosmos SDK&apos;nın L1 zincirler için yaptığını zk-rolluplar için yapmayı amaçlamaktadır.</p><p>Bir p2p ağı, bir veritabanı ve bir RPC düğümü gibi gerekli tüm araçların bir potada eritildiği ve geliştiricilerin zincirlerinin çalışma mantığına odaklanmasına izin verir. Buna ek olarak, zero knowledge kanıtlarının kullanıldığı bir geliştirme ortamında verimli bir şekilde çalışan bir dizi hazır modül sunar: bir token uygulaması, doğrulanmış bir veri deposu ve bir köprüleme modülü. Geliştiriciler bu modülleri uygulamaya özel zincirlerde birleştirebilecek veya standart bir API setini uygulayarak kendi durum geçiş işlevlerini tamamen sıfırdan oluşturabilecekler.</p><p>Daha da iyisi, Sovereign SDK, zero knowledge ayrıntılarını soyutlayan ilk rollup geliştirme kiti olacak. Bu geliştirme kitinin gücünden faydalanmak için geliştiricilerin kriptografi konusunda uzman olmaları gerekmeyecek. Bunun yerine, geliştiriciler uygulamalarını Rust (veya sonunda C++) dilinde yazabilecek ve <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign-sdk/blob/research/specs/interfaces/zkvm.md">SDK</a> bunu otomatik olarak <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/nilfoundation/zkllvm">verimli</a> bir <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/risc0/risc0">zero knowledge sanal makinesine</a> derleyecektir.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/48e53edb8baf0e6c02faa66165edfbc35097ca046e6adc8b9ddc665ef7cf7c67.png" alt="Kanıt toplama tabanlı köprüleme" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Kanıt toplama tabanlı köprüleme</figcaption></figure><h3 id="h-sovereign-sdk-hangi-ozellikleri-saglayacak" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sovereign SDK hangi özellikleri sağlayacak?</h3><ol><li><p>Sovereign SDK rollupları sorunsuz bir şekilde birlikte çalışabilir olacak. Verinin paylaşıldığı bir L1 üzerindeki Sovereign SDK rolluplarının güvenilir bir üçüncü taraf olmadan ileri geri köprü kurmasına izin vermek için kanıt toplamaya dayalı yeni bir köprüleme tekniği kullanıyoruz. Zero knowledge kanıtları toplanabildiğinden, rolluplar minimum maliyetle istedikleri kadar köprüyü oluşturabilecekler. Zincir dışı aktarıcılar(relayer) tüm eşlerin kanıtlarını tek bir kanıtta toplayabilir ve sadece bu tek kanıt zincir üzerinde doğrulanabilir. Durum geçişlerinin geçerli olduğu kanıtlandığından bir likidite sağlayıcısına ücret ödemeye ya da işlemlerin sonuçlanması için bir hafta beklemeye gerek kalmayacaktır. <strong>Hiçbir dezavantaj olmadan hemen köprü oluşturun.</strong></p></li><li><p>Sovereign SDK rollupları <strong>güvenli bir şekilde ölçeklenebilir</strong> olacaktır. Her bileşeni özellikle zk-rolluplarda kullanılmaya yönelik olarak inşa eden Sovereign SDK, varsayılan olarak mükemmel performans sağlayacaktır. Paralel yürütmedeki gelişmeler sayesinde, kanıtlaması saniyelerle ölçülen gecikmelere sahip olacak. Ve sıfır bilgi ispatlarının büyüsüyle, zincirler son kullanıcı doğrulanabilirliğinden ödün vermeden ölçeklendirilebilecek.</p></li><li><p>Sovereign SDK rollupları <strong>herhangi bir blok zincirinde çalışabilir.</strong> Sovereign SDK zincirleri, kanıtları kontrol etme sorumluluğunu altta yatan L1&apos;e değil, son kullanıcıya devreder. Bu da onları akıllı sözleşme rolluplarının aksine &quot;egemen&quot; rolluplar haline getirir. Veri kullanılabilirliği katmanı kanıtları doğrulama yeteneğine ihtiyaç duymadığından, Sovereign SDK rollupları otomatik olarak herhangi bir L1&apos;de taşınabilir. <strong>Bir kez yazın, her yerde çalıştırın.</strong></p></li></ol><h3 id="h-su-anda-neredeyiz" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Şu anda neredeyiz?</h3><p>Şu anda Sovereign SDK&apos;yı geliştirmek için çok çalışıyoruz. Mevcut yol haritamız üç aşamaya ayrılmıştır.</p><p><strong>1. Aşama: Araştırma (Devam Ediyor)</strong></p><p>Sovereign SDK şu anda Ar-Ge aşamasındadır. Varsayılan depolama modülünü, kripto ekonomiyi ve temel API&apos;leri tasarlama sürecindeyiz. (Bu sorunlar üzerinde çalışmakla ilgileniyorsanız, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://sovereign.xyz/join">iş ilanı panomuza</a> göz atın!). Ayrıca bir araştırma prototipi üzerinde çalışıyoruz. SDK çok çeşitli veri kullanılabilirliği katmanlarını ve kanıtlama sistemlerini destekleyecek olsa da, mevcut prototipimiz veri kullanılabilirliği için Celestia&apos;yı ve kanıtlama için Risc0&apos;ı entegre ediyor. Bu aşamanın 2023 yılının 2. çeyreği civarında tamamlanmasını bekliyoruz.</p><p><strong>Aşama 2: İlk Uygulama</strong></p><p>Sovereign SDK&apos;nın ilk uygulaması, kalan araştırmaya paralel olarak başlayacak. Bu süre zarfında, eşler arası bir ağ, bir RPC düğümü, temel API&apos;ler ve varsayılan depolama ve sıralama modülleri entegre edeceğiz.</p><p><strong>Aşama 3: Sağlamlaştırma</strong></p><p>SDK tamamlandığında, kod temizleme, test etme, fuzzing ve denetimler için bolca zamana ihtiyacımız olacak. Ayrıca bu süre zarfında SDK&apos;nın ilk kullanım örneklerini geliştirmeye başlayacağız (bunlarla ilgili daha fazla ayrıntı duyurulacak!). İlk uygulamayı sağlamlaştırdıktan yaklaşık altı ay sonra SDK&apos;yı kullanan ana ağ zincirlerini görmeyi umuyoruz.</p><h2 id="h-olceklendirmeyi-basitlestirin" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ölçeklendirmeyi basitleştirin</h2><p>Sovereign Labs olarak, blok zincirlerinin milyarlarca kullanıcıyı desteklediğini görmek istiyoruz. Bu ancak zero knowledge teknolojisinin kriptografi alanında doktora yapmamış geliştiriciler tarafından erişilebilir olması ve uzman protokol mühendisleri olmayan geliştiricilerin de rolluplar oluşturabildiği takdirde mümkün.</p><p>Ancak sınırsız ölçeklenebilirlik, son kullanıcı doğrulanabilirliği pahasına olursa değersizdir. Eğer blok zincirinizi oluşturmak, çalıştırmak ya da durumunu görüntülemek için merkezi bir varlığın işbirliği gerekiyorsa, o zaman başarısız olmuşuz demektir. İşte bu yüzden Sovereign SDK her zaman tamamen ücretsiz ve açık kaynak olacaktır - ve bu yüzden teknoloji katmanın her bileşenini maksimum esneklik için tasarlamaya kararlıyız. Ancak bunun için sadece bizim sözümüze güvenmeyin. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign-sdk/">Açık kaynak olarak</a> geliştiriyoruz - gelin kendiniz görün.</p><p>Ölçeklendirme basit olmalı. Sovereign SDK ile nihayet öyle olacak.</p><h3 id="h-kaynaklar" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Kaynaklar</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sovereign.xyz/join">https://www.sovereign.xyz/join</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/sovereign_labs">https://twitter.com/sovereign_labs</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/kbykCcPrcA">https://discord.gg/kbykCcPrcA</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Sovereign-Labs/sovereign-sdk">https://github.com/Sovereign-Labs/sovereign-sdk</a></p><h3 id="h-bilgilendirme" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Bilgilendirme</h3><p>Destekçilerimize, özellikle de Tim Beiko, James Prestwich, Mustafa Al-Bassam, Chris Ahn ve Ekram Ahmed&apos;e bu yazının taslaklarını inceledikleri ve yolculuğumuz boyunca bize yol gösterdikleri için teşekkür ederiz.</p><p><strong>Türkçe çeviri:</strong> Atakan Yavuzarslan</p><p><strong>Proofread:</strong> Efe Bulduk, Doğan Alpaslan, Semih Korkmaz</p>]]></content:encoded>
            <author>theyavuzarslan@newsletter.paragraph.com (0xatakan)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/b698da95587250b197da7cedeaac34971bd4d80009ee0c1cd8ee109c1d124fe9.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>