Halk için Akıllı Sözleşmeler

This page is machine-translated.
Alex Chepurnoy

19 Ekim 2018

Son günlerde blockchain ile ilgili birçok haber, bir banka X veya bir şirket Y‘nin "maliyetleri azaltmak" için bir "blockchain" kullanacağını söylüyor. Temelde bu, büyük bankacıların başka bir araç olarak gördüğü bir başka moda kelimenin, her yerden daha verimli bir şekilde değer çıkarmak için kullanılması ve aynı zamanda iş pozisyonlarını keserek tasarruf sağlamak anlamına geliyor.

"Satoshi'nin vizyonu" hakkında bir şey söylemekten kaçınırken (onun göçünden sonra orada kazılacak hiçbir şey yok), erken yıllarda çevrimiçi forum kullanıcıları arasında tanık olduğum geniş bir görüş, bir kripto paranın, küçük işletmelerinin geçimini sağlamak dışında pek bir şey sunmayan sıradan insanları zenginleştirmek için araçlar sağlaması gerektiğidir, kişiselleştirilmemiş büyük finansal sermaye değil. Bir kripto paranın araçları, orijinal geniş topluluk vizyonu gözünde, insanların ekonomik faaliyetlerini iş büyüklüğüne, coğrafi konuma, büyük oyuncular tarafından belirlenen faiz oranlarına ve benzeri şeylere bağlı olmaksızın gerçekleştirmelerine olanak tanımalıdır. Araçlar, insanların yargı farklılıkları, gelenekler, takip edilen iş uygulamaları vb. fark etmeksizin sözleşmeler yapmalarına olanak tanımalıdır (kağıt sözleşmeler değil, dijital, kendiliğinden uygulanan ve makul derecede akıllı sözleşmeler).

Umarım Ergo burada faydalı olur. Küresel ölçekte sağlıklı ve sürdürülebilir zenginlik büyümesi için binlerce küçük kooperatif ve bireysel girişimci, karlarını offshore cennetlerinde gizleyen birkaç şirketten daha önemlidir.

