Особености:
- КИС
- самостоятельно хостван
- отсъствие такси (например, bountysource и gitcoin взимат 10% от плащането);
- поддръжка на множество криптовалути (в момента това са Биткойн, Етериум и Кардано);
- предполага се (и е предвидена) поддръжка на GitLab, Gitea и други Git хостинги в бъдеще.
- глобален списък с задачи от всички (т.е. един, към момента на написване на новината) инстанции на donate.dumpstack.io.
Механизъм на работа за GitHub от страна на собственика на репозитория:
- (по желание) трябва да се разгръща услугата, може да се използва готова конфигурация за NixOS;
- необходимо е да се добави GitHub Action — вътре се извиква инструмент, който сканира задачите на проекта и добавя/обновява коментар за текущото състояние на кошниците за дарения, като частта с частния ключ се съхранява само на сървъра за дарения (в бъдеще с възможност да се изнесе извън линия за големи дарения, за ръчно потвърждение на плащанията);
- всички текущи задачи (и новите) получават съобщение от github-actions[bot] с адресите на кошниците за дарения (пример).
Механизъм на работа от страна на изпълнителя на задачата:
- в коментара на комита се посочва коя точно задача решава този комит (вж. затваряне на проблеми с ключови думи);
- в тялото на pull request се посочват адресите на кошниците в определен формат (например, BTC{адрес}).
- при приемане на pull request плащането се извършва автоматично.
- ако адресите на кошниците не са посочени или не са посочени всички, то плащането за непосочените кошници се извършва на стандартните кошници (например, това може да бъде общата кошница на проекта).
Сигурност:
- атакуващата повърхност е общо малка;
- изхождайки от механизмите на работа, услугата трябва да има способността да изпраща средства самостоятелно, така че достъпът до сървъра ще означава контрол над средствата във всеки случай — решението може да бъде само работа в неавтоматизиран режим (например, ръчно потвърждение на плащанията), което вероятно (ако проектът бъде достатъчно успешен, за да бъде дарено за тази функционалност, тогава не е вероятно, а точно) ще бъде реализирано някога;
- критично важните части са ясно отделени (по същество, това е единствен файл pay.go с 200 реда), което улеснява прегледа на сигурността на кода;
- кодът премина независим преглед на сигурността, което не означава, че уязвимости не съществуват, но намалява вероятността за тяхното наличие, особено предвид планираната редовност на проверките;
- има и такива части, които не подлежат на контрол (например, API на GitHub/GitLab и др.), като възможните уязвимости в трети API ще се решават с допълнителни проверки; въпреки това, проблемът в текущата екосистема остава нерешим и извън обхвата (възможната уязвимост, например, с възможността да се затварят чужди pull request и по този начин да се добавя код в чужди проекти ― има много по-глобални последствия).
Източник: linux.org.ru
