Как да настроите частен блокчейн на Ethereum за използване чрез Geth и Homebrew

Учебен урок за изстрелване на амбициите ви за програмиране Solidity!

Изображение от https://themerkle.com

За мен

Здравейте! Казвам се Ландър. Аз съм софтуерен инженер на свободна практика и създател на продукти от Белгия. Когато не мисля за Solidity, работя върху TeamHut, SaaS, за да помагам на фрийлансъри и дигитални екипи да организират и споделят цифровото си съдържание.

За този урок

Този урок е интерпретация на различни ресурси, които ми помогнаха да ставам и работя при настройването на моя първи частен блокчейн Ethereum blocknet с помощта на Geth и Homebrew. Той служи като бъдеща справка за самия мен и като помощ за други ентусиасти на крипто. Опитах се да изброя повечето от ресурсите си в края на тази статия. Моля, уведомете ме, ако чувствате, че нещо липсва.

Частна блокчейн Ethereum testnet

Софтуерът Ethereum позволява на потребителя да настрои „частна” или „тестнет” верига Ethereum, която е отделна от основната верига Ethereum. Това е полезно за тестване на разпределени приложения, изградени на Ethereum, без да се налага да излагате приложенията си в реалната Ethereum мрежа с помощта на истински Ether. Или предварително генерирате, или руднете собствения си етер във вашата частна верига Ethereum, така че е много по-рентабилен начин да изпробвате Ethereum. Казах достатъчно Ethereum?

Нека Geth crackin "

Какво ви трябва за този урок?

Няколко предположения

  • Използвате MacOS
  • Вие сте ентусиаст за разработване на криптовалута и / или софтуер, който иска да направи първите си стъпки в писането на интелигентни договори.
  • Знаеш какво е Ethereum и разбираш, че това е основното използване.
  • Имате основно разбиране за използването на MacOS терминали.

Какво ще постигнете?

След успешното завършване на този урок, ще имате напълно функционален частен блокчейн Ethereum testnet, работещ на вашия локален компютър.

Този частен тестнет ще ви позволи да разработите и тествате текущите си Dapps (децентрализирани приложения) в изолация от реалния блокчейн Ethereum.

Речник

Какво е Homebrew?

Homebrew инсталира необходимите неща, които Apple не е имал. Не се шегувам, това казва техният уебсайт Отидете и проверете, страхотно е.

Какво е Ethereum?

Ethereum е авангардна разпределена изчислителна платформа на базата на блокчейн, включваща интелигентна функционалност на договора. Той осигурява децентрализирана виртуална машина, виртуалната машина на Ethereum (EVM), която може да изпълнява партньорски договори с помощта на крипто гориво, наречено Ether.

Прочетете бялата книга тук.

Какво е Гет?

geth е интерфейсът на командния ред за изпълнение на пълен възел ethereum, реализиран в Go. Това е основният резултат от Frontier Release.

Инсталирайки и стартирайки geth, можете да участвате в мрежата на ефириума на живо, да минавате етер върху blockchain, да прехвърляте средства между адреси, да създавате договори и да изпращате транзакции.

ВНИМАНИЕ
Преди да използвате geth или да взаимодействате с мрежата на ефириума Frontier на живо, не забравяйте да прочетете документацията и да разберете напълно предупрежденията и рисковете.

настойнически

Как да инсталирате Homebrew

Ако все още не сте го направили, запалете терминала си и започнете, като инсталирате Homebrew:

/ usr / bin / ruby ​​-e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ако вече сте инсталирали Homebrew преди това, уверете се, че е актуален:

актуализация на варенето
ъпгрейд на варенето

Как да инсталирате Geth

Най-лесният начин да инсталирате Geth (go-ethereum) е да използвате крана Homebrew

варя кран ethereum / ethereum
варя инсталирайте ethereum

Тествайте дали инсталацията е била успешна чрез стартиране

версия на гета

Това трябва да показва вашата инсталирана понастоящем версия на Geth:

Geth
Версия: 1.6.7-стабилна
Git ангажиране: ab5646c532292b51e319f290afccf6a44f874372
Архитектура: amd64
Версии на протокола: [63 62]
Идентификационен номер на мрежата: 1
Go версия: go1.8.3
Операционна система: darwin
GOPATH =
GOROOT = / ЮЕсАр / местни / изба / изпълнение / 1.8.3 / libexec