Örnek olarak, finansal yardım sağlamak isteyen bir kooperatif federasyonunu (örneğin, Radical Routes) düşünelim, binlerce kilometre uzaktaki bir girişimciye (örneğin, Rojava'da).

Şimdi bazı detayları varsaymalıyız. İlk olarak, ağda dört kooperatif olduğunu varsayalım. Bunlar, bir sözleşmede 10,000 Erg (eşit parçalarda, yani her biri 2,500 Erg) kilitler ve bu sözleşme şu şekilde der:

  1. Kooperatifler, pubkeyA, pubkeyB, pubkeyC, pubkeyD ile ilişkili kamu anahtarlarına sahiptir. Girişimci, bir kamu anahtarı businessKey ile ilişkilidir.
  2. Kooperatifler, bir fonlama sözleşmesiyle korunan bir madeni paraya para kilitler, ardından girişimciyi finanse edip etmeyeceklerine dair gerekli incelemeyi yapar ve oylama yapar. Tüm sözleşme fonu (10,000 Erg), 4 oydan 3'ü bu yönde olursa girişimciye gidecektir. Teknik olarak, oylama 3'te 4 eşik imzası ile yapılır. Oylama başarılı olmazsa (4 imzadan 3'ü toplanmazsa) ve blok numarası 1,000’den önce, herhangi bir kooperatif (aslında, herkes) bir çekim işlemi sunabilir ve bu işlem her kooperatife en az 2,500 Erg iade eder. Ayrıca, fonlama sözleşmesi oylama sözleşmesi olarak da adlandırılacaktır.
  3. Yatırımlar, bazı katı sınırlamalarla üç hedefe harcanabilir. Yani, girişimci en az 5,000 Erg'yi ekipmana, en az 2,000 Erg'yi gerekli bir binanın inşasına harcamalıdır, diğer fonları girişimci keyfi olarak harcayabilir.
  4. Ekipman paralarının ekipmana harcanacağından emin olmak için, kooperatif federasyonu girişimcinin bulunduğu alandaki tanınmış ekipman satıcılarının kamu anahtarlarını kullanmaktadır. Örneğin, alanda pubkeyTool1, pubkeyTool2, pubkeyTool3, pubkeyTool4 ile ilişkili ekipman satıcıları olduğunu varsayalım. Teknik olarak, transfer, bir ekipman satıcısının kolektif imzası olarak düzenlenir (böylece ekipman satıcıları halkasından halka imzası ve girişimcinin imzası)
  5. Benzer şekilde, kooperatif federasyonunun tanıdığı 3 inşaatçı olduğunu varsayalım, bunlar pubkeyConstr1, pubkeyConstr2 ve pubkeyConstr3 ile ilişkilidir.
  6. Oylama sözleşmesine benzer şekilde, eğer ekipman ve inşaat sözleşmeleri blok numarası 5000’den önce eş imzalanmazsa, federasyon kooperatifleri fonları çekebilir.

Ergo'da sözleşmeleri tanımlamanın farklı yolları vardır. Düşük seviyeli dilde bir betik, bir madeni paranın buna göre harcanıp harcanamayacağına dair (tekil) mantıksal bir koşulu tanımlar ve ayrıca bir harcama işlemi tarafından sağlanan bir harcama kanıtı. İçsel olarak, koşul, adlandırıldığı gibi, bir türlendirilmiş sözdizim ağacı olarak temsil edilir. Yapı, önceden maliyet analizi yapmamıza olanak tanır vb. ErgoScript adı verilen daha yüksek seviyeli bir dil, daha geleneksel ve okunabilir bir tanım yapmamıza, değişkenler kullanmamıza ve mantığı alt rutinlere ayırmamıza olanak tanır.

Yukarıda (1-3) tanımlanan ana sözleşmeyle başlayalım:

{
 val votingSuccess  = atLeast(3, Array(pubkeyA, pubkeyB, pubkeyC, pubkeyD))
 val properSpending = OUTPUTS(0).value >= 5000L &&
                      blake2b256(OUTPUTS(0).propositionBytes) == spendingContract1Hash &&
                      OUTPUTS(1).value >= 2000L &&
                      blake2b256(OUTPUTS(1).propositionBytes) == spendingContract2Hash

 val withdrawCondition = HEIGHT >= 1000L &&
                         OUTPUTS(0).value >= 2500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 2500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 2500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 2500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 (votingSuccess && properSpending) || withdrawCondition
}

Bu ErgoScript içindeki betik, değişkenler için somut değerlerle bağlanarak (yani pubkeyA, pubkeyB, pubkeyC, pubkeyD, spendingContract1Hash, spendingContract2Hash) bir sözdizim ağacına derlenecektir (bu, blok zincirine serileştirilmiş bir biçimde yazılacaktır). spendingContract1Hash, aşağıda sağlanacak olan (serileştirilmiş) ekipman harcama betiğinin bir hash'idir, spendingContract2Hash ise inşaat harcama betiğinin bir hash'idir.

Ekipman harcama betiği aşağıdadır:

{
 val spendingSuccess = (pubkeyTool1 || pubkeyTool2 || pubkeyTool3 || pubkeyTool4) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 1250L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 1250L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 1250L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 1250L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

Ve inşaat betiği:

{
 val spendingSuccess = (pubkeyConstr1 || pubkeyConstr2 || pubkeyConstr3) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

Şimdi kooperatif federasyonunun oylama sözleşmesiyle korunan bir madeni para oluşturduğunu varsayalım. Aşağıda girişimcinin işini nasıl yapabileceği açıklanmaktadır:

  1. Madeni parayı tüketen ve en az üç madeni para oluşturan bir işlem oluşturun, biri ekipman harcama sözleşmesi ile, diğeri inşaat harcama sözleşmesi ile, üçüncüsü girişimcinin kamu anahtarıyla korunan bir madeni para oluşturmaktadır.
  2. İşlemi kooperatiflere gönderin, eşik imzalı girdinin blok zincirinde yayınlanmasını bekleyin.
  3. Bir ekipman satıcısıyla bir sözleşme düşünün, bir harcama işlemini eş imzalayın.
  4. Bir inşaatçıyla bir sözleşme düşünün, bir harcama işlemini eş imzalayın.

Girişimci, herhangi bir iş yapmadan kolayca kaçabilir, ancak en fazla 3,000 Erg ile. Bu düzeltilebilir, örneğin bu para yalnızca blok numarası 5,000’den sonra harcanabilir hale getirilebilir ve bu süre zarfında para kooperatifler tarafından çekilebilir. Ekipman ve inşaat harcamaları için girişimci, bazı, muhtemelen zaten saygın, işletmelerle birlikte çalışmaktadır. Böylece yatırımcı risklerini azaltmaktadır.

Çevrimiçi kod ve örnek işlemleri bulabilirsiniz. Lütfen daha karmaşık imza şemaları, çok aşamalı sözleşmeler (Bitcoin'deki MAST gibi, ancak döngülere izin veren, yürütme yollarını açığa çıkaran), oracle'lar, kitle fonlaması vb. ile ilgili daha fazla örneğimiz olduğunu unutmayın. Lütfen örnekler deposunu kontrol edin.

Share post

Ergo Altyapı DAO: Ergo Ekosisteminin Omurgasını Merkeziyetsizleştirmek

Ergo Altyapı DAO: Ergo Ekosisteminin Omurgasını Merkeziyetsizleştirmek

Ergo’nun misyonu her zaman merkeziyetsizlikte kök salmıştır, sadece konsensüs katmanında değil, tüm yığın boyunca.

Ergo Platform

13 Ağustos 2025

Mew Finance: Ergo Ekosistemi için Eğlenceli Bir DeFi Araç Seti

Mew Finance: Ergo Ekosistemi için Eğlenceli Bir DeFi Araç Seti

Mew Finance, Ergo Blockchain üzerinde merkeziyetsiz bir uygulama setidir.

Ergo Platform

12 Ağustos 2025

Lithos: Madenciliği On-Chain Havuzlarla Merkeziyetsizleştirmek

Lithos: Madenciliği On-Chain Havuzlarla Merkeziyetsizleştirmek

Lithos, madencilik havuzlarının nasıl çalıştığını köklü bir şekilde değiştirmek için tasarlanmış yeni bir protokoldür; havuzları o.

Ergo Platform

24 Temmuz 2025

Sigma 6.0: Daha Akıllı, Daha Esnek Ergo

Sigma 6.0: Daha Akıllı, Daha Esnek Ergo

Sigma 6.0 Ergo blockchain için önerilen büyük bir güncellemedir.

Ergo Platform

23 Temmuz 2025

Rosen'ın Geleceğini Şekillendirmek: Beş Ana Hazine Teklifi Üzerine Topluluk Çağrısı

Rosen'ın Geleceğini Şekillendirmek: Beş Ana Hazine Teklifi Üzerine Topluluk Çağrısı

Rosen kurucu ortağı Armeanio, Rosen Hazine'sine beş yeni teklif sunmuştur.

Ergo Platform

9 Temmuz 2025

Ergo'nun Genişletilmiş UTXO'su ve Yapay Ekonomik Zekanın Yükselişi

Ergo'nun Genişletilmiş UTXO'su ve Yapay Ekonomik Zekanın Yükselişi

Otonom Ekonomik Ajanlar için Pratik Bir Vizyon Otonom ekonomik ajanlar, Ergo blok zincirinde gerçek bir dijital ekonomide faydalı.

Ergo Platform

12 Mayıs 2025

ErgoHACK X: Ergo Blok Zincirinde Yapay Zeka

ErgoHACK X: Ergo Blok Zincirinde Yapay Zeka

Dağıtık İnovasyonun Onuncu Yılı yıl dönümü ErgoHACK'e katılın ve Ergo blok zincirindeki AI devriminin ön saflarında yer alın! Yara.

Ergo Platform

10 Nisan 2025