В тот момент, когда Вы публикуете адрес для пожертвований, Вы публикуете и открытый реестр всех, кто Вас поддерживает, и ровно то, сколько Вы собрали. Именно эту часть большинство проектов не продумывают. Один опубликованный адрес — это удобно, но каждое поступление на него остаётся навсегда, публично и атрибутируемо: любой может увидеть кошелёк каждого жертвователя, сумму, время и Вашу текущую сумму сбора. Для автора это проблема приватности его сторонников; для НКО или open-source-проекта это может быть проблемой безопасности жертвователей и стратегической проблемой для самой организации.
Эта статья — о том, как принимать пожертвования на Solana, не превращая их в данные для слежки, защищая и приватность жертвователя, и Вашу казну.
Что на самом деле раскрывает публичный адрес для пожертвований
Опубликуйте один адрес и принимайте на него всё — и блокчейн теперь фиксирует:
- Кошелёк каждого жертвователя. Сторонник, который жертвует с кошелька, привязанного к его личности, только что навсегда опубликовал «я поддерживаю этот проект». Для политически чувствительных целей, журналистики или чего-либо спорного эта связь может быть реальным риском для жертвователя.
- Вашу точную сумму, в реальном времени. Конкуренты, контрагенты и просто любопытные могут читать Ваш сбор вживую. Никакого «мы не раскрываем» — всё в эксплорере.
- Ваши расходы. Каждый отток с адреса для пожертвований так же публичен. Поставщики, зарплаты и гранты, выплаченные с него, все атрибутируемы — это та же проблема, с которой сталкиваются казны: /blog/dao-treasury-privacy-on-solana.
Шифрование сумм здесь не решило бы основную проблему — чувствительные данные это связи (кто Вас поддерживает, кому Вы платите), а они остаются публичными, даже если цифры скрыты. О том, почему так, рассказывает /blog/encrypted-amounts-are-not-private.
Две стороны, которые нужно защитить: жертвователь и получатель
У приватности пожертвований две независимые половины, и от того, какая из них Вам важна, зависит настройка.
Защита жертвователей означает, что сторонник может пожертвовать, не публикуя связь между своим кошельком, несущим личность, и Вашим делом. Жертвователь делает это на своей стороне: он вносит депозит в защищённый пул со своего кошелька, а затем направляет вывод на Ваш адрес для пожертвований. Блокчейн показывает, как его кошелёк делает депозит в пул и как никак не связанный с ним вывод приходит на Ваш адрес — без ребра, соединяющего сторонника с Вами. Со своей стороны Вы просто получаете средства. (Если Вы публикуете инструкции для жертвователей, /blog/sending-sol-without-revealing-your-main-wallet — это пошаговое руководство, на которое стоит их направить.)
Защита организации означает, что Ваша общая сумма и Ваши расходы не являются открытой книгой. Вместо накопления всего на одном видимом адресе средства можно проводить через пул так, чтобы контролируемые Вами поступления и совершаемые Вами оттоки не связывались тривиально в единый публичный баланс и граф платежей.
Рабочая схема
Не существует единой «кнопки пожертвований», которая делала бы всё это магически, но компоненты складываются чисто:
- Принимайте на ротируемый набор свежих адресов, а не на один вечный адрес. Единый долгоживущий адрес для пожертвований — это худший случай: он агрегирует всё. Ротация назначений ограничивает то, сколько раскрывает любой отдельный адрес. Каждый должен быть свежим в том смысле, который описан в /learn/choosing-a-recipient-address.
- Расскажите заботящимся о приватности жертвователям, что они могут жертвовать через пул. Жертвователи, которые хотят скрыть свою поддержку, вносят депозит в защищённый пул и направляют вывод на Ваш адрес. Их кошелёк, несущий личность, никогда не оказывается связанным с Вами.
- Принимайте именно тот актив, который Вам нужен. Если Вы предпочитаете держать USDC, а не SOL, жертвователи (или Вы сами при выводе) могут конвертировать актив внутри приватного шага — /blog/swapping-sol-to-usdc-privately — чтобы потом Вам не пришлось делать публичный, поддающийся корреляции своп средств пожертвований.
- Проводите накопленные средства через пул перед тратой. Когда Вы платите поставщику или участнику, маршрутизация через защищённый пул разрывает связь между «пожертвования пришли» и «этот конкретный платёж ушёл» — та же дисциплина, что и при любой приватной выплате.
Честные пределы
Несколько вещей, о которых стоит сказать прямо, потому что переобещать безопасность жертвователям хуже, чем бесполезно:
- Жертвователь сам управляет своей приватностью. Если жертвователь даёт средства напрямую с кошелька, привязанного к личности, на Ваш публичный адрес, Вы не можете задним числом скрыть это за него. Приватность на стороне жертвователя — это действие на стороне жертвователя.
- Офчейн-раскрытие всё равно утекает. Если жертвователь публично пишет в Twitter «только что отправил 10 SOL проекту X», а время совпадает с выводом из пула на Ваш адрес, избежать этого вывода — его задача. Приватность — это конвейер; блокчейн — лишь один его этап. /learn/what-solmask-cannot-protect-you-from.
- Комплаенс и учёт — Ваша ответственность. Приватность публичного графа и Ваши собственные обязательства по ведению учёта — разные вещи; эта статья о первом, а не совет по второму.
С чего начать
Прочитайте /blog/solana-wallet-privacy-checklist ради операционной дисциплины, затем настройте свой первый приватный приём средств на /swap. Если Вы ведёте казну параллельно с пожертвованиями, /blog/dao-treasury-privacy-on-solana распространяет те же идеи на платежи поставщикам и участникам.
FAQ
В. Могу ли я сделать общую сумму сбора полностью невидимой? О. Вы можете сильно усложнить её прочтение, не агрегируя всё на одном публичном адресе и проводя средства через пул, но на публичном блокчейне идеальная непрозрачность казны — не та гарантия, которую честный человек должен обещать. Цель — убрать лёгкое прочтение с одного взгляда.
В. Как жертвователю пожертвовать приватно? О. Он вносит депозит в защищённый пул со своего кошелька и направляет вывод на Ваш адрес. Связь между его кошельком и Вашим делом так и не становится публичным ребром. Направьте его на /blog/sending-sol-without-revealing-your-main-wallet.
В. Публиковать один адрес для пожертвований или много? О. Предпочтительнее ротация свежих адресов. Единый вечный адрес агрегирует каждое поступление и платёж в один полностью публичный баланс и граф.
В. Могу ли я принимать пожертвования в USDC, даже если жертвователи отправляют SOL? О. Да — конвертацию можно сделать внутри приватного вывода, так что отдельного публичного свопа не будет. См. /blog/swapping-sol-to-usdc-privately.