Перейти к содержимому






* * - - - 2 голосов

Настройка ноды, кошелька и майнинга Эфириума (Ethereum) под Ubuntu x64 14.04.2

Написано General-Beck, в Эфириум 06 August 2015 · 42160 Просмотров

Давненько я не писал мануалы, но пора. Мы рассмотрим запуск собственной ноды, кошелька и майнинга многообещающей криптовалюты Эфириум (Ethereum). В дальнейшем с Вашего позволения я буду называть её эфиром, ETH. Для этого нам потребуется компьютер со следующими требованиями:
  • Минимум 2 ядра и частота > 2,4 ГГц
  • Минимум, прям самый минимум 4 ГБ ОЗУ (алгоритм, используемый в эфире очень требователен к памяти, это обеспечивает его хорошей защитой от ASIC устройств) Максимум - это столько, сколько позволит Вам ваш карман. Я всегда придерживался мнения, что памяти много не бывает.
  • Дисковая подсистема. Конечно я порекомедовал бы ssd, даже ssd в рейде, годится конечно и обычные hdd, но предупреждаю сразу, у ноды очень много операций ввода-вывода и это критическое место.
  • Если вы намерены использовать для майнинга видеокарты, то тут требование одно, минимум 2 ГБ видеопамяти, установленные =ati]проприетарные драйвера ATI
  • (в данном мануале мы будем рассматривать этот вариант ввиду отсутствия у меня продуктов NVIDIA), AMD APP SDK версии 2.9 (где взять и как установить можно посмотреть в моих предидущих статьях, например про sgminer)
  • Компьютер с предустановленной Ubuntu x64 14.04.2 или более легковесный вариант Lubuntu
  • К компьютеру должны прилагатся прямые руки и трезвый мозг ;-)
    Итак "Вперёд консоль!"

    Для начала сделаем небольшой тюнинг системы. Создаём файл:
    nano optimize.sh
    В него вставляем следующие строки:
    #!/bin/bash
    # настройки HDD если памяти >=2 GB
    echo 'vm.swappiness=10' >> /etc/sysctl.conf #установите 1 если установка идет на VPS
    echo 'vm.vfs_cache_pressure=1000' >> /etc/sysctl.conf
    echo 'vm.dirty_background_ratio = 10' >> /etc/sysctl.conf
    echo 'vm.dirty_ratio = 10' >> /etc/sysctl.conf
    echo 'vm.laptop_mode = 5' >> /etc/sysctl.conf
    sudo sync
    echo 3 > /proc/sys/vm/drop_caches
    # настройка сети
    echo 'net.core.netdev_max_backlog = 10000' >> /etc/sysctl.conf
    echo 'net.core.somaxconn=65535' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_syncookies=1' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_max_syn_backlog = 262144' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_max_tw_buckets = 720000' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_tw_recycle = 1' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_timestamps = 1' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_tw_reuse = 1' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_fin_timeout = 30' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_keepalive_time = 1800' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_keepalive_probes = 7' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_keepalive_intvl = 30' >> /etc/sysctl.conf
    echo 'net.core.wmem_max = 33554432' >> /etc/sysctl.conf
    echo 'net.core.rmem_max = 33554432' >> /etc/sysctl.conf
    echo 'net.core.rmem_default = 8388608' >> /etc/sysctl.conf
    echo 'net.core.wmem_default = 4194394' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_rmem = 4096 8388608 16777216' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_wmem = 4096 4194394 16777216' >> /etc/sysctl.conf
    #настройка памяти
    page_size=`getconf PAGE_SIZE`
    phys_pages=`getconf _PHYS_PAGES`
    shmall=`expr $phys_pages / 2`
    shmmax=`expr $shmall \* $page_size`
    echo kernel.shmmax = $shmmax >> /etc/sysctl.conf
    echo kernel.shmall = $shmall >> /etc/sysctl.conf
    sysctl -p
    После этого надо выполнить команду:
    sudo sh optimize.sh
    Выполнить надо один раз, повторять не будем (эти настройки применимы для высоконагруженных серверов, а у нас предстоят большие нагрузки). Так же по возможности внесем изменения в файл конфигурации сети
    nano /etc/network/interfaces
    Вставим следующую строку:
    up ifconfig $IFACE txqueuelen 10000
    В процессе работы ноды нас может настигнуть ошибка too many open files, чтобы её избежать проделаем следующее:
    sudo nano /etc/security/limits.conf
    Добавляем следующие строки:
    user soft nofile 65000
    user hard nofile 65000
    где user - это ваш пользователь, у меня например denis ;-) на VPS обычно ubuntu.
    Далее правим файл:
    sudo nano /etc/pam.d/common-session
    В него добавляем:
    session required pam_limits.so
    После этого потребуется перезагрузка.
    Владельцам нескольких видеокарт необходимо дополнительно проделать следующие операции:
    sudo aticonfig --adapter=all -f --initial
    sudo aticonfig --od-enable
    Выключить gpumanager чтобы при перезагрузке система не перезаписывала файл xorg.conf
    sudo nano /etc/default/grub
    вносим следующие исправления
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    на
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nogpumanager"
    После запустим
    sudo update-grub
    и перезагрузимся.
    Всё, компьютер к разврату готов!
    Мы рассмотрим две имплементации клиента Ethereum - Go и С++. В каждом варианте доступны два пути, установка готовых сборок из репозиториев или самостоятельная сборка. Какой из вариантов выбрать - решать Вам.


    Установка консольного GO клиента (geth CLI)

    Установка из PPA
    Если вы хотите получить последний девелоперский снимок, необходимо добавить два репозитория ppa:ethereum/ethereum и ppa:ethereum/ethereum-dev. В случае, если Вы хотите использовать стабильные сборки, используйте только первый.
    sudo apt-get install software-properties-common
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo add-apt-repository -y ppa:ethereum/ethereum-dev
    sudo apt-get update
    sudo apt-get install ethereum
    Вы можете установить только консольный клиент geth с помощью команды sudo apt-get install geth Если не хотите устанавливать дополнительные утилиты (bootnode, evm, disasm, rlpdump, ethtest)

    Сборка из исходников
    Предварительно нам надо установить следующие компоненты:
    sudo apt-get install golang git build-essential libgmp3-dev
    Далее установить переменные окружения GOPATH и PATH
    Установим папку для GO:
    mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc
    обновим пути:
    echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc
    Применим изменения для текущей сессии source ~/.bashrc
    Клонируем исходный код проекта на наш компьютер
    git clone https://github.com/e...eum/go-ethereum
    И итоге собираем geth используя следующие команды:
    cd go-ethereum
    make geth
    Если всё правильны получим примерно следующее:
    make geth
    build/env.sh go install -v -ldflags '-X main.gitCommit 26a269ea09667f7e49b89f96bb5eaee66c0d10f8' ./cmd/geth
    github.com/ethereum/go-ethereum/crypto
    github.com/ethereum/go-ethereum/compression/rle
    github.com/ethereum/go-ethereum/accounts
    github.com/ethereum/go-ethereum/common/compiler
    github.com/ethereum/go-ethereum/p2p/discover
    github.com/ethereum/go-ethereum/common/docserver
    github.com/ethereum/go-ethereum/ethdb
    github.com/ethereum/go-ethereum/common/registrar
    github.com/ethereum/go-ethereum/trie
    github.com/ethereum/go-ethereum/core/state
    github.com/ethereum/go-ethereum/p2p
    github.com/ethereum/go-ethereum/core/types
    github.com/ethereum/go-ethereum/core/vm
    github.com/ethereum/go-ethereum/pow
    github.com/ethereum/ethash
    github.com/ethereum/go-ethereum/core
    github.com/ethereum/go-ethereum/eth/downloader
    github.com/ethereum/go-ethereum/eth/fetcher
    github.com/ethereum/go-ethereum/event/filter
    github.com/ethereum/go-ethereum/whisper
    github.com/ethereum/go-ethereum/miner
    github.com/ethereum/go-ethereum/eth
    github.com/ethereum/go-ethereum/xeth
    github.com/ethereum/go-ethereum/tests
    github.com/ethereum/go-ethereum/common/natspec
    github.com/ethereum/go-ethereum/rpc/api
    github.com/ethereum/go-ethereum/cmd/utils
    github.com/ethereum/go-ethereum/cmd/geth
    Done building.
    Run "build/bin/geth" to launch geth.
    Теперь можно запускать Вашу ноду
    build/bin/geth


    Установка консольного С++ клиента (eth)

    Установка из PPA
    Клиент для С++ находится в состоянии постоянной разработки и обкатки, каждый день вносится много изменений, будьте готовы часто обновлять.
    Для получения последней стабильной версии:
    Предупреждение, репозиторий ethereum-qt обновит версию QT до 5.4
    sudo add-apt-repository ppa:ethereum/ethereum-qt
    sudo add-apt-repository ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install cpp-ethereum
    Для получения последней девелоперской версии:
    sudo add-apt-repository ppa:ethereum/ethereum-qt
    sudo add-apt-repository ppa:ethereum/ethereum
    sudo add-apt-repository ppa:ethereum/ethereum-dev
    sudo apt-get update
    Вы можете установить как отдельные бинарники:
    sudo apt-get install alethzero
    sudo apt-get install eth
    Так и весь комплект целиком:
    sudo apt-get install cpp-ethereum
    Он включает в себя mix, neth, solc, sc, lllc, rlp и testeth
    Запускайте alethzero для GUI оболочки, eth для консоли или neth для взаимодествия через интерфейс ncurses.

    Сборка из исходников
    Установка зависимостей
    sudo apt-get -y update
    sudo apt-get -y install language-pack-en-base
    sudo dpkg-reconfigure locales
    sudo apt-get -y install software-properties-common
    wget -O - http://llvm.org/apt/...napshot.gpg.key | sudo apt-key add -
    sudo add-apt-repository "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty main"
    sudo add-apt-repository -y ppa:ethereum/ethereum-qt
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo add-apt-repository -y ppa:ethereum/ethereum-dev
    sudo apt-get -y update
    sudo apt-get -y upgrade
    Следующие пакеты будут необходимы Вам для сборки полного комплекта, включая GUI
    sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev libcurl4-openssl-dev libcryptopp-dev libjson-rpc-cpp-dev libmicrohttpd-dev libjsoncpp-dev libargtable2-dev llvm-3.7-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev git
    Получаем исходники с github
    git clone https://github.com/e...um/cpp-ethereum
    cd cpp-ethereum
    git checkout develop
    Последней командой мы переключаемся на текущую девелоп версию
    Создание и конфигурирование переменных для сборки необходимо производить в директории cpp-ethereum
    mkdir build
    cd build
    cmake .. -DETHASHCL=1
    Опционально, вы можете выбирать, какие компоненты Вам необходимы, например:
    cmake .. -DCMAKE_BUILD_TYPE=Release -DBUNDLE=minimal -DETHASHCL=1 # Минимальная компиляция, неоходимая только для запуска ноды, включая оптимизации компилятора
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUNDLE=user -DFATDB=1 -DETHASHCL=1 # Компиляция для нормального использования, включая полную поддержу проводника для цепочки блоков
    cmake .. -DGUI=0 -DETHASHCL=1 # Сборка толко консольных клиентов, без зависимостей QT
    Ну и собственно приступаем к сборке бинарников:
    make -j2
    где число 2 можно изменить на 4,8 всё зависит от того сколько ядер процессора будут участвовать в сборке. Этот параметр сильно влияет на скорость сборки. Если Вы готовы задействовать все ядра введите make -j$(nproc)
    Для запуска консольного клиента используйте следующие команды:
    cd ~/cpp-ethereum/build/eth
    ./eth


    Настройка майнинга Эфириума (Ethereum)
    Давайте вначале определимся с тем, что такое майнинг и как это работает в Эфириуме (Ethereum)
    Подобно всем блокчейн технологиям, Ethereum Frontier использует стимулирующую модель безопасности. Согласованность основывается на выборе блока с наибольшей возможной сложностью. Майнеры производят блоки, которые другие проверяют на пригодность. Среди других критериев соответствия присутствует то, что блок является пригодным, только если он содержит доказательство работы (PoW) данной сложности. Имейте в виду, что в Ethereum 1.1, это, скорее всего, будет заменено доказательством стековой модели (PoS).
    Применимое доказательство рабочего алгоритма называется Ethash (модифицированная версия Dagger-Hashimoto включает обнаружение nonce-входа в алгоритм, так чтобы результат был ниже определенного порога, в зависимости от сложности. Главное в алгоритмах PoW – это то, что не существует лучшей стратегии нахождения такого случайного числа Nonce, чем перечисление возможностей, тогда как подтверждение решения является простым и дешевым. Если выходы имеют одинаковое распределение, то мы можем гарантировать, что в среднем время, необходимое для обнаружения случайного числа nonce зависит от порога сложности, т.е. можно контролировать время обнаружения нового блока, манипулируя сложностью.
    Сложность динамично регулируется, таким ообразом, в среднем, один блок производится всей сетью за 12 секунд (т.е. время блока составляет 12с). Данный интервал, по существу, перемежает синхронизацию состояния системы и гарантирует , что поддержка ветки (позволяющая двойные траты) или переписывание истории невозможны, если взломщик не обладает более чем половиной майнинговой мощности сети (так называемая 51% атака).
    Любая нода, участвующая в сети, может быть майнером, и их ожидаемая прибыль от майнинга будет прямо пропорциональна их (соответствующей) майнинговой мощности либо размером хэша, т.е. количеством случайных чисел nonce, опробованных за секунду, нормализованных общим размером хэша сети.
    Ethash PoW – это большие нагрузки на память, делающая его ASIC-устойчивым. Это означает, что подсчет PoW требует выбора подмножеств фиксированного ресурса, зависимого от случайного числа nonce и заголовка блока. Этот ресурс (данные размером в несколько гигабайт) называется DAG. DAG бывает совершенно разным в каждых 30000 блоках (100–часовое окно, называемое epoch (эпоха) и на его генерацию требуется время. Т.к. DAG зависит только от высоты блока, его можно сгенерировать предварительно, но если это не выполнено, клиенту необходимо будет ждать окончания процесса для производства блока. Пока клиенты фактически кешируют dags заблаговременно, сеть может испытывать массивную задержку блоков при каждом интервале транзакции. Обратите внимание, что у DAG нет необходимости генерации для подтверждения PoW, которое требует для подтверждения слабого CPU и маленькой памяти.
    В особых случаях, когда вы запускаете ноду из временного файла, майнинг начнется только, когда DAG создан для текущего интервала.
    Есть несколько вариантов для майнинга Эфириума в результате которого мы будем получать эфир (ETH).
  • Клиент geth пока поддерживает майнинг только на процессоре (CPU). Поддержка майнинга на видеокарте (GPU) реализована эксперементально.
  • Клиент eth умеет майнить как на CPU, так и на GPU
  • Смешанный майнинг, в данном случае мы используем ноду как пул для майнинга.
Рассмотрим каждый из вариантов подробнее.



Майнинг при помощи консольного клиента geth
При запуске ноды ethereum при помощи geth майнинг не запустится по умолчанию. Для запуска в режиме майнинга используйте опцию командной строки --mine . Параметр -minerthreads можно использовать для настройки числа параллельных майнинговых потоков (по умолчанию – общее количество ядер процессора).
ПРИМЕЧАНИЕ: В дальнейшем я не буду разделять собранный Вами из исходников клиент или установленный из репозитория. Подразумевается то, что если в примере указано geth, eth, ethminer то пути для запуска Вы подставите сами. Если Вы устанавливали из репозитория, то это просто команда geth, eth, ethminer. Если Вы собрали из исходников, то будьте добры добавлять к команде путь запуска, например /home/denis/cpp-ethereum/build/eth/eth или ~/go-ethereum/build/bin/geth
Убедитесь, что блокчейн полностью синхронизован с главной цепочкой (чейном) до начала майнинга, иначе Вы не сможете осуществлять майнинг в главном чейне.
geth --mine --minerthreads="4"
Чтобы заработать эфиры (ether) вам необходимо наличие набора адресов базы монет (coinbase) (или ether-базы (etherbase)). Эта ether-база по умолчанию обращается к вашему основному аккаунту. Если у вас нет набора адресов ether-базы, то geth –mine не запустится.
Интерактивное создание аккаунта, следующая команда создаст новый аккаунт и выведет адрес:
geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat Passphrase:
Address: {2d9e39c7b6827943e912b61ba89cf80596ec6676}
Не-интерактивное создание
geth console
> eth.coinbase
'0x'
> admin.newAccount()
The new account will be encrypted with a passphrase.
Please enter a passphrase now.
Passphrase:
Repeat Passphrase:
'ffd25e388bf07765e6d7a00d6ae83fa750460c7e'
> eth.coinbase
'0xffd25e388bf07765e6d7a00d6ae83fa750460c7e'
ВАЖНО!!! Запомните пароль, в случае утраты никто Вам уже не поможет, за исключением сверхестественных сил, гипноза и возможно машины времени (это выходит за рамки моей компетенции) Ключи хранятся в <DATADIR>/keys. Удостоверьтесь, что вы регулярно делаете резервное копирование!
Имейте в виду, что Ваша база монет (coinbase) не обязательно должна совпадать с адресом локального аккаунта, просто он должен быть существующим.
Просмотреть список Ваших аресов можно следующими командами
geth account list
Account #0: {400bb33bc452068778bef021e595e0ef873dc3ba}
Account #1: {2d9e39c7b6827943e912b61ba89cf80596ec6676}
Account #2: {c7a8495c65dfafb389b1969405968ef686ef3432}
Account #3: {d45f7d9e9f1886791c8b710a53fee4dfaa3b6c54}
или в консоли - добавляем параметр console при запуске клиента или при запущенном клиенте в соседнем терминале набираем geth attach
> eth.accounts
['0x400bb33bc452068778bef021e595e0ef873dc3ba', '0x2d9e39c7b6827943e912b61ba89cf80596ec6676', '0xc7a8495c65dfafb389b1969405968ef686ef3432', '0xd45f7d9e9f1886791c8b710a53fee4dfaa3b6c54' ]
> personal
{
listAccounts: ['0x400bb33bc452068778bef021e595e0ef873dc3ba', '0x2d9e39c7b6827943e912b61ba89cf80596ec6676', '0xc7a8495c65dfafb389b1969405968ef686ef3432', '0xd45f7d9e9f1886791c8b710a53fee4dfaa3b6c54' ],
getListAccounts: function (),
newAccount: function (),
unlockAccount: function ()
Создали аккаунт, можно приступать к майнингу
geth --etherbase '0xa4d8e9cae4d04b093aac82e6cd355b6b963fb7ff' --mine --minerthreads="4" console 2>>geth.log
в этом примере мы запускаем майнинг используя 4 ядра на адрес 0xa4d8e9cae4d04b093aac82e6cd355b6b963fb7ff с выводом результатов работы клиента в файл geth.log. Если убрать console 2>>geth.log, то весь процесс майнинга вам будет виден в текущей консоли
Имеется опция добавления дополнительных Данных (с пределом в 1Kb) в ваши блоки майнинга. По договоренности это интерпретируется как уникальная последовательность, так что вы имеете возможность настраивать свое уникальное свойство.
admin.miner.setExtra("ǤΞNΞɌɅȽ-ɃΞCK")
...
admin.debug.printBlock(131805)
BLOCK(be465b020fdbedc4063756f0912b5a89bbb4735bd1d1df84363e05ade0195cb1): Size: 531.00 B TD: 643485290485 {
NoNonce: ee48752c3a0bfe3d85339451a5f3f411c21c8170353e450985e1faab0a9ac4cc
Header:
[
...
Coinbase: a4d8e9cae4d04b093aac82e6cd355b6b963fb7ff
Number: 131805
Extra: ǤΞNΞɌɅȽ-ɃΞCK
...
}
Хешрейт можно проверить при помощи eth.hashrate , результаты выводятся в H/s (Хэш операции за секунду).
>eth.hashrate()
712000
После успешного майнинга нескольких блоков вы можете проверить ether-баланс своего аккаунта. Теперь, при условии, что Ваша ether-база монет является локальным аккаунтом:
> eth.getBalance(eth.coinbase).toNumber();
'34698870000000'
Чтобы потратить свой заработок в gas на транзакции, вам понадобится разблокировать данный аккаунт при помощи ранее заданного пароля.
> personal.unlockAccount('0x400bb33bc452068778bef021e595e0ef873dc3ba',"passphrase")
true
Вы можете проверить, какие именно блоки намайнил определенный майнер (адрес) при помощи следующего фрагмента кода в консоли:
function minedBlocks(lastn, addr) {
addrs = [];
if (!addr) {
addr = eth.coinbase
limit = eth.blockNumber - lastn
for (i = eth.blockNumber; i >= limit; i--) {
if (eth.getBlock(i).miner == addr) {
addrs.push(i)
}
}
return addrs
}
// сканируем последние 1000 блоков и возвращаем номера блоков, намайненные на вашу coinbase
minedBlocks(1000, eth.coinbase);
//[352708, 352655, 352559]
Успех майнинга зависит от сложности набора блока. Трудность блока динамически регулирует каждый блок, это регулирует мощность хэшинга сети для поддержания 12-секундного времени блока. Таким образом, Ваши шансы нахождения блока следуют из соответствующей сложности размера хэша.
Имейте в виду, что часто будет случаться так, что найденный блок не подходит к канонической цепочке (чейну-chain). Это означает, что когда Вы локально включаете свой блок майнинга, текущее состояние покажет награду за майнинг, переведенную на Ваш аккаунт. Тем не менее, через некоторое время, обнаруживается лучшая цепочка (чейн), и мы переходим в чейн, в который не включен Ваш блок и, следовательно, не переведена награда за майнинг. Следовательно и довольно вероятно, что майнер, мониторящий состояние баланса своей базы монет (coinbase), обнаружит, что оно может немного колебаться.
Для запуска GPU майнинга нам придется сделать дополнительные движения (я предполагаю, что драйвера у Вас настроены и Вы уже осислили самостоятельную сборку клиента geth из исходников. Во первых необходимо собрать клиент, переключившись на новую ветку gpu_miner
cd go-ethereum
git checkout gpu_miner
make./build/bin/geth gpuinfo //посмотреть информацию o GPU
./build/bin/geth gpubench 0 //запуск бенчмарка GPU
./build/bin/geth minegpu 0 //запуск майнинга на GPU
Вы можете использовать майнинг на нескольких видеокартах, для этого добавть в команду запуска minegpu 0,1,2,3 ( где 0,1,2 и 3 это перечисление ваших GPU)
Добавьте --gpuchunks флаг, чтобы загрузить DAG в блоках в память GPU. Это необходимо для некоторых более старых карт.


Майнинг при помощи консольного клиента eth
Консольный клиент eth позволяет нам сразу после синхронизации приступить к майнингу как на CPU так и на GPU, все зависит от Вашего желания и технических возможностей.
Клиент может работать в нескольких режимах: нода, майнер, нода+майнер
Для GPU майнинга предполагается, что в случае самостоятельной сборки клиента был использован ключ -DETHASHCL=1
При первом запуске нам будет предложено создать Мастер пароль, для дальнейшего управления кошельками и нодами, обязательно запомните его, никто не поможет Вам его восстановить, если вы его забудете!
eth -b -i -j --frontier --network-id 1 -v 1(++)Ethereum
Welcome to the Frontier!
⧎ ℹ 09:35:06|eth Id: ##0569dfd2…
ℹ 09:35:07|eth Opened blockchain DB. Latest: #37600a7d… (rebuild not needed)
ℹ 09:35:08|eth Opened state DB.
Please enter a MASTER password to protect your key store (make it strong!):
Please confirm the password by entering it again:
Ethereum (++) 0.9.38
Code by Gav Wood et al, © 2013, 2014, 2015.
Transaction Signer: 05960c6650dd630bf756754d413db325292a7e1a
Mining Benefactor: 05960c6650dd630bf756754d413db325292a7e1a
ℹ 09:35:37|p2p UPnP device: http://192.168.1.1:5...-037c03d6d10000 [st: urn:schemas-upnp-org:device:InternetGatewayDevice:1 ]
⧎ ℹ 09:35:37|p2p Punched through NAT and mapped local port 30304 onto external port 30304 .
⧎ ℹ 09:35:37|p2p External addr: 95.190.225.5
Node ID: enode://0569dfd2bb4ebf7b0ccc5a254849aa1e43488e2131f9753229b8c8f0211faf6a768752750cbf0b01f13cc5ba65591f8b2806a58df2a7634bdba016239e16f752@95.190.225.5:30304
Вы можете самостоятельно создавать адреса для ваших кошельков, управлять при помощи java скриптов и выполнять множество других операций, полный список которых можно посмотреть здесь JavaScript API
В данном случае клиент надо запускать в интерактивном режиме, это ключ -i
Когда клиент запущен в активном режиме у нас имеется возможность управлять им при помощи web3 (это мы рассмотрим далее)
Мы можем запустить клиент в режиме ноды для генерации эфира на определенный адрес. Для этого при запуске нужно дополнительно указать адрес который мы собираемся использовать при майнинге (например мой 0x51d8782d82258441078e57141daa8ffddaf8f57d):
eth -b -i -j --frontier --network-id 1 -v 1 --address 0x51d8782d82258441078e57141daa8ffddaf8f57d
(++)Ethereum
Welcome to the Frontier!
ℹ 09:53:57|eth Reading /home/denis/.web3/keys/5163a586-9049-51ec-a232-053cd73e92fe.json
⧎ ℹ 09:53:57|eth Id: ##0569dfd2…
ℹ 09:53:58|eth Opened blockchain DB. Latest: #cc7d572b… (rebuild not needed)
ℹ 09:53:59|eth Opened state DB.
Please enter your MASTER password:
Ethereum (++) 0.9.38
Code by Gav Wood et al, © 2013, 2014, 2015.
Transaction Signer: 05960c6650dd630bf756754d413db325292a7e1a
Mining Benefactor: 51d8782d82258441078e57141daa8ffddaf8f57d
ℹ 09:54:14|p2p UPnP device: http://192.168.1.1:5...-037c03d6d10000 [st: urn:schemas-upnp-org:device:InternetGatewayDevice:1 ]
⧎ ℹ 09:54:14|p2p Punched through NAT and mapped local port 30304 onto external port 30304 .
⧎ ℹ 09:54:14|p2p External addr: 95.190.225.5
Node ID: enode:[email=""]//0569dfd2bb4ebf7b0ccc5a254849aa1e43488e2131f9753229b8c8f0211faf6a768752750cbf0b01f13cc5ba65591f8b2806a58df2a7634bdba016239e16f752@95.190.225.5[/email]:30304
Сравните первый и второй пример и найдите 10 различий?
Как видно из сравнения, у нас появилась строка Reading /home/denis/.web3/keys/5163a586-9049-51ec-a232-053cd73e92fe.json - это наш приватный ключ.
Мы так же вводим пароль для управления, но только 1 раз (Вы его ещё не забыли?)
Так же Mining Benefactor: 51d8782d82258441078e57141daa8ffddaf8f57d стал теперь тем адресом, который мы указали в командной строке, из чего делаем вывод, если вы запустили ноду, то для майнинга на ней достаточно указать адрес, на который мы будем майнить и нам не важно, какой ключ и адрес на этой ноде.

Это примечание важно, если вы планируете запускать майнинг с нескольких ферм (ригов) и с разных IP адресов и к примеру Ваша ферма будет в публичном доступе. Мы то с Вами знаем, что настоящий ключ хранится у Вас на флешке и Вы иногда вставляете её в ноутбук и запускаете синхронизацию клиента, чтобы проверить баланс, отправить мне немного эфира за этот мануал, написать новый контракт и запустить его в сеть (нужное подчеркнуть)

Клиент можно запустить в режиме майнинга на процессоре или видеокарты для этого используются дополнительные опции:
  • -G - запуск майнинга на видеокарте
  • - C - запуск майнинга на процессоре
  • -t - этот параметр позволяет задавать сколько ядер процессора, либо подключенных видеокарт мы будем использовать для майнинга
  • - address опция указывающая на какой адрес будет идти майнинг
  • -j включение json-rpc
  • --opencl-device данная опция можем выбрать какие именно видеокарты у нас будут использованы для майнинга
  • -i включение интерактивного режима
  • -v 0..9 уровень логгирования
Этого я думаю достаточно, если Вы запускаете ноду и майнинг на одной машине. Но что если Вы майнер старой закалки и у Вас есть несколько ферм, готовых добывать эфиры в невероятных количествах или вы хотите подключиться к пулу (удивлены, сегодня был запущен тестовый пул для совместного майнинга (03.08ю2015)? Переходим к следующему этапу.



Установка и запуск майнера

Установка майнера из репозитория
Ранее мы уже установили клиент ноды eth который базируется на cpp, а так же рассмотрели запуск ноды geth
В случае когда мы собираемся использовать фермы для майнинга мы можем запустить ноду и на каждой ферме (риге) настроить и запустить майнер.
Для этого на потребуется ethminer
sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethminer

Сборка майнера из исходных кодов
Установка и сборка майнера из исходных кодов практически ничем не отличается от сборки клиента eth за исключением одной команды
make ethminer
и для запуска мы уже будем использовать команду
cd ~/cpp-ethereum/build/ethminer
./ethminer


Режимы майнинга

При майниге на ноду с одной или нескольких ферм используется передача данных в режиме Json-RPC. Нода выдает задачу майнеру, а майнер пытайтся найти решение и шлет ответы ноде. Все это действо активно использует по умолчанию 8545 порт. Убедитесь, что он у Вас открыт и проброшен. Эта тема не рассметривается в данном руковедстве, т.к. гугл при первом запросе выдаст Вам кучу мануалов. Можно использовать порты отличные от дефолтного 8545 и Вы сами сможете выбрать удобный для вас порт, для этого в geth дополнительная опция запуска --rpcport "8545", а в eth --json-rpc-port 8545

Давайте рассмотрим, какими опциями располагает майнер:
ethminer --help
Usage ethminer [OPTIONS]
Options:
Work farming mode:
-F,--farm <url> Put into mining farm mode with the work server at URL (default: http://127.0.0.1:8545)
--farm-recheck <n> Leave n ms between checks for changed work (default: 500).
--no-precompute Don't precompute the next epoch's DAG.
Ethash verify mode:
-w,--check-pow <headerHash> <seedHash> <difficulty> <nonce> Check PoW credentials for validity.
Benchmarking mode:
-M,--benchmark Benchmark for mining and exit; use with --cpu and --opencl.
--benchmark-warmup <seconds> Set the duration of warmup for the benchmark tests (default: 3).
--benchmark-trial <seconds> Set the duration for each trial for the benchmark tests (default: 3).
--benchmark-trials <n> Set the duration of warmup for the benchmark tests (default: 5).
--phone-home <on/off> When benchmarking, publish results (default: on)
DAG creation mode:
-D,--create-dag <number> Create the DAG in preparation for mining on given block and exit.
Mining configuration:
-C,--cpu When mining, use the CPU.
-G,--opencl When mining use the GPU via OpenCL.
--opencl-platform <n> When mining using -G/--opencl use OpenCL platform n (default: 0).
--opencl-device <n> When mining using -G/--opencl use OpenCL device n (default: 0).
-t, --mining-threads <n> Limit number of CPU/GPU miners to n (default: use everything available on selected platform)
--allow-opencl-cpu Allows CPU to be considered as an OpenCL device if the OpenCL platform supports it.
--list-devices List the detected OpenCL devices and exit.
--current-block Let the miner know the current block number at configuration time. Will help determine DAG size and required GPU memory.
--cl-extragpu-mem Set the memory (in MB) you believe your GPU requires for stuff other than mining. Windows rendering e.t.c..
--cl-local-work Set the OpenCL local work size. Default is 64
--cl-global-work Set the OpenCL global work size as a multiple of the local work size. Default is 4096 * 64
--cl-ms-per-batch Set the OpenCL target milliseconds per batch (global workgroup size). Default is 0. If 0 is given then no autoadjustment of global work size will happen
General Options:
-v,--verbosity <0 - 9> Set the log verbosity from 0 to 9 (default: 8).
-V,--version Show the version and exit.
-h,--help Show this help message and exit.
Для начала можно протестировать Ваши видеокарты в режиме бенчмарка
ethminer -G -t 6 -M
будет прозведена генерация DAG файла и в конце Вы увидите средние показатели в h/s для Вашей фермы (в примере я указал 6 видеокарт -t 6)
Если всё нормально, давайте уже запустим майнинг на полную, далее будут примерные варианты, какие подойдут Вам, решите сами

Пример с geth + ethminer в локальной сети или на одном компьютере
Запускаем ноду
geth --rpcaddr "0.0.0.0"
Запускаем майнер на ферме
ethminer -G -t 6 -F http:/192.168.1.10:8545
для ноды мы указали адрес, на котором будет вестись прослушивание rpc, для майнера добавили параметр -F в котором указываем IP адрес ноды в локальной сети и порт по умолчанию

07:56:29.332931 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 8.070828ms. #30794 [ca535f48 / ca535f48]
07:56:29.339228 16773 worker.go:503] commit new work on block 30795 with 0 txs & 0 uncles. Took 848.893µs
07:56:29.675569 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 9.233004ms. #30794 [122668a3 / 122668a3]
07:56:30.202826 16773 chain_manager.go:650] imported 0 block(s) (0 queued 1 ignored) including 0 txs in 8.717405ms. #30793 [19a96e70 / 19a96e70]
07:56:30.246660 16773 chain_manager.go:650] imported 0 block(s) (0 queued 1 ignored) including 0 txs in 8.352394ms. #30794 [ca535f48 / ca535f48]
07:56:35.318895 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 7.777483ms. #30795 [e499d669 / e499d669]
07:56:35.320820 16773 worker.go:503] commit new work on block 30796 with 0 txs & 1 uncles. Took 1.147871ms
07:56:42.970471 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 15.66814ms. #30796 [122198d4 / 122198d4]
07:56:42.971982 16773 worker.go:503] commit new work on block 30797 with 0 txs & 0 uncles. Took 748.55µs
07:56:43.632219 16773 chain_manager.go:650] imported 0 block(s) (0 queued 1 ignored) including 0 txs in 10.148168ms. #30795 [e499d669 / e499d669]
07:56:43.684695 16773 chain_manager.go:650] imported 0 block(s) (0 queued 1 ignored) including 0 txs in 8.594092ms. #30796 [122198d4 / 122198d4]
07:56:53.650418 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 6.205036ms. #30797 [1cb948d3 / 1cb948d3]
07:56:53.652504 16773 worker.go:503] commit new work on block 30798 with 0 txs & 0 uncles. Took 742.51µs
07:56:59.633033 16773 chain_manager.go:650] imported 1 block(s) (0 queued 0 ignored) including 0 txs in 8.94901ms. #30798 [d5fabc77 / d5fabc77]
07:56:59.635453 16773 worker.go:503] commit new work on block 30799 with 0 txs & 0 uncles. Took 752.654µs
07:56:59.926872 16773 chain_manager.go:650] imported 0 block(s) (0 queued 1 ignored) including 0 txs in 10.000723ms. #30797 [1cb948d3 / 1cb948d3]
пример лога geth, commit new work указывает на то, что задания отправляются майнеру, imported 0 block(s) (0 queued 1 ignored) including 0 txs in синхронизация с сетью
miner 07:55:30|ethminer Mining on PoWhash #fdd9535c… : 21921028 H/s = 904658944 hashes / 41.269 s
miner 07:55:31|ethminer Mining on PoWhash #fdd9535c… : 21919561 H/s = 922484736 hashes / 42.085 s
ℹ 07:55:32|ethminer Solution found; Submitting to http://ethpool.org/m...8ffddaf8f57d/22 ...
ℹ 07:55:32|ethminer Nonce: 1afd7df2f4243d07
ℹ 07:55:32|ethminer Mixhash: a2521b2b3e00c8001332973cb75cb2d0dbb66959000d0c72256cc0bc910c34d0
ℹ 07:55:32|ethminer Header-hash: fdd9535cba9f55cf7022f018281f3f397814a35655e32fd58f8587edc7ad8d19
ℹ 07:55:32|ethminer Seedhash: 290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563
ℹ 07:55:32|ethminer Target: 00000001f3c72bd5de33ce82e234836670aa239ae0e0b2ca328fbe814702c4f5
ℹ 07:55:32|ethminer Ethash: 00000001c34a63712b31c441820b0d4a5faef2541cd2b84171525f07fe7fcc89
ℹ 07:55:32|ethminer B-) Submitted and accepted.
miner 07:55:32|ethminer Getting work package...
miner 07:55:32|ethminer Got work package:
miner 07:55:32|ethminer Header-hash: fdd9535cba9f55cf7022f018281f3f397814a35655e32fd58f8587edc7ad8d19
miner 07:55:32|ethminer Seedhash: 290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563
miner 07:55:32|ethminer Target: 00000001f3c72bd5de33ce82e234836670aa239ae0e0b2ca328fbe814702c4f5
⚡ 07:55:32|gpuminer0 Worker stopping 884 ms
ℹ 07:55:32|gpuminer0 workLoop 1 #290decd9… #290decd9…
miner 07:55:33|ethminer Mining on PoWhash #fdd9535c… : 20971520 H/s = 10485760 hashes / 0.5 s
miner 07:55:34|ethminer Mining on PoWhash #fdd9535c… : 21681082 H/s = 28835840 hashes / 1.33 s
miner 07:55:35|ethminer Mining on PoWhash #fdd9535c… : 21774374 H/s = 46923776 hashes / 2.155 s
miner 07:55:35|ethminer Mining on PoWhash #fdd9535c… : 21808544 H/s = 64749568 hashes / 2.969 s
miner 07:55:36|ethminer Mining on PoWhash #fdd9535c… : 21810822 H/s = 82837504 hashes / 3.798 s
miner 07:55:37|ethminer Mining on PoWhash #fdd9535c… : 21793444 H/s = 100925440 hashes / 4.631 s
miner 07:55:38|ethminer Mining on PoWhash #fdd9535c… : 21817300 H/s = 119013376 hashes / 5.455 s
это пример лога майнера, Getting work package... получение задания от ноды, Mining on PoWhash #fdd9535c… - собственно сам процесс майнинга, с указанием текущего хеша и скорости, B - ) указывает на то. что блок найден

