# Гид по установке Zcash 1.0 "Sprout" Здравствуйте! С помощью этой инструкции вы сможете установить и запустить официальную версию Zcash. На данный момент для запуска официальной версии Zcash вам потребуется Linux, 64-битный процессор, и в некоторых случаях для создания транзакций потребуется превысить установленный лимит на использование RAM и CPU. Если вы столкнетесь с ошибками или трудностями, пожалуйста, дайте нам знать. В будущем мы планируем уменьшить расход ресурсов RAM/CPU, а также выпустить версии для других операционных систем. ## Апгрейды? Если вы уже пользовались альфа/бета версиями в тестовой сети, то вы должны убедиться, что ваш `~/.zcash/zcash.conf` не содержит настроек `testnet=1` или `addnode=betatestnet.z.cash`. Если у вас система на базе Debian, то для установки zcash можете воспользоваться [инструкциями для Debian](https://github.com/zcash/zcash/wiki/Debian-binary-packages). В противном случае, можете воспользоваться этим снапшотом нашего кода: ``` git fetch origin git checkout v1.0.3 ./zcutil/fetch-params.sh ./zcutil/build.sh -j$(nproc) ``` Также удостоверьтесь, что директория ``~/.zcash`` сначала содержит только ``zcash.conf`` . ## Немного терминологии Zcash поддерживает 2 вида адресов: _z-addr_ (который начинается с буквы **z**) и _t-addr_ (который начинается с буквы **t**). _z-addr_ использует доказательство с нулевым разглашением и другие криптографические инструменты для защиты частной информации. _t-addrs_ - это адреса по типу Bitcoin. ## Требования На данный момент системные требования таковы: * Linux (проще всего на Debian) * процессор 64-бит * 4GB свободной памяти Интерфейс представляет собой командную строку (`zcash-cli`) и вызов удаленной процедуры (RPC). Об этом можно почитать здесь: https://github.com/zcash/zcash/blob/v1.0.3/doc/payment-api.md ## Безопасность Перед установкой или запуском zcash просим вас ознакомиться с рекомендациями безопасности. Это можно сделать здесь: https://z.cash/ru/support/security.html ## Начинаем ### Инструкции для операционных систем на Debian  Следуйте этим инструкциям: https://github.com/zcash/zcash/wiki/Debian-binary-packages ### Как скомпилировать самостоятельно Для дистрибутивов Ubuntu/Debian: ```bash $ sudo apt-get install \ build-essential pkg-config libc6-dev m4 g++-multilib \ autoconf libtool ncurses-dev unzip git python \ zlib1g-dev wget bsdmainutils automake ``` Для Fedora: ```bash $ sudo dnf install \ git pkgconfig automake autoconf ncurses-devel python wget \ gtest-devel gcc gcc-c++ libtool patch ``` Далее связываемся с удаленным репозиторием и запускаем `fetch-params.sh` следующим образом: ```bash $ git clone https://github.com/zcash/zcash.git $ cd zcash/ $ git checkout v1.0.3 $ ./zcutil/fetch-params.sh ``` Таким образом мы извлечем наши ключи Sprout для подтверждения и верификации (последние создаются во время генерации параметров [Parameter Generation Ceremony](https://github.com/zcash/mpc)), и поместим их в `~/.zcash-params/`. Эти ключи могут весить до 911Мб, так что придётся немного подождать пока они скачаются. Если всплывет сообщение от ``git checkout`` про "detached head" - это не ошибка, все идет нормально. #### Сборка Убедитесь, что вы успешно установили все зависимости системного пакета, как было описано выше. Далее начинаем компиляцию: ```bash $ ./zcutil/build.sh -j$(nproc) ``` В результате должны скомпилироваться все зависимости и завершиться сборка `zcashd`. (Обратите внимание: если у вас нет `nproc`, то измените количество процессоров.) #### Тестирование Запуск тестирования займет некоторое время и может потребовать около 8Гб RAM. Вы можете пропустить тестирование и сразу же перейти к следующему разделу, если хотите. Но, если вы все же предпочитаете проверить правильность работы, то запустите следующую команду: ```bash $ ./qa/zcash/full-test-suite.sh ``` Также вы можете протестировать RPC, что займет намного больше времени: ```bash $ ./qa/pull-tester/rpc-tests.sh ``` Для успешного выполнения тестирования потребуется достаточно много памяти. При нехватки памяти появится сообщение об ошибке или невозможности выполнить операцию - ERROR или FAIL - и "std::bad_alloc". ## Конфигурация Создайте директорию `~/.zcash` и поместите файл с настройками конфигурации в `~/.zcash/zcash.conf` через следующие команды: ```bash mkdir -p ~/.zcash echo "addnode=mainnet.z.cash" >~/.zcash/zcash.conf echo "rpcuser=username" >>~/.zcash/zcash.conf echo "rpcpassword=`head -c 32 /dev/urandom | base64`" >>~/.zcash/zcash.conf ``` Обратите внимание, что любые настройки `zcash.conf`, которые вы добавляли при использовании тестовой сети, будут переписаны. Вы можете оставить старые настройки `zcash.conf`, но тогда вам надо убедиться, что они не содержат настройки `testnet=1` и `addnode=betatestnet.z.cash`; вместо них используйте `addnode=mainnet.z.cash`. В целях безопасности мы настойчиво рекомендуем вам использовать рандомный пароль, чтобы избежать [потенциально возможных рисков использования RPC  интерфейса](https://github.com/zcash/zcash/blob/master/doc/security-warnings.md#rpc-interface). ### Настройка CPU майнинга Для настройки CPU майнинга выполните следующие команды: ```bash $ echo 'gen=1' >> ~/.zcash/zcash.conf $ echo "genproclimit=$(nproc)" >> ~/.zcash/zcash.conf ``` Этот майнер не особо эффективен, но зато хорошо проверен. Чтобы использовать более эффективный, но не проверенный, запустите следующую команду: ```bash $ echo 'equihashsolver=tromp' >> ~/.zcash/zcash.conf ``` Более подробно об этом написано в [Mining-Guide](https://github.com/zcash/zcash-docs/blob/master/ru/Mining_Guide.md). ## Запуск Zcash: Запускаем zcash! ```bash $ ./src/zcashd ``` Чтобы процесс запуска происходил на заднем плане (чтобы скрыть экран запуска) используйте ``./src/zcashd --daemon``. Необходимо, чтобы после загрузки вы могли использовать вызов удаленной процедуры, или RPC. Это можно проверить следующим образом: ```bash $ ./src/zcash-cli getinfo ``` **ВНИМАНИЕ**: если вы уже знакомы с RPC интерфейсом биткоина, то многие из этих вызовов можно использовать для пересылки ZEC между адресами `t-addr`. Мы не поддерживаем функцию 'Accounts' (которую разработчики также не рекомендовали использовать в ``bitcoind``) - только пустая строка `""` может быть использована в качестве имени аккаунта. **ВНИМАНИЕ**: Главный узел mainnet.z.cash также доступен через Tor zcmaintvsivr7pcn.onion. Чтобы просмотреть, к каким пирам вы подключены, выполните: ```bash $ ./src/zcash-cli getpeerinfo ``` ## Использование Zcash Для начала Zcash надо приобрести. Это можно сделать на бирже, а также можно продать товар или услугу за ZEC. Безопасность приобретения Zcash не является темой данного документа, и все же, будьте бдительны. Остерегайтесь мошенников! ### Генерация t-addr Для начала сгенерируем t-addr. ```bash $ ./src/zcash-cli getnewaddress tb4oHp2v54vfmdgQ3v3SNuQga8JKHTNi2a1 ``` ### Получение Zcash на адрес z-addr Теперь сгенерируем z-addr: ```bash $ ./src/zcash-cli z_getnewaddress ztbqWB8VDjVER7uLKb4oHp2v54v2a1jKd9o4FY7mdgQ3gDfG8MiZLvdQga8JK3t58yjXGjQHzMzkGUxSguSs6ZzqpgTNiZG ``` Так создается личный адрес, и при этом сохраняется ключ в локальную папку кошелька. Этот адрес вы даете отправителю. Z-addr получается достаточно длинным и велика вероятность совершить в нем ошибку. Поэтому для избежания ошибок мы помещаем его таким образом: ```bash $ ZADDR='ztbqWB8VDjVER7uLKb4oHp2v54v2a1jKd9o4FY7mdgQ3gDfG8MiZLvdQga8JK3t58yjXGjQHzMzkGUxSguSs6ZzqpgTNiZG' ``` Чтобы увидеть все адреса, для которых у вас есть ключ, запустите эту команду: ```bash $ ./src/zcash-cli z_listaddresses ``` Вы увидите что-то вроде этого: ```json [ "zta6qngiR3U7HxYopyTWkaDLwYBd83D5MT7Jb9gpgTzPLMZytzRbtdPP1Syv4RvRgHeoZrJWSask3DyfwXG9DGPMWMvX7aC", "ztbqWB8VDjVER7uLKb4oHp2v54v2a1jKd9o4FY7mdgQ3gDfG8MiZLvdQga8JK3t58yjXGjQHzMzkGUxSguSs6ZzqpgTNiZG" ] ``` Отлично! Теперь отправьте ваш z-addr отправителю. При проверке вы должны будете видеть происходящие транзакции: ```bash $ ./src/zcash-cli z_listreceivedbyaddress "$ZADDR" ``` ```json [ { "txid" : "af1665b317abe538148114a45322f28151925501c081949cc7a5207ef21cb750", "amount" : 1.23, "memo" : "48656c6c6f20ceb2210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } ] ``` ### Отправка коинов с вашего z-addr Если кто-то дал вам свой z-addr... ```bash $ FRIEND='ztcDe8krwEt1ozWmGZhBDWrcUfmK3Ue5D5z1f6u2EZLLCjQq7mBRkaAPb45FUH4Tca91rF4R1vf983ukR71kHyXeED4quGV' ``` Вы можете отправить ему 0.8 ZEC следующим образом… ```bash $ ./src/zcash-cli z_sendmany "$ZADDR" "[{\"amount\": 0.8, \"address\": \"$FRIEND\"}]" ``` Подождав минутку, вы можете проверить закончилась ли операция и есть ли у нее результат: ```bash $ ./src/zcash-cli z_getoperationresult ``` ```json [ { "id" : "opid-4eafcaf3-b028-40e0-9c29-137da5612f63", "status" : "success", "creation_time" : 1473439760, "result" : { "txid" : "3b85cab48629713cc0caae99a49557d7b906c52a4ade97b944f57b81d9b0852d" }, "execution_secs" : 51.64785629 } ] ``` ## Вопросы безопасности Каждый релиз содержит `./doc/security-warnings.md` документ, в котором описываются вопросы безопасности, относящиеся к данному релизу. Самую последнюю версию этого документа вы найдете здесь: https://github.com/zcash/zcash/blob/master/doc/security-warnings.md Пожалуйста, не забывайте проверять нашу страничку посвященную безопасности на наличие новостей и уведомлений: https://z.cash/ru/support/security.html