Както можете да видите, в момента работим с Geth версия 1.6.7.
Не забравяйте да проверите различните опции и команди и с geth --help!

Нека станем опасни

Да станем опасни - https://giphy.com/gifs/oadZJB3hwMFjy

Свързване към тестовата мрежа

Нека започнем със създаването на генезисен блок за вашата частна тестова блокчейн. Блокът за генезис е началото на blockchain - първият блок, блок 0 и единственият блок, който не сочи към блок предшественик. Протоколът гарантира, че никой друг възел няма да се съгласи с вашата версия на blockchain, освен ако те имат същия генезисен блок, така че можете да направите толкова много частни тестови блокчейн, колкото искате! (Вижте документацията)

Създайте и запишете * .json файл, наречен CustomGenesis.json и поставете това съдържание в него:

Sidenote
Както бе споменато в тази публикация в блога, има на разположение инструмент Python за генериране на собствен потребителски файл Genesis. За простота, можете просто да копирате паста този пример:
{
    "config": {
        "верига": 15,
        "farmteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
    "трудност": "0x400",
    "gasLimit": "0x2100000",
    "alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"баланс": "0x1337000000000000000000"}
    }
}

Файлът действа като "семе" за вашия личен тестнет.

Sidenote
Понижихме трудността до 400, така че извличането на нови блокове върви по-бързо.

Забележете, че добавихме адреса на акаунта си 93f932b3b87e08cdaf0877994e44feb4c93e81aa към обекта "alloc" и че му предоставихме баланс от 1337000000000000000000 wei (1337 ETH):

"alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"баланс": "0x1337000000000000000000"}
    }

Можете да използвате тази техника за предварително финансиране на вашия акаунт. Можете да определите няколко акаунта, които да включите в семената. Обърнете внимание, че тази стъпка е незадължителна, тъй като лесно можете сами да изкопаете етера, тъй като вие контролирате (ниската) трудност!

Ще се позовавате на този файл (CustomGenesis.json), когато инициализирате вашия генезисен блок, използвайки следната команда:

