Okos Szerződések az Emberekért
2018. október 19.
Manapság sok blockchain-nal kapcsolatos hír azt mondja nekünk, hogy egy X bank vagy egy Y vállalat "blockchain-t" fog használni a "költségek csökkentésére". Alapvetően ez azt jelenti, hogy egy újabb buzzword-öt tekintenek a nagy bankárok egy újabb eszköznek, hogy hatékonyabban vonjanak ki értéket mindenhol, és hogy megtakarítsanak a munkahelyek megszüntetésével.
Míg elkerülöm, hogy bármit is mondjak "Satoshi víziójáról" (ott csak spekulációk ásására van lehetőség a távozása után), egy széleskörű nézet, amit a korai években tapasztaltam az online fórumok felhasználói körében, az az, hogy egy kriptovalutának eszközöket kell biztosítania az átlagemberek számára, akik a kisvállalkozásaik mögött állnak, anélkül, hogy sokkal többet tennének, mint a megélhetés biztosítása, nem pedig a depersonalizált nagy pénzügyi tőke. A kriptovaluta eszközeinek az eredeti széles közösségi vízió szemében lehetővé kell tenniük az emberek számára, hogy gazdasági tevékenységet folytassanak, függetlenül a vállalkozás méretétől, földrajzi elhelyezkedésétől, a nagy szereplők által meghatározott kamatlábaktól stb. Az eszközöknek lehetővé kell tenniük az emberek számára, hogy szerződéseket kössenek (nem papíralapú szerződéseket, hanem digitális, önérvényesítő és ésszerűen okos szerződéseket) függetlenül a joghatóságok, hagyományok, követett üzleti gyakorlatok stb. közötti különbségektől.
Remélem, hogy az Ergo hasznos lesz itt. Ezrek kis szövetkezetei és egyéni vállalkozói fontosabbak az egészséges és fenntartható gazdagság növekedéséhez világszerte, mint néhány vállalat, amely offshore paradicsomokban rejti el a profitját.
Példaként vegyünk egy szövetkezeti szövetséget (például a Radical Routes), amely pénzügyi segítséget kíván nyújtani egy vállalkozónak, aki több ezer kilométerre van (mondjuk, Rojavában).
Most néhány részletet feltételeznünk kell. Először is, tegyük fel, hogy négy szövetkezet van a hálózatban. Ezek összesen 10,000 Ergot (egyenlő részekben, tehát 2,500 Ergot mindegyik) zárnak le egy szerződésben, amely a következőket mondja:
- A szövetkezetek a pubkeyA, pubkeyB, pubkeyC, pubkeyD nyilvános kulcsokkal vannak társítva. A vállalkozó egy businessKey nyilvános kulccsal van társítva.
- A szövetkezetek pénzt zárnak le egy, a finanszírozási szerződés által védett érme formájában, majd elvégzik a megfelelő ellenőrzést és szavaznak arról, hogy finanszírozzák-e a vállalkozót vagy sem. Az összes szerződéses alap (10,000 Ergot) a vállalkozóhoz kerül, ha 3 szavazat 4-ből mellette szól. Technikai szempontból a szavazás 3-ból 4 küszöb aláírás útján történik. Ha a szavazás nem sikeres (3 4-ből aláírás nem gyűlik össze) az 1,000 blokk szám előtt, bármely szövetkezet (valójában bárki) benyújthatja a visszavonási tranzakciót, amely 2,500 Ergot (legalább) visszatérít minden szövetkezetnek. Továbbá, a finanszírozási szerződést szavazási szerződésnek is nevezik.
- A befektetéseket három célra lehet költeni, szigorú határok mellett. Nevezetesen, a vállalkozónak legalább 5,000 Ergot kell költenie felszerelésre, legalább 2,000 Ergotot egy szükséges épület építésére, a többi alapot a vállalkozó tetszés szerint költheti el.
- Annak érdekében, hogy biztosak legyünk abban, hogy a felszerelésre szánt pénz valóban felszerelésre kerül, a szövetkezeti szövetség a vállalkozó területén ismert felszereléseladók nyilvános kulcsait használja. Például vegyük figyelembe, hogy a területen vannak felszereléseladók pubkeyTool1, pubkeyTool2, pubkeyTool3, pubkeyTool4 nyilvános kulcsokkal. Technikai szempontból az átutalás egy felszereléseladó kollektív aláírásaként van megszervezve (így a felszereléseladók gyűrűjéből származó gyűrűs aláírás ÉS a vállalkozó aláírása)
- Hasonlóan, tegyük fel, hogy 3 építő van a területen, akiket a szövetkezeti szövetség elismer, pubkeyConstr1, pubkeyConstr2 és pubkeyConstr3 nyilvános kulcsokkal társítva.
- Hasonlóan a szavazási szerződéshez, ha a felszerelésre és építésre vonatkozó szerződéseket nem közösen írják alá az 5000 blokk szám előtt, a szövetségi szövetkezetek visszavonhatják a pénzeszközöket.
Különböző módok vannak a szerződések definiálására az Ergóban. Egy alacsony szintű nyelvben, ErgoTree, egy (egyes) logikai feltételt ír le arról, hogy egy érme költhető-e ennek megfelelően, és egy költési bizonyítékot, amelyet egy költési tranzakció biztosít. Belsőleg a feltétel egy típusos szintaxisfaként van ábrázolva, így a neve. A struktúra lehetővé teszi számunkra, hogy előre költségelemzést végezzünk stb. A ErgoScript nevű magasabb szintű nyelv lehetővé teszi a hagyományosabb és olvashatóbb leírást, változók használatát és a logika alprogramokra bontását.
Kezdjük a fő szerződéssel, amelyet a fentiekben (1-3) definiáltunk:
{
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
}
Ez a ErgoScript-ben írt szkript egy szintaxisfává lesz fordítva (amelyet a blokkláncra egy sorosított formában kell írni) azáltal, hogy konkrét értékekkel kötik össze a változókat (pubkeyA, pubkeyB, pubkeyC, pubkeyD, spendingContract1Hash, spendingContract2Hash). spendingContract1Hash egy (sorosított) felszerelés költési szkript hash-e, amelyet alább fogunk bemutatni, spendingContract2Hash pedig egy építési költési szkript hash-e.
A felszerelés költési szkript a következő:
{
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
}
És az építési szkript a következő:
{
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
}
Most tegyük fel, hogy a szövetkezeti szövetség létrehozott egy, a szavazási szerződés által védett érmét. Az alábbiakban bemutatjuk, hogyan végezheti el a vállalkozó az üzletét:
- Hozzon létre egy tranzakciót, amely felhasználja az érmét, és legalább három érmét hoz létre, egyet a felszerelés költési szerződéssel, egy másikat az építési költési szerződéssel, a harmadik pedig egy érmét, amely a vállalkozó nyilvános kulcsával van védve.
- Küldje el a tranzakciót a szövetkezeteknek, várjon a tranzakcióra, amelynek a küszöb aláírásos bemenete közzétételre kerül a blokkláncon.
- Vegye figyelembe a szerződést egy felszereléseladóval, közösen írja alá a költési tranzakciót.
- Vegye figyelembe a szerződést egy építővel, közösen írja alá a költési tranzakciót.
A vállalkozó könnyen elmenekülhet anélkül, hogy bármilyen üzletet folytatna, de legfeljebb 3,000 Ergot. Ezt meg lehet oldani, például ezt a pénzt csak az 5,000 blokk szám után lehetne költeni, és addig a pénzt a szövetkezetek visszavonhatják. A felszerelésre és építésre vonatkozó költések esetén a vállalkozó együtt dolgozik néhány, feltehetően már elismert üzlettel. Így a befektető csökkenti a kockázatait.
A kódot és példa tranzakciókat online találhat. Kérjük, vegye figyelembe, hogy több példánk van összetett aláírási sémákról, többlépéses szerződésekről (folyamatban lévő végrehajtási utakkal, mint a MAST a Bitcoinban, de ciklusok engedélyezésével), oracle-okról, crowdfundingról stb. Kérjük, ellenőrizze a példák tárolónkat.
Share post
2025. augusztus 13.
2025. augusztus 12.
2025. július 9.
2025. május 12.






