Jak nastavit soukromou blockchain testovací sítě Ethereum pomocí Geth a Homebrew

Výukový program pro zahájení vašich programovacích ambicí Solidity!

Obrázek z https://themerkle.com

O mně

Ahoj! Jmenuji se Lander. Jsem nezávislý softwarový inženýr a tvůrce produktů z Belgie. Když se nezabíjím Solidity, pracuji na TeamHut, SaaS, který pomůže nezávislým pracovníkům a digitálním týmům organizovat a sdílet jejich digitální obsah.

O tomto tutoriálu

Tento tutoriál je interpretací různých zdrojů, které mi pomohly nastartovat a spustit nastavení mého prvního soukromého blockchainu testovací sítě Ethereum pomocí Geth a Homebrew. Slouží jako budoucí reference pro sebe a jako pomoc dalším nadšencům krypty. Snažil jsem se uvést většinu svých zdrojů na konci tohoto článku. Prosím, dejte mi vědět, pokud máte pocit, že něco chybí.

Soukromý etereum testnet blockchain

Software Ethereum umožňuje uživateli nastavit řetězec Ethereum „soukromý“ nebo „testnet“, který je oddělený od hlavního řetězce Ethereum. To je užitečné pro testování distribuovaných aplikací postavených na Ethereum, aniž byste museli vystavovat své aplikace skutečné síti Ethereum pomocí skutečného Ether. Buď předgenerujete nebo těžíte svůj vlastní éter ve svém soukromém řetězci Ethereum, takže je to mnohem nákladově efektivnější způsob vyzkoušení Ethereum. Už jsem řekl Ethereum dost?

Pojďme Geth crackin

Co pro tento tutoriál potřebujete?

Několik předpokladů

  • Používáte MacOS
  • Jste nadšenec pro vývoj krypto a / nebo softwaru, který chce udělat první kroky k vytváření inteligentních smluv.
  • Víte, co je Ethereum, a rozumíte jeho základnímu použití.
  • Máte základní znalosti o používání terminálu MacOS.

Co dosáhnete?

Po úspěšném dokončení tohoto tutoriálu budete mít na místním počítači spuštěnou plně funkční soukromou blockchain testovací sítě Ethereum.

Tato soukromá testovací síť vám umožní vyvinout a otestovat vaše současné aplikace Dapps (Decentralized Apps) izolovaně od skutečné blockchainu Ethereum.

Slovník

Co je to Homebrew?

Homebrew nainstaluje věci, které Apple nepotřeboval. Nedělám si srandu, to je to, co říká jejich web. Jděte a podívejte se na to, je to úžasné.

Co je Ethereum?

Ethereum je špičková distribuovaná výpočetní platforma založená na blockchainu, která obsahuje inteligentní smluvní funkce. Poskytuje decentralizovaný virtuální stroj, Ethereum Virtual Machine (EVM), který může provádět smlouvy typu peer-to-peer pomocí krypto-paliva zvaného Ether.

Zde si přečtěte dokument white paper.

Co je Geth?

geth je rozhraní příkazového řádku pro spuštění úplného uzlu ethereum implementovaného v Go. Je to hlavní výstup Frontier Release.

Instalací a spuštěním geth se můžete účastnit živé sítě ethereum, důlního etheru na blockchainu, převádět prostředky mezi adresami, vytvářet smlouvy a odesílat transakce.

VAROVÁNÍ
Před použitím geth nebo interakcí s live sítí ethereum Frontier si přečtěte dokumentaci a plně pochopte námitky a rizika.

Tutorial

Jak nainstalovat homebrew

Pokud jste tak ještě neučinili, spusťte terminál a začněte instalací Homebrew:

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

Pokud jste již Homebrew nainstalovali dříve, ujistěte se, že je aktuální:

vařit aktualizaci
vařit upgrade

Jak nainstalovat Geth

Nejjednodušší způsob instalace Geth (go-ethereum) je použití kohoutku Homebrew

vařit kohoutek ethereum / ethereum
vařit instalaci ethereum

Otestujte, zda byla instalace úspěšná spuštěním

geth verze

Tím by se měla zobrazit vaše aktuálně nainstalovaná verze Geth:

Geth
Verze: 1.6.7-stabilní
Závazek Git: ab5646c532292b51e319f290afccf6a44f874372
Architektura: amd64
Verze protokolu: [63 62]
ID sítě: 1
Go verze: go1.8.3
Operační systém: darwin
GOPATH =
GOROOT = / usr / local / Cellar / go / 1.8.3 / libexec

