Ethereum 69: bagaimana membuat nod blockchain yang disegerakkan sepenuhnya dalam 10 minit

Selamat datang dalam artikel pertama siri go-etherum baru kami!

Dalam 10 minit akan datang anda akan:

  • Ketahui glosari blockchain pertama tanpa pengetahuan ekosistem terdahulu yang diperlukan
  • Persiapkan nod ujian yang disinkronkan sepenuhnya ("klien / pelayan") di bawah 10mins
  • Buat akaun anda dan terima transaksi 8ETH dari asas Ethereum secara PERCUMA

Motto kami adalah, berlatih sebelum teori - jadi mari kita melompat langsung ke pemasangan nod ujian Ethereum yang diselaraskan sepenuhnya disambungkan ke rangkaian ujian Rinkeby!

Geth

Geth adalah antara muka baris arahan (CLI), binari, program, dan klien yang dikompilasi untuk menjalankan nod Ethereum penuh yang dilaksanakan di Go.

Kami akan menggunakan Geth untuk:

  • jalankan nod Ethereum yang disegerakkan sepenuhnya untuk menyambung ke rangkaian ujian yang dipanggil Rinkeby
  • buat akaun baru untuk dapat menghantar dan menerima transaksi
  • untuk membaca keadaan EVM, mis. memeriksa baki apa-apa akaun (ingin tahu berapa banyak keseimbangan teman wanita, teman lelaki, isteri, jiran mempunyai transparansi manis!)

Memasang Geth

Kami boleh memasangnya secara langsung dari repositori:

Mac

brew tap ethereum / ethereum
brew memasang ethereum

Linux

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa: ethereum / ethereum
kemas kini sudo apt-get
sudo apt-get install ethereum

Windows

Semoga berjaya :)

Sahkan pemasangan:

yang geth
> / usr / local / bin / geth
versi geth
> Geth
> Versi: 1.8.20-stabil

Pastikan anda menjalankan versi yang sama untuk dapat melakukan penyegerakan penuh rangkaian Rinkeby, seperti yang diterangkan dalam langkah seterusnya kerana Rinkeby melancarkan hardin keras yang disokong oleh Geth 1.8.20. Pos blog terperinci ini menerangkan butiran lanjut jika anda tertarik!

Menjalankan nod blockchain

Nah, syaitan itu ada dalam butiran ... tetapi permulaannya sebenarnya mudah. Kudos kepada pemaju Ethereum.

Mari persediaan Rinkeby yang baru disegerakkan sepenuhnya (rangkaian ujian Ethereum menggunakan protokol Clique PoA).

Pelaksanaan Rinkeby PoA jauh lebih cepat tetapi kurang selamat. Ia lebih berpusat dari PoW konsensus utama yang sangat baik sebagai rangkaian ujian. Rinkeby berjaya meluluskan blok baru dengan sekumpulan transaksi setiap 15s.

Ok, ok, ok ... Apa maksud perkataan itu sebenarnya?

  • Rinkeby: nama rangkaian ujian Bukti Pihak Berkuasa
  • Node: pada asasnya pelayan tradisional yang melaksanakan Ethereum client / server
  • Konsensus: algoritma yang menentukan bagaimana urus niaga akan disahkan, dilampirkan, dan berterusan dalam pangkalan data pada setiap Node
  • Blok: sekumpulan transaksi dalam pelbagai rumit yang dihantar di sekitar wayar antara semua nod rangkaian setiap 15s
  • Urus niaga: jangan fikirkan transaksi bank. Transaksi blockchain adalah perubahan keadaan. Menamakan semula pemilik kontrak pintar dari Alice ke Bob? Menukar baki akaun anda dari 1ETH ke 5ETH? Menetapkan nilai "foo" yang berubah-ubah ke "foo_value_123" dalam kontrak pintar anda? Itulah transaksi.

Anda boleh membaca lebih lanjut mengenai cadangan Rinkeby PoA di sini: https://github.com/ethereum/EIPs/issues/225

geth --rinkeby --datadir = ~ / .gophersland_ethereum_r1 --port = 30304 --cache = 2048 --rpc --rpcport = 8546 - rpcapi = eth, web3, net, personal --syncmode = cepat

