Kuinka: Luo oma yksityinen Ethereum Blockchain

Tämän viikon kehityskohdat

  • Pölypalvelimen päivityksen julkaiseminen tänään, jotta asiakkaan paikallisiin aikavyöhykkeisiin perustuvat sisäänkirjautumispalkkiot sisällytettäisiin
  • Android- ja iOS-asiakaspäivitykset ovat tällä hetkellä laadunvarmistuksessa, ja ne julkaistaan ​​ensi viikolla sisältäen mainostetut räjähdykset, jotka on nyt merkitty mainostetuiksi, vanhat pölykaapit saavat nyt palkintoja sekä muita suorituskyvyn parannuksia ja virhekorjauksia.
  • Palkintojen analyyttisen suunnittelun valmistelua varten siirtymiseen mainnettiin
  • Ethereum-kaasukustannusten maksutavan kehittäminen ERC-20-tokenilla
  • Erilaisten mekanismien tutkiminen sisällön tallentamiseksi lohkoketjuun

Kuinka: blockchain

Tämä viesti merkitsee ensimmäistä uutta ”Kuinka” -sarjassa, jonka tavoitteena on tarjota helppolukuisia ohjeita aiheista, jotka kehittäjät ovat löytäneet erityisen huonosti dokumentoiduiksi verkossa. Kun siirrymme merkki myynnin ulkopuolelle, keskitymme nyt muihin kehittäjätiimeihin, jotka ovat kiinnostuneita integroimaan GMT sovelluksiinsa. Tätä tarkoitusta varten olemme käynnistämässä teknisen sisällön tuotantoa, jotta voimme helpommin ottaa mukaan uusia kehittäjiä, jotka haluavat kokeilla käsiään blockchain-tekniikalla.

Jos sinulla on tietty aihe, jonka haluat nähdä yksityiskohtaisesti Kuinka lähettää -osiossa, haluamme mielellämme kuulla sinusta osoitteessa info@mercuryprotocol.com.

"Hei, Testnet"

Tämä on opas omien mukautettujen Ethereum-lohkoketjujen käynnistämiseen Macissa, joita ei pidä sekoittaa solmun aloittamiseen Ethereumin päälohkoketjussa. Täällä aloitamme täysin uuden ja erillisen lohkon, joka ei voi olla vuorovaikutuksessa Ethereum mainnetin kanssa.

Oman Ethereum-lohkoketjun käynnistäminen on hyödyllistä, opettavaista ja turvallisempaa kuin julkinen testiverkko. Yksityisen testiverkon perustamisen oppiminen tarjoaa joustavuuden muuten abstrakteisiin käsitteisiin, kuten kaivostoiminta, verkon vertaistuotteet ja jopa geth datadir.

edellytykset

Sinun on oltava Geth asennettuna. Helpoin tapa tehdä tämä on homebrew.

  1. Avaa terminaali ja asenna homebrew
ruby -e “$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Asenna nyt geth

hauduta tap-ethereum / ethereum
hauduta asentaa ethereum

Luo Genesis-tiedosto

Genesis-lohko on ketjun ensimmäinen lohko, Genesis-tiedosto on JSON-tiedosto, joka määrittelee alkuperäisen lohkon ja sen jälkeen muun lohkoketjun ominaisuudet.

  1. Luo hakemisto verkkotiedostojen pitämistä varten
mkdir-et-ketju
cd my-eth-ketju

2. Luo geneesi-tiedosto

kosketa myGenesis.json

3. Avaa geenitiedosto ja liitä seuraava

{
   "config": {
      "chainId": 1994,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0,
      "byzantiumBlock": 0
   },
   "vaikeus": "400",
   "gasLimit": "2000000",
   "alloc": {
      "7b684d27167d208c66584ece7f09d8bc8f86ffff": {
          "tasapaino": "100000000000000000000000"
      },
      "ae13d41d66af28380c7af6d825ab557eb271ffff": {
          "tasapaino": "120000000000000000000000"
      }
   }
}

