Inteligentné zmluvy pre ľudí

This page is machine-translated.
Alex Chepurnoy

19. októbra 2018

Veľa správ súvisiacich s blockchainom v týchto dňoch nám hovorí, že banka X alebo korporácia Y
plánuje použiť "blockchain" na "zniženie nákladov". V podstate to znamená, že len ďalšie módne slovo je
posudzované veľkými bankármi ako ďalší nástroj na efektívnejšie získavanie hodnoty zo všetkého,
a tiež na úsporu pri rušení pracovných miest.

Zatiaľ čo sa vyhýbam hovoriť o "Satoshiho vízii" (nič iné ako špekulácie by sa tam po
jeho exode mohli vykopať), široký pohľad, ktorý som bol svedkom v prvých rokoch okolo online fór, je, že kryptomena
by mala poskytovať nástroje na obohatenie obyčajných ľudí za ich malé podniky, ktoré poskytujú len toľko, aby vyšli s peniazmi, nie depersonalizovanému veľkému finančnému kapitálu. Nástroje
kryptomeny v očiach pôvodnej širokej vízie komunity by mali umožniť ľuďom vykonávať ekonomickú činnosť bez ohľadu na veľkosť podniku, geografickú polohu, úrokové sadzby stanovené veľkými hráčmi a tak ďalej.
Nástroje by mali umožniť ľuďom uzatvárať zmluvy (nie papierové zmluvy, ale digitálne, samovyhovujúce a rozumne inteligentné zmluvy) bez ohľadu na rozdiely v jurisdikciách, tradíciách, dodržiavaných obchodných praktikách atď.

Dúfam, že Ergo bude užitočné. Tisíce malých družstiev a jednotlivých podnikateľov sú dôležitejšie pre zdravý a udržateľný rast bohatstva po celom svete ako pár korporácií skrývajúcich zisky v offshore rajoch.

Ako príklad si vezmime družstevnú federáciu (napríklad Radical Routes), ktorá chce poskytnúť finančnú pomoc podnikateľovi tisíce kilometrov ďaleko (povedzme, v Rojave).

Musíme teraz predpokladať niektoré detaily. V prvom rade predpokladajme, že v sieti sú štyri družstvá. Spoločne uzamknú 10,000 Ergs (v rovnakých častiach, takže 2,500 Ergs každé) v zmluve, ktorá hovorí nasledovné:

  1. Družstvá sú spojené s verejnými kľúčmi pubkeyA, pubkeyB, pubkeyC, pubkeyD. Podnikateľ je spojený s verejným kľúčom businessKey.
  2. Družstvá uzamykajú peniaze v minci chránené financovaním zmluvy, potom vykonávajú náležitú starostlivosť a hlasujú o tom, či poskytnú financovanie podnikateľovi alebo nie. Celý fond zmluvy (10,000 Ergs) pôjde podnikateľovi, ak 3 hlasy z 4 sú za to. Technicky sa hlasovanie vykonáva prostredníctvom 3-z-4 prahového podpisu. Ak hlasovanie nie je úspešné (3 z 4 podpisov nie sú zozbierané) pred blokovým číslom 1,000, akékoľvek družstvo (vlastne, ktokoľvek) môže predložiť transakciu na výber, ktorá vracia 2,500 Ergs (aspoň) každému družstvu. Ďalej, zmluva o financovaní bude tiež nazývaná zmluvou o hlasovaní.
  3. Investície môžu byť vynaložené na tri ciele, s niektorými prísnymi obmedzeniami. A to, podnikateľ musí minúť aspoň 5,000 Ergs na vybavenie, aspoň 2,000 Ergs na výstavbu potrebnej budovy, ostatné prostriedky môže podnikateľ minúť ľubovoľne.
  4. Aby sa zabezpečilo, že peniaze na vybavenie budú vynaložené na vybavenie, družstevná federácia používa verejné kľúče známych predajcov vybavenia v oblasti podnikateľa. Napríklad, predpokladajme, že v oblasti sú predajcovia vybavenia s verejnými kľúčmi pubkeyTool1, pubkeyTool2, pubkeyTool3, pubkeyTool4. Technicky je prevod organizovaný ako kolektívny podpis jedného z predajcov vybavenia (teda kruhový podpis z kruhu predajcov vybavenia A podpis podnikateľa)
  5. Podobne predpokladajme, že v oblasti sú 3 stavitelia, ktorých družstevná federácia uznáva, spojené s verejnými kľúčmi pubkeyConstr1, pubkeyConstr2, a pubkeyConstr3.
  6. Podobne ako pri zmluve o hlasovaní, ak zmluvy o vybavení a výstavbe nie sú spolupodpisované pred blokovým číslom 5000, družstvá federácie môžu vybrať prostriedky.

Existujú rôzne spôsoby, ako definovať zmluvy v Ergu. Skript v nízkoúrovňovom jazyku, ErgoTree, popisuje (jednu) logickú podmienku, či môže byť minca podľa toho vynaložená, a tiež dôkaz o vynaložení poskytnutý transakciou o vynaložení. Interné podmienky sú reprezentované ako typový syntaktický strom, a preto názov. Štruktúra nám umožňuje vykonávať analýzu nákladov vopred atď. Vyšší jazyk nazývaný ErgoScript umožňuje mať tradičnejší a čitateľnejší popis, používať premenné a rozdeľovať logiku do podprogramov.

