Inteligentné zmluvy pre ľudí
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é:
- Družstvá sú spojené s verejnými kľúčmi pubkeyA, pubkeyB, pubkeyC, pubkeyD. Podnikateľ je spojený s verejným kľúčom businessKey.
- 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í.
- 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.
- 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)
- 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.
- 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:
- 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.
- Poslať transakciu družstvám, čakať na transakciu s prahovo podpísaným vstupom, ktorá bude zverejnená na blockchainu.
- Zvážiť zmluvu s predajcom vybavenia, spolupodpisovať transakciu o vynaložení.
- 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
9. júla 2025







