ในบทความชุดนี้ เราจะสร้างสกุลเงินดิจิทัลแบบง่ายที่อิงจากการใช้งานบล็อคเชนอย่างง่ายใน Golang ในเวลาไม่ถึง 5 นาที คุณต้องติดตั้ง golang ก่อนเพื่อสร้างโครงการนี้ สำหรับโปรแกรมแก้ไขข้อความ คุณสามารถใช้อะไรก็ได้ ที่นี่ฉันใช้รหัส visual studio
คุณติดตั้งหรือไม่ เอาล่ะมาทำกัน!
หากคุณสร้างโครงการสร้างไฟล์ main.go . โอเค ให้โค้ดก่อน เราจะเริ่มจาก main.go เริ่มจากส่วน struct Block ของ “blockchain” กันก่อน ในบล็อกเชนจะบล็อกที่เก็บข้อมูลที่มีค่า ตัวอย่างเช่น bitcoin บล็อกธุรกรรมของร้านค้า สาระสำคัญของสกุลเงินดิจิทัลใด ๆ นอกจากนี้ บล็อกยังมีข้อมูลทางเทคนิค เช่น เวอร์ชัน การประทับเวลาปัจจุบัน และแฮชของบล็อกก่อนหน้า ในบทความนี้เราจะไม่นำบล็อกไปใช้ตามที่อธิบายไว้ในข้อกำหนดของบล็อคเชนหรือบิตคอยน์ แต่เราจะใช้เวอร์ชันที่ง่ายขึ้นซึ่งมีเฉพาะข้อมูลที่สำคัญเท่านั้น นี่คือสิ่งที่ดูเหมือน ที่นี่เรามีบล็อกโครงสร้าง:
ชนิด โครงสร้างบล็อก {เวลาประทับเวลา เวลาธุรกรรม []stringก่อนหน้า []byteแฮช []byte}
Timestamp
คือเวลาปัจจุบัน (เมื่อสร้างบล็อก) transactions
เป็นข้อมูลที่มีค่าจริงที่มีอยู่ในบล็อก prevhas
เก็บแฮชของบล็อกก่อนหน้าและ Hash
คือแฮชของบล็อก ในข้อกำหนด Bitcoin Timestamp
, prevhash
และ Hash
เป็นส่วนหัวของบล็อกซึ่งสร้างโครงสร้างข้อมูลแยกต่างหากและธุรกรรม (transaction
ในกรณีของเรา) เป็นโครงสร้างข้อมูลแยกต่างหาก เราจึงนำมันมาผสมกันเพื่อให้เข้าใจง่ายขึ้น
แล้วเราจะคำนวณแฮชได้อย่างไร? วิธีคำนวณแฮชเป็นคุณสมบัติที่สำคัญมากของบล็อคเชน และนี่คือฟีเจอร์ที่ทำให้บล็อคเชนมีความปลอดภัย ประเด็นคือการคำนวณแฮชเป็นการดำเนินการที่ยากในการคำนวณ ซึ่งต้องใช้เวลาแม้ในคอมพิวเตอร์ที่เร็ว (นั่นเป็นสาเหตุที่ผู้คนซื้อ GPU อันทรงพลังเพื่อขุด Bitcoin) นี่คือการออกแบบสถาปัตยกรรมโดยเจตนา ซึ่งทำให้การเพิ่มบล็อคใหม่ทำได้ยาก ดังนั้นจึงป้องกันการปรับเปลี่ยนหลังจากเพิ่มเข้าไปแล้ว เราจะหารือและใช้กลไกนี้ในบทความต่อๆ ไป
สำหรับตอนนี้ เราจะใช้ฟิลด์บล็อก เชื่อมข้อมูล และคำนวณแฮช SHA-256 บนชุดค่าผสมที่ต่อกัน มาทำกันใน Newhash
วิธี:
func NewHash (เวลา time.Time, ธุรกรรม []string, prevhash []byte) []byte {อินพุต := ต่อท้าย (prevhash, time.String()...)สำหรับธุรกรรม := ธุรกรรมช่วง {อินพุต = ผนวก (อินพุต, สตริง (รูน (ธุรกรรม))...)}แฮช:= sha256.Sum256(อินพุต)ส่งคืนแฮช[:]}
ต่อไป ตามแบบแผน Golang เราจะใช้ฟังก์ชันที่ลดความซับซ้อนในการสร้างบล็อกและเสร็จสิ้น:
func Blocks (ธุรกรรม [] string, prevhash []byte) * บล็อก {เวลาปัจจุบัน := time.Now()กลับ&บล็อก{ประทับเวลา: time.Time{},ธุรกรรม: ธุรกรรมก่อนหน้า: ก่อนหน้า,แฮช: NewHash (เวลาปัจจุบัน ธุรกรรม prevhash)}}
เรายังคงสร้างฟังก์ชันการพิมพ์ต่อไป ฟังก์ชันการพิมพ์มีประโยชน์สำหรับการพิมพ์เนื้อหาของแต่ละบล็อกที่ทำธุรกรรม นี่คือรหัส:
func พิมพ์ (บล็อก * บล็อก) {fmt.Printf("ttime: %sn", block.timestamp.String())fmt.Printf("tprevhash: %xn", block.prevhash)fmt.Printf("thash: %xn", block.Hash)}
และรายการฟังก์ชันสำหรับธุรกรรมการพิมพ์ :
ธุรกรรม func (บล็อก * บล็อก) {fmt.Println("ธุรกรรม:")สำหรับฉัน ธุรกรรม:= ช่วง block.transactions {fmt.Printf("tt%v: %qn", i, รายการ)}}
หลังจากที่ฟังก์ชั่นที่จำเป็นทั้งหมดเสร็จสมบูรณ์แล้ว เราจะใช้ในฟังก์ชั่นหลัก:
ฟังก์ชั่นหลัก () {ryan := []string{"ryandi ส่ง 50 BTC ไปยัง Reza"}block_1 := Blocks(ไรอัน, []ไบต์{})fmt.Println("นี่คือบล็อกแรกของเรา")พิมพ์(block_1)ธุรกรรม(block_1)แจ็ค:= []สตริง{"แจ็คส่ง 20 BTC ให้เรย์โนลด์"}block_2 := Blocks (แจ็ค, block_1.Hash)fmt.Println("นี่คือบล็อกที่สองของเรา")พิมพ์(block_2)ธุรกรรม(block_2)}
โอเค รหัสทั้งหมดที่เราเขียนเสร็จแล้ว ให้เรียกใช้โดยพิมพ์ go run main.go ในเทอร์มินัล เอาท์พุต :
สรุป
เราสร้างต้นแบบบล็อคเชนที่เรียบง่าย: เป็นเพียงชุดของบล็อก โดยแต่ละบล็อกมีการเชื่อมต่อกับบล็อกก่อนหน้า บล็อกเชนที่แท้จริงนั้นซับซ้อนกว่ามาก ในบล็อคเชนของเรา การเพิ่มบล็อคใหม่นั้นง่ายและรวดเร็ว แต่ในบล็อคเชนจริงการเพิ่มบล็อคใหม่นั้นต้องใช้การทำงานบางอย่าง: ต้องทำการคำนวณอย่างหนักก่อนที่จะได้รับอนุญาตให้เพิ่มบล็อค (กลไกนี้เรียกว่า Proof-of-Work) นอกจากนี้ blockchain ยังเป็นฐานข้อมูลแบบกระจายที่ไม่มีผู้มีอำนาจตัดสินใจเพียงคนเดียว ดังนั้นบล็อกใหม่จะต้องได้รับการยืนยันและอนุมัติโดยผู้เข้าร่วมรายอื่นในเครือข่าย (กลไกนี้เรียกว่าฉันทามติ) และยังไม่มีธุรกรรมใดๆ ในบล็อคเชนของเรา!
- "
- ทั้งหมด
- บทความ
- บทความ
- Bitcoin
- blockchain
- BTC
- สร้าง
- ซื้อ
- รหัส
- คอมพิวเตอร์
- การเชื่อมต่อ
- เอกฉันท์
- เนื้อหา
- ต่อ
- cryptocurrency
- ปัจจุบัน
- ข้อมูล
- ฐานข้อมูล
- ออกแบบ
- บรรณาธิการ
- FAST
- ลักษณะ
- สาขา
- ชื่อจริง
- ปฏิบัติตาม
- ฟอร์ม
- ฟังก์ชัน
- อนาคต
- GV
- กัญชา
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- hr
- HTTPS
- ia
- ข้อมูล
- IP
- IT
- กลาง
- เครือข่าย
- อื่นๆ
- คน
- การป้องกัน
- โครงการ
- หลักฐานของการทำงาน
- พิสัย
- วิ่ง
- ชุด
- ง่าย
- So
- เริ่มต้น
- จัดเก็บ
- ร้านค้า
- วิชาการ
- เวลา
- การทำธุกรรม
- การทำธุรกรรม
- W
- งาน
- การเขียน