Perintah di atas akan:

  • memulakan direktori baharu di mana semua data akan disimpan dalam ~ / .gophersland_ethereum_r1. Direktori asal ialah: ~ / .ethereum
  • mula memuat turun sejarah Ethereum yang diperlukan untuk menjadi Node yang disahkan sah sepenuhnya rangkaian
  • komunikasi akan berlaku di port 30304
  • cache, sejenis penampan, akan ditetapkan kepada 2GB untuk mempercepat proses penyegerakan
  • API RPC tambahan akan dilancarkan supaya kami dapat berkomunikasi dengan nod kami melalui konsol, GUI bagus di atas port 8546, kemudian

Tunggu selama beberapa jam sehingga blockchain disegerakkan sepenuhnya.

Nombor blok semasa pada 24 September ialah: 3039786. Pada AMD Ryzen 5 2600, 3.4Ghz, proses penyegerakan mengambil masa 3 jam. Oh ya, saya mempunyai PC permainan baru!

Sementara itu, anda boleh mengikuti GophersLand di Twitter atau menyiapkan makan malam, mungkin sarapan juga, pergi ke gym ... katakan saja, blockchain bukan pangkalan data yang terpantas :)

Akhirnya, mesej bercetak akan menjadi:

  • INFO [
  • INFO [
  • INFO [
  • INFO [

Tahniah, anda kini menjadi sebahagian daripada revolusi blockchain kurang dari 10mins !!!

Membuat akaun blockchain pertama anda

Kedai kunci

Semua akaun Ethereum dan kekunci mereka disimpan dalam direktori yang dipanggil "kunci utama". Direktori kosong sebagai lalai kerana kami belum lagi membuat akaun kami sendiri!

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 ahli sihir enchanter 4096 sep 24 15:26.
drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..
drwx ------ 4 ahli sihir pujaan 4096 sep 24 15:26 geth
srw ------- 1 enchanter enchanter 0 sep 24 15:26 geth.ipc
drwx ------ 2 ahli sihir enchanter 4096 sep 23 09:54 keystore
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 ahli sihir enchanter 4096 sep 23 09:54.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..

Akaun

Untuk membuat akaun baru, jalankan yang berikut, sudah biasa, gd cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 akaun baru

Anda akan diminta untuk memasukkan frasa laluan (ini adalah kata laluan SUPER SECRET anda). Ini diperlukan untuk mendekripsi kunci persendirian yang baru dijana yang dikaitkan dengan alamat Ethereum anda yang baru, kerana ia membolehkan anda menggunakannya kemudian untuk menandatangani transaksi pada blockchain. Perhatikan di mana-mana, kerana kami akan memerlukannya kemudian. Tetapi jangan risau jika anda terlupa, ini hanya rangkaian ujian.

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 ahli sihir enchanter 4096 sep 23 09:54.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..
enchanter @ lukas-gaming: ~ $ geth --datadir = ~ / .gophersland_ethereum_r1 account new
INFO [09-24 | 15: 36: 33.566] Kira-kira peer maksimum ETH = 25 LES = 0 total = 25
Akaun baru anda dikunci dengan kata laluan. Sila berikan kata laluan. Jangan lupa kata laluan ini.
Frasa laluan:
Ulangi frasa laluan:
Alamat: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 ahli sihir enchanter 4096 sep 24 15:36.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..
-rw ------- 1 petualang pesona 491 sep 24 15:36
UTC - 2018-09-24T13-36-43.069452577Z - ceee57f2b700c2f37d1476a7974965e149fce2d4

Woohoo! Alamat Ethereum saya yang baru masih hidup: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Anda biasanya akan menghadapi alamat ini dengan "0x" untuk menunjukkan alamat pengekodan, HEX.

Format terbaru dari kekunci kekunci adalah: UTC - - . Perintah akaun apabila penyenaraian adalah leksikografik, tetapi sebagai akibat daripada format format masa, ia sebenarnya dalam rangka penciptaan.

Jika anda ingin tahu apa yang ada dalam fail, jangan ragu untuk membukanya! Awak akan lihat:

  • Alamat: alamat hex baru anda
  • Crypto: sekumpulan pembolehubah matematik yang bertanggungjawab untuk mewakili kunci peribadi anda dalam bentuk yang disulitkan, jangan bimbang tentang sihir itu sekarang

Nota menarik: penjanaan akaun berlaku dalam mod luar talian dan tidak memerlukan nod blockchain yang disegerakkan. Ingin tahu bagaimana mungkin untuk menjana alamat unik dalam mod luar talian dari perspektif teknikal? Kami akan menyemak kod sumber go-ethereum sendiri dalam artikel seterusnya.

Spoiler: itu kerana alamat adalah hash kunci awam anda yang berdasarkan kunci peribadi anda, unik.

Okay, saya mempunyai akaun Ethereum yang baru, apa keseimbangan saya dan bagaimana saya menyimpan beberapa ujian Ether?

Bercakap tentang Ether ... apa sebenarnya?

Ether

Ether ialah cryptocurrency yang menjanakan rangkaian Ethereum. Ia digunakan sebagai unit nilai dan untuk membayar pelombong untuk mengesahkan, menambah dan meneruskan transaksi ke DB kolektif. Tetapi terutamanya tekniknya untuk menghalang SPAM kerana pelombong diberi ganjaran 5 (sejak bulan lalu "hanya" 3) ETH untuk setiap blok ditambang. Ya, itu $ 600 pada harga semasa pada 24 September, setiap 15s. Bukan perniagaan yang buruk.

Bagaimana untuk menerima transaksi 8ETH dari asas Ethereum secara PERCUMA

Memeriksa baki akaun

Mari pastikan baki akaun kami adalah lebih awal, kecuali seseorang telah berjaya menghantar beberapa Ether keluar dari kebaikan hati mereka.

Geth menyediakan konsol JavaScript yang boleh dilampirkan kepada binari boleh laku untuk berinteraksi dengan blockchain dengan mudah. Kami boleh menyambung dengannya dengan menyatakan fail soket yang terdedah sekali apabila Geth menaikkannya. Fail Socket sangat berguna untuk "inter process communication on the same machine", aka IPC.

Anda boleh mencari fail ini dalam direktori data lalai semasa program Geth sedang berjalan:

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 Sep 24 15:44.
drwxr-xr-x 18 enchanter enchanter 4096 Sep 24 15:47 ..
drwx ------ 4 enchanter enchanter 4096 Sep 24 15:44 geth
srw ------- 1 enchanter enchanter 0 Sep 24 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 Sep 24 15:47 keystore

Marilah berinteraksi dengan rangkaian Rinkeby menggunakan cmd di "geth attach" di terminal lain sementara nod blockchain anda masih berjalan. Pastikan anda lulus laluan mutlak ke fail IPC, jika tidak, anda akan mendapat ralat.

enchanter @ lukas-gaming: ~ $ geth attach ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Selamat datang ke konsol JavaScript Geth!
contoh: Geth / v1.8.15-stabil-89451f7c / linux-amd64 / go1.10.1
coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
di blok: 3044891 (Isnin, 24 Sep 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
mod: admin: 1.0 clique: 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.accounts
["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncing
salah
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Rangkaian blok pertanyaan:

eth.accounts: untuk menyemak akaun anda yang sedia ada

eth.syncing: untuk memastikan keadaan kami, DB sepenuhnya up to date dengan seluruh rangkaian untuk memastikan tindak balas getBalance akan berdasarkan keadaan terbaru

eth.getBalance (""): untuk pertanyaan DB.

Menerima transaksi 8ETH dari asas Ethereum secara PERCUMA

Yayasan Ethereum mempunyai program yang sangat rapi yang dipanggil "Keran" yang boleh didapati dalam talian untuk memberikan Ether ke akaun yang meminta dalam waktu nyata.

Meminta Ether:

  1. Terbitkan alamat akaun anda di salah satu rangkaian sosial awam
  2. Contohnya, siarkan tweet yang mengandungi alamat Ethereum anda di mana sahaja di tweet seperti ini https://twitter.com/EnchanterIO/status/1044238559224483841, pastikan anda menandai @BlocksByLukas dan @ freeCodeCamp dan beritahu kami jika anda suka tutorial!
  3. Buka https://www.rinkeby.io/#faucet dan tampal URL tweet
  4. Klik pada "Berikan saya Ether", pilih antara 3, 7.5 atau 18.75 Ether
  5. Tunggu beberapa saat
  6. Cuba baki akaun anda lagi
Rinkeby Faucet

Voilà

Anda kaya ... dalam rangkaian ujian. Tahniah untuk mendapatkan setakat ini. Lebih banyak kandungan akan datang tidak lama lagi!

Teruskan dalam kursus saya: Ethereum 101

https://www.lukaslukac.io/courses/ethereum-101-glossary-smart-contracts-tests-frameworks