Введение в Geth и запуск узлов Ethereum
В этой статье мы рассмотрим, что такое узлы Ethereum, и рассмотрим один из самых популярных, называемый Geth.
Для связи с блокчейном мы должны использовать клиент блокчейна. Клиент — это часть программного обеспечения, способная устанавливать канал связи p2p с другими клиентами, подписывать и транслировать транзакции, осуществлять майнинг, развертывать и взаимодействовать с интеллектуальными контрактами и т. Д. Клиент часто называют узлом .
Формальное определение функциональности, которой должен следовать узел Ethereum, определено в желтой статье ethereum . Желтая бумага определяет требуемые функции узлов в сети, алгоритм майнинга, параметры ECDSA с закрытым / открытым ключом. Он определяет все функции, которые делают узлы полностью совместимыми с клиентами Ethereum.
Основываясь на желтой бумаге, каждый может создать собственную реализацию узла Ethereum на любом языке, который он считает нужным.
Полный список клиентов можно увидеть здесь .
На сегодняшний день самыми популярными клиентами являются Geth и Parity . Реализации различаются в основном по выбору языка программирования — где Geth использует Golang, а Parity использует Rust.
Поскольку Geth является самой популярной клиентской реализацией, доступной на данный момент, мы сосредоточимся на ней сейчас.
Типы узлов
Когда вы присоединяетесь к сети Ethereum, у вас есть возможность запустить
различные типы узлов. Варианты в настоящее время:
- Легкий узел
- Полный узел
- Архивный узел
Архивный узел — это особый случай полного узла, поэтому мы не будем вдаваться в подробности. Одно из лучших резюме по типам узлов, которые я нашел, находится на Stack Exchange :
В общем, мы можем разделить программное обеспечение узлов на два типа: полные узлы и легкие (весовые) узлы. Полные узлы проверяют блок, который транслируется в сеть. Таким образом, они гарантируют, что транзакции, содержащиеся в блоках (и самих блоках), следуют правилам, определенным в спецификациях Ethereum. Они поддерживают текущее состояние сети (как определено в соответствии со спецификациями Ethereum).
Транзакции и блоки, которые не соответствуют правилам, не используются для определения текущего состояния сети Ethereum. Например, если A пытается отправить 100 эфиров в B, но A имеет 0 эфиров, и блок включает эту транзакцию, полные узлы поймут, что это не соответствует правилам Ethereum, и отклонят этот блок как недействительный. В частности, выполнение смарт-контрактов является примером транзакции. Всякий раз, когда в транзакции используется умный контракт (например, отправка токенов ERC-20), все полные узлы должны будут выполнить все инструкции, чтобы убедиться, что они достигли правильного, согласованного следующего состояния блокчейна.
Есть несколько способов достичь одного и того же состояния. Например, если бы А имел 101 эфир и отдал сто из них Б за одну транзакцию, заплатив 1 эфир за газ, конечный результат был бы таким же, как если бы А отправил 100 транзакций по 1 эфиру каждая, заплатив 0,01 эфира за транзакцию ( игнорируя, кто получил комиссию за транзакцию). Чтобы узнать, разрешено ли теперь B посылать 100 эфира, достаточно знать, каков текущий баланс B. Полные узлы, которые сохраняют всю историю транзакций, называются полными узлами архивации. Они должны существовать в сети, чтобы быть здоровыми.
Узлы также могут отказаться от старых данных; если B хочет отправить 100 эфира в C, не имеет значения, как был получен эфир, только учетная запись B содержит 100 эфира. Легкие узлы, напротив, не проверяют каждый блок или транзакцию и могут не иметь копии текущего состояния блокчейна. Они полагаются на полные узлы, чтобы предоставить им недостающие детали (или просто не хватает определенной функциональности). Преимущество легких узлов заключается в том, что они могут гораздо быстрее запускаться и работать, могут работать на устройствах с большим количеством вычислительных ресурсов / памяти и не поглощают почти столько же памяти. С другой стороны, существует элемент доверия в других узлах (он варьируется в зависимости от клиента, и вероятностные методы / эвристика могут использоваться для снижения риска).
Некоторые полные клиенты включают функции для более быстрой синхронизации (например, синхронизация деформации Parity).
Установка Гета
Инструкции по установке Geth на различных платформах (Windows, macOS, Linux) можно найти здесь . Список довольно полный и актуализированный, поэтому я не буду его обсуждать в этой статье.
Бегущий Гет
Чтобы раскрутить узел Geth, единственное, что вам нужно сделать, это зайти в окно терминала и запустить geth
. Когда вы это сделаете, вы должны получить вывод, похожий на этот:
➜ ~ geth INFO [06-03|11:03:13] Maximum peer count ETH=25 LES=0 total=25 INFO [06-03|11:03:13] Starting peer-to-peer node instance=Geth/v1.8.10-stable/darwin-amd64/go1.10.2 INFO [06-03|11:03:13] Allocated cache and file handles database=/Users/mjvr/Library/Ethereum/geth/chaindata cache=768 handles=128 INFO [06-03|11:03:13] Writing default main-net genesis block INFO [06-03|11:03:14] Persisted trie from memory database nodes=12356 size=2. 34mB time=48.31016ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [06-03|11:03:14] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}" INFO [06-03|11:03:14] Disk storage enabled for ethash caches dir=/Users/mjvr/Library/Ethereum/geth/ethash count=3 INFO [06-03|11:03:14] Disk storage enabled for ethash DAGs dir=/Users/mjvr/.ethash count=2 INFO [06-03|11:03:14] Initialising Ethereum protocol versions="[63 62]" network=1 INFO [06-03|11:03:14] Loaded most recent local header number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03:14] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03:14] Loaded most recent local fast block number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03:14] Regenerated local transaction journal transactions=0 accounts=0 INFO [06-03|11:03:14] Starting P2P networking INFO [06-03|11:03:16] UDP listener up self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303 INFO [06-03|11:03:16] RLPx listener up self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303 INFO [06-03|11:03:16] IPC endpoint opened url=/Users/mjvr/Library/Ethereum/geth. ipc
После этого вы должны периодически появляться новые строки, где Geth говорит «Импорт нового состояния» или «Импорт новых заголовков блоков» или «Импорт новых поступлений». Состояние, заголовки блоков и транзакции являются частью попыток дерева Ethereum : они должны быть загружены для синхронизации вашего узла с блокчейном Ethereum.
Это процесс, который может занять очень много времени, поэтому один из вариантов, который у вас есть, — запустить такой легкий узел;
geth --light
Теперь нужно, чтобы Geth извлек только самые последние заголовки блоков и полагался на другие полные узлы для проверки транзакций с помощью подтверждений Merkle .
Доступ к консоли Geth
Теперь, когда вы создали узел, вы можете получить к нему доступ, открыв новую вкладку в своем терминале и выполнив следующее:
geth attach
Это подключит консоль Geth — среду Javascript для связи с блокчейном — к вашему работающему узлу. Это можно сделать как в полном режиме клиента, так и в легком режиме.
После того, как вы открыли консоль, введите:
web3.eth.blockNumber
Вы должны получить вывод в виде числа (например, 5631487), которое представляет текущий номер блока сети Ethereum.
Создание новой учетной записи
Чтобы использовать блокчейн, вам необходимо иметь учетную запись. С Geth вы можете сделать это, запустив в своем терминале следующее:
geth account new
После того, как вы это сделаете, он попросит вас ввести пароль, который вам понадобится для защиты вашей учетной записи. Убедитесь, что вы используете безопасный пароль и храните его в безопасности.
То, что делает Geth при запуске geth account new
— это обновление файла в каталоге данных Geth (каталоге, в котором Geth хранит все необходимые данные, включая блоки и заголовки). Места (на платформу):
- macOS:
~/Library/Ethereum
- Linux:
~/.
- Windows:
%APPDATA%\Ethereum
Доступ к Geth от других клиентов
Когда вы запускаете Geth, клиент автоматически запускает RPC-сервер на порту 8545
. Вы можете получить доступ к серверу RPC и его методам на этом порту, подключившись к localhost:8545
с помощью библиотеки, такой как web3js
или web3j
или web3j
ее вручную с помощью curl
или wget
.
Чтобы узнать о подключении внешних инструментов, таких как те, к работающему экземпляру Geth (частному при запуске вашей собственной цепочки блоков или общедоступным, как в инструкциях выше), смотрите этот пост .
Вывод
В этом кратком введении мы рассмотрели Geth, типы узлов Ethereum и их назначение. Теперь вы можете запустить собственный узел Geth и улучшить его с помощью сторонних инструментов. В следующих статьях мы рассмотрим работу частных сетей (собственный блокчейн Ethereum с Geth) и многое другое.
установка узла geth ethereum — Русские Блоги
Серия статей о том, как Биткойн привлекает золотоИнтернет-валюта изобретена компьютерными хакерами, без границ, без правительства, без центра. Там нет беспорядочного использования денег правительством и нет инфляции. В глобальной компьютерной сети свободно осуществляют обмен валюты и обращение.
Эта серия статей рассказывает только о процедурах и стратегиях, а не о майнинге …
Об авторе:
Перепечатка, пожалуйста, укажите источник:
http://blog.fens.me/bitcoin-install-geth
предисловие
Появление Ethereum (ETH) открыло эпоху блокчейна 2.0. Для получения данных наиболее прямым способом является создание клиента Ethereum и получение данных непосредственно из синхронной книги публичной цепочки Ethereum. Установив и запустив geth, вы можете подключиться к сети общего пользования Ethereum в реальном времени и выполнять следующие операции, включая майнинг реального Ethereum, перевод средств между различными адресами, создание контрактов для отправки транзакций и изучение истории блоков.
Итак, давайте начнем с построения клиентских узлов geth. Если вы хотите узнать, как получить данные, используя биткойн, клиент Биткойн, обратитесь к статьеустановка биткойн-узла
каталог
- процесс установки geth
- Запустить гетский узел
1. Процесс установки geth
Клиент go-ethereum обычно называется geth. Это интерфейс командной строки, который выполняется в среде выполнения языка Go и реализует полный узел Ethereum. Официальный адрес сайта Ethereum:https://ethereum.github.io/go-ethereum/。
1.1 Перейти операционная среда установки
Поскольку geth разработан на языке go, перед установкой клиента geth мы должны сначала установить работающую среду go. Подробный метод установки языка go в Ubuntu см. В статье «Установка языка go».
Ниже приведен простой сценарий процесса установки на языке go:
# Загрузите последнюю версию пакета go
> wget https://dl.google.com/go/go1.10. 3.linux-amd64.tar.gz
# Распакуйте загруженный исходный пакет в каталог / usr / local.
> tar -C /usr/local/ -xvf go1.10.3.linux-amd64.tar.gz
> Добавьте каталог / usr / local / go / bin в переменную окружения PATH
> export PATH=$PATH:/usr/local/go/bin
# Запустите команду go
> go
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
bug start a bug report
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help [command]" for more information about a command.
Additional help topics:
c calling between Go and C
buildmode build modes
cache build and test caching
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages package lists
testflag testing flags
testfunc testing functions
Use "go help [topic]" for more information about that topic.
Таким образом, рабочая среда Go устанавливается.
1.2 Установка клиента Geth
Процесс установки клиента geth из исходного кода делится на следующие 3 шага:
- Загрузите кодовую базу с github
- Скомпилировать geth клиент
- Проверьте клиента geth
Далее мы продолжим шаг за шагом. Системная среда Linux, используемая в этой статье: Linux Ubuntu 16.04 LTS 64bit.
1.2.1 Сначала загрузите кодовую базу с официального сайта GitHub от Geth.
Процесс установки git, не более, просто нужна команда apt install git.
> git clone https://github.com/ethereum/go-ethereum.git
> cd go-ethereum
1.2.2 Компиляция geth клиента
> make geth
build/env.sh go run build/ci.go install ./cmd/geth
>>> /usr/local/go/bin/go install -ldflags -X main.gitCommit=f1986f86f2229ea5ff587c65c9229a65f40bf591 -v ./cmd/geth
github.com/ethereum/go-ethereum/vendor/github.com/hashicorp/golang-lru/simplelru
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html/atom
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/internal/identifier
// опущен
github.com/ethereum/go-ethereum/eth
github.com/ethereum/go-ethereum/les
github.com/ethereum/go-ethereum/ethstats
github.com/ethereum/go-ethereum/cmd/utils
github.com/ethereum/go-ethereum/cmd/geth
Done building.
Run "/root/go-ethereum/build/bin/geth" to launch geth.
Добавьте каталог geth в переменные окружения.
# Добавьте каталог / root / go-ethereum / build / bin в переменную среды PATH
> export PATH=$PATH:/root/go-ethereum/build/bin
1. 2.3 Убедитесь, что клиент geth успешно установлен
Проверьте, успешно ли установлен geth, и проверьте версию, запустив geth client.
> geth version
Geth
Version: 1.8.12-unstable
Git Commit: f1986f86f2229ea5ff587c65c9229a65f40bf591
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.10.3
Operating System: linux
GOPATH=
GOROOT=/usr/local/go
На этом установка клиента geth завершена.
2. Запустите узел geth
После установки мы можем запустить клиентскую программу geth. Сначала мы можем запустить тестовую сеть публичной цепочки Ethereum и добавить параметр командной строки –testnet.
# Запустите geth в тестовой сети
> geth --testnet console
INFO [06-20|17:15:04.991843] Maximum peer count ETH=25 LES=0 total=25
INFO [06-20|17:15:04.993534] Starting peer-to-peer node instance=Geth/v1.8.12-unstable-f1986f86/linux-amd64/go1.10.3
INFO [06-20|17:15:04.993635] Allocated cache and file handles database=/root/. ethereum/testnet/geth/chaindata cache=768 handles=512
INFO [06-20|17:15:05.054257] Writing custom genesis block
INFO [06-20|17:15:05.069545] Persisted trie from memory database nodes=355 size=51.89kB time=1.935374ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-20|17:15:05.070105] Initialised chain configuration config="{ChainID: 3 Homestead: 0 DAO: DAOSupport: true EIP150: 0 EIP155: 10 EIP158: 10 Byzantium: 1700000 Constantinople: Engine: ethash}"
INFO [06-20|17:15:05.070282] Disk storage enabled for ethash caches dir=/root/.ethereum/testnet/geth/ethash count=3
INFO [06-20|17:15:05.070394] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2
INFO [06-20|17:15:05.070531] Initialising Ethereum protocol versions="[63 62]" network=3
INFO [06-20|17:15:05.07101] Loaded most recent local header number=0 hash=419410…ca4a2d td=1048576
INFO [06-20|17:15:05.071186] Loaded most recent local full block number=0 hash=419410…ca4a2d td=1048576
INFO [06-20|17:15:05. 071281] Loaded most recent local fast block number=0 hash=419410…ca4a2d td=1048576
INFO [06-20|17:15:05.071548] Regenerated local transaction journal transactions=0 accounts=0
INFO [06-20|17:15:05.072007] Starting P2P networking
INFO [06-20|17:15:07.258259] UDP listener up self=enode://652a8e7e33f87110907f31aa0943137a5252a47508f496730780fe9bdad84bc33[email protected][::]:30303
INFO [06-20|17:15:07.261285] RLPx listener up self=enode://652a8e7e33f87110907f31aa0943137a5252a47508f496730780fe9bdad84bc33[email protected][::]:30303
INFO [06-20|17:15:07.262189] IPC endpoint opened url=/root/.ethereum/testnet/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.12-unstable-f1986f86/linux-amd64/go1.10.3
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>
Поскольку любая операция в общедоступной цепочке Ethereum требует потребления эфира (eth), разработчикам необходимо локально построить тестовую сеть блокчейнов, чтобы разработать умные контракты и, наконец, разработать Хорошие контракты развернуты в публичной сети. Как построить тестовую сеть Ethereum для разработки, обратитесь к статьеЭфириум тест блокчейн среды строительства
Конечно, наша цель — синхронизировать данные из общедоступной цепочки Ethereum. Затем отключите тестовую сеть, и мы запустим основную сеть напрямую.
# Запустите geth клиент
> geth --datadir=/data0/eth
INFO [06-20|17:41:49.295669] Maximum peer count ETH=25 LES=0 total=25
INFO [06-20|17:41:49.296785] Starting peer-to-peer node instance=Geth/v1.8.12-unstable-f1986f86/linux-amd64/go1.10.3
INFO [06-20|17:41:49.296874] Allocated cache and file handles database=/data0/eth/geth/chaindata cache=768 handles=512
INFO [06-20|17:41:49.352014] Writing default main-net genesis block
INFO [06-20|17:41:49.75667] Persisted trie from memory database nodes=12356 size=1.88mB time=59.845085ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-20|17:41:49.757004] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: Engine: ethash}"
INFO [06-20|17:41:49. 757053] Disk storage enabled for ethash caches dir=/data0/eth/geth/ethash count=3
INFO [06-20|17:41:49.757066] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2
INFO [06-20|17:41:49.757112] Initialising Ethereum protocol versions="[63 62]" network=1
INFO [06-20|17:41:49.757397] Loaded most recent local header number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-20|17:41:49.757427] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-20|17:41:49.757438] Loaded most recent local fast block number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-20|17:41:49.75756] Regenerated local transaction journal transactions=0 accounts=0
INFO [06-20|17:41:49.757872] Starting P2P networking
INFO [06-20|17:41:51.914746] UDP listener up self=enode://a42c2cfd562a0edf5ec8b647b48fa3f51639ab7a37191046578777c100022fae0[email protected][::]:30303
INFO [06-20|17:41:51.915259] RLPx listener up self=enode://a42c2cfd562a0edf5ec8b647b48fa3f51639ab7a37191046578777c100022fae0[email protected][::]:30303
INFO [06-20|17:41:51. 918433] IPC endpoint opened url=/data0/eth/geth.ipc
INFO [06-20|17:42:01.916843] Block synchronisation started
INFO [06-20|17:42:04.015969] Imported new block headers count=192 elapsed=1.016s number=192 hash=723899…123390 ignored=0
INFO [06-20|17:42:04.032948] Imported new block receipts count=2 elapsed=168.99µs number=2 hash=b495a1…4698c9 size=8.00B ignored=0
INFO [06-20|17:42:04.087556] Imported new block headers count=192 elapsed=68.154ms number=384 hash=d3d5d5…c79cf3 ignored=0
Начальные параметры:
- —Dadadir, используется для указания каталога
Затем перейдите в указанный каталог / data0 / eth.
> cd /data0/eth
> ll
total 16
drwxr-xr-x 4 root root 4096 Jun 20 17:43 ./
drwxr-xr-x 5 root root 4096 Jun 20 17:41 ../
drwx------ 5 root root 4096 Jun 20 17:43 geth/
srw------- 1 root root 0 Jun 20 17:43 geth.ipc=
drwx------ 2 root root 4096 Jun 20 17:41 keystore/
Есть 2 папки с разными файлами:
- geth, используется для хранения данных публичной цепочки
- хранилище ключей, используется для хранения секретных ключей
- geth. ipc =, создать файл при запуске
Далее открываем командный верстак
> geth --datadir=/data0/eth attach
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.12-unstable-f1986f86/linux-amd64/go1.10.3
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
# Введите команду eth
> eth
{
accounts: [],
blockNumber: 0,
coinbase: undefined,
compile: {
lll: function(),
serpent: function(),
solidity: function()
},
defaultAccount: undefined,
defaultBlock: "latest",
gasPrice: 18000000000,
hashrate: 0,
mining: false,
pendingTransactions: [],
protocolVersion: "0x3f",
syncing: {
currentBlock: 1841355,
highestBlock: 5822416,
knownStates: 4513217,
pulledStates: 4491604,
startingBlock: 1628922
},
call: function(),
contract: function(abi),
estimateGas: function(),
filter: function(options, callback, filterCreationErrorCallback),
getAccounts: function(callback),
getBalance: function(),
getBlock: function(),
getBlockNumber: function(callback),
getBlockTransactionCount: function(),
getBlockUncleCount: function(),
getCode: function(),
getCoinbase: function(callback),
getCompilers: function(),
getGasPrice: function(callback),
getHashrate: function(callback),
getMining: function(callback),
getPendingTransactions: function(callback),
getProtocolVersion: function(callback),
getRawTransaction: function(),
getRawTransactionFromBlock: function(),
getStorageAt: function(),
getSyncing: function(callback),
getTransaction: function(),
getTransactionCount: function(),
getTransactionFromBlock: function(),
getTransactionReceipt: function(),
getUncle: function(),
getWork: function(),
iban: function(iban),
icapNamereg: function(),
isSyncing: function(callback),
namereg: function(),
resend: function(),
sendIBANTransaction: function(),
sendRawTransaction: function(),
sendTransaction: function(),
sign: function(),
signTransaction: function(),
submitTransaction: function(),
submitWork: function()
}
Создать новую учетную запись, test. dan
# Посмотреть мой аккаунт
> eth.accounts
[]
# Создать аккаунт
> personal.newAccount("test.dan")
"0x377410e6b50762a51d54d9f26830e60124072f35"
# Проверьте мой аккаунт снова
> eth.accounts
["0x377410e6b50762a51d54d9f26830e60124072f35"]
# Просмотр баланса счета
> eth.getBalance(eth.accounts[0])
0
В то же время, мы также можем напрямую проверять статус этой новой учетной записи через etherscan и блокирующий браузер Ethereum.
На веб-странице мы видим, что этот адрес действовал, но суммы нет. Просмотр этой информации означает, что ваша программа geth запущена. Есть десятки G данных, которые необходимо синхронизировать!
Сложность установки geth практически такая же, как и при установке биткойнов. Согласно официальному документу, он в принципе может пройти. Процесс установки не является большой проблемой для технических специалистов. Разные общедоступные цепочки имеют разное программное обеспечение для узлов и разные способы установки. В следующей статье будет представлена установка EOSIO, клиента EOS.
Перепечатка, пожалуйста, укажите источник:
http://blog.fens.me/bitcoin-install-geth
This entry was posted in Цифровая валюта
Параметры запуска узла . Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Расскажем о параметрах geth, которые мы использовали при запуске узла. Эти параметры были выбраны исходя из назначения нашего узла – мы создаем узел для учебной приватной сети Ethereum. Когда вы будете создавать узел для работы с тестовой сетью Rinkeby или с основной сетью Ethereum, нужно будет указывать другие параметры.
Чтобы получить краткую справку по всем командам и параметрам geth, запустите ее следующим образом:
$ geth -h
С параметром datadir, который указывает путь к каталогу блокчейна, вы уже знакомы. При запуске узла укажите тот же каталог, что мы использовали при инициализации приватного блокчейна.
Параметр etherbase задает публичный адрес, на который будет отправлено вознаграждение за майнинг.
Параметр nodiscover отключает поиск других узлов сети. Мы указали его, так как пока будем работать только с одним узлом блокчейна.
Мы также указали значение параметра maxpeers, равное нулю. Таким способом мы фактически отключили обмен по сети между узлами нашего блокчейна.
С помощью параметра mine мы запускаем так называемый майнинг – процесс создания новых блоков в нашем блокчейне. Это необходимо, так как без появления новых блоков выполнение транзакций и публикация смарт-контрактов будут невозможны.
Параметр minerthreads указывает количество потоков, используемых для майнинга. Если ресурсы вашего сервера позволяют и там установлен многоядерный процессор, то для ускорения майнинга можно увеличить значение этого параметра.
Очень важный параметр – networkid. Это идентификатор сети. Здесь мы должны указать уникальный идентификатор 98760 нашего приватного блокчейна.
Параметр verbosity задает детализацию журнала:
• 0 – не записывать данные в журнал;
• 1 – записывать сообщения об ошибках;
• 2 – записывать предупреждающие сообщения;
• 3 – записывать информационные сообщения;
• 4 – записывать отладочную информацию;
• 5 – записывать детальную информацию.
По умолчанию используется значение 3.
Так как мы будем работать с узлом с помощью протокола JSON RPC, нам необходимо включить такую возможность, указав параметр rpc. Дополнительно с помощью параметра rpcapi мы перечисляем, какие программные интерфейсы должен предоставить нам узел. Здесь мы указали такой набор: db, eth, net, web3, personal, web3. Подробнее об этом мы расскажем позже.
При запуске geth мы указываем команду console. Эта команда запускает интерактивную консоль JavaScript, где мы сможем выдавать команды.
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРесTODO Syncmode — Blockchain
Как запустить light node с помощью Geth
Как скачать, установить и запустить Geth. Охватывает режимы синхронизации, консоль Javascript и многое другое.
Один из самых простых способов сделать это — загрузить, установить и запустить Geth. С Geth мы можем настроить и запустить легкий узел за считанные минуты. Во-первых, вам нужно Установить Geth.
После установки Geth запустить полный узел Ethereum так же просто, как ввести
$ geth
в командную строку (без знака доллара). Пока не делайте этого! Когда вы запустите geth
, Geth:
- Инициализировать локальную копию EVM с пустым состоянием
- Начните загрузку всех блоков в истории Ethereum, начиная с блока 0.
- Воспроизвести все транзакции во всех блоках по порядку, обновляя состояние EVM с каждой транзакцией, пока она не достигнет текущего состояния.
Этот процесс может занять от нескольких часов до дней и требует нескольких сотен ГБ свободного места. А пока мы просто запустим легкий узел в тестовой сети, чтобы познакомиться с тем, как использовать Geth. Для этого нам нужно пройти через несколько важных параметров и инструментов командной строки.
Mainnet и Testnet
По умолчанию Geth запускает узел основной сети. Вы можете запустить geth —testnet для запуска полного узла тестовой сети Ropsten. Вы можете запустить узел на Rinkeby, заменив testnet на rinkeby.
Syncmode
У Geth есть три syncmode
s.
$ geth --syncmode "full"
$ geth --syncmode "fast"
$ geth --syncmode "light"
«full» запускает полный узел точно так, как вы ожидаете — ваша машина инициализирует локальную копию EVM в исходном чистом состоянии, загружает каждый блок с начала цепочки блоков и выполняет каждую транзакцию в каждом блоке, обновляя состояние EVM, пока не достигнет текущего состояния EVM.
«fast» загружает все блоки, но также загружает недавний снимок состояния EVM от однорангового узла (в настоящее время состояние блоков EVM 64 в прошлом), выполняя транзакции только в самых последних блоках, пока не достигнет текущего состояния EVM . Преимущество «быстрого» состоит в том, что для синхронизации с текущим состоянием требуется гораздо меньше времени; тем не менее, он полагается на однорангового узла полного архивирования для моментального снимка состояния, поэтому он не проверяет все самостоятельно.
Наконец, «light» запускает light node, о котором мы говорили выше.
Подробное объяснение различий между тремя режимами синхронизации см. В этом Ответ на обмен стеками.
Документация и другие параметры командной строки
Запуск light node
Мы запустим легкий узел тестовой сети, чтобы познакомиться с тем, как управлять узлом и взаимодействовать с ним. Для этого просто запустите
$ geth --testnet --syncmode "light"
Подождите несколько секунд, и, надеюсь, вы получите примерно такой результат:
$ geth --testnet --syncmode "light"
INFO [11-18|14:04:47] Maximum peer count ETH=0 LES=100 total=25
INFO [11-18|14:04:47] Starting peer-to-peer node instance=Geth/v1. 8.11-stable/darwin-amd64/go1.10.3
INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
INFO [11-18|14:04:47] Persisted trie from memory database nodes=355 size=51.89kB time=561.839µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [11-18|14:04:47] Initialised chain configuration config="{ChainID: 3 Homestead: 0 DAO: <nil> DAOSupport: true EIP150: 0 EIP155: 10 EIP158: 10 Byzantium: 1700000 Constantinople: <nil> Engine: ethash}"
INFO [11-18|14:04:47] Disk storage enabled for ethash caches dir=/Users/bgu/Library/Ethereum/testnet/geth/ethash count=3
INFO [11-18|14:04:47] Disk storage enabled for ethash DAGs dir=/Users/bgu/.ethash count=2
INFO [11-18|14:04:47] Added trusted checkpoint chain=ropsten block=3375103 hash=9017ab…249e89
INFO [11-18|14:04:47] Loaded most recent local header number=0 hash=419410…ca4a2d td=1048576
INFO [11-18|14:04:47] Starting P2P networking
INFO [11-18|14:04:49] UDP listener up net=enode://3ef47be442520e4708b5ff25e6e213c496046f443f8393ff5e7ec55f1cf27c374e2e93e78235bde651a5734a012a40eacfc16deab762ee0f380b95d117ac530c@[::]:30303
WARN [11-18|14:04:49] Light client mode is an experimental feature
INFO [11-18|14:04:49] RLPx listener up self="enode://3ef47be442520e4708b5ff25e6e213c496046f443f8393ff5e7ec55f1cf27c374e2e93e78235bde651a5734a012a40eacfc16deab762ee0f380b95d117ac530c@[::]:30303?discport=0"
INFO [11-18|14:04:49] IPC endpoint opened url=/Users/bgu/Library/Ethereum/testnet/geth. ipc
INFO [11-18|14:04:51] Mapped network port proto=udp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
INFO [11-18|14:04:51] Mapped network port proto=tcp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
INFO [11-18|14:08:55] Block synchronisation started
INFO [11-18|14:08:58] Imported new block headers count=192 elapsed=1.574s number=3375295 hash=62f6b1…95c47f ignored=0
INFO [11-18|14:08:58] Imported new block headers count=192 elapsed=127.088ms number=3375487 hash=ae759b…453ac5 ignored=0
INFO [11-18|14:08:59] Imported new block headers count=960 elapsed=582.125ms number=3376447 hash=4cab62…445b82 ignored=0
INFO [11-18|14:08:59] Imported new block headers count=192 elapsed=169.936ms number=3376639 hash=470614…85ce15 ignored=0
INFO [11-18|14:08:59] Imported new block headers count=384 elapsed=245.745ms number=3377023 hash=dad8ee…2862d2 ignored=0
INFO [11-18|14:08:59] Imported new block headers count=192 elapsed=128. 514ms number=3377215 hash=ebcd84…ea26cb ignored=0
INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=125.427ms number=3377407 hash=fca10c…8ed04d ignored=0
INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=109.536ms number=3377599 hash=9aa141…f34080 ignored=0
INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=109.849ms number=3377791 hash=499f2d…e0c713 ignored=0
Примечание. Вы можете не видеть сообщения «Синхронизация блока запущена» и следующие сообщения «Импортированы новые заголовки блоков» в течение нескольких минут или даже часов, если вам особенно не повезло. В это время ваш клиент пытается найти полнофункциональных узлов, готовых обслуживать легких клиентов. В приведенном выше примере по временным меткам мы можем сказать, что моей машине пришлось ждать около четырех минут между началом поиска одноранговых узлов и фактическим поиском однорангового узла для загрузки блоков. В настоящее время это открытый вопрос в сообществе Ethereum — как мы мотивируем людей запускать полные узлы, которые обслуживают легких клиентов?
Когда начнется синхронизация блоков, вашему компьютеру потребуется несколько минут, чтобы догнать последние блоки в цепочке блоков. В этот момент ваш результат будет выглядеть так:
INFO [11-18|16:06:04.025] Imported new block headers count=2 elapsed=6.253ms number=4456862 hash=ce0a0b…6ab128
INFO [11-18|16:06:27.819] Imported new block headers count=2 elapsed=5.982ms number=4456864 hash=04a054…b4f661
INFO [11-18|16:06:34.080] Imported new block headers count=2 elapsed=4.774ms number=4456866 hash=15a43c…efc782
INFO [11-18|16:06:45.464] Imported new block headers count=2 elapsed=5.213ms number=4456868 hash=eb02d5…227564
INFO [11-18|16:07:11.630] Imported new block headers count=2 elapsed=5.835ms number=4456870 hash=67daa7…66892d
На этом этапе сообщения будут приходить только каждые 10-30 секунд, а значение «count» будет выражаться в виде отдельных цифр для каждого сообщения.
Где хранятся данные блокчейна и EVM?
После запуска Geth найдите сообщение, которое выглядит как
INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
Путь, следующий за «database =» «, должен сообщить вам, где на вашем компьютере хранятся данные блокчейна. Если вы запускаете полный узел, этот каталог будет содержать все данные о каждом блоке, который когда-либо был зафиксирован в цепочке блоков. Поскольку у нас запущен легкий узел, этот каталог содержит только заголовки блоков.
Здесь стоит подчеркнуть, что на самом низком уровне именно здесь живет блокчейн. Полное содержимое блокчейна и состояние EVM хранятся на каждом полном узле сети Ethereum в каталогах, которые очень похожи на каталог на вашем компьютере.
Присоединение к консоли Javascript
Запуск узла бесполезен, если мы действительно не можем с ним взаимодействовать. Например, мы можем захотеть транслировать запросы транзакций или искать данные EVM / блокчейн (например, баланс учетной записи). Geth имеет встроенную консоль Javascript и API Javascript под названием web3js который вы можете использовать для взаимодействия с вашим узлом.
Чтобы использовать консоль Javascript:
- Запустите узел в окне терминала (подойдут как полный, так и light node)
- Найдите сообщение следующего вида:
INFO [11-18|14:04:49] IPC endpoint opened url=/Users/bgu/Library/Ethereum/testnet/geth. ipc
Это сообщение должно появиться в журнале до начала синхронизации блоков.
- Это сообщение указывает путь к конечной точке IPC (межпроцессного взаимодействия). Скопируйте этот путь (в приведенном выше примере это
/Users/bgu/Library/Ethereum/testnet/geth.ipc
). - Откройте новое окно или вкладку терминала и выполните следующую команду:
$ geth attach [your IPC endpoint path]
Это должно открыть консоль Javascript. Теперь мы можем использовать web3js для взаимодействия с узлом.
Полная документация по web3js
Вот несколько полезных объектов, предоставляемых этим API. Вы получаете доступ к ним, вводя их в консоль Javascript.
eth.syncing
возвращает объект, если ваш узел был запущен, но не завершил синхронизацию блока, или значениеfalse
, если он либо завершил синхронизацию, либо не был запущен. Если узел все еще синхронизируется, eth.syncing сообщит вам номер последнего блока, данные которого вы получили, а также общее количество блоков в текущей цепочке блоков. -18 ether. # The balance of this account in ether is about 1.059eth.Остановка и перезапуск вашего узла
Вы можете остановить свой узел в любой момент. Если вы хотите перезапустить узел, Geth потребуется несколько секунд или минут для повторной синхронизации (загрузка блоков и / или заголовков блоков с того места, где он остановился, когда узел в последний раз прекратил работу). Если какие-либо из приведенных выше инструкций не работают, первое, что вам следует сделать, это попробовать перезапустить узел.
Что такое geth.exe?
РЕКОМЕНДУЕМ: Нажмите здесь, чтобы исправить ошибки Windows и оптимизировать производительность системы
Процесс Geth.exe в диспетчере задач WindowsПроцесс, известный как Geth, принадлежит программному обеспечению Ethereum — Geth — Официальная реализация Go от неизвестно.
Описание: Geth.exe не является необходимым для ОС Windows и вызывает относительно небольшое количество проблем. Geth.exe находится в подпапках C: \ или иногда в подпапках «C: \ Program Files» или в подпапках » C: \ ethereum \», в папке профиля пользователя. Размер файла в Windows 10/8/7 / XP составляет 13 179 660 байт.
Некоторые люди думают, что это не опасно. Там нет информации о файле. Программа не видна. Процесс использует порты для подключения к локальной сети или Интернету. Это не системный файл Windows. Geth.exe способен мониторить приложения. Поэтому технический рейтинг надежности 0% опасности .
Важно: некоторые вредоносные программы маскируют себя как geth.exe, особенно если они находятся в папке C: \ Windows или C: \ Windows \ System32. Поэтому вы должны проверить процесс geth.exe на вашем компьютере, чтобы увидеть, если это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера. Это был один из лучших вариантов загрузки The Washington Post и PC World .
Аккуратный и опрятный компьютер — это главное требование для избежания проблем с geth. Это означает запуск сканирования на наличие вредоносных программ, очистку жесткого диска с использованием 1 cleanmgr и 2 sfc / scannow, 3 удаления ненужных программ, проверку наличия программ автозапуска (с использованием 4 msconfig) и включение автоматического обновления Windows 5. Всегда не забывайте выполнять периодическое резервное копирование или, по крайней мере, устанавливать точки восстановления.
Если вы столкнулись с реальной проблемой, попробуйте вспомнить последнее, что вы сделали, или последнее, что вы установили до того, как проблема появилась впервые. Используйте команду 6 resmon, чтобы определить процессы, которые вызывают вашу проблему. Даже для серьезных проблем, вместо переустановки Windows, лучше восстановить вашу установку или, для Windows 8 и более поздних версий, выполнить команду 7 DISM.exe / Online / Cleanup-image / Restorehealth. Это позволяет восстанавливать операционную систему без потери данных.
Чтобы помочь вам проанализировать процесс geth.exe на вашем компьютере, оказались полезными следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Уникальный рейтинг риска безопасности указывает на вероятность того, что процесс является потенциальным шпионским ПО, вредоносным ПО или трояном. B Malwarebytes Anti-Malware обнаруживает и удаляет спящие шпионские, рекламные программы, трояны, клавиатурные шпионы, вредоносные программы и трекеры с вашего жесткого диска.
Связанный файл:
sk9910dm.exe clocktrayskins.exe erunt.exe geth.exe installaddons.exe paintnetupdater.exe iam.exe fsvpnservice.exe modhidkey.exe rssreader.exe corsairhid.exe
Запуск ноды NuCypher в тестовой сети + обновление | by Natali
Update: был добавлен процесс обновления ноды (см. конец статьи)
На днях команда NuCypher запустила публичную тестовую сеть, где каждый желающий может создать свою ноду или просто потестировать PoS систему, застейкав некоторое количество токенов.
NuCypher не собирается проводит ICO или другой продажи токенов, вместо этого в планах команды существует распределение с помощью механизма Worklock, обязательным условием которого на данный момент является создание ноды или стекинг токенов в течение года (окончательные подробности и параметры функционирования Worklock появятся позже)
И сейчас мы создадим ноду в Gorli — тестовой сети Ethereum, а также застекаем тестовые токены.
Официальные инструкции находятся здесь:
Staking Guide
Getting Started guide
Все операции проводятся в Ubuntu 18.04 2 CPU, 2 GB RAM, 60 GB SSD. Необходим статический IP и открытый порт 9151, нода должна работать круглосуточно, поэтому рекомендуем использовать VPS (1 GB RAM будет недостаточно для корректной работы)
Для начала установим всё необходимое для работы:
sudo apt update
sudo apt install python3
sudo apt install libffi-dev
sudo apt install python3-dev
sudo apt install python3-virtualenv
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-venv
sudo apt-get install python3-devДалее в рабочей папке установим виртуальное окружение:
python3 -m venv ./nucypher-venv
Активируем его:
source nucypher-venv/bin/activate
Теперь в начале командной строки должно появиться (nucypher-venv).
Устанавливаем пакеты NuCypher:
pip3 install -U nucypher
Если все прошло успешно, команда nucypher — help должна отработать корректно.
Далее нам понадобится несколько активных терминалов, я для этого использую утилиту screen:
sudo apt install screen
Запускаем её
screen
И создаём новую консоль, нажав ctrl+a и c. Просмотр доступных консолей ctrl+a и w. Выбор консоли ctrl+a и “номер консоли”.
Для работы в виртуальном окружении не забываем в каждой консоли активировать его:
source nucypher-venv/bin/activate
Теперь нам нужна нода Ethereum в сети Görli, можете использовать любой поддерживаемый клиент, мы взяли Geth.
sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereumЗапускаем лёгкую ноду (в основной сети рекомендуется запускать полную):
geth --goerli --syncmode light
Ждём пока она синхронизируется до текущего блока в сети. Эта нода должна постоянно синхронизироваться, поэтому оставляем её работать в отдельном терминале.
В новом терминале создаём два аккаунта в сети Görli. На одном будет работать наша нода, другой будет стекать токены. Если вам не нужна нода, последние шаги можете не делать и второй аккаунт не создавать.
geth attach /home/<username>/.ethereum/goerli/geth.ipc
<username> заменить на ваше учетное имя в системе, если вы root “/home” нужно убрать.
>personal.newAccount()
>personal.newAccount()
>eth.accounts
>web3.toChecksumAddress(eth.accounts[0])
>web3.toChecksumAddress(eth.accounts[1])
>exitНа каждый аккаунт получаем немного эфира для осуществления транзакций https://goerli-faucet.slock.it/
Далее необходимо оставить запрос на получение тестовых токенов в Discord, просто отправив сообщение в канал #testnet-faucet (одного запроса достаточно)
.getfunded <your_eth_checksumaddress>
Переходим в терминал. Создаём нового стейкера, <your_username> заменить на ваше учетное имя в системе, если вы root “home” нужно убрать:
nucypher stake init-stakeholder --provider ipc:///home/<your_username>/. ethereum/goerli/geth.ipc --poa
Запускаем стекинг, указав количество токенов и срок стекинга
nucypher stake create
Активируем рестекинг и проверяем список активного стекинга:
nucypher stake restake --enablenucypher stake list
Этого достаточно, чтобы начать стекать токены. Далее будем запускать свою ноду, <your_username> заменить на ваше учетное имя в системе, если вы root “home” нужно убрать.
nucypher ursula init --provider ipc:///home/<your_username>/.ethereum/goerli/geth.ipc --poa --staker-address <your_stakeraddress>
your_stakeraddress — это адрес стекера, на котором лежат токены. Выбираем адрес ноды, подтверждаем ip и задаём пароль
Теперь связываем ноду со стейкером
nucypher stake set-worker
Запускаем ноду
nucypher ursula run --teacher discover.nucypher.network:9151 --interactive
Проверяем статус
Ursula >>> status
Вы также можете смотреть статус вашей ноды в браузере
https://<your_node_ip>:9151/status
Изучение Ethereum с помощью Geth, GraphQL и Grid
Дата публикации Oct 3, 2019
GraphQL — это язык запросов для API, который позволяет запрашивать большие наборы данных, указав формат ожидаемого результата. Наш большой набор данных будет блокчейном Ethereum, и мы будем запрашивать у него такие вещи, как события, состояние синхронизации клиента и данные транзакций.
Ethereum Grid упрощает настройку и использованиеГетклиент go-ethereum, включая его сервер GraphQL через доступный пользовательский интерфейс. Это краткое руководство поможет вам начать.
Geth обслуживает интерфейс GraphiQL, доступный в Grid.Ethereum Grid
Миссия Grid состоит в том, чтобы предоставить пользователям возможность использовать новейшие и лучшие из набора инструментов Ethereum.
grid.ethereum.org
Grid — это настольное приложение, которое позволяет легко загружать и настраивать инструменты Ethereum. Сборки для Mac, Windows и Linux доступны по адресуgrid.ethereum.org, После загрузки и запуска Grid будет отображаться в строке меню вашей ОС в виде логотипа Ethereum.
Перейдите к плагину Geth в Grid, затем на вкладке «Версия» загрузите последнюю версию Geth (поддержка GraphQL была введена в v1. 9.0). Примечание: если у вас уже установлен Geth в вашей системе, этот шаг все еще необходим, если вы хотите настроить его через Grid. Сетка управляет двоичными файлами локально.
На вкладке «Настройки» выберите раскрывающийся список для
Enable GraphQL Server
, Мы просто исследуем, такGörli (testnet)
это хороший вариант для сети. После настройки включите переключатель, чтобы запустить Geth.GraphiQL — это фантастическая среда разработки в браузере для изучения и запроса API-интерфейсов GraphQL. Geth делает этот интерфейс доступным на
Запустите интерфейс GraphiQL изОколоВкладка.http://localhost:8547
, но вы также можете получить к нему доступ в Grid через приложение Geth GraphQL Explorer, которое можно найти на вкладке «О программе».Давайте рассмотрим некоторые примеры.
Запросы для синхронизации состояния
Этот запрос возвращает данные о состоянии синхронизации вашего узла.
Запрос на события
Этот запрос (изстартовый пост) находит ENS
HashRegistered
события в сети Görli и возвращает адрес пользователя, выполняющего регистрацию, а также номер блока и метку времени, в которую он был включен.Построй свой собственный
Используйте документацию схемы, чтобы узнать, что это возможно (подсказка: кнопка «Документы» в верхнем правом углу GraphiQL). Когда вы начнете вводить запрос, GraphiQL автоматически завершит все возможные варианты, основываясь на схеме.пример использованияпредоставленный EthQL также должен оказаться полезным.
Теперь вы можете создать веб-приложение, которое подключается к экземпляру GraphQL, запущенному на
localhost:8547
и отправлять запросы на/graphql
конечная точка с использованием клиента, какАполлон,Если вы хотите дополнительно настроить некоторые флаги Geth GraphQL, вы можете нажать
Use custom flags
и настройте следующие атрибуты:--graphql
Включить сервер GraphQL--graphql.addr value
Интерфейс прослушивания сервера GraphQL (по умолчанию: «localhost»)--graphql.port value
Порт прослушивания сервера GraphQL (по умолчанию: 8547)--graphql. corsdomain value
Разделенный запятыми список доменов, от которых принимаются запросы от разных источников (принудительно устанавливается браузером)Вызов функции контракта
Выполнение функции контракта может быть выполнено с помощью
call
функция с подписью метода контракта. Подпись метода контракта — это хэш метода, который вы хотите вызвать, напримерbalanceOf
наряду с закодированными параметрами, такими какaddress
, Вы можете узнать больше оКонтракт ABIи увидеть полезные утилиты для получения подписи отweb3.js,В следующем фрагменте кода я покажу, как запросить баланс токенов ERC20 с помощьюApollo GraphQL клиент:
Во многих случаях GraphQL является звездной альтернативой API REST. При запросе блочных данных простой интерфейс GraphQL является значительным улучшением по сравнению с JSON-RPC API, предоставляя вам именно те данные, которые вам нужны, в нужном формате и структуре.
Реализация GetQL в GraphQL основана наEIP 1767: интерфейс GraphQL к данным узла Ethereumс усилиями во главе сКоманда Consensys EthQL, Следите за ними для более захватывающих разработок в дополнительных полях и типах запросов, таких как переводы и балансы ERC20, имена ENS и многое другое.
Если у вас возникнут какие-либо проблемы или у вас есть предложения по Grid или нашей интеграции с Geth, пожалуйста,поделитесь с нами своим отзывом, Есть ли другой проект, который вы хотели бы видеть интегрированным в Grid для обеспечения доступного пользовательского интерфейса? Дайте нам знать!
Оригинальная статья
Знакомство с Geth и запуском узлов Ethereum
В этой статье мы рассмотрим, что такое узлы Ethereum, и рассмотрим один из самых популярных узлов под названием Geth.
Для связи с блокчейном мы должны использовать блокчейн клиент . Клиент — это часть программного обеспечения, способная устанавливать канал связи p2p с другими клиентами, подписывать и транслировать транзакции, выполнять майнинг, развертывать смарт-контракты и взаимодействовать с ними и т. Д.Клиент часто упоминается как узел .
Формальное определение функциональности, которой должен следовать узел Ethereum, приведено в желтой бумаге Ethereum. Желтая бумага определяет требуемые функции узлов в сети, алгоритм майнинга, параметры ECDSA с закрытым / открытым ключом. Он определяет совокупность функций, которые делают узлы полностью совместимыми с клиентами Ethereum.
Судя по желтой бумаге, любой может создать свою собственную реализацию узла Ethereum на любом языке, который он считает подходящим.
Полный список клиентов можно увидеть здесь.
Самыми популярными клиентами на данный момент являются Geth и Parity. Реализации различаются в основном выбранным языком программирования — где Geth использует Golang, а Parity использует Rust.
Поскольку Geth — самая популярная клиентская реализация, доступная в настоящее время, мы сосредоточимся на ней пока.
Типы узлов
Когда вы присоединяетесь к сети Ethereum, у вас есть возможность запустить
различных типов узлов.Варианты на данный момент:- Световой узел
- Полный узел
- Архивный узел
Архивный узел — это частный случай полного узла, поэтому мы не будем вдаваться в подробности о нем. Одна из лучших сводок о типах узлов, которые я обнаружил, находится на Stack Exchange:
.В целом, мы можем разделить программное обеспечение узлов на два типа: полные узлы и легкие (весовые) узлы. Полные узлы проверяют блок, который транслируется в сеть. То есть они гарантируют, что транзакции, содержащиеся в блоках (и сами блоки), соответствуют правилам, определенным в спецификациях Ethereum.Они поддерживают текущее состояние сети (как определено в соответствии со спецификациями Ethereum).
Транзакции и блоки, не соответствующие правилам, не используются для определения текущего состояния сети Ethereum. Например, если A пытается отправить 100 эфиров в B, но у A 0 эфиров и блок включает эту транзакцию, полные узлы поймут, что это не соответствует правилам Ethereum, и отклонят этот блок как недействительный. В частности, исполнение смарт-контрактов является примером транзакции.Всякий раз, когда смарт-контракт используется в транзакции (например, отправка токенов ERC-20), все полные узлы должны будут выполнить все инструкции, чтобы гарантировать, что они прибудут в правильное, согласованное следующее состояние блокчейна.
Есть несколько способов попасть в одно и то же состояние. Например, если у A был 101 эфир и он отдал сотню из них B за одну транзакцию, заплатив 1 эфир за газ, конечный результат будет таким же, как если бы A отправил 100 транзакций по 1 эфиру каждая B, заплатив 0,01 эфира за транзакцию ( без учета того, кто получил комиссию за транзакцию).Чтобы узнать, разрешено ли теперь B отправлять 100 эфиров, достаточно знать, каков текущий баланс B. Полные узлы, сохраняющие всю историю транзакций, известны как узлы полного архивирования. Они должны существовать в сети, чтобы она работала.
Узлытакже могут отказаться от старых данных; если B хочет отправить 100 эфиров в C, не имеет значения, как был получен эфир, только учетная запись B содержит 100 эфиров. Легкие узлы, напротив, не проверяют каждый блок или транзакцию и могут не иметь копии текущего состояния цепочки блоков.Они полагаются на полные узлы, чтобы предоставить им недостающие детали (или просто лишенные определенных функций). Преимущество легких узлов заключается в том, что они могут быть запущены намного быстрее, могут работать на устройствах с большим объемом вычислений / памяти и не занимают почти столько же памяти. С другой стороны, есть элемент доверия к другим узлам (он зависит от клиента, и для снижения риска могут использоваться вероятностные методы / эвристики). Некоторые полные клиенты включают функции для более быстрой синхронизации (например,g., синхронизация деформации четности).
Установка Geth
Инструкции по установке Geth на различных платформах (Windows, macOS, Linux) можно найти здесь. Список довольно обширный и постоянно обновляется, поэтому я не буду вдаваться в подробности в статье.
Запуск Geth
Чтобы развернуть узел Geth, единственное, что вам нужно сделать, это перейти в окно терминала и запустить
geth
. Когда вы это сделаете, вы должны получить примерно такой результат:➜ ~ геты ИНФОРМАЦИЯ [06-03 | 11: 03: 13] Максимальное количество пиров ETH = 25 LES = 0 всего = 25 ИНФОРМАЦИЯ [06-03 | 11: 03: 13] Запуск экземпляра однорангового узла = Geth / v1. 8.10-стабильный / darwin-amd64 / go1.10.2 ИНФОРМАЦИЯ [06-03 | 11: 03: 13] Выделенный кеш и файловые дескрипторы database = / Users / mjvr / Library / Ethereum / geth / chaindata cache = 768 handles = 128 ИНФОРМАЦИЯ [06-03 | 11: 03: 13] Запись блока генезиса основной сети по умолчанию. ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Сохраняемое дерево из узлов базы данных памяти = 12356 размер = 2,34 МБ, время = 48,3 · 1016 мс gcnodes = 0 gcsize = 0,00 млрд. Gctime = 0 с livenodes = 1 размер жизни = 0,00 млрд. ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Инициализированная конфигурация цепочки config = "{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople:
Engine: ethash} " ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Дисковое хранилище включено для кешей ethash dir = / Users / mjvr / Library / Ethereum / geth / ethash count = 3 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Дисковое хранилище включено для ethash DAG dir = / Users / mjvr /.ethash count = 2 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Инициализация версий протокола Ethereum = "[63 62]" сеть = 1 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Загружен последний номер локального заголовка = 0 hash = d4e567… cb8fa3 td = 17179869184 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Загружен последний номер полного локального блока = 0 hash = d4e567… cb8fa3 td = 17179869184 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Загруженный номер последнего локального быстрого блока = 0 hash = d4e567… cb8fa3 td = 17179869184 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Регенерированные транзакции журнала локальных транзакций = 0 аккаунтов = 0 ИНФОРМАЦИЯ [06-03 | 11: 03: 14] Запуск P2P-сети ИНФОРМАЦИЯ [06-03 | 11: 03: 16] UDP прослушиватель включен self = enode: // a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348bd521836ae88ad1986b8ca944348be97303d :: 307303d2: @44348e97302e3 ИНФОРМАЦИЯ [06-03 | 11: 03: 16] Прослушиватель RLPx включен self = enode: // a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca12473342c8e97: 307342348e08c9442e4e03d06e3 ИНФОРМАЦИЯ [06-03 | 11: 03: 16] Конечная точка IPC открыла url = / Users / mjvr / Library / Ethereum / geth. ipc После этого вы должны периодически видеть новые строки, где Geth говорит «Импорт нового состояния», «Импорт новых заголовков блоков» или «Импорт новых квитанций». Состояние, заголовки блоков и транзакции являются частью дерева попыток Ethereum: они должны быть загружены, чтобы синхронизировать ваш узел с цепочкой блоков Ethereum.
Это процесс, который может занять очень много времени, поэтому один из вариантов, который у вас есть, — запустить такой легкий узел;
geth - свет
Теперь Geth нужно только извлечь последние заголовки блоков и полагаться на другие полные узлы для проверки транзакций с помощью доказательств Меркла.
Доступ к консоли Geth
Теперь, когда вы создали узел, вы можете получить к нему доступ, открыв новую вкладку в своем терминале и запустив следующее:
geth прикрепить
Это подключит консоль Geth — среду Javascript для связи с блокчейном — к вашему работающему узлу. Это можно сделать как в полном клиентском режиме, так и в легком режиме.
После открытия консоли введите:
web3.eth.blockNumber
Вы должны получить результат в виде числа (например, 5631487), который представляет текущий номер блока в сети Ethereum.
Создание новой учетной записи
Чтобы использовать блокчейн, вам необходимо иметь учетную запись. С Geth вы можете сделать это, запустив в своем терминале следующее:
geth account новый
После того, как вы это сделаете, он попросит вас ввести пароль, который вам понадобится для защиты вашей учетной записи. Убедитесь, что вы используете надежный пароль и храните его в надежном месте.
Что делает Geth при запуске
учетной записи geth new
, так это обновляет файл в каталоге данных Geth (каталог, в котором Geth хранит все необходимые данные, включая блоки и заголовки). Локации (на платформу):- macOS:
~ / Библиотека / Ethereum
- Linux:
~ / . ethereum
. - Windows:
% APPDATA% \ Ethereum
Доступ к Geth от других клиентов
Когда вы запускаете Geth, клиент автоматически запускает RPC-сервер на порту
8545
.Вы можете получить доступ к RPC-серверу и его методам через этот порт, подключившись кlocalhost: 8545
с помощью такой библиотеки, какweb3js
илиweb3j
или , и вызовите его вручную с помощьюcurl
илиwget
.Чтобы узнать о подключении к внешним инструментам, например, к работающему экземпляру Geth (частному при запуске собственного блокчейна или общедоступному, как в приведенных выше инструкциях), см. Этот пост.
Заключение
В этом кратком введении мы рассмотрели Geth, типы узлов Ethereum и их назначение.Теперь вы можете запустить собственный узел Geth и улучшить его с помощью сторонних инструментов. В следующих статьях мы рассмотрим работу частных сетей (ваш собственный блокчейн Ethereum с помощью Geth) и многое другое.
Начало работы с Geth. Geth — это реализация… | Чжэн Хао Тан
geth
в основном синхронизирует узлы Ethereum здесь. Это может занять некоторое время, но вы можете продолжить и закрыть его, набрав Ctrl-C:Одна вещь, которую вы скоро заметите, — это то, что все эти журналы INFO могут быть довольно разговорчивыми и отвлекать.Причина в том, что уровень детализации по умолчанию установлен на 3 (ИНФОРМАЦИЯ). Этот флаг / значение детализации изменяется от 0 до 6. Вот несколько примеров:
geth --verbosity 0
будет выглядеть примерно так:geth --verbosity 4
будет иметь более подробный результат. вот так:То, что мы до сих пор рассматривали, касается основной сети. Если вы начинаете разрабатывать децентрализованные приложения, также известные как DApps, вы, вероятно, захотите сначала протестировать свои смарт-контракты в тестовой сети.
Существует несколько популярных тестовых сетей, в том числе Ropsten и Rinkeby .
geth
дает вам возможность использовать любую из этих сетей, добавляя аргументы командной строкиtestnet
иrinkeby
.Например:
geth --testnet
иgeth --rinkeby
Каждый интерфейс, который вы делаете в основной сети через
geth
, может быть реализован в этих тестовых сетях, просто добавив правый флаг тестовой сети CLI.Одной из основных функций
geth
является кошелек.Создать кошелек
Вы можете создать несколько учетных записей на локальном узле следующим образом:
Вам будет предложено ввести пароль. Вперед и введите его, и все готово!
Список кошельков
Вы также можете перечислить все кошельки, хранящиеся на вашем компьютере, следующим образом: Пример списка учетных записей
в основном списке сетевых учетных записей Пример списка учетных записей в тестовой сети Ropsten Пример списка учетных записей в тестовой сети Rinkeby также выберите изменение паролей в своей учетной записи черезgeth
. Продолжайте и запустите это, и вам будет предложено ввести текущий и новый пароли.Вы также можете запустить консоль Javascript, набрав:
geth console
Так как это может быть довольно болтливым, я предлагаю запустить его с флагом подробности, установленным на 0, например:
geth --verbosity 0 console
Вы можете продолжить и запросить остатки на счетах и т. Д. Через консоль. Довольно мило!
Это очень короткий пост о том, как и каковы основные особенности ядра
geth
.В сообществе Ethereum также есть много возможностей для улучшений, таких как надлежащая документация и лучшие / более надежные инструменты, поэтому не стесняйтесь вносить свой вклад любым способом.geth
может выполнять гораздо больше функций, которые здесь не описаны, но у меня есть несколько полезных ссылок ниже, если вы хотите испытать себя и узнать об этом больше.Ссылки:
Go-Ethereum Страница GitHub: https://github.com/ethereum/go-ethereum
Страница TL; DR: https: // github.com / tldr-pages / tldr / blob / master / pages / common / geth.md
Geth (клиент Go) — документация Nethereum
Установка и настройка Ethereum-клиента Geth
Вы можете скачать последнюю стабильную версию
Geth
с GithubУстановка
Окна
В Windows
Geth установить
так же просто, как распаковать geth.exe из выбранной вами ОС. На странице загрузки есть установщик и zip-файл.Установщик автоматически помещает geth в ваш PATH. ZIP-файл содержит файлы команд .exe и может использоваться без установки.
- Загрузить zip-файл
- Распаковать geth.exe из zip-архива
- Открыть командную строку
- Запустить geth. exe
Mac
Brew рекомендуется для установки
Geth
на Mac OS:$ brew обновить $ brew upgrade $ brew tap ethereum / ethereum $ brew установить ethereum
Linux
В Linux установку
Geth
можно выполнить с помощьюapt
.$ sudo apt-get install software-properties-common $ sudo add-apt-repository -y ppa: ethereum / ethereum $ sudo apt-get update $ sudo apt-get install ethereum
Опции RPC / IPC
Есть несколько параметров командной строки для запуска geth, которые можно найти в их документации.
Но самое главное, нужно включить RPC или IPC.
HTTP JSON-RPC может быть запущен с флагом
Порт по умолчанию (--rpc
8545
) можно изменить, а также адрес листинга (localhost
).$ geth --rpc --rpcaddr
--rpcport <номер порта> CORS
с соответствующим набором домена. В противном случае вызовы JavaScript ограничиваются политикой одного и того же происхождения, и запросы не будут выполнены:$ geth --rpc --rpccorsdomain "http: // localhost: 3000"
admin.startRPC (addr, port)
.Быстрый старт
Вы можете рассмотреть возможность использования нашего документа «Создание новой учетной записи с использованием Geth Personal Api», чтобы получить первое представление о взаимодействии с Geth с помощью Nethereum.
Настройка собственной тестовой сети
В Nethereum уже есть предварительно настроенный tesnet, который можно скачать с github
Предварительно сконфигурированная тестовая сеть немедленно начнет создавать блоки, поэтому нет необходимости запускать это вручную, для получения дополнительной информации проверьте раздел «Подтверждение полномочий» ниже.
Цепное хранилище ключей в папке «devChain» содержит ключи для предварительно настроенной учетной записи, которая также присутствует в файле genesis «genesis_dev. json».
- Аккаунт:
0x12890d2cce102216644c59daE5baed380d84830c
- Пароль:
пароль
- Закрытый ключ:
0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7
Подтверждение полномочий
Механизм консенсуса, используемый в этой тестовой цепочке, — это Proof of Authority (PoA).
КонсенсусPoA достигается путем обращения к списку валидаторов (называемых полномочиями, когда они связаны с физическими объектами).
Он не зависит от узлов, решающих произвольно сложные математические задачи, но вместо этого использует набор «полномочий» — узлов, которым явно разрешено создавать новые блоки и защищать цепочку блоков. Цепочка должна быть подписана большинством властей, и в этом случае она становится частью постоянной записи. Это упрощает поддержание частной цепочки и ответственность эмитентов блоков.
Для настройки консорциума нет недостатков сети PoA по сравнению с PoW. Он более безопасен (поскольку злоумышленник с нежелательным подключением или взломанными полномочиями не может подавить сеть, потенциально возвращая все транзакции), менее требователен к вычислениям (сложный майнинг, который обеспечивает безопасность, требует большого количества вычислений), более производительный (консенсус Aura обеспечивает меньшее принятие транзакций. латентность) и более предсказуемой (блоки выдаются через постоянные интервалы времени). Развертывания PoA используются на предприятии и в обществе (например, популярная тестовая сеть Kovan).
Текущая тестовая цепочка настроена на немедленное создание блоков, у нее есть только один узел с одной учетной записью валидатора, которую он разблокирует при запуске geth.
- разблокировать 0x12890d2cce102216644c59daE5baed380d84830c --password "pass.txt"
Для запуска цепочки вы можете использовать командные файлы или сценарии оболочки, оба они сбрасывают все данные при запуске.
Пакетный файл
RD / S / Q% ~ dp0 \ devChain \ geth \ chainData RD / S / Q% ~ dp0 \ devChain \ geth \ dapp RD / S / Q% ~ dp0 \ devChain \ geth \ nodes дель% ~ dp0 \ devchain \ geth \ nodekey geth --datadir = devChain init genesis_clique. json geth --nodiscover --rpc --datadir = devChain --rpccorsdomain "*" --mine --rpcapi "eth, web3, personal, net, miner, admin, debug" --unlock 0x12890d2cce102216644c59daE5baed380d84830c --password "pass.txt "--verbosity 0 console
Shell сценарий
Убедитесь, что ваш скрипт стал исполняемым:
chmod + x startgeth.sh
Вы можете запустить скрипт из каталога, в котором он находится:./startgeth.sh
rm -rf devChain / chainData rm -rf devChain / dapp rm -rf devChain / узлы rm -rf devchain / nodekey geth --datadir = devChain init genesis_clique.json geth --nodiscover --rpc --datadir = devChain --rpccorsdomain "*" --mine --rpcapi "eth, web3, personal, net, miner, admin, debug" --unlock 0x12890d2cce102216644c59daE5baed380d84830c --password "pass.txt "--verbosity 0 console
Прочая информация
Если вам нужна дополнительная информация о том, как настроить свою сеть, вы можете использовать это сообщение в блоге http://juan. blanco.ws/setup-your-own-tesnet-ethereum/
Доказательство паритета и авторитета Geth
Запуск узла Ethereum — документация Ethereum на ARM 0.0.1 документация
Отлично, все готово. Пришло время запустить узел Ethereum. Ты может запускать клиент Ethereum 1.0, Ethereum 2.0 или и то, и другое.
В этом кратком руководстве мы запустим клиент Geth Ethereum 1.0. и клиент Lighthouse Ethereum 2.0 Beacon Chain, работающие на одном устройстве.
Примечание
Geth включен по умолчанию, поэтому вам не нужно ничего делать, чтобы запустить и запустить.
Beacon Chain является частью блокчейна Ethereum 2.0, но для стекинга нужен узел Validator , что является более сложным процессом.Если вы хотите запустить валидатор вместе с Beacon Chain вам понадобится 32 ETH и некоторые знания о том, как работает Ethereum2.0.
См. Дополнительную информацию в разделе «Руководство пользователя».
Эфириум 1.0
Исходная цепочка Ethereum (с алгоритмом консенсуса Proof of Work). Прямо сейчас здесь происходит все, от транзакций до смарт-контракта. казни.
Примечание
Вы можете майнить , а не Ethereum 1.0 с помощью устройства ARM, так как это зависит от процессора. мощность и эти устройства довольно ограничены.Итак, вы можете запустить узел Ethereum 1.0. для достижения следующих целей:
Запуск в качестве поставщика Ethereum 1.0 для цепочки Ethereum 2.0 Beacon (это означает работает как с узлами Eth2, так и с Eth3).
Чтобы способствовать здоровью и децентрализации сети Ethereum 1.0.
Для включения и запуска клиента Geth Eth2.0 не требуется никаких действие, поскольку служба Systemd уже включена и работает. Просто Откройте порт 30303 на своем маршрутизаторе , чтобы Geth мог обнаружить и подключиться другим одноранговым узлам (протоколы UDP и TCP).
Для проверки журналов клиента введите:
судо journalctl -u geth -f
Вы также можете получить доступ к панели управления Geth в Grafana, чтобы получить дополнительную информацию о клиенте.
Примечание
Ethereum на ARM поддерживает 4 клиента Eth2: Geth, Nethermind, Openethereum и Besu (все уже установлены в вашей системе).
Мы рекомендуем запускать Geth по умолчанию, так как он является наиболее надежным и проверенным. клиент для устройств ARM.
Эфириум 2.0
Эфириум 2.0 — это переход от алгоритма консенсуса Proof of Work к Proof of Stake . это в настоящее время находится на Фазе 0 (с декабря 2020 г.), и вы можете запустить узел Eth3.0 на своем Raspberry Pi 4 не зависит от мощности процессора.
В этом кратком руководстве мы сделаем первый шаг по запуску узла Ethereum 2.0: включение Beacon Chain через клиент Lighthouse. Если вы хотите запустить Валидатор, пожалуйста, ознакомьтесь с нашим Руководством пользователя, чтобы получить пошаговую инструкцию объяснение.
Для включения и запуска Lighthouse Eth3.0 Beacon Chain, выполните следующие действия:
1. Откройте порт 9000 на вашем маршрутизаторе , чтобы Lighthouse мог обнаруживать и подключаться другим одноранговым узлам (протоколы
UDP
иTCP
).Включите службу и запустите it:
sudo systemctl включить маяк-маяк sudo systemctl запускает маяк-маяк
Теперь Lighthouse подключится к клиенту Geth Eth2.0 и начнет синхронизацию Цепь маяка.
Вы можете получить журналы клиента, запустив:
sudo journalctl -u маяк-маяк -f
Подсказка
Рекомендуется дождаться синхронизации клиента Geth (это займет около полутора дней) перед включением и запуском цепочки маяков.
На одном Raspberry Pi 4 (модель с 8 ГБ ОЗУ) можно запускать и узлы Eth2.0, и Eth3.0. Мы уже были делая ставки с нулевого дня с Geth в качестве поставщика Eth2.0 и Lighthouse в качестве клиента Eth3.0 на нашем Raspberry Pi 4.
Однако важно иметь запасной план. Мы рекомендуем установить запасное устройство с узлом Ethereum 1.0. синхронно готов к работе, если что-то пойдет не так.
Ethereum Geth: установка и запуск узла
Ethereum Geth: установка и запуск узлаДля того, чтобы участвовать в цепочке блоков, обычно необходимо запустить клиентское программное обеспечение в той или иной форме, реализующее функции, необходимые для того, чтобы стать узлом. Даже для таких действий, как простая отправка транзакции в сеть, обычно требуется узел. Участие в блокчейне Ethereum может быть выполнено с помощью Ethereum Geth, интерфейса командной строки для запуска узла в сети Ethereum, который был реализован с использованием языка программирования Go.
Целью Ethereum всегда было предоставление ряда различных реализаций клиентского программного обеспечения, написанных на разных языках программирования, которые будут способствовать развитию разнообразной экосистемы внутри Ethereum.Однако на сегодняшний день наиболее зрелой реализацией Ethereum является Go Ethereum, сокращенно Geth. Хотя есть и другие клиенты, в частности Parity, Geth можно рассматривать как фактическую эталонную реализацию для запуска узла Ethereum.
В этой статье мы обсуждаем Ethereum Geth, его архитектуру и то, как его можно использовать для запуска узла Ethereum или легкого клиента.
Архитектура Ethereum Geth Приведенная выше диаграмма иллюстрирует архитектуру клиента Ethereum Geth на высоком уровне. На самом низком уровне протокол одноранговой сети (P2P) отвечает за обмен данными в сети, а также за обнаружение одноранговых узлов в сети. Механизмы коммуникации, используемые на этом уровне, основаны на алгоритме сплетен. Этот классический алгоритм распределенных систем восходит к 1980-м годам и моделирует сетевое взаимодействие на основе того, как эпидемии или слухи распространяются среди населения. Идея проста, но действенна: узлы в сети ретранслируют сообщения другим узлам, к которым они напрямую подключены, эти узлы могут рассматриваться как их соседи.В конце концов, каждый узел должен получать ретранслируемые сообщения по мере их распространения по всей сети.Помимо механизма P2P, Ethereum Geth реализует три основных модуля. Помимо фактической реализации клиента Ethereum, Geth также включает Swarm и Whisper. Swarm — это распределенная файловая система, похожая на межпланетную файловую систему (IPFS), которая предназначена для дешевого и децентрализованного хранения больших объемов данных. Whisper — это децентрализованный протокол обмена сообщениями, который обеспечивает связь между конечными точками, не полагаясь на транзакции блокчейна.
Фактический модуль, специфичный для Ethereum, реализует виртуальную машину Ethereum для обработки транзакций. Состояние блокчейна хранится в базе данных ключ-значение LevelDB. Чтобы приложения могли подключаться к работающему экземпляру Geth, предоставляется JSON RPC API. Это можно использовать для подключения напрямую или через языковую библиотеку, например web3.js.
УстановкаУстановить Geth относительно просто. Бинарные пакеты для Mac OS X, Windows и Linux можно найти на странице загрузки последней версии проекта.Эти пакеты включают автономные предварительно скомпилированные двоичные файлы, которые в большинстве случаев можно запускать из коробки. Также можно использовать существующие менеджеры пакетов операционной системы, такие как Homebrew в Mac OS X:
- кран для заваривания Ethereum / ethereum
- brew установить ethereum
Пуристы или пользователи необычных бинарных платформ также могут создавать Ethereum Geth из исходников. Его даже можно использовать для установки Geth на небольшие устройства, такие как Raspberry Pi (только легкий клиент). Для этого требуется компилятор Go.Установка Go зависит от платформы, но для всех основных операционных систем существуют готовые пакеты.
После установки Go встает вопрос о загрузке последней версии исходного пакета Geth со страницы выпуска или клонировании репозитория GitHub:
- git clone https://github.com/ethereum/go-ethereum
Geth можно затем собрать, выполнив следующую команду в каталоге исходного кода:
Полученный двоичный файл может быть запущен из любого места, но обычно рекомендуется переместить исполняемый файл в общий системный каталог в пределах пути выполнения операционной системы, чтобы гарантировать, что он может работать так же, как и любой другой двоичный файл операционной системы.
Создание учетных записей и подключение к блокчейну EthereumПосле установки Geth его можно запустить, набрав:
Однако есть несколько вещей, которые стоит учесть в первую очередь. Во-первых, ни один клиент Ethereum не может многое сделать без учетной записи Ethereum. Geth может импортировать существующие закрытые ключи или создавать новые. Новая пара ключей создается с помощью следующей команды:
Другой важный вопрос — это режим синхронизации, который следует использовать. Geth можно использовать только после того, как он синхронизировал свое состояние с блокчейном.Это может занять много времени, в зависимости от того, сколько состояния должно быть загружено. Есть три режима синхронизации, которые можно установить с помощью следующей команды:
Опции для режима синхронизации: «быстрый», «полный» или «легкий», при этом программное обеспечение по умолчанию использует «быстрый», если не указан режим синхронизации. «Полный» загружает все заголовки блоков, данные блоков и проверяет все транзакции. Выбор «быстро» ускоряет это за счет проверки только самой последней истории транзакций в цепочке блоков Ethereum. Наконец, «light» загружает текущее состояние, но не выполняет никакой проверки. Легкий узел будет полагаться на своих сверстников для обработки и проверки транзакций, инициированных в цепочке блоков.
Запуск Ethereum GethПосле запуска Geth можно взаимодействовать с ним через интерфейс JSON RPC. Легкий способ сделать это — использовать сам исполняемый файл Geth для подключения к работающему экземпляру:
Откроется консоль JavaScript, которая позволяет использовать команды web3.js. Например, чтобы проверить, синхронизирован ли уже запущенный экземпляр с сетью Ethereum, можно использовать следующую команду:
Список учетных записей можно увидеть с помощью следующей команды:
Конечно, с Geth также можно взаимодействовать из других языков программирования, которые поддерживают привязки для JSON RPC API, или вы можете напрямую отправлять команды в формате JSON в API.Geth предоставляет API через порт 8545, но его, возможно, придется включить при запуске, добавив следующий параметр командной строки:
Фактически, Geth поддерживает ряд полезных параметров командной строки для изменения поведения по умолчанию, например сети, к которой он подключается. Полный список опций можно найти в официальной документации.
Практическое занятие: создание собственного локального частного узла Geth (для начинающих)
Это подробное пошаговое руководство, которое поможет вам начать работу с блокчейном.В учебном пособии будет рассмотрен каждый шаг в создании локальной блокчейн-сети Ethereum для тестовой сети с использованием Geth. Geth — это интерфейс командной строки для запуска полного узла Ethereum, реализованного в Go. Вы можете добывать настоящий эфир (если вы в основной сети), переводить средства между адресами, создавать смарт-контракты, совершать транзакции, исследовать цепочку, использовать Web3 и т. Д. Это идеально подходит для тестирования dApps или просто для игры с ним.
Если вы новичок в сфере блокчейнов и хотите на практике ощутить эту новаторскую, но немного загадочную технологию, это руководство для вас.
Это будет подробное пошаговое руководство, которое поможет вам начать работу с блокчейном Ethereum. Так что не волнуйтесь, я расскажу о каждом шаге.
Источник: https://tenor.com/Что будем строить?
Блокчейн Ethereum в локальной тестовой сети с использованием Geth.
- Локально: Этот блокчейн будет работать только на вашем компьютере (формально, на узле) локально.
- Testnet : не будет майнить настоящие эфиры. Только фейковые. Он идеально подходит для тестирования децентрализованных приложений или просто для игры.
Предварительные требования
- MacOS
- Homebrew (Ссылка для скачивания: https://brew.sh/)
- XCode (Получить из AppStore)
Настройка среды разработки
Шаг 0: Загрузить Geth с помощью Homebrew
Запустите свой терминал и введите следующую команду. Убедитесь, что у вас уже установлен Homebrew, иначе эта команда вам не подойдет.
$ brew tap ethereum / ethereum
Эта команда клонирует репозиторий Ethereum в папку вашей библиотеки на Mac.
Чтобы установить geth, выполните следующую команду:
Viola, geth установлен.
Прежде чем идти дальше, позвольте мне прояснить
, что такое Gethgeth
— это интерфейс командной строки для запуска полного узла Ethereum, реализованного в Go. Вы можете добывать реальный эфир (если вы находитесь в основной сети), переводить средства между адресами, создавать смарт-контракты, совершать транзакции, исследовать цепочку, использовать Web3 и т. Д.Чтобы узнать больше, см. Этот ресурс:
Давайте приступим к делу. младенец!
Генезис-блок, специальный блок
Каждый блокчейн имеет генезисный блок, то есть первый блок.Высота этого блока — 1. Он не содержит транзакций. Все последующие блоки добавляются к этому блоку.
Вы можете просмотреть блок генезиса основной сети Ethereum здесь: https://etherscan.io/block/0
Для нашей тестовой сети мы должны создать блок генезиса.
Инструмент, используемый для создания блока генезиса: puppeth
Шаг 1: Создайте блок генезиса
Создайте любой каталог, в котором вы хотите хранить данные блокчейна.
$ mkdir -p ethereum-tutorial && cd ethereum-tutorial
Создайте личную папку
cd
в ней.$ mkdir -p private && cd private
Откройте свой терминал и напишите следующую команду:
Должно появиться что-то вроде этого, и вам будет предложено указать имя сети для администрирования . Введите имя вашей цепочки блоков. Я использовал нихарикатестнет. Вы можете использовать любое имя.
Будет задан ряд вопросов. Продолжайте отвечать.
Наконец, выйдите из интерфейса марионеток, нажав Ctrl + c.
Если вы сейчас прочитаете содержимое личной папки, вы увидите несколько файлов.
Нас будет интересовать
niharikatestnet.json
Шаг 2. Инициализировать генезисный блок
Пришло время создать
chaindata
ихранилище ключей
для локального блокчейна.chaindata
будет хранить все данные, связанные с цепочкой блоков, а хранилище ключейИспользуя терминал, введите следующую команду:
$ geth --datadir ~ / ethereum-tutorial / private init niharikatestnet.json
Успешно записано состояние генезиса. Woohoo!
Вы должны увидеть папки
chaindata
иkeystore
.Шаг 3. Создание учетных записей
Нам нужно создать учетные записи в этой цепочке блоков, чтобы поиграть с ней.
$ geth --datadir. account new
Для каждой создаваемой учетной записи необходимо ввести пароль для доступа к этой учетной записи. Введите пароль по вашему выбору.
Вы получите уникальный адрес для аккаунта.
Давайте создадим еще 2 аккаунта, используя тот же процесс.
Итак, для просмотра всех созданных нами учетных записей:
$ geth --datadir. список учетных записей
Шаг 4: Напишите сценарий оболочки для запуска цепочки блоков
В любом текстовом редакторе создайте файл с именем
startnode. sh
в частной папкеgeth --networkid 4224 --mine --minerthreads 1 --datadir "~ / Desktop / Playground / ethereum-tutorial / private" --nodiscover --rpc --rpcport "8545" --port "30303" - rpccorsdomain "*" --nat "any" --rpcapi eth, web3, personal, net --unlock 0 --password ~ / ethereum-tutorial / private / password.sec --ipcpath "~ / Library / Ethereum / geth.ipc"
Убедитесь, что вы написали все это в одной строке.
Создайте еще один файл с именем
password.sec
в папкеprivate
.Введите пароль для первой созданной учетной записи и сохраните его.
Чтобы сделать этот скрипт исполняемым, напишите в терминале:
Выполните этот скрипт:
Это запустит бесконечный вывод. Это блокчейн. Наш блокчейн запущен.
Дождитесь создания всех групп DAG.Посередине вы можете увидеть, что идет майнинг. Это поместит фальшивые эфиры в первую учетную запись.
Шаг 5: Подключитесь к запущенному geth
Давайте подключимся к этому узлу geth. На другой вкладке в терминале запустите команду.
Вы войдете в консоль Geth Javascript. Здесь вы можете запустить код JavaScript.
Это означает, что вы успешно подключились! Ура!
Источник: https://tenor.com/Шаг 6: Запрос блокчейна
Давайте посмотрим, какие учетные записи присутствуют в этом блокчейне.
Это покажет 3 учетных записи, которые мы создали ранее.
Чтобы получить баланс счетов:
> eth.getBalance (eth.accounts [0])
Это покажет баланс в Wei. Чтобы преобразовать это в эфир, сделайте следующее:
> web3.fromWei (eth.getBalance (eth.accounts [0]), "ether")
Информация: Остановить майнинг или начать майнинг
Если вы хотите остановить процесс майнинга :
Если вы хотите начать процесс майнинга:
Шаг 7: Сделайте транзакции
Давайте отправим несколько эфиров с одного аккаунта на другой.
Мы отправим эфириум с учетной записи Coinbase (учетной записи, которая занимается майнингом эфиров) на любую из двух других учетных записей.
> eth.sendTransaction ({from: eth.coinbase, to: eth.accounts [1], value: web3.toWei (10, "ether")})
Будет возвращен хэш транзакции.
Теперь давайте узнаем баланс 2-го счета.
> web3.fromWei (eth.getBalance (eth.accounts [1]), "ether")
Теперь, если вы вернетесь на вкладку, где работает блокчейн, вы увидите транзакцию.
Поскольку JavaScript выполняется на консоли Geth, вы даже можете развернуть на ней смарт-контракты.
Это конец данного руководства. 🙂
Надеюсь, у вас остались приятные впечатления.
Похожие статьи
Теги
Запуск узла локально — Web3j
Web3j взаимодействует с клиентскими узлами Ethereum. Если вы не хотите подключаться к одной из существующих сетей, у вас есть разные варианты запуска локального узла.
Используйте Geth, Besu или OpenEthereum
Гет:
$ geth --rpcapi personal, db, eth, net, web3 --rpc --testnet
Hyperledger Besu:
Сеть
dev
использует несколько удобных параметров по умолчанию.OpenEthereum:
$ openethereum - тестовая сеть
Инструкции по получению эфира для транзакций в сети можно найти в раздел testnet документации.
Использовать Epirus Local
Epirus-local — это локальный клиент Ethereum, похожий на то, что предоставляет Ganache, написанный на Kotlin.
Этот проект использует web3-evm для выполнения запросов пользователей.
Характеристики
- Позволяет json-rpc взаимодействовать с локальным блокчейном Ethereum.
- Создает файл генезиса по умолчанию, содержащий 10 учетных записей Ethereum, или позволяет вам использовать собственный генезис.
- Предоставляет интерфейс командной строки для запуска клиента.
- Выполняет следующие операции:
-
eth_blockNumber
-
eth_getTransactionCount
-
eth_getBalance
-
eth_sendTransaction
-
eth_sendRawTransaction
-
eth_estimateGas
-
eth_getBlockTransactionCountByHash
-
eth_getBlockTransactionCountByNumber
-
eth_getTransactionReceipt
-
eth_getCode
-
eth_call
-
Начало работы
git clone https: // github. com / epirus-io / epirus-local && cd epirus-local
./gradlew installDist
Запуск в Linux:
build / install / epirus-local / bin / epirus-local [команда]
Запуск в Windows
build \ install \ epirus-local \ bin \ epirus-local.bat [команда]
Запустить клиент
epirus-local start -d = / путь / к / каталогу -p = 9090
Эта команда генерирует новый файл генезиса с 10 учетными записями, заполненными 100 эфирами.
Загрузить из предыдущей конфигурации
локальная загрузка эпируса -g = / путь / к / генезис
Эта команда загружает уже существующий генезис-файл с определенного пути.
Отправить запросы
Пример запроса
curl -X POST --data '{"jsonrpc": "2.0", "method": "eth_sendTransaction", "params": [{ "от": "0x8f496c16955a7bb9b5e1ea0383d01f87372ab520", «в»: «0xd46e8dd67c5d32be8058bb8eb970870f07244567», "газ": "0x76c0", "gasPrice": "0x9184e72a000", "значение": "0x9184e72a", «nonce»: «0x1» }], "id": 1} 'хост: порт
Пример ответа
{"id": 1, "jsonrpc": "2.