Caracteristici:
- KISS;
- auto-găzduit;
- lipsa comisioanelor (de exemplu, bountysource și gitcoin iau 10% din plată);
- sprijin pentru mai multe criptomonede (în prezent, acestea sunt Bitcoin, Ethereum și Cardano);
- se preconizează (și este planificată) suportul pentru GitLab, Gitea și alte găzduiri Git în viitor.
- o listă globală a sarcinilor de pe toate (adică una, la momentul redactării știrii) instanțelor de donate.dumpstack.io.
Mecanismul de funcționare pentru GitHub din partea proprietarului repository-ului:
- (opțional) este necesară desfășurarea serviciului, se poate folosi configurația gata făcută pentru NixOS;
- de adăugat GitHub Action — în interior se apelează o utilitate care scanează sarcinile proiectului și adaugă/actualizează un comentariu despre starea actuală a portofelelor pentru donații, în timp ce partea privată a portofelelor este stocată doar pe serverul de donații (în viitor cu posibilitatea de a fi transferată offline pentru donații mari, pentru confirmarea manuală a plății);
- în toate sarcinile curente (și noi) apare un mesaj de la github-actions[bot] cu adresele portofelelor pentru donații (exemplu).
Mecanismul de funcționare din partea executorului sarcinii:
- în comentariul commit-ului se indică ce sarcină specifică rezolvă acest commit (vezi. închiderea problemelor folosind cuvinte cheie);
- în corpul pull request-ului se indică adresele portofelelor într-un format specific (de exemplu, BTC{address}).
- la acceptarea pull request-ului, plata se efectuează automat.
- dacă portofelele nu sunt specificate, sau nu toate sunt specificate, atunci plata fondurilor pentru portofelele nespecificate se face pe portofelele implicite (de exemplu, acesta poate fi portofelul comun al proiectului).
Securitate:
- suprafața de atac în general este mică;
- în funcție de mecanismele de funcționare, serviciul ar trebui să aibă capacitatea de a trimite fonduri autonom, astfel încât accesul la server va însemna controlul fondurilor în orice caz — soluția poate fi doar lucrul în modul neautomatizat (de exemplu, confirmarea plăților manual), care probabil (dacă proiectul va avea suficient succes pentru ca cineva să doneze pentru această funcționalitate, atunci nu probabil, ci cu siguranță) va fi realizată la un moment dat;
- părțile critic importante sunt clar separate (practic, acesta este un singur fișier pay.go de 200 de linii), astfel simplificând revizuirea codului de securitate;
- Codul a trecut printr-un control de securitate independent, ceea ce nu garantează lipsa vulnerabilităților, dar reduce probabilitatea apariției acestora, în special având în vedere regularitatea planificată a revizuirilor;
- Există, de asemenea, părți care nu sunt controlate (de exemplu, API-uri GitHub/GitLab/etc.), iar posibilele vulnerabilități din API-uri externe urmează să fie închise prin verificări suplimentare, totuși, în general, problema din ecosistemul actual este nerezolvabilă și în afara domeniului (vulnerabilitatea posibilă, de exemplu, cu capacitatea de a închide cererile de pull ale altora și astfel de a adăuga cod în proiecte străine ― are consecințe mult mai globale).
Sursa: linux.org.ru