geth --identity "MyTestNetNode" --nodiscover --networkid 1999 --datadir / path / to / test-net-blockchain init /path/to/CustomGenesis.json
Професионален съвет
Използвам персонализиран флаг „datadir`, за да разделя блокчейнът на testnet от истинския. Предлагам да направите и вие. Това може да бъде всяка папка, която искате.
За да научите повече за другите използвани флагове, моля, отворете документацията.

Създаване на акаунт в частния tesnet

Създайте или намерете директория, в която искате да съхранявате местните си частни данни за тест. За този пример ще използваме

/ Път / до / тест-нето-blockchain

След като предишната команда geth --version се изпълни успешно, стартирайте

geth сметка new --datadir / път / до / test-net-blockchain

Тази команда ще ви поиска парола (= парола). Не забравяйте това.

Професионален съвет
Използвам персонализиран флаг на „datadir“, за да посоча, че бих искал да използвам моя личен локален тестнет. Това го държи отделено от истинския тестнет.
По подразбиране geth ще използва същата директория за файлове, свързани с мрежата, както и за публичната mainnet. По този начин се препоръчва да зададете персонализиран --datadir, за да не се нулират верижните данни на обществената мрежа.
За да научите повече за това, вижте документацията.

Това ще създаде акаунт на вашия нов възел testnet и ще върне личния адрес на testnet така:

Адрес: {93f932b3b87e08cdaf0877994e44feb4c93e81aa}

Запазете този адрес и паролата си за по-късна употреба.

Предварително финансирайте акаунта си

Това е незадължителна стъпка. Тъй като трудността е толкова малка, ще ви отнеме само няколко минути, за да мините достатъчно етер, за да продължите.

Започнете с премахването на създадената по-рано база данни на blockchain:

geth отстранен --datadir / път / до / тест-net-blockchain

Актуализирайте файла си „CustomGenesis.json“:

{
    "config": {
        "верига": 15,
        "farmteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
    "трудност": "0x400",
    "gasLimit": "0x2100000",
    "alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"баланс": "0x1337000000000000000000"}
    }
}

Забележете, че добавихме адреса на акаунта си 93f932b3b87e08cdaf0877994e44feb4c93e81aa към обекта "alloc" и че му предоставихме баланс от 1337000000000000000000 wei (1337 ETH):

Можете да определите няколко акаунта, които да включите в семената.

Изпълнете командата за инициализация на блока Genesis отново

geth --identity "MyTestNetNode" --nodiscover --networkid 1999 --datadir / path / to / test-net-blockchain init /path/to/CustomGenesis.json

Ако не сте извършили предварителното финансиране

Използвайте тази команда след стартиране на JavaScript конзолата (вижте следващата стъпка: „Взаимодействайте с конзолата Geth“):

geth --identity "MyTestNetNode" --datadir / път / към / тест-net-blockchain --nodiscover - networkid конзола 1999

Взаимодействайте с конзолата Geth

За да взаимодействате с Geth през конзолата, наречена използване на Geth JavaScript Console:

geth --identity "MyTestNetNode" --datadir / път / към / тест-net-blockchain --nodiscover - networkid конзола 1999

Ако тече успешно, трябва да видите потвърждение:

Ако видите това съобщение, можете да започнете да изпълнявате Geth JavaScript команди.
Опитайте се да използвате този, за да проверите баланса на основния си акаунт

web3.fromWei (eth.getBalance (eth.accounts [0]), "етер")
Професионален съвет
Съхранявайте тези дълги Geth команди в отделни * .sh файлове, за да можете да използвате отново конфигурацията (и това е персонализирани флагове) по-късно. Това ще ви трябва всеки път, когато искате да използвате своя (персонализиран) личен тестнет.

Структура на папките

Чисто информативна, изглежда така структурата на папките ми:

Структура на папката ми

Както можете да видите, създадох някакъв * .sh скрипт, за да го използвам по-късно.

* UPDATE *
Създадох хранилище, съдържащо тези, които използвах като ориентир за тази статия: https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

Изображение от https://giphy.com/gifs/hoppip-charlie-chaplin-film-hoppip-S7i2sED2yfDGg

Честито!

Вече имате функциониращ частен тест блокчейн Ethereum и акаунт / портфейл, работещ на вашия личен компютър. Вече можете да започнете майнинг, да изпращате транзакции и др. Ще напиша нови статии по тези теми в близко бъдеще.

Полезни команди / съвети

  1. geth отстраненb
    Изтрива / премахва вашите локално синхронизирани данни от blockchain от публичния тестнет.
  2. geth отстранен --datadir / път / до / тест-net-blockchain
    Изтрива / премахва вашите лични данни от тест-блокчейн.
  3. geth --fast --cache = 1024
    Синхронизира по-бързо блокчейн. Ако решите да използвате флаг - бърз за извършване на бърз синхрон на Ethereum, няма да запазите данните за минали транзакции.
  4. Когато използвате geth attach, когато използвате частен тест,
    не забравяйте да включите крайната точка на IPC.
    Крайната точка на IPC се показва при стартиране на вашата Geth JavaScript конзола
    като такъв: IPC крайна точка отворена: /path/to/endpoint/geth.ipc
    Прикачете пътя към вашата команда, така че да стане:
    geth attach /path/to/endpoint/geth.ipc

Geth команди на конзолата на JavaScript

Използвайте тези команди, след като сте влезли в конзолата Geth.

  1. Ако получите грешка, казваща „Грешка: необходимо е удостоверяване: парола или отключване“, използвайте тази команда, за да отключите основния си акаунт в конзолата на Geth JavaScript:
    personal.unlockAccount (eth.coinbase, „паролата на вашия акаунт в кавички“, 0)
  2. За да проверите баланса на основния си акаунт
web3.fromWei (eth.getBalance (eth.accounts [0]), "етер")

3. За да видите списък на чакащи транзакции

eth.pendingTransactions

Полезни връзки

  • Документи Ethereum
  • Geth JavaScript Console Wiki
  • Etherscan - Ethereum Block Explorer и Analytics платформа
  • Монитор на статистиката на Ethereum Network
  • https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

Благодарение на

хора

  • Виталик Бутерин
  • Йосиф Любин

ресурси

  • Документи Ethereum
  • https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac

Благодаря за четенето!

Бих искал да чуя от вас и да знам какво мислите. Моля, уведомете ме, ако смятате, че нещо липсва. Ако искате да поддържате връзка, отговорете на тази публикация по-долу, следвайте ме в Twitter или се регистрирайте в бюлетина ми, като използвате формата по-долу.