config

  • chainId - tämä on ketjun tunniste ja sitä käytetään uusintasuojauksessa.
  • homesteadBlock, eip155Block, eip158Block, byzantiumBlock - nämä liittyvät ketjun haarukkaan ja versiointiin, joten tapauksessamme annetaan jättää heille 0, koska olemme käynnistämässä uutta lohkoketjua.

vaikeus

Tämä sanelee, kuinka vaikeaa on estää lohko. Tämän arvon asettaminen matalaksi (~ 10–10000) on hyödyllinen yksityisessä lohkoketjussa, koska se antaa sinun kaivoksen lohkot nopeasti, mikä vastaa nopeita tapahtumia, ja paljon testattavaa ETH: ta. Vertailun vuoksi Ethereum mainnet Genesis-tiedosto määrittelee vaikeudeksi 17179869184.

gasLimit

Tämä on kaasun kokonaismäärä, jota voidaan käyttää kussakin lohkossa. Tällaisella alhaisella kaivosvaikeudella lohkot liikkuvat melko nopeasti, mutta sinun pitäisi silti asettaa tämä arvo melko korkeaksi, jotta vältetään rajan saavuttaminen ja verkon hidastaminen.

Alloc

Täällä voit allokoida ETH tietyille osoitteille. Tämä ei luo tiliä sinulle, joten varmista, että sen tili on jo sinulla hallinnassa. Sinun on lisättävä tili yksityiseen ketjuosi käyttääksesi sitä, ja tarvitset pääsyn avainsäilytys- / utc-tiedostoon. Esimerkiksi Geth ja MyEtherWallet antavat sinulle pääsyn tähän tiedostoon, kun luot tiliä, mutta Metamask ja Coinbase eivät. Annetut osoitteet eivät ole todellisia osoitteita, ne ovat vain esimerkkejä. Täällä allokoimme vastaavasti 100 000 ja 120 000 ETH.

Aloita solmu!

Nyt todellinen hauskanpito alkaa, me kaikki olemme valmiita ampumaan uutta Ethereum-lohkona.

1. Alusta tietohakemistosi

geth --datadir ./myDataDir init ./myGenesis.json

2. Käynnistä Ethereum-vertaisolmu.

Networkid auttaa varmistamaan verkon yksityisyyden. Voit käyttää mitä tahansa numeroa täällä (missä käytimme ”1114”), mutta muiden verkkoosi liittyvien vertaisten on käytettävä samaa numeroa.

geth --datadir ./myDataDir --networkid 1114 console 2 >> myEth.log

Tuoton pitäisi näyttää tältä:

Tervetuloa Geth JavaScript -konsoliin!
esimerkki: Geth / v1.7.3-vakaa-4bb3c89d / darwin-amd64 / go1.8.3
coinbase: 0xae13d41d66af28380c7af6d825ab557eb271ffff
lohkossa: 5 (to, 7. joulukuuta 2017 17:08:48 PST)
datadir: / Käyttäjät / testi / my-eth-ketju / myDataDir
moduulit: admin: 1.0 napsautus: 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
>

Tämä on geth JavaScript-konsoli. Kaikki komennot, joissa on symboli>, olisi kirjoitettava tähän.

3. Näytä Ethereum-lokit

  • Avaa toinen pääteikkuna
  • cd minun-eth-ketjuuni
  • Kirjoita tail -f myEth.log

4. Tuo / luo tili

  • Jos olet määrittänyt ETH: n Genesis-tiedostossa, tuo vastaava tili vetämällä UTC-tiedosto myDataDir / avainsano-hakemistoon ja siirry vaiheeseen 5.
  • Luo tili geth JavaScript -konsolissa:
    > personal.newAccount ("")
  • Älä unohda tätä tunnuslausea! Kirjoitat tätä paljon, joten voit pitää tätä testiverkkoa yksinkertaisena.

