วันจันทร์, พฤษภาคม 20

Technical

เรื่องราวในเชิง Technic จะมีลงลายละเอียดบ้างบ้างน้าาในหมวดนี้

มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ ตอนที่ 2: Make New Project

มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ ตอนที่ 2: Make New Project

Technical
สวัสดีค่ะ คุณผู้อ่านทุกท่าน กลับมาพบกันอีกครั้งกับซีรีย์ "มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ" ตอนนี้เป็นตอนที่ 2 แล้วนะคะ :) ก่อนที่จะไปกันต่อ หากคุณผู้อ่านยังไม่อ่าน หรือลืมเนื้อหาตอนแรกไปแล้ว ผู้เขียนขอแนะนำให้อ่านบทความ "มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ ตอนที่ 1: What and Why?" เพื่อเข้าใจถึงความเป็นมาและความสำคัญของ Truffle ก่อนนะคะ ถึงตรงนี้แล้ว เรามาเริ่มต้นสร้าง DApp ขึ้นมาตัวหนึ่งด้วย Truffle กันเลยค่ะ ผู้เขียนจะขอยกตัวอย่างระบบง่าย ๆ ดังภาพนี้ ... จะเห็นได้ว่า มันมีลักษณะเหมือนเป็น Ecommerce ตัวหนึ่ง ...ใช่แล้วค่ะ เราจะสร้าง Ecommerce แบบง่าย ๆ ที่ทำงานร่วมกับ Blockchain กัน สำหรับในบทความตอนนี้ เราจะยังไม่ได้เห็นภาพเสร็จสมบูรณ์ดังภาพข้างบนนะคะ เราจะมาสร้างโปรเจคและเขียน Smart Contract ที่เป็นระบบเบื้องหลังกันก่อน ขั้นตอนในส่วนนี้ก็จะมีดังนี้ค่
บล็อคเชนกับการเลือกตั้ง (Blockchain voting)

บล็อคเชนกับการเลือกตั้ง (Blockchain voting)

