วันศุกร์, พฤษภาคม 25

Technical

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

รู้ให้ลึกรู้ให้จริงกับ 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
ตัวอย่างการออกแบบ Blockchain App สำหรับร้านสาขาและสำนักงานใหญ่

ตัวอย่างการออกแบบ Blockchain App สำหรับร้านสาขาและสำนักงานใหญ่

Technical
สวัสดีครับท่านผู้อ่าน Blockchain.Fish ที่น่ารักทุกท่าน วันนี้ในนามของทีมงานทีมเทคนิค Blockchain.Fish อยากขอนำเสนอตัวอย่างการออกแบบ Application ใน User Case ของการนำ Blockchain ไปใช้สำหรับ "Application ร้านสาขาและสำนักงานใหญ่" โดยขอตั้งเป้าการทำงานเพื่อให้เห็นภาพงานดังนี้ครับ จำลองลักษณะการทำงานในปัจจุบัน สมมติให้เป็น Case ของธุรกิจค้าปลีกที่ ร้านสาขาต้องส่งข้อมูลรายการการขายกลับไปยังสำนักงานใหญ่ เนื่องจากจำนวนรายการขายแต่ละสาขาเยอะมากๆ ต่อวัน จึงเป็นไปไม่ได้ที่จะส่งข้อมูล Real Time ไปยังสำนักงานใหญ่ ฉะนั้นจึงแก้ปัญหาด้วยการส่งยอดข้อมูลทุกสิ้นวันในลักษณะที่เรียกว่า Batch จากภาพนี้ถ้าอยากทราบว่าข้อมูลการขายเป็นอย่างไรต้องใช้เวลา 1-2 วัน ฝั่งทีมงาน IT ต้อง ตั้งเครื่อง Server รองรับการส่งไฟล์ Batch มาจากสาขาและทำระบบรองรับให้ร้านสาขาใช้งาน ซึ่งยิ่งสาขามากค่าใช้จ่ายในส่วนตรงนี
รู้ให้ลึกรู้ให้จริงกับ Ethereum ตอนที่ 1 (Account)

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

Technical
หลังจากที่เราพอจะรู้จัก Ethereum จากบทความก่อนหน้าแล้วว่าเป้าหมายของ Ethereum เกิดจากต้องการสร้างโปรโตคอลสำหรับพัฒนาโปรแกรมบนพื้นฐานของแนวคิดการกระจายข้อมูล (Decentralized File Storage) ซึ่งเป็นวิธีการนำข้อมูลไปเก็บไว้กับทุกๆโหนด (Public Ledger) ที่อยู่ในระบบเน็ตเวิร์ค Ethereum หลังจากนั้นทุกๆคนในระบบเน็ตเวิร์คจำเป็นจะต้องมีข้อมูลบัญชี (Account) เพื่อใช้ในการระบุตัวตนสำหรับการทำรายการต่างๆในระบบครับ Account คืออะไร เป็นข้อมูลขนาด 20 ไบต์ (Byte) เป็นเหมือนบ้านเลขที่ สำหรับบอกให้ผู้อื่นรู้ว่าถ้าอยากส่งข้อมูลมาให้เราต้องระบุผู้รับปลายทางเป็นเลข 20 ไบต์ของเรานะ หรือใช้ระบุว่าเราเป็นคนส่งข้อมูลชุดนี้ไปนะ (เหมือนกับที่อยู่ตอนเราจ่าหน้าซองจดหมายเลยครับ) โดยจะเป็นตัวเลขชุดที่สร้างมาจาก private key ของ account อีกทีครับ ตัวอย่างหน้าตา address ของ account ที่แสดงบน myetherwallet.com Ac
มาออกแบบ App บน Blockchain กันเถอะ

มาออกแบบ App บน Blockchain กันเถอะ

Technical
สวัสดีครับผม..จากการเขียนบทความแนะนำเกี่ยวกับมุมมองต่างๆของ Blockchain มากันหลายมุมมองแล้ว วันนี้ทีมงานอยากขออนุญาตมาเขียนในมุมมองว่า ถ้าเราจะออกแบบ Application ซัก 1 App บน Blockchain นั้นเราต้องคิดอย่างไรและมีมุมมองอย่างไรกันนะครับผมมม... ขอเริ่มที่ MVC ที่ขอเริ่มต้นที่ MVC Model เพราะคิดว่าเป็นรูปแบบที่นักพัฒนาระบบส่วนใหญ่จะรู้จักกันเป็นอย่างดีอยู่แล้ว ดังภาพเลยครับ จากภาพเราจะเห็นว่า View คือ ส่วนที่เรามีไว้ให้ผู้ใช้งานทำงานต่างๆอะไรก็สุดแล้วแต่ Application จะทำงานไป อาทิ ผู้ใช้งานเข้าใจว่ากดปุ่มนี้แล้วระบบจะบันทึกข้อมูลให้ซึ่งนับเป็นสิ่งสำคัญกับความเข้าใจของผู้ใช้งาน บางระบบออกแบบ View ไม่ดีแม้ว่าระบบหลังบ้านจะดีขนาดไหนผู้ใช้งานก็ไม่ชอบมันอยู่ดี Control คือ ส่วนที่จะทำงานจริงๆ หลังจากที่ผู้ใช้งานกดปุ่มอะไรบางอย่างไปแล้วนั้นเองครับว่าจะให้ระบบเราทำอะไรเราก็จะม