Пример geth + ethminer в глобальной сети
Данный пример для тех, у кого ферма в гараже, а нода дома)
Нода:
geth --rpcaddr "0.0.0.0"
Здесь возможны сложности, все зависит от настроек роутера-шлюза, поддерживает ли он UPnP, на каком уровне, проброшен ли порт. Тут я порекомендовал бы вам поигать с параметром --nat "any" (any стоит по умолчанию, но возможно придется поменять значения, которые больше подойдет Вам (any|none|upnp|pmp|extip:<IP>).

Так же убедитесь, что порт 30303 тоже доступен по UPnP или открыт и проброшен, клиенты используют его для обмена с другими узлами (нодами) в сети. Это может стать причиной отсутствия синхронизации ноды в любом из вариантов запуска!

Майнер:
ethminer -G -t 6 http://8.8.8.8:8545
где 8.8.8.8 внешний статический адрес Вашей ноды, возможно импользование dyndns и похожих серверов, но не проверял, врать не буду. Кто проверит и получит результат, жду комментарии.

Пример с eth + ethminer в локальной сети или на одном компьютере
Нода
eth -b -j --frontier --network-id 1 -v 1
Майнер
ethminer -G -t 6 -F http:/192.168.1.10:8545
Как и в ранее рассмотренном примере 192.168.1.10 - это адрес ноды в локальной сети, в случае запуска на одном компьютере ноды и майнера, этот параметр можно опустить

Здеся я позволю себе небольшое лирическое отступление, возможно вы решите использовать по четным дням нечетные карты на риге, а по нечетным наоборот или 2 карты будут майнить на одну ноду, а 4 на другую. В таком случае придется запускать несколько экземпляров ethminer и использовать параметр --opencl-device 0,1,5 как Вашей душе угодно


Пример eth + ethminer в глобальной сети
Нода
eth -b -j --frontier --network-id 1 -v 1
Майнер
ethminer -G -t 6 -F http:/8.8.8.8:8545
Ну с 8.8.8.8 при запуске майнера я думаю все понятно. Добавлю следующее, eth либо использует UPnP либо нет. Опция --upnp <on/off> либо on, либо off. Для получения внешнего IP есть опция --public-ip, по умолчаню нода сама пытается получить внений IP и эту опцию не надо указывать, если что-то идет не так, назначьте принудительно --public-ip 8.8.8.8

Пример eth + ethminer в глобальной сети с использованием адреса
Нода
eth -b -j --frontier --network-id 1 -v 1 --address 0x51d8782d82258441078e57141daa8ffddaf8f57d
Майнер
ethminer -G -t 6 -F http:/8.8.8.8:8545

Пример с eth + ethminer в локальной сети или на одном компьютере c использованием адреса
Нода
eth -b -j --frontier --network-id 1 -v 1 --address 0x51d8782d82258441078e57141daa8ffddaf8f57d
Майнер
ethminer -G -t 6 -F http:/192.168.1.10:8545

Пример eth с запуском майнинга на ферме и подключении к ней других ферм на один адрес
Нода
eth -b -j --frontier --network-id 1 -v 1 --mining on -G -t 6 --address 0x51d8782d82258441078e57141daa8ffddaf8f57d
Майнер 1 в локальной сети (дома)
ethminer -G -t 6 -F http:/192.168.1.10:8545
Майнер 2 в глобальной сети (гараже)
ethminer -G -t 6 -F http:/8.8.8.8:8545
Если Вам прийдут в голову еще варианты, пишите, будем пробовать!
Все это тестировалось под Ubuntu, но никто не запрещает Вам использовать и Windows, учитывая то, что краткое руководство по запуску майнинга благодаря хорошему другу из Coin-Lab уже есть (ethminer с таким же успехом запускается и под Windows)
Ему отдельное спасибо за предоставленное оборудование для наладки и тестирования!


Мониторинг майнинга
Посмотреть текущее состояние сети и проверить баланс можно здесь etherchain.org
Список публичных нод и статистика сети stats.ethdev.com и eth-status.org
Состояние ноды, список аккаунтов, хешрейт, баланс и список предопределённых функций можно посмотреть введя в консоли команду web3
Получим примерно такой вывод (для geth и eth могут быть различия по набору функций)
geth attach
instance: Geth/v1.0.0-97cdf848/linux/go1.4.2
datadir: /home/denis/.ethereum
coinbase: 0x6c11fa9f82689aa0d4d41f2ed3e3a80932707b46
at block: 31252 (2015-08-04 13:56:52)
modules: admin:1.0 db:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 shh:1.0 txpool:1.0 web3:1.0
> web3
{
admin: {
chainSyncStatus: {
blocksAvailable: 0,
blocksWaitingForImport: 0,
estimate: '0',
importing: 0
},
datadir: '/home/denis/.ethereum',
nodeInfo: {
DiscPort: 30303,
IP: '95.190.225.5',
ListenAddr: '[::]:30303',
Name: 'Geth/v1.0.0-97cdf848/linux/go1.4.2',
NodeID: '7841929fc7039159abcb42cd403a7c16da768c3e50f9b13fe68428a214500a36d8c1dd4687d5c89ca52ee70dac4c61fa289fce9deca2a72e9d1f5b156b88192b',
NodeUrl: 'enode://7841929fc7039159abcb42cd403a7c16da768c3e50f9b13fe68428a214500a36d8c1dd4687d5c89ca52ee70dac4c61fa289fce9deca2a72e9d1f5b156b88192b@95.190.225.5:30303',
TCPPort: 30303,
Td: '22879149346643747'
},
peers: [{
Caps: 'eth/60, eth/61',
ID: '0548b458498c54c6ac5587f1d31799bfd58feb9a6599d307e593bf03925d149e7d40de7a1a4634d3f2b5ace3e95050be5b0323667f549553f7c4002cf075aea1',
LocalAddress: '192.168.1.5:30303',
Name: 'Geth/v1.0.0/linux/go1.4.2',
RemoteAddress: '148.251.152.232:57303'
}, {
Caps: 'eth/60, eth/61',
ID: '75107c19cf6dcc295f4b7963f05736eb5e1f184a6dffc932c479b71215b2b0f43c7908cf04f49d37e45c736ec634b00a866ed72fff07f1e82ddab7b49e169343',
LocalAddress: '192.168.1.5:30303',
Name: 'Geth/v1.0.0-0cdc7647/linux/go1.4.2',
RemoteAddress: '78.22.72.246:39371'
} ],
addPeer: function (),
exportChain: function (),
getChainSyncStatus: function (),
getContractInfo: function (),
getDatadir: function (),
getNodeInfo: function (),
getPeers: function (),
httpGet: function (),
importChain: function (),
register: function (),
registerUrl: function (),
saveInfo: function (),
setGlobalRegistrar: function (),
setHashReg: function (),
setSolc: function (),
setUrlHint: function (),
sleepBlocks: function (),
startNatSpec: function (),
startRPC: function (),
stopNatSpec: function (),
stopRPC: function (),
verbosity: function ()
},
currentProvider: {
send: function (),
sendAsync: function ()
},
db: {
getHex: function (),
getString: function (),
putHex: function (),
putString: function ()
},
debug: {
dumpBlock: function (),
getBlockRlp: function (),
metrics: function (),
printBlock: function (),
processBlock: function (),
seedHash: function (),
setHead: function ()
},
eth: {
accounts: ['0x6c11fa9f82689aa0d4d41f2ed3e3a80932707b46' ],
blockNumber: 31252,
coinbase: '0x6c11fa9f82689aa0d4d41f2ed3e3a80932707b46',
compile: {
lll: function (),
serpent: function (),
solidity: function ()
},
defaultAccount: undefined,
defaultBlock: 'latest',
gasPrice: '1157120873010',
hashrate: 63785,
mining: true,
namereg: {
address: '0xc6d9d2cd449a754c494264e1809c50e34d64562b',
Changed: function (),
PrimaryChanged: function (),
Registrar: function (),
addr: function (),
allEvents: function (),
content: function (),
disown: function (),
name: function (),
owner: function (),
register: function (),
reserve: function (),
setAddress: function (),
setContent: function (),
setSubRegistrar: function (),
subRegistrar: function (),
transfer: function ()
},
pendingTransactions: Error: Cannot access member 'constructor' of null,
call: function (),
contract: function (abi),
estimateGas: function (),
filter: function (fil, callback),
getAccounts: function (),
getBalance: function (),
getBlock: function (),
getBlockNumber: function (),
getBlockTransactionCount: function (),
getBlockUncleCount: function (),
getCode: function (),
getCoinbase: function (),
getCompilers: function (),
getGasPrice: function (),
getHashrate: function (),
getMining: function (),
getPendingTransactions: function (),
getStorageAt: function (),
getTransaction: function (),
getTransactionCount: function (),
getTransactionFromBlock: function (),
getTransactionReceipt: function (),
getUncle: function (),
getWork: function (),
resend: function (),
sendIBANTransaction: function (from, iban, value, callback),
sendRawTransaction: function (),
sendTransaction: function (),
sign: function (),
submitWork: function ()
},
miner: {
hashrate: 63785,
getHashrate: function (),
makeDAG: function (),
setEtherbase: function (),
setExtra: function (),
setGasPrice: function (),
start: function (),
startAutoDAG: function (),
stop: function (),
stopAutoDAG: function ()
},
net: {
listening: true,
peerCount: 100,
version: '1',
addPeer: function (),
getListening: function (),
getPeerCount: function (),
getVersion: function ()
},
personal: {
listAccounts: ['0x6c11fa9f82689aa0d4d41f2ed3e3a80932707b46' ],
getListAccounts: function (),
newAccount: function (),
unlockAccount: function ()
},
providers: {
HttpProvider: function (host),
IpcProvider: function (path, net)
},
shh: {
version: Error: shh_version method not available: whisper offline,
addToGroup: function (),
filter: function (fil, callback),
getVersion: function (),
hasIdentity: function (),
newGroup: function (),
newIdentity: function (),
post: function ()
},
txpool: {
status: {
pending: 0,
queued: 0
},
getStatus: function ()
},
version: {
api: '0.9.1',
client: 'Geth/v1.0.0-97cdf848/linux/go1.4.2',
ethereum: '61',
network: '1',
whisper: Error: shh_version method not available: whisper offline,
getClient: function (),
getEthereum: function (),
getNetwork: function (),
getWhisper: function ()
},
_extend: function(extension){
/*jshint maxcomplexity: 6 */
if(extension.property && !web3[extension.property])
web3[extension.property] =,
createBatch: function (),
fromAscii: function(str, pad),
fromDecimal: function (value),
fromWei: function(number, unit),
isAddress: function (address),
isConnected: function(){
return (this.currentProvider && this.currentProvider.isConnected());
},
isIBAN: function (iban),
reset: function (),
setProvider: function (provider),
sha3: function (str, isNew),
toAscii: function(hex),
toBigNumber: function(number),
toDecimal: function (value),
toHex: function (val),
toWei: function(number, unit)
}
и дальше Вы уже можете работать с ними, полное описание на английском доступно здесь JavaScript API на русском перевод в процессе, можно посмотреть здесь



Оригинал статьи в постоянном развитии

  • 0



Не очень понял что за требования к железу. Моя нода запущена на 512Мб оперативки и 1 ядерном процессоре + ссд, хотя вроде там не очень нагрузка. В результате нагрузка на проце ~15% + память 200Мб. Никакого тюнинга и прочего.

    • 0

Не очень понял что за требования к железу. Моя нода запущена на 512Мб оперативки и 1 ядерном процессоре + ссд, хотя вроде там не очень нагрузка. В результате нагрузка на проце ~15% + память 200Мб. Никакого тюнинга и прочего.

этот мануал я начал писать во время олимпика, там нагрузки были шикарные, сомневаюсь, если сеть достигнет этого же размаха в реалнет, что будет работать нода + вы пробовали на ней майнинг запустить?

    • 0

Не в обиду, но оформите нормально. Используя code, quote и т.д.

    • 0

а под винду был мануал?

    • 0

а под винду был мануал?

Поддерживаю... Под винду бы мануал... Если оное под виндой вообще работает...

    • 0

Не очень понял что за требования к железу. Моя нода запущена на 512Мб оперативки и 1 ядерном процессоре + ссд, хотя вроде там не очень нагрузка. В результате нагрузка на проце ~15% + память 200Мб. Никакого тюнинга и прочего.

на обычном компе или на малине? я хочу попробовать на четырёхядерке оранж пи.теоретически же можно и в майнерах под управлением малинки ноды запускать?

    • 0

да и виндовый комп мается с единственным батником.под винду  тоже мануал бы де глянуть

    • 0

Поддерживаю... Под винду бы мануал... Если оное под виндой вообще работает...

Есть тут и тут какой то...

    • 1

Сложно уже соло в одиночку, даже с хорошей мощью.

Так что приглашаю к нам: http://eth.pp.ua/
Отвечу на любые вопросы, ни одна шара не потеряется!  ; )

    • 0

Август 2017

В П В С Ч П С
  12345
6789101112
131415161718 19
20212223242526
2728293031  

Поиск по блогу

Блоги моих друзей