Ergo a crowdfunding
6. septembra 2019

Čo je crowdfunding?
Crowdfunding je spôsob získavania kapitálu prostredníctvom kolektívneho úsilia jednotlivcov. Kampane sa väčšinou začínajú prostredníctvom celosvetovej siete a umožňujú projektom a podnikaniu získať financovanie získavaním malých súm peňazí od veľkého počtu ľudí.
Jedným z najznámejších príkladov úspešných crowdfundingových startupov je Oculus Rift, headset pre virtuálnu realitu. Spoločnosť Oculus VR spustila svoju kampaň v roku 2012 a o dva roky neskôr bola kúpená Facebookom za celkovú sumu 2 miliardy dolárov. Okrem bežných startupov existuje aj množstvo blockchainových projektov, ktoré sa vydali cestou crowdfundingu, napríklad Ethereum, Tron a EOS. Dnes existuje množstvo platforiem, ktoré vám umožňujú publikovať vašu kampaň. Niektoré z väčších sú Indiegogo, Kickstarter a Gofundme, aby sme vymenovali aspoň niektoré.
Crowdfunding má množstvo výhod: široký dosah, efektívnosť a marketingové aspekty sú najpresvedčivejšie... Ale teraz prejdime k tomu, čo je naozaj dôležité!
Predstavujeme crowdfunding na Ergo
Pred pár dňami, 28. augusta, hlavný vývojár Kushti uviedol na (Ergo fóre)[www.ergoforum.org], že sa mu podarilo úspešne napísať a implementovať kód, ktorý umožňuje používateľom spustiť crowdfundingovú kampaň na vrchole blockchainu Ergo (ako je uvedené na strane 6 whitepaperu. Tento kód dokonca funguje s aktuálnym API peňaženky. Tu je rýchly sprievodca, ako nastaviť peňaženku.
V tomto článku sa naučíte, ako to presne urobiť: crowdfunding na vrchole Ergo! Taktiež vás prevedie návrhom prvej kampane vôbec, ktorá má financovať vývoj post-EIP1 crowdfundingového skriptu.
Ak chcete ísť do všetkých podrobností, prečítajte si nasledujúcu sekciu „Skript“. Inak môžete jednoducho preskočiť na čítanie sekcií „Ako darovať“, „Ako zbierať dary“ a „Návrh crowdfundingového projektu“ nižšie.
Skript
Najjednoduchší crowdfundingový skript, podľa ErgoScript White Paper (strana 6), je „skript pre nasledujúcu crowdfundingovú situáciu: podporovateľ projektu (s kľúčom backerPubKey) si želá poskytnúť peniaze projektu (s kľúčom projectPubKey), ale iba ak projekt získa dostatok peňazí (aspoň minToRaise) z iných zdrojov do termínu (vyjadreného v termínoch HEIGHT).
Aby poskytol peniaze projektu, podporovateľ vytvorí výstupnú schránku chránenú nasledujúcim skriptom. Skript obsahuje dve podmienky: jednu pre prípad, že termín uplynul (umožňujúcu podporovateľovi získať peniaze späť) a jednu pre prípad, že to uspelo (umožňujúcu projektu minúť peniaze, ak je suma aspoň minToRaise pred termínom).
Aby sa zabezpečilo, že bolo vyzbierané dostatok peňazí, skript bude hľadať v kolekcii výstupov schránku s dostatočnou hodnotou smerujúcou k projectPubKey. Aby skontroloval, kam ide hodnota výstupnej schránky, skript prečíta skript chrániaci výstupnú schránku a porovná ho so skriptom zodpovedajúcim proveDlog(projectPubKey); tento skript môže byť získaný z projectPubKey.propBytes.
Keďže aktuálne API nepodporuje vkladanie vlastných premenných prostredia (iba preddefinovaných, ako HEIGHT), jediný spôsob, ako skompilovať skript, je nahradiť takéto premenné v skripte z whitepaperu konkrétnymi hodnotami. Napríklad, považujte, že crowdfundingová kampaň je úspešná, ak vyzbiera 500 Ergs pred blokom číslo 50 000. Pre backerPubKey a projectPubKey môžeme použiť funkciu PK(), ktorá momentálne akceptuje iba P2PK serializované kľúče. Potom sa upravený skript z WhitePaper stáva nasledujúcim:
{
val backerPubKey = PK("9h7DHKSDgE4uvP8313GVGdsEg3AvdAWSSTG7XZsLwBfeth4aePG")
val projectPubKey = PK("9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq")
val deadline = 50000
val minToRaise = 500L * 1000000000
val fundraisingFailure = HEIGHT >= deadline && backerPubKey
val enoughRaised = {(outBox: Box) =>outBox.value >= minToRaise
&& outBox.propositionBytes == projectPubKey.propBytes
}
val fundraisingSuccess = HEIGHT < deadline && projectPubKey && OUTPUTS.exists(enoughRaised)
fundraisingFailure || fundraisingSuccess
}
Ako darovať
Predovšetkým, JSON nepodporuje viacriadkové reťazce, takže musíte nahradiť zalomenia riadkov \n.
Taktiež, úvodzovky musia byť escapované, takže použite " namiesto ". Výsledný JSON bude odoslaný na /script/p2sAddress.
Aby ste darovali projektu, najprv získajte svoju adresu z /wallet/addresses, vezmite napríklad prvú z nich. Vložte adresu do backerPubKey, takže požiadavka na /script/p2sAddress bude vyzerať takto po tomto kroku:
{
"source": "{
val backerPubKey = PK(\"9...\")
val projectPubKey = PK(\"9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq\")
val deadline = 50000
val minToRaise = 500L * 1000000000
val fundraisingFailure = HEIGHT >= deadline && backerPubKey
val enoughRaised = {
(outBox: Box) =>
outBox.value >= minToRaise && outBox.propositionBytes == projectPubKey.propBytes
}
val fundraisingSuccess = HEIGHT < deadline && projectPubKey && OUTPUTS.exists(enoughRaised)
fundraisingFailure || fundraisingSuccess
}"
}
s vašou adresou namiesto „9…“.
Odošlite reťazec na /script/p2sAddress, aby ste dostali odpoveď ako:
{
"address": "GB3kh2izpWKvyZfMboQwsEscjPaZcz9WrzGqZB4ZrkzRreiFMV6HZYWXGMK3rqCjDCoPgWGNzfnYSUhivW4a1VRYPE7uZXwKnBcqWcRkiuTx6QW55EcPcWeELUsumwdtKoFtWY583nWnKZff"
}
Skopírujte reťazec adresy (GB3… v našom príklade) a pošlite peniaze na ňu prostredníctvom /wallet/payment/send. Požiadavka na API metódu na odoslanie 10 Ergs (10 miliárd nanoErgs) bude vyzerať takto:
[
{
"address": "GB3kh2izpWKvyZfMboQwsEscjPaZcz9WrzGqZB4ZrkzRreiFMV6HZYWXGMK3rqCjDCoPgWGNzfnYSUhivW4a1VRYPE7uZXwKnBcqWcRkiuTx6QW55EcPcWeELUsumwdtKoFtWY583nWnKZff",
"value": 10000000000
}
]
To je všetko!
Teraz peňaženka automaticky nájde schránku na blockchaine, pretože obsahuje verejný kľúč, ktorý patrí k peňaženke v podmienke vrátenia. Peňaženka potom pravidelne kontroluje, či je schránka použiteľná, vytvorením najjednoduchšej transakcie so schránkou ako vstupom a len jedným výstupom (na tú istú adresu). Po výške vrátenia (50 000 v našom príklade) bude peňaženka schopná minúť schránku a tak sa hodnota schránky pridá k /wallet/balances.
Upozorňujeme, že to nebude platiť po implementácii EIP-1 3, pretože peňaženka bude do tej doby používať úzke rozpoznávacie vzory.
Ako zbierať dary
Peňaženka, ktorá je spojená s verejným kľúčom projektu, nájde prichádzajúce schránky na blockchaine. Avšak, nebude schopná zabezpečiť, že schránky sú použiteľné, pretože peňaženka momentálne používa najjednoduchšiu transakciu na to, a skript zlyháva pre takúto transakciu.
Pred implementáciou metódy /wallet/boxes/uncertain je jediným spôsobom, ako projekt nájsť prichádzajúce schránky. Potom /wallet/transaction/send s manuálne poskytnutými (v „inputsRaw“) serializovanými schránkami (použite /utxo/byIdBinary na získanie serializovanej schránky podľa jej identifikátora).
Kushti to urobil sám a získal nasledujúcu transakciu.
Upozorňujeme, že EIP-1 tento pracovný postup tiež naruší.
Kushti navrhuje vyzbierať 500 Ergs pred blokom 50 000 na vývoj skriptov príkazového riadku (v Pythone) na organizovanie a účasť na crowdfundingových kampaniach po implementácii EIP-1. Skripty príkazového riadku sú vhodnejšie ako manuálne vykonávanie požiadaviek a môžu byť tiež použité na vytváranie grafických rozhraní na ich základe.
Pokladnica poskytla polovicu prostriedkov, takže ostatní musia kolektívne prispieť chýbajúcimi 250 Erg. V prípade zlyhania kampane budú vrátené peniaze automaticky. Keďže zbieranie prísľubov nie je v súčasnosti triviálne, Kushti povedie projektovú úlohu, takže prosím použite nasledujúci kľúč, ktorý je pod jeho kontrolou:
9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq
Aby ste darovali akúkoľvek sumu peňazí, prosím, riaďte sa sekciou „Ako darovať“ vyššie s nahradením backerPubKey vaším verejným kľúčom a prísľubovou sumou správnou hodnotou (prosím, vezmite na vedomie, že je to v nanoErgs, 1 Erg = 1.000.000.000 nanoErgs).
Ako vždy, ak máte ďalšie otázky, návrhy alebo chcete sa zapojiť do hnutia, prosím, pripojte sa k našim kanálom na sociálnych médiách alebo fóru.
Share post
9. júla 2025







