วันอังคาร, เมษายน 23

ผู้เขียน: วรวัฒน์ เธียระวิบูลย์

รู้หรือไม่ 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
รู้หรือไม่ 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
รู้หรือไม่ 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“ เห็นมั๊ยครับ อ่านไม่ออกละ และถ้าใครไม่รู้ขั้นตอนกา
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 4 – Deploy Smart Contract

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 4 – Deploy Smart Contract

Technical
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 4 จากคราวที่แล้ว เราเขียน Contract พร้อม function Hello world กันแล้วนั้น คราวนี้เรามาลอง Deploy ขึ้น network กันดูนะครับ แต่ก่อนอื่นเลยจะขอเล่าให้ฟังก่อนว่าในการติดต่อกับ Ethereum network นั้น มันมี Tool ที่ใช้คุยได้อยู่มากมาย แต่ที่นิยม ๆ จะมีอยู่ 3 ชื่อก็คือ web3.js, go-ethereum (หรือ Geth) และ Mist ซึ่งทั้ง 3 ตัวที่ผมเอ่ยมานั้น เอามาใช้ deploy ได้หมดเลย แต่ความยากง่ายจะต่างกันดังนี้ครับ ฉะนั้น ในบทความนี้ผมขออนุญาตแนะนำการ deploy โดยใช้ tool ที่ชื่อว่า Mist นะครับ ขอแนะนำสั้น ๆ เกี่ยวกับ Mist ให้ฟังก่อนนะครับ เจ้าตัว Mist เนี่ยมันเป็น application ที่จริงๆแล้วเหมือน web browser เลยสามารถใช้ท่องเว็บก็ได้ แถมถ้าเว็บนั้น ๆ มีการเรียก library web3.js Mist ก็จะรู้จักทันทีเพราะมัน include อยู่ในตัวเองด้วย แถมเจ้า Mist นี่เราสามารถใช้เป็นกร
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 3 – Hello world

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 3 – Hello world

Technical
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 3 สวัสดีปีใหม่ครับ มาแล้วครับ กลับมาและ ห่างหายไปนานนิดนึง เนื่องจากปีใหม่ไปเที่ยวต่างจังหวัดมาเลยไม่ได้มีเวลามาเขียนต่อเลย แหะๆ แล้วทุกท่านเป็นอย่างไรบ้างครับไปเที่ยวไหนมาหรือเปล่า ^^ ส่วนเนื้อหาในบทนี้ จากบทก่อน ๆ ที่เรารู้เรื่องพื้นฐานของการจะเขียน Smart Contract แล้วนั้น เรามาลงมือเขียน code กันเลย โดย code ที่เราจะเขียนกันนั้น จะเริ่มด้วย function พื้นฐานสามัญประจำโลกเลย นั่นก็คืออ function HelloWorld ที่แสน classic ที่ผมคิดว่าท่านที่เรียนการ Programming มาก็ต้องรู้จักเป็นอย่างดี (ฮา) ซึ่งหน้าตาของ code เป็นดังนี้   โดยจาก source code ที่ผมแปะไว้ข้างบนนั้น จะขออธิบายเป็นส่วน ๆ ดังนี้ครับ   อันนี้เป็นตัวที่กำหนด version ของ compiler เพื่อให้ compiler รู้ว่ามันควรทำงานกับ source code นี้มั๊ย เผื่อในอนาคต co
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 2 – IDE ที่จะใช้

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 2 – IDE ที่จะใช้

