สรุปขั้นตอนการติดตั้ง Node Ethereum บน Digital Ocean

แต่ไม่รวมวิธีการทำเหมืองนะ (no mining)

Chatri Tung
Kiptopotamus
3 min readSep 13, 2017

--

1. เปิดบัญชีกับ Digital Ocean

จะ google หาเว็บ Digital Ocean ก็ได้ แต่สมัครผ่าน link นี้ได้ฟรี 10 USD นะ

2. สร้าง Droplet

Droplet ก็เหมือน Virtual Host ที่เราจะเช่าจากทาง Digital Ocean แต่เรียก VM มันไม่เท่ห์ไงก็เลยเรียกว่า Droplet

  1. Log in เข้ามาหน้าแรกเมนูด้านขวาใกล้ๆ กับรูปหน้าเราให้กดปุ่ม Create สีเขียวๆ แล้วเลือก Droplet
  2. เลือก OS เป็น Ubuntu version แนะนำให้เลือก version ที่เค้าจัดมาให้เราแล้ว ตอนที่เขียน Blog นี้อยู่ที่ version 10.04.3 x64
  3. เลือก Size ขนาด 40 GB, 2 CPU เพราะจากที่ลองแล้ว 20 GB มันไม่พอ sync blockchain
  4. เลือก datacenter region ตรงนี้แล้วแต่ว่าใครจะเอาไปทำอะไร ผมเลือกที่ Singapore ไปเพราะกลัวว่าเลือกฝั่งเมกาแล้วจะช้าตอนที่ remote เข้าไปติดตั้งโปรแกรม
  5. ใส่ ssh key จะได้ไม่ต้องมานั่งกรอก password ทุกครั้งที่ remote เข้าไปทำงาน ถ้ายังงงๆ ให้กด New SSH Key จะมีฟอร์มขึ้นมาให้ใส่ key พร้อมกับ link วิธีใช้งาน
  6. ยังไม่ต้องเพิ่ม Droplet, Hostname จะใส่ก็ได้เผื่อมีหลายๆ เครื่องจะได้จำได้
  7. นั่งรอ

3. ติดตั้ง parity

พอ Droplet ของเราสร้างเสร็จก็จะมี Notification สีเขียวโผล่ขึ้นมาว่าเสร็จแล้วนะ ที่ console ของเราก็จะมีเครื่องเพิ่มขึ้นมาพร้อมกับแสดง ip ที่เราสามารถ remote เข้าไปติดตั้งโปรแกรมได้ ก็เริ่มลุยกันได้เลย

เปิด terminal หรือ command line ขึ้นมา พิมพ์คำสั่งตามนี้

หลังจากเข้าไปได้ปุ๊ปก็ติดตั้ง parity ด้วยคำสั่งบรรทัดเดียวตามข้างล่างนี้

ผลลัพธ์ที่ได้ก็จะประมาณนี้

หลังจากนั้นก็ลองพิมพ์

ถ้าติดตั้งสำเร็จก็จะเห็นเลข version ล่าสุด

4. Sync ข้อมูล Blockchain

ความดีงามอย่างนึงของ parity คือแทบไม่ต้อง config อะไรเลย default config ถูกจัดสรรค์​มาให้อย่างดีแล้ว เพียงแค่รันคำสั่ง parity แล้วก็นั่งจิบกาแฟรอไปสามสี่ชั่วโมงก็แค่นั้นแหละ ทีนี้ถ้าเปิด remote ค้างไว้นานๆ ก็เสี่ยงว่า session อาจจะหลุดได้ ให้รันเป็น daemon mode จะดีกว่า

ทีนี้ก็ logout ไปนอนรอได้ หรือถ้าอยากเห็นความคืบหน้าสดๆ ก็ใช้คำสั่ง

หรือถ้าใครรู้สึกว่ามันไม่คลีนเลยต้องรันเป็น service สิ parity เค้าก็แอบมีให้นะ ลองดูเพิ่มเติมได้ที่นี่

ณ จุดนี้ก็ทำอะไรไม่ได้นอกจากรอ ดู log หรือจะหาข้อมูลเพิ่มเติมก็ได้ว่าทำไม node ของเราจำเป็นต้อง sync data ตั้งแต่ genesis block นะ