Jak vidíte, v současné době používáme Geth verzi 1.6.7.
Nezapomeňte také zkontrolovat různé možnosti a příkazy pomocí geth --help!

Pojďme být nebezpeční

Pojďme získat nebezpečí - https://giphy.com/gifs/oadZJB3hwMFjy

Připojení k testovací síti

Začněme vytvořením bloku geneze pro vaši soukromou testovací blockchain. Genesis blok je začátek blockchainu - první blok, blok 0, a jediný blok, který neukazuje na předchozí blok. Protokol zajišťuje, že žádný jiný uzel nebude souhlasit s vaší verzí blockchainu, pokud nebude mít stejný genezní blok, takže můžete vytvořit tolik soukromých blockchainů testovací sítě, kolik byste chtěli! (Viz dokumentace)

Vytvořte a uložte soubor * .json s názvem CustomGenesis.json a vložte do něj tento obsah:

Sidenote
Jak je uvedeno v tomto příspěvku na blogu, je k dispozici nástroj Python pro vygenerování vlastního vlastního souboru Genesis. Pro jednoduchost stačí vložit tento příklad:
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "obtížnost": "0x400",
    "gasLimit": "0x2100000",
    "alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"zůstatek": "0x133700000000000000000000"}
    }
}

Soubor funguje jako „semeno“ pro vaši soukromou testovací síť.

Sidenote
Snížili jsme obtížnost na 400, takže těžba nových bloků jde rychleji.

Všimněte si, že jsme do objektu "alloc" přidali naši adresu 93f932b3b87e08cdaf0877994e44feb4c93e81aa a že jsme mu dali zůstatek 133700000000000000000000 wei (1337 ETH):

"alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"zůstatek": "0x133700000000000000000000"}
    }

Tuto techniku ​​můžete použít k předběžnému financování vašeho účtu. Můžete definovat více účtů, které mají být zahrnuty do zárodku. Tento krok je volitelný, protože Ether můžete snadno těžit sami, protože máte kontrolu nad (nízkou) obtížností!

Při inicializaci bloku geneze pomocí následujícího příkazu budete odkazovat na tento soubor (CustomGenesis.json):

geth --identity "MyTestNetNode" --nodiscover --networkid 1999 --dadadir / cesta / k / test-net-blockchain init /path/to/CustomGenesis.json
Profesionální tip
Používám vlastní příznak „datadir“ k oddělení testch blockchainu od skutečného. Navrhuji, abyste to udělali také. Může to být libovolná složka.
Chcete-li se dozvědět více o dalších použitých vlajkách, přejděte prosím do dokumentace.

Vytvoření účtu v privátní síti tesnet

Vytvořte nebo vyhledejte adresář, do kterého byste chtěli ukládat svá data soukromých testovacích sítí. V tomto příkladu budeme používat

/ path / to / test-net-blockchain

Po úspěšném spuštění předchozího příkazu geth --version spusťte

geth account new --datadir / path / to / test-net-blockchain

Tento příkaz vás požádá o heslo (= heslo). Nezapomeň tohle.

Profesionální tip
Používám vlastní příznak „datadir“, abych naznačil, že bych rád použil svůj osobní lokální testet. To ji udržuje odděleně od skutečné testovací sítě.
Ve výchozím nastavení použije geth stejný adresář pro soubory související se sítí jako pro veřejnou síť. Proto vám doporučujeme nastavit vlastní - datadir, aby nedocházelo k resetování chaindat ve veřejné síti.
Další informace o tom naleznete v dokumentaci.

Tím vytvoříte účet ve svém čerstvém uzlu testnet a vrátí soukromou adresu testetu takto:

Adresa: {93f932b3b87e08cdaf0877994e44feb4c93e81aa}

Tuto adresu a heslo uložte pro pozdější použití.

Předběžné financování vašeho účtu

Toto je volitelný krok. Vzhledem k tomu, že obtížnost je tak nízká, bude trvat jen pár minut, než stačíte dostatek éteru, abyste se dostali.

Začněte odstraněním dříve vytvořené databáze blockchain:

geth removb --datadir / path / to / test-net-blockchain

Aktualizujte svůj soubor CustomGenesis.json:

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "obtížnost": "0x400",
    "gasLimit": "0x2100000",
    "alloc": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"zůstatek": "0x133700000000000000000000"}
    }
}

Všimněte si, že jsme do objektu "alloc" přidali naši adresu 93f932b3b87e08cdaf0877994e44feb4c93e81aa a že jsme mu dali zůstatek 133700000000000000000000 wei (1337 ETH):