Technical
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 2 มาต่อกันเรื่องการเขียน code เพื่อสร้าง Smart Contract กันนะครับ โดยจากคราวที่แล้ว ผมได้เล่าถึงพวกประเภทของตัวแปรที่ใช้ได้ในภาษา solidity มาและ ถัดมาก็จะเริ่มมาลองเขียนกันเลยยย ก่อนอื่นเลยเวลาเราจะเขียน code ก็จำเป็นต้องมี editor เพื่อเขียนถูกมั๊ยครับ ซึ่งสำหรับภาษานี้จริง ๆ แล้วก็เขียนใน nodepad เลยก็ได้ แต่ถ้าต้องการสีสันหน่อยไฮไลท์ syntax หน่อย มันก็มีคนทำ editor ขึ้นมาเหมือนกันซึ่งมีเยอะแยะเลยทั้งแบบ online และ offline โดยตัว offline นั้นคือ Mix IDE ซึ่งตัวนี้ผมก็เขียนลองเขียน มันจะมี emulator จำลอง mode ขึ้นมาให้เล่นได้ใน IDE ด้วย ก็แลสะดวกดี แต่ที่ผมเจอมาคือโปรแกรมมันค้างบ่อยมาก เลยไม่น่าใช้เลย (ปัจจุบัน คนสร้างไม่ได้ดูแลต่อแล้ว) (รูปจาก http://blog.carl.pro/2016/06/building-an-ethereum-environment-with-docker/)  
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 1 – ชนิดของตัวแปร

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 1 – ชนิดของตัวแปร

Technical
ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 1 จากภาคที่แล้วที่ผมได้เกริ่นเรื่องของ Smart Contract ไว้ ซึ่งก็คงเข้าใจกันบ้างไม่มากก็น้อยนะครับ กลับมาคราวนี้เลยจะเป็นภาคต่อของเรื่อง Smart Contract ซึ่งเราจะลง code กันและ ก่อนอื่นเลยจะต้องบอกก่อนว่า ถ้าจะเขียน Smart Contract เนี่ยควรจะมีพื้นฐานของภาษา Java Script อยู่บ้าง จะทำให้พอเข้าใจอะไร ๆ  ได้ง่ายขึ้น เพราะ Syntax ของภาษาที่ใช้เขียน code ของ Smart Contract หรือที่เรียกว่า Solidity นั้น มีพื้นฐานมาจาก Java Script นั้นเอง (แต่ก็ไม่ได้เหมือน 100% นะครับ) ก่อนอื่นเลยสิ่งแรกที่ควรรู้จัก ก็คือ Data type ที่มีให้เราใช้งานได้ในภาษานี้นะครับ ซึ่งถึงแม้ผมจะบอกว่าเหมือน Java Script ก็จริง แต่จริง ๆ ภาษานี้ก็ต้องประกาศ Data type ให้กับตัวแปรที่เราสร้างขึ้น (ถึงแม้จะใช้คำสั่ง var ได้เหมือนในภาษา Java Script ก็เถอะ แต่ที่ถูกที่ควร ควรใช้ Dat
พูดถึง Ethereum ก็ตามมาด้วย Smart Contract แล้ว Smart Contract คืออะไรกัน ??

พูดถึง Ethereum ก็ตามมาด้วย Smart Contract แล้ว Smart Contract คืออะไรกัน ??

Technical
... บนโลก blockchain นั้นโดยทั่วไป คนจะนึกถึงเรื่องรับและส่งเงินกันเช่น Bitcoin Litecoin หรือ whatever coin (ซึ่งมีเยอะมาก ก.ไก่ 20 ตัว ลองดูที่ https://en.wikipedia.org/wiki/Digital_currency ได้ครับ) แต่จริงๆแล้ว มี blockchain อยู่หนึ่งประเภทที่สามารถทำได้มากกว่าแค่เรื่องรับและส่งเงิน (จริงๆ พื้นฐานของมันก็ยังสามารถรับและส่งเงินได้) นั่นคือ Ethereum อย่างที่บอกในตอนต้นว่า Ethereum เป็น blockchain ที่มากกว่าแค่รับและส่งเงินกัน สิ่งนั้นก็คือ Ethereum สามารถทำให้ blockchain network สามารถประมวลผลอะไรก็ได้ ซึ่งคำว่าประมวลผลอะไรก็ได้นั้น หมายถึงว่า ผู้ใช้งานสามารถเขียน code เพื่อไปฝากไว้ที่ Ethereum network และเมื่อมีใครคนอื่น (หรือเราเองก็ได้) เรียกใช้งาน code นี้ ตัวคนที่อุทิศตัวเป็น miner ก็จะหยิบเอา code ของเรามาประมวลผลให้ซึ่งคนที่เรียกใช้งานนั้น นอกจะเรียกเฉยๆได้แล้ว ยังสามารถส่ง p