Idea, Technical
สวัสดีครับ ท่านผู้อ่าน ทุกท่าน วันนี้ทาง Blockchain Fish มีสิ่งที่น่าสนใจมานำเสนอ ปัจจุบันนี้มีเทคโนโลยีหลายอย่างมาก ที่เข้ามามีบทบาท ต่อประเทศของเรา หรือต่อองค์กรของท่านเอง รวมทั้ง ตัว Blockchain พระเอกของเรานี้ ก็เข้ามาปรับเปลี่ยนความคิดใหม่ๆ ได้ดีเลยแหละ ไหนใครยังไม่รู้จัก Blockchain ยกมือขึ้น !! ( คลิก ลิงค์เข้าไปดูได้ที่  : https://bit.ly/2Fpu1nN  )   แต่ถ้าเป็น การเลือกตั้ง + Blockchain หละ ? จุดเด่นก็คงเป็นเรื่อง ความโปร่งใส ที่ใครหน้าไหน ก็เข้ามาเปลี่ยนแปลงข้อมูลไม่ได้     วันนี้ทางผู้เขียนขอพูดถึงบทบาทของ Blockchain กับการเลือกตั้ง ซึ่งระบบการเลือกตั้งนั้น ถ้าให้พูดง่ายๆ เลยก็คือ เราต้องมีสิทธิ พอมีสิทธิ ปุ๊ป เราก็เลือก คนที่เราชอบ พอเลือกคนที่ชอบเสร็จ ก็ประกาศผล ปั๊ป เราก็จะได้ผลลัพธ์ จากเสียงข้างมาก ของการโหวต เห็นไหมครับ  ระบบการเลือกตั้ง แบบปกติ ก็ไม่มีอ
มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ ตอนที่ 1: What and Why?

มาพัฒนา DApp ง่าย ๆ ด้วย Truffle กันเถอะ ตอนที่ 1: What and Why?

Technical
สวัสดีค่ะ คุณผู้อ่านทุกท่าน ทุกวันนี้ Blockchain ได้ถูกพัฒนาให้สามารถทำงานร่วมกับแอปพลิเคชันที่เราเขียนได้แล้ว เราจะเรียกแอปพลิเคชันที่ทำงานกับ Blockchain ว่า DApp มันย่อมาจาก Decentralized Application แปลตรงตัวว่าแอปพลิเคชันที่ทำงานแบบกระจายนั่นเอง คุณผู้อ่านหลายคนที่เล่น Ethereum น่าจะเคยเห็นและเคยเล่น DApp กันบ้าง หากนึกไม่ออก ให้นึกถึงเว็บที่ต้องมีการซื้อเหรียญถึงจะทำงานได้ เช่น <CryptoKitties.co> เกมเพาะพันธุ์แมว, <SteemIt.com> เว็บบล็อกที่เปิดโอกาสให้คนจ่ายเหรียญ Crypto เพื่อสนับสนุนคนเขียนบทความ เป็นต้น ในบทความนี้เราจะสร้าง DApp เป็นของตัวเองง่าย ๆ ด้วย Truffle กันค่ะ แต่เดี๋ยวก่อน! เรายังไม่สร้างตอนนี้! ผู้เขียนขอแนะนำให้คุณผู้อ่านรู้จักกับ Truffle และความสำคัญของมันก่อน ซึ่งเนื้อหาค่อนข้างยาว วิธีการสร้างขอยกไปเขียนในตอนถัดไปแทนนะคะ เรื่องนี้ผู้เขียนตั
รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 4 (Ethereum Blockchain)

รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 4 (Ethereum Blockchain)

Technical
หลักจากที่เรารู้จักส่วนประกอบต่างๆในโลกของ ethereum อย่างเช่น บัญชีผู้ใช้ การส่ง transaction และ message ในบทความนี้เราจะมาดูว่า ethereum ออกแบบสถาปัตยกรรมของ blockchain และวิธีตรวจสอบว่าความถูกต้องของแต่ละบล็อคที่สร้างอย่างไรบ้าง ในแต่ละบล็อคจะประกอบไปด้วยข้อมูลหลักๆดังนี้ 1.เลขรายการ transaction ที่เกิดขึ้น ณ ขณะที่บล็อคถูกสร้างขึ้นมา 2.สถานะล่าสุดของข้อมูล ณ ขณะที่บล็อคถูกสร้างขึ้นมา 3.เลขที่ของบล็อคซึ่งจะเป็นค่าสูงสุดของจำนวนบล็อคที่มีอยู่ในระบบ ณ ขณะที่บล็อคถูกสร้างขึ้นมา 4.ค่า difficulty ใช้สำหรับคำนวณความยากของสูตรที่ให้ miner ทำการประมวลผลเพื่อสร้างบล็อคใหม่ต่อไป ซึ่งค่า difficultyจะเพิ่มขึ้นทุกครั้งที่มีบล็อคใหม่เกิดขึ้น จึงจะเห็นได้ว่ายิ่งมีบล็อคในระบบมากเท่าไหร่ miner ก็จะใช้เวลาสร้างบล็อคในระบบมากขึ้น 5.เวลาที่บล็อคถูกสร้างขึ้น (TimeStamp) 6.ค่า Hash ขนาด 256 bit ซ
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 3 กำเนิด address)

รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 3 กำเนิด address)

Technical
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? ตอนที่ 3 กำเนิน address จาก 2 ตอนแรกที่ผมกล่าวถึงเรื่องของการทำ encryption และ hash แล้วนั้น มาถึงตอนนี้เราจะเอาองค์ความรู้ใน 2   ตอนแรกมาสร้างเป็น address ของ bitcoin แล้วครับ จริงๆ แล้วกระบวนการสร้าง address ของ bitcoin ไม่ได้ยากเย็นอะไรเลยครับ ซึ่ง step ของการสร้างเป็นดังนี้ ทำการสร้างคู่กุญแจขึ้นมาก่อน ซึ่งการสร้างนี้เราจะได้ public key และ private key ขึ้นมา (เรื่องคู่กุญแจดูได้ในตอนที่ 1) นำเอา public key ในข้อที่ 1 มาสร้างเป็น hash โดยทำสิ่งที่เรียกว่า double hashing ซึ่ง step ในการสร้าง hash เป็นดังนี้ สร้าง hash ของ public key ด้วยวิธีการ SHA256 สร้าง hash อีกครั้งจากข้อ 2.1 ด้วยวิธีการ RIPEMD160 โดยผลลัพธ์จากการ hash นี้เราจะได้ข้อมูลที่มีขนาด 20 byte หรือ 160 bit ตามชื่อ hash function เลยครับ เอา has
รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 3 (Ethereum State)

รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 3 (Ethereum State)

Technical
ในโลกของ ethereum นั้นเมื่อมีการทำ transaction เกิดขึ้นจะมีการเปลี่ยนแปลงสถานะ (Ethereum State) ของข้อมูลต่างๆที่เกี่ยวข้องกับ transaction นั้นๆ จากรูป (Cr.ethereum-state-transition-function) จะเป็นตัวอย่างทำ transaction ระหว่าง account address : 14c5f88a และ contract code : bb75a980 ซึ่งข้อมูลก่อนทำ transaction จะแสดงในกล่อง STATE และข้อมูลหลังจาก transaction ได้รับการ validate เรียบร้อยจะแสดงในกล่อง STATE’ หลักการเปลี่ยน state ของ ethereum : The Ethereum state transition function APPLY(S,TX) -> S' ตรวจสอบข้อมูลต่างๆต้องถูกต้องเช่น           1.1 format transaction           1.2 signature ของ transaction           1.3 ค่า nonce ของ transaction ตรงกับค่า nonce ของ address ที่ทำ transaction 2.คำนวนค่าธรรมเนียมที่ผู้ส่งจะต้องจ่ายเพื่อให้ miner ทำงานใน transaction จ
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 2 Hash)

รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 2 Hash)

Technical
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? ตอนที่ 2 Hash จากตอนที่แล้วเราพูดเรื่องของการทำ encryption กันมาแล้ว ก่อนจะไปเรื่องที่ว่า Address ของ bitcoin ที่ไปที่มาของมัน มันเป็นมายังไง ผมจะขอพาไปรู้จักกับ Hash ก่อนอีกหนึ่งอย่างนะครับ โดยเจ้า “Hash” หรือศัพท์ทางการของมันคือ “Message Digest” เนี่ยเป็นการทำให้ข้อมูลไม่ว่าจะเป็นข้อมูลอะไร ขนาดเท่าไหร่ ไม่สำคัญว่าคือข้อมูลอะไร ย่อยลงมาเป็นข้อมูลอีกชุดหนึ่ง ซึ่งก็ถือว่าเป็นการเข้ารหัสข้อมูลเหมือนกัน แต่จะพิเศษกว่าตรงที่ข้อมูลที่ได้จากการทำ Hash นั้นจะถอดกลับเป็นข้อความต้นฉบับไม่ได้ และจะมีหน้าตาต่างกันตามแต่ละข้อมูลตัวตั้งต้น แต่ทุกข้อมูลที่ถูกย่อยลงมาจะมีขนาดเท่าๆ กันเสมอตามแต่ละวิธีการย่อย และวิธีการย่อยข้อมูลหรือเรียกแบบภาษาเทคนิคว่า “Cryptographic Hash Function” หรือ “Message Digest Algorithm” นั่นเอง ซึ่งผมเชื่อเลยว่า Digest Alg
ลืมไปเลยเรื่องระบบตายเมื่อมี Blockchain

ลืมไปเลยเรื่องระบบตายเมื่อมี Blockchain