Začnime s hlavnou zmluvou definovanou v (1-3) vyššie:

{
 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
}

Tento skript v ErgoScript bude skompilovaný do syntaktického stromu (ktorý bude zapísaný do blockchainu v serializovanej forme) viazaním ho s konkrétnymi hodnotami pre premenné (pubkeyA, pubkeyB, pubkeyC, pubkeyD, spendingContract1Hash, spendingContract2Hash). spendingContract1Hash je hash (serializovaného) skriptu o vynaložení vybavenia, ktorý bude poskytnutý nižšie, spendingContract2Hash je hash skriptu o vynaložení výstavby.

Skript o vynaložení vybavenia je nižšie:

{
 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
}

A skript o výstavbe je:

{
 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
}

Teraz predpokladajme, že družstevná federácia vytvorila mincu chránenú zmluvou o hlasovaní. Nižšie je uvedené, ako môže podnikateľ robiť svoj biznis:

  1. Vytvoriť transakciu, ktorá spotrebuje mincu a vytvorí aspoň tri mince, jednu so zmluvou o vynaložení vybavenia, druhú so zmluvou o vynaložení výstavby, tretia vytvára mincu chránenú verejným kľúčom podnikateľa.
  2. Poslať transakciu družstvám, čakať na transakciu s prahovo podpísaným vstupom, ktorá bude zverejnená na blockchainu.
  3. Zvážiť zmluvu s predajcom vybavenia, spolupodpisovať transakciu o vynaložení.
  4. Zvážiť zmluvu so staviteľom, spolupodpisovať transakciu o vynaložení.

Podnikateľ môže ľahko ujsť bez toho, aby robil akýkoľvek biznis, ale s maximálne 3,000 Ergs. To sa dá opraviť, napríklad, tieto peniaze by mohli byť sprístupnené až po blokovom čísle 5,000, a predtým by mohli byť vybrané družstvami. Pre vynaloženie na vybavenie a výstavbu podnikateľ spolupracuje s niektorými, predpokladane už renomovanými, podnikmi. Takto investor znižuje svoje riziká.

Môžete nájsť kód a príklad transakcií online. Upozorňujeme, že máme viac príkladov komplexných podpisových schém, viacstupňových zmlúv (s odhaľovaním vykonávacích ciest, ako MAST v Bitcoine, ale s povolenými cyklami), orákulov, crowdfunding a tak ďalej. Prosím, skontrolujte našu repozitár príkladov.

Share post

Ergo Infrastructure DAO: Decentralizácia chrbtice ekosystému Ergo

Ergo Infrastructure DAO: Decentralizácia chrbtice ekosystému Ergo

Misia Ergo bola vždy zakorenená v decentralizácii, nielen na konsenzuálnej vrstve, ale naprieč celým stackom.

Ergo Platform

13. augusta 2025

Mew Finance: Hravý DeFi nástroj pre ekosystém Ergo

Mew Finance: Hravý DeFi nástroj pre ekosystém Ergo

Mew Finance je decentralizovaná aplikácia na blockchainu Ergo.

Ergo Platform

12. augusta 2025

Lithos: Decentralizácia ťažby s on-chain poolmi

Lithos: Decentralizácia ťažby s on-chain poolmi

Lithos je nový protokol navrhnutý na prepracovanie fungovania ťažobných poolov presunutím ich na on-chain, čo dáva ťažiarom plnú k.

Ergo Platform

24. júla 2025

Sigma 6.0: Inteligentnejší, flexibilnejší Ergo

Sigma 6.0: Inteligentnejší, flexibilnejší Ergo

Sigma 6.0 je významná navrhovaná aktualizácia blockchainu Ergo.

Ergo Platform

23. júla 2025

Formovanie budúcnosti Rosen: Výzva komunity na päť kľúčových návrhov pokladnice

Formovanie budúcnosti Rosen: Výzva komunity na päť kľúčových návrhov pokladnice

Spoluzakladateľ Rosen, Armeanio, predložil päť nových návrhov pre Rosen Treasury.

Ergo Platform

9. júla 2025

Ergo's Extended UTXO a vzostup umelej ekonomickej inteligencie

Ergo's Extended UTXO a vzostup umelej ekonomickej inteligencie

Praktická vízia pre autonómne ekonomické agentov Autonómne ekonomické agenti na blockchaine Ergo vykonávajú užitočnú prácu v reál.

Ergo Platform

12. mája 2025

ErgoHACK X: Umelá inteligencia na Ergo blockchaine

ErgoHACK X: Umelá inteligencia na Ergo blockchaine

Oslavujeme desaťročie decentralizovanej inovácií Pridajte sa k 10.

Ergo Platform

10. apríla 2025

The Ergo Manifesto

The Ergo Manifesto

Ergo Manifesto dúfa vo vzdelanie a ukážku vízie, čo blockchain technológia môže dosiahnuť.

Ergo Foundation

26. apríla 2021