5. Aseta oletustili

  • Tarkista oletustili, kirjoita
    > eth.coinbase
  • Jos tämä osoite on sama kuin vaiheesta 4, ohita loput vaiheesta 5.
  • Aseta oletustili kirjoittamalla
    > miner.setEtherbase (web3.eth.accounts [0])

6. Aloita louhinta

  • Tarkista saldosi
    > eth.getBalance (eth.coinbase)
  • Juosta
    > miner.start ()
  • Katso toista pääteikkunaasi, lokien pitäisi nähdä joitain kaivostoimintoja. Tarkista saldosi uudelleen, ja sen pitäisi olla korkeampi.
  • Lopeta louhinta kirjoittamalla
    > miner.stop ()

Valinnainen: Lisää muita ikäisensä

Lisää lisää solmuja yksityiseen Ethereum-verkkoosi.

1. Aloita toinen vertaiskäyttäjä

  • Pienennä samalla koneellasi uusi datadir:
geth --datadir ./peer2DataDir init ./myGenesis.json
  • Käynnistä toinen vertaisverkko toiseen porttiin:
geth --datadir ./peer2DataDir --networkid 1114 --port 30304 console 2 >> myEth2.log

2. Näytä Ethereum-lokit

  • Avaa toinen pääteikkuna
  • cd minun-eth-ketjuuni
  • Kirjoita tail -f myEth2.log

3. Liity 1. vertaisryhmään

  • Kirjoita ensimmäisen vertaisverkkosi geth JavaScript -konsoliin:
> admin.nodeInfo.enode
  • Tulos näyttää tältä: “enode: // dcff6d9dcb14eeb1d1b7575b0653fa1025ad1b7722c6d652d0449f0966e97931bdf037e5542086e7b9e0bec056566522c6c0cc4a73e8da4e6e8e5e0e0e0b0e0e0bec056566522c6c0cc4a73e8e30
  • Kirjoita uuden toisen vertaisversion geth JavaScript -konsoliin:
> admin.addPeer (“enode: //b56882b93f4f97dd69f98c1dca1bd751c72374b5a8b5852288a56059a8cbc63614afd57274cfa7695178cf292aad9e682f0117044f9a28cc2929c08c08d08d08d08b08c8cfdcfdcfdcflflflflflflflflfl0a2afcflflflflflflflflflflflf0a2a8cfcflflflflflflflflflflflflflfll: 1)
  • Varmista, että korvaat yllä olevan "enode: //… @" -kohdan admin.nodeInfo.enode-tulostuksella, joka on sinulle erityinen. Kuten yllä on osoitettu, ”[::]” korvataan luvulla “127.0.0.1:30303”, joka on IP: 1. vertaisportti.

4. Varmista, että solmut ovat nyt yhteydessä

  • Kirjoita uuden toisen vertaisversion geth JavaScript -konsoliin:
> ylläpitäjät
  • Lähtön tulisi näyttää, että vertaisverkko 2 on kytketty127.0.0.1: 30303: een

Hyödyllinen: geth-konsolin komennot

admin.nodeInfo.enode
net.listening
net.peerCount
admin.peers
eth.coinbase
eth.getBalance (eth.coinbase)
henkilökohtainen
eth.accounts
miner.setEtherbase (web3.eth.accounts [0])
miner.setEtherbase ( ”0xae13d41d66af28380c7af6d825ab557eb271ffff”)
miner.start ()
miner.stop ()
miner.hashrate
eth.getBlock (0)
eth.getBlock ( ”uusin”)
eth.blockNumber
web3.eth.getBlock (BLOCK_NUMBER) .hash
eth.syncing
debug.verbosity (6) // korkein kirjaustaso, 3 on oletus

Jaa ajatuksesi kanssamme millä tahansa alla linkitetyistä yhteisökanavista!

Kytkeä

löysä
sähke
Viserrys
Reddit
Facebook
LinkedIn

Lisätietoja elohopeaprotokollasta
Lue Mercury Protokolla -kirja