предисловие
В этой статье кратко рассказывается об использовании go-ethereum для подключения основной сети и тестовой сети Ethereum, а также некоторые основные инструкции по разработке.Она посвящена тому, как построить частную сеть Ethereum.Что касается разработки приложений Ethereum, если случайно, об этом будет рассказано в следующей статье.
Эта статья содержит материалы по настройке и описанию параметров, на понимание и систематизацию которых автор потратил много сил, и надеюсь, что она сможет помочь вам, коллеги-даосы.
Установить
Платформы операционных систем, на которые можно установить Go Ethereum, — это Mac OS X, Windows и Linux/Unix. Подробнее см.Installation Instructions.
Вот процесс установки для сборки из исходного кода go-ethereum в Linux. Официально упомянутые платформы Linux/Unix включают Ubuntu, Arch и FreeBSD. Возьмите Ubuntu в качестве примера здесь.
Подготовка среды компиляции
Требования к среде компиляцииGoиКомпилятор C. Способ установки следующий:
apt-get install -y build-essential golang
Получите исходный код и скомпилируйте его
Получить исходный код
Перейдите в каталог, в который вы хотите скомпилировать исходный код go-ethereum, и выполните команду:
git clone https://github.com/ethereum/go-ethereum
Приведенная выше команда клонирует код основной ветки go-ethereum, который является кодом непрерывной разработки.Если вы хотите использовать код выпуска, см.go-ethereum release. Вот последний код релиза на тот моментv1.8.7Например:
- скачать код
wget https://github.com/ethereum/go-ethereum/archive/v1.8.7.tar.gz
- распаковывать
tar zxvf v1.8.7.tar.gz
Переместите разархивированный код в каталог, где вы собираетесь скомпилировать исходный код go-ethereum.
Скомпилируйте исходный код
Когда вы подготовили исходный код go-ethereum, войдите в каталог верхнего уровня проекта исходного кода go-ethereum и выполните команду:
make geth
(рекомендовать), если вы хотите скомпилировать все инструменты, выполните:
make all
После компиляции все инструменты находятся вbuild/binНайденные в каталоге, выньте эти бинарные файлы и поместите их в выбранный вами каталог установки, или поместите их в исходное место, здесь я положил их в/opt/xingweidong/eth/binСправочник, затем установите переменные системы среды на основе ваших предпочтений, добавьте следующее:
export ETH_HOME=/opt/xingweidong/eth
export PATH=$PATH:$ETH_HOME/bin
не забудьте использоватьsource /etc/profileИли обновите информацию о переменной среды любым другим способом.
беги гет
Команда geth, основной клиент Ethereum CLI, является точкой входа в сеть Ethereum (основную, тестовую или частную сеть) с возможностью действовать как полный узел (по умолчанию), архивный узел (сохранять все исторические данные) или работает узел облегченного узла (поиск данных в реальном времени). Он может использоваться другими процессами в качестве шлюза в сеть Ethereum через конечные точки JSON RPC, открытые поверх транспортных протоколов HTTP, WebSocket или IPC.
Совет: просмотрите все параметры командной строки geth, используяgeth --helpили просмотретьCLI Wiki page.
Полный узел главной сети Ethereum
Пока что в основном люди хотят просто взаимодействовать с сетью Ethereum: создавать учетные записи, переводить средства, развертывать контракты и взаимодействовать с ними. В этом особом случае пользователям не нужны предыдущие исторические данные, поэтому мы можем быстро синхронизировать текущее состояние сети Ethereum. Выполнение заказа:
geth console
Командная функция:
- Запустите geth в режиме быстрой синхронизации (режим по умолчанию, вы можете использовать--syncmodeвозможность изменить режим синхронизации), поскольку он будет загружать большое количество данных о транзакциях, чтобы избежать обработки исторических данных всей сети Ethereum, это займет много ресурсов ЦП.
- Запуск Geth Intrinsic InteractiveJavaScript console,(с помощьюconsoleподкоманда) через нее можно вызывать все официальныеweb3 methodsи собственный Гетаmanagement APIs. Это также необязательно, если вы уйдете, вы можете использоватьgeth attachПодключитесь к существующему экземпляру Geth.
Полный узел тестовой сети Ethereum
Переходя к разработчикам, если вы хотите создавать контракты, вы почти наверняка хотите делать это без каких-либо реальных денег, пока не освоите всю систему. Другими словами, вместо того, чтобы подключаться к основной сети Ethereum, вам нужно присоединиться к тестовой сети, которая является точным эквивалентом основной сети, просто:
geth --testnet console
consoleПодкоманда точно такое же значение, как указано выше, и это полезно для теста онлайн. Если вы пропустите этот шаг, пожалуйста, посмотрите лицо их интерпретации.
Тем не менее, указание--testnetнемного перенастроит ваш экземпляр Geth:
- вместо использования каталога данных по умолчанию (например, в Linux~/.эфириум), Geth пойдет на один уровень глубже в создание каталогаtestnetподпапка (в Linux это~/.ethereum/testnet).注意,在OSX和Linux上,这也意味着连接一个运行的testnet节点要求使用一个自定义的端点,因为geth attach默认将连接一个生产节点。 Например:geth attach /testnet/geth.ipc. Пользователи Windows не затронуты.
- Вместо подключения к основной сети Ethereum клиенты будут подключаться к тестовой сети с разными загрузочными узлами P2P, разными сетевыми идентификаторами и состояниями генезиса.
Примечание. Несмотря на то, что существуют некоторые внутренние меры безопасности для предотвращения обмена транзакциями в основной и тестовой сетях, вы также должны всегда использовать отдельные учетные записи для тестовых активов и реальных активов. Если вы не переместите учетные записи вручную, Geth по умолчанию правильно разделит две сети, и между ними не будет доступных учетных записей.
Полный узел тестовой сети Ринкеби
Приведенная выше тестовая сеть представляет собой кросс-клиентскую сеть, основанную на алгоритме консенсуса ethash proof-of-work. Следовательно, из-за низкой сложности/безопасности сети она имеет некоторые дополнительные накладные расходы и более уязвима для атак повторной сборки. Go Ethereum также поддерживает подключение к тестовой сети проверки полномочий (управляемой членами сообщества) под названием Rinkeby. Эта сеть легче и безопаснее, но поддерживается только go-ethereum.
geth --rinkeby console
настроить
Вместо того, чтобы передавать кучу опций бинарному файлу geth, вы можете передать файл конфигурации через:
geth --config /path/to/your_config.toml
Чтобы понять, как написан этот файл, вы можете использоватьdumpconfigПодкоманда для экспорта существующей конфигурации:
geth --your-favourite-flags dumpconfig
eg:geth --testnet dumpconfig
Примечание: Это действительно только для geth v1.6.0 и выше.
Docker quick start
Используя Docker, вы можете быстро запустить Ethereum на своем компьютере:
docker run -d --name ethereum-node -v /Users/alice/ethereum:/root \
-p 8545:8545 -p 30303:30303 \
ethereum/client-go
Приведенная выше команда запустит geth в режиме быстрой синхронизации с 1 ГБ памяти БД. Он также создаст постоянный том в вашем домашнем каталоге для хранения вашей цепочки блоков и сопоставленных портов по умолчанию. есть еще одинalpineТеги можно использовать в урезанной версии изображения.
Если вы хотите получить доступ к RPC из других контейнеров или хостов, не забудьте--rpcaddr 0.0.0.0. по умолчанию,gethПривяжите локальный интерфейс, и конечная точка RPC будет недоступна извне.
Программируемый интерфейс Geth узлов
Как разработчик, вы захотите начать взаимодействовать с Geth и сетью Ethereum на ранней стадии через свои собственные программы, а не через ручную консоль. С этой целью Geth имеет встроенную поддержку API на основе (standard APIsиGeth specific APIs) JSON-RPC. Его можно открыть через HTTP, WebSockets и IPC (сокеты unix на платформах на базе unix и именованные каналы в Windows).
Интерфейс IPC включен по умолчанию и предоставляет все API, поддерживаемые Geth, тогда как интерфейсы HTTP и WS требуют ручной активации и предоставляют только подмножество API по соображениям безопасности. Их можно включить или отключить и настроить в соответствии с вашими потребностями.
Подробнее см.Programatically interfacing Geth nodes
управлять частной сетью
Поддерживать собственную частную сеть очень сложно, так как в обычной сети получение и авторизацию большого количества конфигураций нужно задавать вручную. Далее мы строим простую частную сеть Ethereum.
Примечание. Чтобы сделать следующие шаги по созданию частной сети Ethereum более простыми, автор по умолчанию будет использовать следующие значения параметров geth (пожалуйста, проверьте значение параметров самостоятельно):
- --datadir /root/privatenet/.ethereum
- --config config/privatenet.toml
Прежде чем мы начнем, позвольте мне представить, как создать учетную запись Ethereum:
- Создайте учетную запись Ethereum в основной сети и выполните команду:
geth account new
- Создайте приватную учетную запись сети Ethereum и выполните команду:
geth --datadir /root/privatenet/.ethereum account new
Введите пароль учетной записи, как будет предложено.
Примечание. При создании учетной записи Ethereum в частной сети обязательно укажите--datadirвариант, в противном случае учетная запись Ethereum в основной сети будет создана по умолчанию.
Определить частное состояние генезиса
Во-первых, вам нужно создать состояние генезиса, о котором должны знать и соглашаться все узлы вашей сети. Он состоит из небольшого файла JSON (например, назовите егоgenesis.json):
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000001993",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
Описание параметра(Следующая таблица составлена автором со ссылкой на исходный код go-ethereum README и ethereum_yellow_paper Если есть какие-либо ошибки, поправьте меня):
параметр | описывать |
---|---|
alloc | Номер счета и количество эфира на счете могут быть заданы заранее |
coinbase | Адрес получателя блока может быть установлен на существующую учетную запись. Бенефициаром блока, добытого позже, будет учетная запись (майнер), которая добыла этот блок. |
difficulty | Представляет уровень сложности (в шестнадцатеричном формате) текущего блока, где определяется уровень сложности генезисного блока.Чем выше уровень сложности, тем сложнее майнить. Уровень сложности сгенерированного позже блока рассчитывается на основе уровня сложности и метки времени предыдущего блока. |
extraData | Массив байтов, содержащий данные, относящиеся к этому блоку, заполняется произвольно. Должен быть в пределах 32 бит |
gasLimit | Максимальное количество газа, которое должно быть использовано для выполнения этой транзакции. Это предварительно оплачено до того, как будут выполнены какие-либо вычисления, и не будет увеличиваться после |
nonce | Представляет количество транзакций, отправленных с этого адреса, или, в случае учетных записей, связанных с кодом, количество контрактов, созданных этой учетной записью. (Есть много описаний nonce в Yellow Paper, и здесь выбрано описание из главы 4.1.) |
mixhash | 256-битный хеш, объединенный одноразовым номером, доказывающий, что в этом блоке было выполнено достаточное количество вычислений. |
parentHash | Хэш алгоритма keccak256 заголовка предыдущего (родительского) блока |
timestamp | Unix time() и разумный вывод в начале этого блока |
Поля выше должны удовлетворять большинству потребностей, но мы рекомендуем изменитьnonceна некоторое случайное значение, чтобы вы могли предотвратить доступ к вам неизвестных удаленных узлов. Если вы хотите предварительно зарезервировать некоторые аккаунты для более раннего тестирования, вы можетеallocКонфигурация учетной записи домена:
"alloc": {
"0x0000000000000000000000000000000000000001": {"balance": "111111111"},
"0x0000000000000000000000000000000000000002": {"balance": "222222222"}
}
С состоянием генезиса, определенным в файле JSON выше, вы должны сначала инициализировать каждый узел, прежде чем запускать его, чтобы убедиться, что все параметры блокчейна установлены правильно:
geth --datadir /root/privatenet/.ethereum init genesis.json
начать загрузку
Когда все узлы, которые вы хотите запустить, будут инициализированы до желаемого состояния генезиса, вам нужно будет запустить узел начальной загрузки, который другие узлы могут использовать для поиска друг друга в вашей сети или Интернете. Чистый способ — настроить и запустить автономный загрузочный узел:
- Каждый узел Эфириума, включая загрузочный узел, связан идентификатором узла. Эти идентификаторы являются производными от ключа. Поэтому вам нужно будет дать загрузочному узлу такой ключ. Так как в настоящее время у нас нет такого ключа, мы можем сгенерировать ключ (и сохранить его в файле) перед запуском загрузочного узла:
bootnode -genkey bootnode.key
- Чтобы загрузочный узел использовал один и тот же enode каждый раз при запуске, необходимо указать ключ при запуске загрузочного узла:
bootnode -nodekey bootnode.key
Когда загрузочный узел подключается к сети, он отображаетenode URL,Например:
INFO [05-09|01:47:05] UDP listener up self=enode://75535ebac1f5b2a644edb134dbe91c6c288353be1a5301864edae529630b35c5ff0c0ae9e07b2bcdef578c3ac1b72b2cda105c061c2c77067f1fd8ec54d852b7@[::]:30301
Другие узлы могут использовать это соединение для передачи URL и обмена информацией. Подтвердите замену информации об IP-адресе вашего внешнего дисплея (возможно, [::]), чтобы получить реальный URL-адрес enode. Например:
enode://75535ebac1f5b2a644edb134dbe91c6c288353be1a5301864edae529630b35c5ff0c0ae9e07b2bcdef578c3ac1b72b2cda105c061c2c77067f1fd8ec54d852b7@192.168.1.214:30301
Сохраните этот точный URL-адрес enode в одном из ваших текстов или где-нибудь еще, он понадобится вам ниже.
Примечание. Вы также можете использовать полноценный узел Geth в качестве узла начальной загрузки, но это не рекомендуется.
определить файл конфигурации
Чтобы использовать ту же конфигурацию при запуске узлов-членов, вам необходимо написать файл конфигурации, такой как privatenet.toml (см.testnetконфигурации, выполните командуgeth --testnet dumpconfigвидимый):
# Note: this config doesn't contain the genesis block.
[Eth]
NetworkId = 3369
DatabaseCache = 768
GasPrice = 18000000000
[Eth.Ethash]
CacheDir = "ethash"
CachesInMem = 2
CachesOnDisk = 3
DatasetDir = "/root/privatenet/.ethash"
DatasetsInMem = 1
DatasetsOnDisk = 2
[Eth.TxPool]
NoLocals = false
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 1
PriceBump = 10
AccountSlots = 16
GlobalSlots = 4096
AccountQueue = 64
GlobalQueue = 1024
Lifetime = 10800000000000
[Eth.GPO]
Blocks = 20
Percentile = 60
[Shh]
MaxMessageSize = 1048576
MinimumAcceptedPOW = 2e-01
[Node]
DataDir = "/root/privatenet/.ethereum"
IPCPath = "geth.ipc"
HTTPPort = 8545
HTTPVirtualHosts = ["localhost"]
HTTPModules = ["net", "web3", "eth", "shh"]
WSPort = 8546
WSModules = ["net", "web3", "eth", "shh"]
[Node.P2P]
MaxPeers = 25
NoDiscovery = false
BootstrapNodes = ["enode://75535ebac1f5b2a644edb134dbe91c6c288353be1a5301864edae529630b35c5ff0c0ae9e07b2bcdef578c3ac1b72b2cda105c061c2c77067f1fd8ec54d852b7@1
92.168.1.214:30301"]StaticNodes = []
TrustedNodes = []
ListenAddr = ":30303"
EnableMsgEvents = false
[Dashboard]
Host = "localhost"
Port = 8080
Refresh = 5000000000
Инструкции по настройке(Следующая таблица представляет собой справочное описание параметра geth автора и код элемента конфигурации, связанного с Go-Ethereum, если есть ошибка, пожалуйста, помогите мне исправить):
площадь | элемент конфигурации | Соответствующие параметры | инструкция |
---|---|---|---|
Eth | NetworkId | --networkid value | Идентификатор сети (целочисленный тип, 1=Frontier, 2=Morden(вышедшее из употребления), 3=Ropsten, 4=Rinkeby), по умолчанию 1. При установке в частной сети используйте другое произвольное значение, например: 3369. |
Eth | DatabaseCache | null | (Личное понимание) Системная память, применяемая для базы данных, единица измерения - МБ, минимальное значение и значение по умолчанию - 16 МБ. |
Eth | GasPrice | --gasprice "18000000000" | Минимальная цена газа для принятия транзакций майнинга. может относиться к вознаграждению шахтеров |
Eth.Ethash | CacheDir | --ethash.cachedir | Каталог для хранения кэша подтверждения ethash (по умолчаниюdatadirкаталог) |
Eth.Ethash | CachesInMem | --ethash.cachesinmem value | Количество актуальных кэшей ethash (на 16 МБ), которые нужно хранить в памяти (по умолчанию: 2). |
Eth.Ethash | CachesOnDisk | --ethash.cachesondisk value | Количество актуальных кэшей ethash (на 16 МБ), которые нужно хранить на диске (по умолчанию: 3). |
Eth.Ethash | DatasetDir | --ethash.dagdir "/home/karalabe/.ethash" | Каталог, в котором хранятся DAG майнинга ethash (по умолчанию в домашнем каталоге) |
Eth.Ethash | DatasetsInMem | --ethash.dagsinmem value | Последние группы DAG майнинга ethash, которые нужно хранить в памяти (каждый 1+ ГБ) (по умолчанию: 1). |
Eth.Ethash | DatasetsOnDisk | --ethash.dagsondisk value | Последние DAG майнинга ethash (на 1+ ГБ) хранятся на диске (по умолчанию: 2). |
Eth.TxPool | NoLocals | --txpool.nolocals | Отказ от комиссий за локальную фиксацию транзакций |
Eth.TxPool | Journal | --txpool.journal value | Журнал локального диска транзакций для перезапусков узлов (по умолчанию: «transactions.rlp») |
Eth.TxPool | Rejournal | --txpool.rejournal value | Интервал для регенерации локального журнала транзакций (по умолчанию: 1 ч 0 мин 0 с) |
Eth.TxPool | PriceLimit | --txpool.pricelimit value | Минимальный предел цены на газ для принудительного включения в пул (по умолчанию: 1) |
Eth.TxPool | PriceBump | --txpool.pricebump value | Процент столкновения цен для замены существующей транзакции (по умолчанию: 10) |
Eth.TxPool | AccountSlots | --txpool.accountslots value | Минимальное количество исполняемых слотов транзакций, гарантированное для каждой учетной записи (по умолчанию: 16). |
Eth.TxPool | GlobalSlots | --txpool.globalslots value | Максимальное количество исполняемых слотов транзакций для всех учетных записей (по умолчанию: 4096) |
Eth.TxPool | AccountQueue | --txpool.accountqueue value | Максимальное количество неисполняемых слотов транзакций, разрешенных для каждой учетной записи (по умолчанию: 64) |
Eth.TxPool | GlobalQueue | --txpool.globalqueue | Максимальное количество неисполняемых слотов транзакций для всех учетных записей (по умолчанию: 1024) |
Eth.TxPool | Lifetime | --txpool.lifetime value | Максимальное время ожидания для невыполнимых транзакций (по умолчанию: 3 часа 0 минут 0 секунд) |
Eth.GPO | Blocks | --gpoblocks value | Проверьте количество последних блоков в GAS (по умолчанию: 10) |
Eth.GPO | Percentile | --gpopercentile value | Предлагаемая цена на газ представляет собой набор процентиля цены последней транзакции на газ (по умолчанию: 50). |
Shh | MaxMessageSize | --shh.maxmessagesize value | Максимально допустимый размер сообщения (по умолчанию: 1048576) |
Shh | MinimumAcceptedPOW | --shh.pow value | Минимально приемлемый POW (по умолчанию: 0,2) |
Node | DataDir | --datadir "/home/karalabe/.ethereum" | Каталог данных баз данных и хранилища ключей |
Node | IPCPath | --ipcpath | Имя файла сокета/канала IPC в каталоге данных |
Node | HTTPPort | --rpcport value | Порт прослушивания службы HTTP-RPC (по умолчанию: 8545) |
Node | HTTPVirtualHosts | --rpcaddr value | Служба HTTP-RPC для прослушивания интерфейса (по умолчанию: «localhost») |
Node | HTTPModules | null | Список модулей API, предоставляемых через интерфейс HTTP RPC |
Node | WSPort | --wsport value | Порт прослушивания службы WS-RPC (по умолчанию: 8546) |
Node | WSModules | null | Список модулей API, предоставляемых через интерфейс RPC websocket. Если модули пусты, будут доступны все конечные точки API RPC, указывающие на общедоступность. |
Node.P2P | MaxPeers | --maxpeers value | Максимальное количество одноранговых узлов сети (если установлено значение 0, сеть выйдет из строя) (по умолчанию: 25) |
Node.P2P | NoDiscovery | --nodiscover | Отключите механизм обнаружения пиров (ручное добавление пиров).Для этого установлено значение false, чтобы можно было обнаружить новые узлы, использующие этот профиль.. |
Node.P2P | BootstrapNodes | --bootnodes value | URL-адреса начальной загрузки P2P-обнаружения, разделенные запятыми (для легких серверов вместо этого установите v4+v5).Замените URL-адрес enode, полученный при запуске загрузочных узлов выше, и добавьте его сюда после замены IP-адреса.. |
Node.P2P | BootstrapNodesV5 | --bootnodesv5 value | URL-адреса загрузочного узла обнаружения P2P v5, разделенные запятыми (легкий сервер, легкие узлы) |
Node.P2P | StaticNodes | null | Список URL-адресов узлов, настроенных как статические узлы |
Node.P2P | TrustedNodes | null | Список URL-адресов узлов, настроенных как доверенные узлы |
Node.P2P | ListenAddr | --port | Порт прослушивания сети (по умолчанию: 30303) |
Node.P2P | EnableMsgEvents | null | Если EnableMsgEvents установлен, сервер будет генерировать PeerEvents всякий раз, когда одноранговый узел отправляет или получает сообщение. |
Dashboard | Host | null | Хост-интерфейс для запуска службы панели мониторинга. Если это поле пустое, панель мониторинга не будет запущена. |
Dashboard | Port | null | Номер порта TCP для запуска службы панели мониторинга. Значение по умолчанию 0 допустимо и будет использовать случайный номер порта (для эфемерных узлов). |
Dashboard | Refresh | null | Частота обновления для обновления данных, данные chartEntry будут собираться часто |
Создайте папку конфигурации в рабочем каталоге и переместите записанный файл конфигурации privatenet.toml в каталог конфигурации.
Запустите узлы члена
Узлы-члены Ethereum полностью одноранговые, и каждый узел может иметь несколько учетных записей.
Запустите узел-участник частной сети Ethereum:
geth --config config/privatenet.toml
Подключитесь к только что запущенному или уже работающему узлу, чтобы запустить интерактивную среду JavaScript:
geth attach privatenet/.ethereum/geth.ipc
Официальное описание:Когда загрузочный узел работает и доступен извне (вы можете попробоватьtelnet чтобы подтвердить, что он действительно доступен), запускайте последующие узлы Geth для обнаружения одноранговых узлов через--bootnodesОпции указывают на bootnode. Вероятно, было бы разумно хранить каталог данных вашей частной сети отдельно, поэтому также укажите пользовательский--datadirопции.
geth --datadir=path/to/custom/data/folder --bootnodes=<bootnode-enode-url-from-above>
Примечание. Так как ваша сеть будет полностью отрезана от основной и тестовой сетей, вам потребуется настроитьminerдля обработки транзакций и создания новых блоков для вас.
управлять частным майнером
Майнинг общедоступной сети Ethereum — сложная задача, поскольку она возможна только с использованием графических процессоров, требующих активации OpenCL или CUDA.ethminerпример. Для получения дополнительной информации см.EtherMining subredditиGenoil minerсклад.
Тем не менее, в конфигурации частной сети для практических нужд достаточно одного экземпляра майнера ЦП, так как он не требует больших ресурсов (учитывая работу в одном потоке или нескольких потоках) для правильной работы. Создает стабильный поток блоков в пределах интервал. Запустите экземпляр Geth для майнинга, запустите его с параметрами, которые вы обычно используете, и расширьте его с помощью:
geth --config config/privatenet.toml --mine --minerthreads=1 --etherbase=0x0000000000000000000000000000000000000000
Это запустит добычу блоков и транзакций в одном потоке ЦП, поместив все события в--etherbaseУчетная запись, указанная опцией, если учетная запись не указана, по умолчанию будет указана первая учетная запись на текущем узле. Вы можете дополнительно настроить майнинг с помощью (--targetgaslimit), чтобы изменить блок ограничения газа по умолчанию, и в (--gasprice) для принятия ценовых транзакций.
Альтернативно, экземпляр добычи также может контролироваться в интерактивной среде JavaScript:
- Запустите экземпляр 4-поточного майнинга:
miner.start(4)
- Остановите экземпляр майнинга:
miner.stop()
Дополнительную информацию о майнинге см.Mining
На данный момент частная сеть Ethereum построена, спасибо за внимание!
Оригинальность непростая, поделюсь с вами!