สำหรับใครที่อยากจะมี ethereum หลายๆ node ก็ไม่ต้องตกใจ ข้อมูลที่ sync จะถูกเก็บอยู่ที่ path ด้านล่างนี้ สามารถ copy ไปใส่ node อื่นได้ จะไม่ต้องเริ่ม sync ตั้งแต่ block แรก

ในอนาคตเราน่าจะได้เห็นเทคโนโลยีการ sync block ที่รวดเร็วมากขึ้น เช่นสามารถ sync จาก snapshot ได้ หรือสามารถ run node แบบไม่ sync data ได้ (ถ้าไม่ได้ใช้งาน function ที่จำเป็นต้องตรวจสอบข้อมูลเก่าๆ)

5. เริ่มต้นใช้งาน Node

การมี Node Ethereum เป็นของตัวเองนอกจากเป็นการโชว์ความ geek แล้ว เรายังสามารถใช้ประโยชน์จากมันได้อีกด้วย เช่นใช้เป็นกระเป๋า Ethereum ซึ่งสามารถเก็บเหรียญ Ethereum และเหรียญอื่นๆ ในตระกูล ERC20 ได้ด้วย แต่จะเริ่มใช้งาน Node ได้ต้องให้แน่ใจซะก่อนว่าการ sync ได้สิ้นสุดลงแล้ว วิธีการตรวจสอบง่ายๆ คือดูเลข Block ล่าสุดใน log

เลขหลังเครื่องหมาย # ก็คือ block ล่าสุดที่เรา import เข้ามานั่นเอง ทีนี้เราอาจจะนำเลข block ที่ได้ไปเช็คกับ web etherscan.io อีกที ถ้า block ล่าสุดตรงกัน หรือไม่ห่างกันมากก็เป็นอันว่าใช้งานได้

parity มี interface ให้เข้าใช้งานได้หลากหลายสามารถดูวิธีการใช้งานได้บน wiki ของ parity ในที่นี่จะแนะนำการใช้งานผ่าน JSON-RPC Protocol เห็นชื่อก็อย่าเพิ่งตกใจจริงๆ แล้วมันก็คือๆ กับ Rest API ธรรมดานั่นแหละ เพียงแต่ parity เค้าเปิดช่องให้ทั้งทาง HTTP ทาง WebSocket และทาง IPC Socket วิธีใช้ก็ไม่ยาก แต่อาจจะต้องใส่ option ให้ parity นิดหน่อยเพื่อเปิดใช้งาน api ให้หยุด parity เอาไว้ก่อนด้วยการ kill ทิ้งซะ

รันคำสั่งด้านล่างเพื่อหา id ของ parity process

หลังจากนั้นก็ kill

รัน parity ใหม่อีกครั้งด้วย option เปิดใช้งาน json-rpc api

เท่านี้เราก็สามารถใช้งาน api: personal และ eth ได้แล้ว

list ของ api ที่ใช้ได้ทั้งหมดสามารถดูได้ที่นี่

หลังจาก process run แล้วทดลองใช้งาน api เพื่อสร้างกระเป๋าด้วยการรันคำสั่ง curl และส่ง parameter ที่เป็นรหัสของกระเป๋าเข้าไป ในตัวอย่างใช้เป็น hunter2

ก็จะได้กระเป๋า ethereum ใหม่กิ๊งมา

หรือจะลองดูเลข block ล่าสุดก็สามารถทำได้ด้วยคำสั่งนี้

ก็จะได้ response มาแบบนี้

เลขที่ใช้ในการรับส่งข้อมูลบน JSON-RPC จะเป็นเลขฐาน 16 ทั้งหมด จากในตัวอย่างเมื่อแปลงเป็นเลขฐานสิบก็จะเป็นเลข Block 4269729 นั่นเอง

จ.บ.

ป.ล. ถ้าชอบบทความนี้และอยากให้กำลังใจผู้เขียนสามารถบริจาคเหรียญ Ethereum ได้ที่ Address นี้ครับ

ถ้าอยากบริจาคแต่ไม่รู้จะซื้อ Ethereum จากที่ไหนแนะนำให้เปิดบัญชีที่ bx.in.th ครับ

--

--

Chatri Tung
Kiptopotamus

Ex Drivehub CTO, Startup Therapist, Facilitator, and Scrum Servant