Můžete definovat více účtů, které chcete zahrnout do zárodku.

Znovu spusťte příkaz inicializace bloku Genesis

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

Pokud jste nedělali předběžné financování

Tento příkaz použijte po spuštění konzoly JavaScript (viz další krok: „Interakce s konzolou Geth“):

geth --identity "MyTestNetNode" --dadadir / cesta / do / test-net-blockchain - nodiscover - konzole sítě 1999

Komunikujte s konzolou Geth

Chcete-li komunikovat s Geth skrz konzoli, nazvanou konzola Geth JavaScript Console:

geth --identity "MyTestNetNode" --dadadir / cesta / do / test-net-blockchain - nodiscover - konzole sítě 1999

Pokud to proběhlo úspěšně, mělo by se zobrazit potvrzení:

Pokud uvidíte tuto zprávu, můžete spustit příkazy Geth JavaScript.
Zkuste použít tento účet ke kontrole zůstatku vašeho primárního účtu

web3.fromWei (eth.getBalance (eth.accounts [0]), „ether“)
Profesionální tip
Uložte tyto dlouhé příkazy Geth do samostatných souborů * .sh, abyste mohli později použít konfiguraci (a její vlastní příznaky). To budete potřebovat pokaždé, když budete chtít použít (vlastní) soukromou testovací síť.

Struktura složek

Čistě informační struktura vypadá takto:

Moje struktura složek

Jak vidíte, vytvořil jsem nějaký skript * .sh, který bych později mohl znovu použít.

*AKTUALIZACE*
Vytvořil jsem úložiště obsahující ty, které jsem použil jako odkaz pro tento článek: https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

Obrázek z https://giphy.com/gifs/hoppip-charlie-chaplin-film-hoppip-S7i2sED2yfDGg

Gratulujeme!

Nyní máte na svém osobním počítači funkční soukromou blockchain testovací sítě Ethereum a účet / peněženku. Nyní můžete začít těžit, odesílat transakce atd. V blízké budoucnosti budu psát některé nové články týkající se těchto témat.

Užitečné příkazy / tipy

  1. geth odstraněnb
    Odstraní / odebere lokálně synchronizovaná data blockchainu z veřejné testovací sítě.
  2. geth removb --datadir / path / to / test-net-blockchain
    Vymaže / odebere vaše soukromá data testovací sítě blockchain.
  3. geth - fast --cache = 1024
    Synchronizuje blockchain rychleji. Pokud se rozhodnete použít příznak - fast k provedení rychlé synchronizace Ethereum, nezachováte si minulá transakční data.
  4. Když používáte geth attach při spuštění soukromé testovací sítě,
    nezapomeňte zahrnout koncový bod IPC.
    Koncový bod IPC se zobrazí při spuštění konzoly JavaScriptu Geth
    jako takový: Otevřen koncový bod IPC: /path/to/endpoint/geth.ipc
    Připojte cestu k vašemu příkazu tak, aby se stal:
    geth attach /path/to/endpoint/geth.ipc

Příkazy konzoly Geth JavaScript

Tyto příkazy použijte, jakmile se přihlásíte do konzoly Geth.

  1. Pokud se zobrazí chybová zpráva „Chyba: je třeba ověření: heslo nebo odemknout“, pomocí tohoto příkazu odemkněte svůj primární účet v konzole JavaScript Geth:
    personal.unlockAccount (eth.coinbase, 'heslo k účtu v uvozovkách', 0)
  2. Chcete-li zkontrolovat zůstatek svého primárního účtu
web3.fromWei (eth.getBalance (eth.accounts [0]), „ether“)

3. Chcete-li zobrazit seznam čekajících transakcí

eth.pendingTransactions

Užitečné odkazy

  • Ethereum docs
  • Geth JavaScript Console Wiki
  • Etherscan - průzkumník bloků Ethereum a platforma Analytics
  • Monitor statistik sítě Ethereum
  • https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

Díky

Lidé

  • Vitalik Buterin
  • Joseph Lubin

Zdroje

  • Ethereum docs
  • https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac

Děkuji za přečtení!

Rád bych od vás slyšel a věděl, co si myslíte. Prosím, dejte mi vědět, pokud si myslíte, že něco chybí. Pokud chcete zůstat v kontaktu, odpovězte na tento příspěvek níže, sledujte mě na Twitteru nebo se zaregistrujte k odběru novinek pomocí níže uvedeného formuláře.