Technical
สวัสดีครับแฟนๆ ผู้อ่านชาว Blockchain.Fish ที่น่ารักทุกท่าน ในวันนี้ทีมงานอยากขอมานำเสนอการประยุกต์ใช้แนวคิดของ Blockchain มาช่วยในการออกแบบระบบเรื่องการแก้ปัญหาระบบตาย ซึ่งในปัจจุบันเราท่านคงเคยพบเจอเหตุการณ์ที่ว่าระบบส่วนกลางมีปัญหาทำให้ไม่สามารถให้บริการได้ที่สำนักงานสาขานะครับ ขอตัดมาดูภาพปัจจุบันกัน จากภาพเราจะพบว่าถ้าเครื่องให้บริการเกิดมีปัญหาจะทำให้เครื่องลูกต่างๆไม่สามารถให้บริการได้ ทีนี้เราลองหันมาใช้งาน Blockchain ดูครับ ออกแบบให้ที่แต่ละสาขามี Blockchain Node เป็นของตนเอง และกำหนดให้ Application แต่ละสาขาทำงานกับ Blockchain Node สาขาตัวเอง เมื่อระบบกลางตายหรือมีปัญหา ก็ไม่กระทบอะไรกับสาขา ที่สาขายังคงให้บริการต่อไปได้ และเมื่อเครื่องแม่กลับมาให้บริการได้ด้วย Protocal Blockchain ก็จะทำการเชื่อมโยงข้อมูลเข้าหากันให้เองโดยอัตโนมัติ และนี้เป็นตัวอย่างการ
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 1 Encryption)

รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 1 Encryption)

Blockchain Platform, Technical
รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? ตอนที่ 1 Encryption ทุกท่านที่เคยใช้งาน Bitcoin หรือ coin อะไรสักอย่างคงคุ้นเคยอยู่แล้วกับชุดตัวเลขและตัวอักษรยาวๆ ที่เรียกว่า Address ซึ่งใช้สำหรับรับเงินหรือส่งเงินไปให้คนอื่นๆ แต่ท่านรู้หรือไม่ ไอ้เจ้าเลขและตัวอักษรที่เราอ่านไม่ออกนี้มันเกิดขึ้นมาได้อย่างไร แต่ก่อนจะไปเรื่องนั้น ขอพาไปรู้จักกันสักนิดกับศัพท์เทคนิคคำว่า Encryption ก่อนนะครับ ซึ่งผมว่า ทุกท่านก็คงรู้จักแหล่ะ ว่ามันคือการเข้ารหัสถูกไหมครับ ซึ่งมันก็เอาไว้สำหรับแปลงข้อความเพื่อไม่ให้คนอื่นๆ สามารถเห็นข้อความของเราได้ ขอยกตัวอย่างให้เห็นภาพง่ายๆ ครับ เช่นผมต้องการซ่อนคำว่า “Blockchain” ไม่ให้ใครอ่านออก แบบง่ายๆ เลยผมก็จะขยับตัวอักษรมา 3 step เช่น ตัวอักษร a ก็จะกลายเป็น d ฉะนั้นข้อความของผมก็จะถูกดัดแปลงเป็น “Eorfnfkdlq“ เห็นมั๊ยครับ อ่านไม่ออกละ และถ้าใครไม่รู้ขั้นตอนกา
รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 2 (Messages and Transactions)

รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 2 (Messages and Transactions)

Technical
หลังจากที่เรารู้แล้วว่าแต่ละโหนดในวง Ethereum จะประกอบไปด้วยข้อมูลบัญชี (Account) เพื่อใช้ในการระบุตัวตนสำหรับการทำรายการต่างๆในระบบ โดยรายการต่างๆในวงเน็ตเวิร์คจะเรียกว่า Transaction หรือ Message ซึ่งจะมาดูนิยาม Transaction และ Message กันครับ นิยามของ Transactions Transaction ในโลกของ Ethereum นั้นจะหมายถึงก้อนข้อมูลที่ถูกทำ digitally sign ซึ่งบรรจุข้อความ (Message) ที่จะถูกส่งหากันไปมาระหว่าง account หนึ่งถึง account หนึ่ง โดยที่ภายใน Transaction นั้นจะประกอบไปด้วย ที่อยู่ของผู้รับ Message โดยเป็นเลขฐาน 16 ขนาด 20 ไบท์ Digital signature ที่ผู้ส่งทำการ digitally sign Message อันนี้มา เงินที่ถูกส่งมาจากผู้ส่ง ข้อมูลอื่นๆ ซึ่งสามารถเป็นข้อมูลอะไรก็ได้ทั้งตัวเลข, ตัวอักษร รวมถึงไฟล์ต่าง โดยจะอยู่ในรูปแบบเลขฐาน 16 STARTGAS – ค่าตัวเลขสูงสุดของ step การประมวลผล tran