กระเป๋าเงินดิจิทัลเป็นเครื่องมือที่สำคัญที่ช่วยให้ผู้ใช้จัดการบัญชีบล็อกเชนของพวกเขาได้อย่างปลอดภัย จัดเก็บสินทรัพย์ของพวกเขาได้อย่างปลอดภัย และเซ็นต์ธุรกรรมเพื่อทำการเปลี่ยนแปลงสถานะบล็อกเชน
ในโพสต์นี้เราจะพูดถึงว่ากระเป๋าเงินคืออะไร วิธีการสร้างกระเป๋าเงิน และวิธีที่พวกเขาใช้คริปโทกราฟีแบบวงรีเพื่อสร้างและปกป้องคู่กุญแจส่วนตัว-สาธารณะ สกัดวลีเมล็ดพันธุ์ และสนับสนุนการโต้ตอบบล็อกเชนที่ปลอดภัย
กระเป๋าเป็นแอปพลิเคชันที่ช่วยให้คุณดูและปฏิสัมพันธ์กับบัญชีบล็อกเชนของคุณ บัญชีเหล่านี้ช่วยให้คุณสามารถส่งธุรกรรมเพื่อดำเนินการ เช่น การส่งโทเค็นหรือปฏิสัมพันธ์กับสัญญาอัจฉริยะ
บัญชีแต่ละบัญชีบนบล็อกเชนประกอบด้วยคู่คีย์ทางกลวิธี; เซ็ตของ 2 คีย์ที่เชื่อมโยงกัน ในบริบทของบล็อกเชน ประเภทบัญชีนี้เรียกว่าบัญชีเป็นเจ้าของภายนอก (Externally Owned Account - EOA) และประกอบด้วยคีย์สาธารณะและคีย์ส่วนตัว
คีย์เจาะระดับนี้มีคุณสมบัติที่มีประสิทธิภาพเรียกว่าฟังก์ชั่นประตูกั้น หมายความว่า:
กระเป๋าใช้ในการเซ็นข้อความหรือธุรกรรมโดยใช้คีย์ส่วนตัวของกระเป๋าเพื่อส่งไปยังบล็อกเชน
กระเป๋าให้วิธีที่จะรู้ว่าข้อความหรือธุรกรรมที่อยู่ในกระเป๋าได้ตกลงกันไว้ โดยเนื่องจากสามารถกู้คืนคีย์สาธารณะของผู้ส่งธุรกรรมจากลายเซ็นต์ธุรกรรมได้ นี่เป็นสิ่งที่สำคัญเพื่อป้องกันธุรกรรมปลอม / อันตรายจากการได้รับการยอมรับบนบล็อกเชน
ตัวอย่างเช่น Jarrod สามารถส่งธุรกรรมที่อ้างว่า Abril ส่ง 5 ETH ให้เขา แม้กระทั่งเธอไม่เคยยินยอมธุรกรรมนี้ อย่างไรก็ตาม เนื่องจากบล็อกเชนยืนยันลายเซ็นของแต่ละธุรกรรม จึงจะปฏิเสธธุรกรรมเร็ว ๆ นี้เนื่องจากที่อยู่ที่กู้คืนจากลายเซ็นไม่ตรงกับ "ผู้ส่ง" ของธุรกรรม (เช่น Abril)
บล็อกเชนเช่น Ethereum ใช้ ECDSA (Elliptic Curve Digital Signature Algorithm) เพื่อตรวจสอบว่าคีย์สาธารณะที่กู้คืนจากลายเซ็นธุรกรรมตรงกับคีย์สาธารณะของผู้ที่ส่งธุรกรรมไปยังเครือข่ายหรือไม่
เพื่อสร้างกระเป๋า คุณต้องสร้างคู่กุญแจสาธารณะ-ส่วนตัว อย่างไรก็ตามค่าของคู่กุญแจเหล่านี้จำเป็นต้องทำตามกฎบางข้อเพื่อให้ทำงานบนบล็อกเชน
กระบวนการ 3 ขั้นตอนนี้คือกระแสหลักของวิธีการสร้างบัญชีบนบล็อกเชน
ต่อไปเราจะศึกษาวิธีที่ใช้ในการสร้าง public key ด้วย elliptic curve และ private key แต่ก่อนนั้นเราจะตอบคำถามอื่น ๆ เกี่ยวกับกระเป๋าเงินด้วย เช่น:
ในขณะที่เป็นไปได้ที่จะสร้างค่า 64-hex แบบสุ่มเหมือนที่เราแสดงให้เห็นได้เมื่อสักครู่ แต่โดยปกติแล้ว กุญแจส่วนตัวจะถูกสร้างขึ้นโดยใช้มาตรฐานเฉพาะที่มาจาก Bitcoin มาตรฐานเหล่านี้ช่วยให้ผู้ใช้จำ seed phrase ซึ่งเป็นวลี 12-24 คำที่สามารถใช้สร้างบัญชีใหม่ได้หลายบัญชีที่เกี่ยวข้องกับมัน
นี้ช่วยให้ผู้ใช้จดจำชุดคำได้เพียงชุดเดียวเพื่อเข้าถึงบัญชีทั้งหมดของพวกเขา แต่ละอันมีคู่กุญแบบสาธารณะ-ส่วนตัวแต่ละคู่ จำนวนที่ไม่จำกัดของคีย์ส่วนตัวใหม่สามารถได้มาจากวลีเมล็ดเดียวกันโดยใช้ฟังก์ชันการกำหนดคีย์ที่เฉพาะเจาะจง (KDF)
ดังนั้นเราจะเริ่มต้นด้วยการอธิบายว่า seed phrases ถูกสร้างขึ้นโดยอิทธิพลสุ่มแบบสุ่มและวิธีการสร้าง private keys จาก seed phrases ก่อนที่จะย้อนกลับมาอธิบายวิธีการสร้าง public keys จาก private keys
เมื่อคุณติดตั้งแอปพลิเคชันกระเป๋าครั้งแรก โดยทั่วไปแล้วจะถามให้คุณเขียน seed phrase ลงและเก็บไว้อย่างปลอดภัยในที่ไหนบางที จะเป็นคำสั่งที่ประกอบด้วย 12 หรือ 24 คำ คุณสามารถดูตัวอย่างรายการคำศัพท์ภาษาอังกฤษที่เป็นไปได้ที่นี่, ซึ่งคุณจะรู้ว่ามีความยาว 2048 คำ (เราจะกลับมาพูดถึงจำนวนนั้นในไม่ช้า)
ความคิดเห็นเรื่องการเก็บรักษาวลีต้นไม้ได้ถูกนำเสนอครั้งแรกในปี 2013 ด้วย BIP (Bitcoin Improvement Proposal) หรือ BIP-39 ข้อเสนอนี้จะให้วิธีมาตรฐานในการสร้างเอ็นโทรพีที่สุ่มและแปลงเป็นคำที่ง่ายจะจำ
ก่อนอื่นเราต้องตรวจสอบให้แน่ใจว่าวลีดใบเมล็ดของเราถูกสุ่มสร้างขึ้น หลังจากนั้น เราไม่ต้องการให้ใครก็ตามเข้าไปในกระเป๋าเงินของเราโดยบังคับและเข้าถึงเงินของเรา
เพื่อทำสิ่งนี้ เราจะสร้างหมายเลขสุ่มโดยใช้ CSPRNG (Cryptographically secure pseudorandom number generator) ซึ่งคุณสามารถทำได้ในเบราว์เซอร์ของคุณ:
หมายเลขสุ่มนี้เรียกว่าเอ็นโทรปี เอ็นโทรปีนี้ใช้สร้างชุดคำที่เป็นวลีเมล็ดพันธุ์ ในกรณีของเรา 128 บิตสร้างเป็น 12 คำ แต่ก็สามารถใช้ความยาวอื่น ๆ ได้เช่นกัน เช่น
ดังนั้นเราจะใช้บิตเหล่านี้เพื่อสร้างวลีเมล็ดพันธุ์ได้อย่างไร? ความสัมพันธ์ระหว่างบิตกับคำคืออะไร? ก่อนอื่นจะสร้าง checksum สำหรับอุปรณ์และแนบไปยัง 128 บิต; นี่คือการสร้างแฮช 4 บิตของอุปกรณ์เพื่อให้มั่นใจได้ว่ามันเป็นไปตามความเป็นจริงของมัน
ดังนั้นเราตอนนี้มี 128 บิตของตัวแปรสุ่ม + 4 บิตของ checksum เพื่อทำให้เป็นรวมทั้งหมด 132 บิต ต่อไป 132 บิตจะถูกแปลงเป็นไบนารี โดยเฉพาะอย่างยิ่งพวกเขาถูกแบ่งออกเป็นชิ้นเล็ก ๆ ของ 11 บิต
ขณะนี้เรามีชุดของตัวเลขสอง進เลข รอบละ 11 บิต คำใบ้: เรามีจำนวน 12 ตัวเลข และวลีเมล็ดพันธุ์ของเราจะเป็น 12 คำ
จำได้ไหมว่าเรามีคำ 2048 คำในรายการของเราและเลือก 2048 นั่นเพราะ 2048 เท่ากับ 2^11 เนื่องจากมีตัวเลขไบนารีที่เป็นไปได้ต่างๆ 2048 ตัวที่คุณสามารถทำได้ด้วย 11 บิต
ตอนนี้เราแค่ต้องแปลงเลขฐานสองเหล่านี้เป็นคำจากรายการคำของเราเท่านั้น นั่นคือการใช้เลขฐานสองเป็นดัชนีเพื่อค้นหาคำในรายการคำ กล่าวคือ หากเลขฐานสองเป็น 10 เราจะใช้คำที่ 9 ในรายการ (เนื่องจากเริ่มต้นด้วยดัชนี 0) เช่น:
ทำซ้ำนี้ 12 ครั้ง หนึ่งครั้งสำหรับแต่ละตัวเลข 11 บิตเพื่อสร้างวลีซีดที่ประกอบด้วย 12 คำ
โดยการสร้างค่าเอ็นโทรปีสุ่ม แยกเป็นชิ้นเล็ก ๆ ของไบนารี และใช้ค่าไบนารีเหล่านั้นเป็นดัชนีในการค้นหาคำในรายการคำ เราก็จะได้อยู่ที่วลีเมล็ดพันธุ์ที่สุ่ม
ปฏิกิริยาทันทีของคุณต่อสิ่งนี้อาจเป็น: 'ถ้ามีเพียงคำศัพท์ 2048 คำเท่านั้น ใครสักคนสามารถเดา seed phrase ของฉันได้หรือเปล่า?' เอาเป็นว่า ทางทฤษฎีแล้วถูก แต่มันเป็นเรื่องที่... จริงๆ, ไม่น่าจะเป็นไปได้มากเลย คุณสงสัยว่าน่าจะเป็นไปได้อย่างไรล่ะ?
สมมติว่าเราลืมขั้นตอนการสร้างตัวเลขสุ่ม 128 บิตและเลือกคำ 12 คำจากรายการเองแทน ทุกครั้งที่เราเลือกคำ เราก็เลือกหนึ่งตัวเลือกในกลุ่มคำ 2048 คำ
ดังนั้นเราสามารถบอกได้ว่าสำหรับใครบางคนที่จะเดาลำดับคำเหล่านี้ได้เช่นกัน พวกเขาจำเป็นต้องเดาคำเดียวกันกับเราด้วยโอกาส 1/2048 12 ครั้งติดต่อกัน ขณะนี้คุณอาจคิดว่า "โอเค ซึ่งไม่ยากอะไร..." ใช่ไหม?” แต่เรามาเล่นต่อ:
นี่คือ 2048 x 2048 x 2048 ... 12 ครั้ง หรือ 2048^12 ซึ่งเป็นจำนวนที่ใหญ่มากอย่างรุนแรง โดยประมาณ 5 ล้านล้านล้านล้าน หรือ 5 แสนล้านล้านล้าน นั่นเป็นสิ่งที่เราไม่สามารถเข้าใจได้ แต่ลองมาลองกัน...
จินตนาการว่าคุณเริ่มทายตอนนี้โดยใช้คอมพิวเตอร์ที่มีกำลังการทายตัวเลขเมล็ดพันล้านต่อวินาที จะใช้เวลาในการทายเมล็ดพันล้านปี 159 ล้านปีสำหรับทายเมล็ดพันล้านตัวหรือ (ขึ้นอยู่กับสิ่งที่คุณเชื่อ) ราว ๆ 11,000 เท่าของอายุปัจจุบันของจักรวาล
วลีเมล็ดพันธุ์ 24 คำดีกว่า 12 คำหรือไม่?
บางกระเป๋าเลือกใช้ 128 บิต (12 คำ), แต่กระเป๋าที่ทันสมัยมากขึ้นจะขอให้คุณจดจำ 24 คำสำหรับวลีเมล็ดพันธุ์ของคุณ! ซึ่งก็ใหญ่มากอีกครั้ง
ตอนนี้เรามีซีดฟราส์ 12 คำ แต่เราจะใช้มันเพื่อสร้างกุญแจส่วนตัวสำหรับบัญชีได้อย่างไร? เพื่อทำเช่นนี้เราต้องแปลงซีดฟราส์ของเราเป็นไบนารีซีดที่สามารถใช้สร้างกระเป๋าเงินได้ กระบวนการนี้รวมถึงขั้นตอนต่อไปนี้:
กระบวนการนี้ (เรียกว่าฟังก์ชันการกำหนดคีย์), ส่งออกค่าแฮชขนาด 64 ไบต์ที่เรียกว่าเมล็ดไบนารีโดยใช้อัลกอริทึมอื่นที่เรียกว่า HMAC-SHA512 เป็นฟังก์ชันเทียบเท่าสุ่ม
ค่าแฮช 64 ไบต์ที่ถูกส่งออกสามารถนำมาใช้ในการสร้างบัญชีโดยใช้ตรรกะที่มาจากมาตรฐานบิตคอยน์อื่น ๆ โดยเฉพาะอย่างยิ่ง BIP-32 และตามต้องการ BIP-44 ที่เป็นส่วนขยายของ BIP-32
BIP-32 แนะนํากระเป๋าเงินที่กําหนดลําดับชั้น (HD) ที่ซึ่งกระเป๋าเงินจํานวนมากสามารถได้มาจากเมล็ดเดียวและกระเป๋าเงินจํานวนมากสามารถหาได้จากกระเป๋าเงินเหล่านั้นสร้าง "ต้นไม้" ของกระเป๋าเงิน
BIP-44 จะให้ทางเลือกทางมาตรฐานในการสร้างโครงสร้างกระเป๋าสตรีมาจากเมล็ดเดียวโดยการนำเอาเส้นทางการสืบทอดเฉพาะกลุ่มไปปฏิบัติตามโครงสร้างต่อไปนี้: m / purpose’ / coin_type’ / account’ / change / address_index:
กระเป๋าเงินบางใบไม่ได้ใช้ BIP-44 แต่เป็นวิธีทั่วไปในการกําหนดมาตรฐานว่าบัญชีได้มาจากเมล็ดพันธุ์ไบนารีอย่างไร
เหมือนที่เราได้กล่าวไปก่อนหน้านี้ กุญแจส่วนตัวมี 64 อักขระฮ็อกเซนต์ ซึ่งเท่ากับ 32 ไบต์ และเราเพิ่งสร้างซีดไบนารีขนาด 64 ไบต์ผ่านกระบวนการ PBKDF2 - ดังนั้นเราจะใช้ค่าแฮชขนาด 64 ไบต์นี้เพื่อสร้างกุญแจส่วนตัวได้อย่างไร?
ก่อนอื่น แฮชจะถูกแบ่งเป็นสองครึ่ง แต่ละครึ่งมีขนาด 32 ไบต์:
ตอนนี้เราเข้าใจแล้วว่าคีย์ส่วนตัวมีลักษณะอย่างไรสร้างแบบสุ่มอย่างไรและได้มาซึ่งคีย์หลายคีย์จากวลีเมล็ดพันธุ์เดียว ต่อไปเรามาสํารวจว่าคีย์สาธารณะได้มาจากคีย์ส่วนตัวอย่างไร
โดยใช้คริปโทกราฟีแบบวงรี (ECC) เราสามารถหาคีย์สาธารณะสำหรับคีย์ส่วนตัวที่กำหนดได้ มีวงเล็บวงรีชนิดต่าง ๆ อยู่ แต่วงเล็บวงรีที่ใช้ทั้ง Bitcoin และ Ethereum คือ secp256k1
ข้อมูลสำหรับเส้นโค้งวงรีรวมถึงจุดเริ่มต้น G ที่ใช้เป็นจุดเริ่มต้นในการสร้างจุดอื่น ๆ บนเส้นโค้ง จากจุดเริ่มต้นนี้เราจะ "เคลื่อนที่" บนเส้นโค้งจำนวนครั้งที่กำหนด (โดยกำหนดโดยคีย์ส่วนตัวของเรา) ในวิธีที่เฉพาะเจาะจง จุดบนเส้นโค้งที่เราจะอยู่เมื่อเราหยุดกระบวนการนี้จะเป็นคีย์สาธารณะของเรา
วิธีที่เรา "เคลื่อนที่" บนเส้นโค้งเรียกว่าการคูณสกาล. เมื่อทำงานกับเส้นโค้งเอลลิปติก สกาลหมายถึงตัวเลขที่ใช้สเกลจุดบนเส้นโค้ง. เราเอาจุดฐาน G และใช้ตัวเลขสกาลบนจุดนั้นเพื่อให้ได้จุดใหม่บนเส้นโค้ง โดย "ยืดตัว" จุดนั้นออก
จำนวนสกาลที่เรานำมาใช้กับจุดเริ่มต้นคือคีย์ส่วนตัวของเรา; ง่ายๆ ก็คือเราเอาจุดเริ่มต้น G ของเราและนำมาคูณกับคีย์ส่วนตัวของเราเพื่อให้ได้คีย์สาธารณะของเรา
ในความเป็นจริงแล้วเนื่องจากเส้นโค้งถูกกำหนดในฟิลด์จำนวนเฉพาะ ℤp ดังนั้นดูเหมือนมีจุดกระจายอย่างกระจายทั่วไป... แต่ยังคงมีคุณสมบัติเดียวกันกับเส้นโค้งเทียมกัน
ตอนที่สิ้นสุดของกระบวนการคูณค่าสเกลาร์นี้ (กระเด่นโดยรอบจำนวนของคีย์ส่วนตัว), เราจะได้รับจุดใหม่บนเส้นโค้งซึ่งเป็นคีย์สาธารณะของเรา คุณสามารถจินตนาการกระบวนการนี้ดูเหมือนสิ่งใดสิ่งหนึ่งดังนี้:
คีย์สาธารณะ, ตามชื่อเสียงของมัน, สามารถแชร์กับทุกคนได้อย่างสะดวก มันเป็นประโยชน์สำหรับ:
กระเป๋าเป็นส่วนสำคัญของบล็อกเชนที่ใช้วิธีการเข้ารหัสเส้นโค้งเอลลิปติกเพื่ออนุญาตให้ผู้ใช้ส่งธุรกรรมและลงนามข้อความจากบัญชีของพวกเขา
อย่างไรก็ตาม บางบล็อกเชนเช่น Abstract ยังสนับสนุนประเภทของกระเป๋าใหม่ที่เรียกว่าบัญชีสมาร์ทคอนแทรค ที่ให้คุณสมบัติเพิ่มเติมและเปิดใช้งานกลไกการรักษาความปลอดภัยที่แข็งแกร่งขึ้น การกู้คืนเงิน และอื่น ๆ
บทความนี้ถูกสำเนามาจาก [https://abs.xyz/blog], ส่งต่อชื่อเรื่องต้นฉบับ 'คือกระเป๋าใบนี้หรือ?' ลิขสิทธิ์ทั้งหมดเป็นของผู้เขียนต้นฉบับ [ Jarrod Watts ] หากมีคำโต้แย้งในการเผยแพร่นี้ กรุณาติดต่อ Gate เรียนรู้ทีมงานและพวกเขาจะจัดการให้โดยเร็ว
ข้อจํากัดความรับผิดชอบความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนและไม่ถือเป็นคําแนะนําการลงทุนใด ๆ
การแปลบทความเป็นภาษาอื่น ๆ ทำโดยทีม Gate Learn ห้ามทำสำเนา แจกจ่ายหรือลอกเลียนแบบบทความแปล นอกจากที่ระบุ
กระเป๋าเงินดิจิทัลเป็นเครื่องมือที่สำคัญที่ช่วยให้ผู้ใช้จัดการบัญชีบล็อกเชนของพวกเขาได้อย่างปลอดภัย จัดเก็บสินทรัพย์ของพวกเขาได้อย่างปลอดภัย และเซ็นต์ธุรกรรมเพื่อทำการเปลี่ยนแปลงสถานะบล็อกเชน
ในโพสต์นี้เราจะพูดถึงว่ากระเป๋าเงินคืออะไร วิธีการสร้างกระเป๋าเงิน และวิธีที่พวกเขาใช้คริปโทกราฟีแบบวงรีเพื่อสร้างและปกป้องคู่กุญแจส่วนตัว-สาธารณะ สกัดวลีเมล็ดพันธุ์ และสนับสนุนการโต้ตอบบล็อกเชนที่ปลอดภัย
กระเป๋าเป็นแอปพลิเคชันที่ช่วยให้คุณดูและปฏิสัมพันธ์กับบัญชีบล็อกเชนของคุณ บัญชีเหล่านี้ช่วยให้คุณสามารถส่งธุรกรรมเพื่อดำเนินการ เช่น การส่งโทเค็นหรือปฏิสัมพันธ์กับสัญญาอัจฉริยะ
บัญชีแต่ละบัญชีบนบล็อกเชนประกอบด้วยคู่คีย์ทางกลวิธี; เซ็ตของ 2 คีย์ที่เชื่อมโยงกัน ในบริบทของบล็อกเชน ประเภทบัญชีนี้เรียกว่าบัญชีเป็นเจ้าของภายนอก (Externally Owned Account - EOA) และประกอบด้วยคีย์สาธารณะและคีย์ส่วนตัว
คีย์เจาะระดับนี้มีคุณสมบัติที่มีประสิทธิภาพเรียกว่าฟังก์ชั่นประตูกั้น หมายความว่า:
กระเป๋าใช้ในการเซ็นข้อความหรือธุรกรรมโดยใช้คีย์ส่วนตัวของกระเป๋าเพื่อส่งไปยังบล็อกเชน
กระเป๋าให้วิธีที่จะรู้ว่าข้อความหรือธุรกรรมที่อยู่ในกระเป๋าได้ตกลงกันไว้ โดยเนื่องจากสามารถกู้คืนคีย์สาธารณะของผู้ส่งธุรกรรมจากลายเซ็นต์ธุรกรรมได้ นี่เป็นสิ่งที่สำคัญเพื่อป้องกันธุรกรรมปลอม / อันตรายจากการได้รับการยอมรับบนบล็อกเชน
ตัวอย่างเช่น Jarrod สามารถส่งธุรกรรมที่อ้างว่า Abril ส่ง 5 ETH ให้เขา แม้กระทั่งเธอไม่เคยยินยอมธุรกรรมนี้ อย่างไรก็ตาม เนื่องจากบล็อกเชนยืนยันลายเซ็นของแต่ละธุรกรรม จึงจะปฏิเสธธุรกรรมเร็ว ๆ นี้เนื่องจากที่อยู่ที่กู้คืนจากลายเซ็นไม่ตรงกับ "ผู้ส่ง" ของธุรกรรม (เช่น Abril)
บล็อกเชนเช่น Ethereum ใช้ ECDSA (Elliptic Curve Digital Signature Algorithm) เพื่อตรวจสอบว่าคีย์สาธารณะที่กู้คืนจากลายเซ็นธุรกรรมตรงกับคีย์สาธารณะของผู้ที่ส่งธุรกรรมไปยังเครือข่ายหรือไม่
เพื่อสร้างกระเป๋า คุณต้องสร้างคู่กุญแจสาธารณะ-ส่วนตัว อย่างไรก็ตามค่าของคู่กุญแจเหล่านี้จำเป็นต้องทำตามกฎบางข้อเพื่อให้ทำงานบนบล็อกเชน
กระบวนการ 3 ขั้นตอนนี้คือกระแสหลักของวิธีการสร้างบัญชีบนบล็อกเชน
ต่อไปเราจะศึกษาวิธีที่ใช้ในการสร้าง public key ด้วย elliptic curve และ private key แต่ก่อนนั้นเราจะตอบคำถามอื่น ๆ เกี่ยวกับกระเป๋าเงินด้วย เช่น:
ในขณะที่เป็นไปได้ที่จะสร้างค่า 64-hex แบบสุ่มเหมือนที่เราแสดงให้เห็นได้เมื่อสักครู่ แต่โดยปกติแล้ว กุญแจส่วนตัวจะถูกสร้างขึ้นโดยใช้มาตรฐานเฉพาะที่มาจาก Bitcoin มาตรฐานเหล่านี้ช่วยให้ผู้ใช้จำ seed phrase ซึ่งเป็นวลี 12-24 คำที่สามารถใช้สร้างบัญชีใหม่ได้หลายบัญชีที่เกี่ยวข้องกับมัน
นี้ช่วยให้ผู้ใช้จดจำชุดคำได้เพียงชุดเดียวเพื่อเข้าถึงบัญชีทั้งหมดของพวกเขา แต่ละอันมีคู่กุญแบบสาธารณะ-ส่วนตัวแต่ละคู่ จำนวนที่ไม่จำกัดของคีย์ส่วนตัวใหม่สามารถได้มาจากวลีเมล็ดเดียวกันโดยใช้ฟังก์ชันการกำหนดคีย์ที่เฉพาะเจาะจง (KDF)
ดังนั้นเราจะเริ่มต้นด้วยการอธิบายว่า seed phrases ถูกสร้างขึ้นโดยอิทธิพลสุ่มแบบสุ่มและวิธีการสร้าง private keys จาก seed phrases ก่อนที่จะย้อนกลับมาอธิบายวิธีการสร้าง public keys จาก private keys
เมื่อคุณติดตั้งแอปพลิเคชันกระเป๋าครั้งแรก โดยทั่วไปแล้วจะถามให้คุณเขียน seed phrase ลงและเก็บไว้อย่างปลอดภัยในที่ไหนบางที จะเป็นคำสั่งที่ประกอบด้วย 12 หรือ 24 คำ คุณสามารถดูตัวอย่างรายการคำศัพท์ภาษาอังกฤษที่เป็นไปได้ที่นี่, ซึ่งคุณจะรู้ว่ามีความยาว 2048 คำ (เราจะกลับมาพูดถึงจำนวนนั้นในไม่ช้า)
ความคิดเห็นเรื่องการเก็บรักษาวลีต้นไม้ได้ถูกนำเสนอครั้งแรกในปี 2013 ด้วย BIP (Bitcoin Improvement Proposal) หรือ BIP-39 ข้อเสนอนี้จะให้วิธีมาตรฐานในการสร้างเอ็นโทรพีที่สุ่มและแปลงเป็นคำที่ง่ายจะจำ
ก่อนอื่นเราต้องตรวจสอบให้แน่ใจว่าวลีดใบเมล็ดของเราถูกสุ่มสร้างขึ้น หลังจากนั้น เราไม่ต้องการให้ใครก็ตามเข้าไปในกระเป๋าเงินของเราโดยบังคับและเข้าถึงเงินของเรา
เพื่อทำสิ่งนี้ เราจะสร้างหมายเลขสุ่มโดยใช้ CSPRNG (Cryptographically secure pseudorandom number generator) ซึ่งคุณสามารถทำได้ในเบราว์เซอร์ของคุณ:
หมายเลขสุ่มนี้เรียกว่าเอ็นโทรปี เอ็นโทรปีนี้ใช้สร้างชุดคำที่เป็นวลีเมล็ดพันธุ์ ในกรณีของเรา 128 บิตสร้างเป็น 12 คำ แต่ก็สามารถใช้ความยาวอื่น ๆ ได้เช่นกัน เช่น
ดังนั้นเราจะใช้บิตเหล่านี้เพื่อสร้างวลีเมล็ดพันธุ์ได้อย่างไร? ความสัมพันธ์ระหว่างบิตกับคำคืออะไร? ก่อนอื่นจะสร้าง checksum สำหรับอุปรณ์และแนบไปยัง 128 บิต; นี่คือการสร้างแฮช 4 บิตของอุปกรณ์เพื่อให้มั่นใจได้ว่ามันเป็นไปตามความเป็นจริงของมัน
ดังนั้นเราตอนนี้มี 128 บิตของตัวแปรสุ่ม + 4 บิตของ checksum เพื่อทำให้เป็นรวมทั้งหมด 132 บิต ต่อไป 132 บิตจะถูกแปลงเป็นไบนารี โดยเฉพาะอย่างยิ่งพวกเขาถูกแบ่งออกเป็นชิ้นเล็ก ๆ ของ 11 บิต
ขณะนี้เรามีชุดของตัวเลขสอง進เลข รอบละ 11 บิต คำใบ้: เรามีจำนวน 12 ตัวเลข และวลีเมล็ดพันธุ์ของเราจะเป็น 12 คำ
จำได้ไหมว่าเรามีคำ 2048 คำในรายการของเราและเลือก 2048 นั่นเพราะ 2048 เท่ากับ 2^11 เนื่องจากมีตัวเลขไบนารีที่เป็นไปได้ต่างๆ 2048 ตัวที่คุณสามารถทำได้ด้วย 11 บิต
ตอนนี้เราแค่ต้องแปลงเลขฐานสองเหล่านี้เป็นคำจากรายการคำของเราเท่านั้น นั่นคือการใช้เลขฐานสองเป็นดัชนีเพื่อค้นหาคำในรายการคำ กล่าวคือ หากเลขฐานสองเป็น 10 เราจะใช้คำที่ 9 ในรายการ (เนื่องจากเริ่มต้นด้วยดัชนี 0) เช่น:
ทำซ้ำนี้ 12 ครั้ง หนึ่งครั้งสำหรับแต่ละตัวเลข 11 บิตเพื่อสร้างวลีซีดที่ประกอบด้วย 12 คำ
โดยการสร้างค่าเอ็นโทรปีสุ่ม แยกเป็นชิ้นเล็ก ๆ ของไบนารี และใช้ค่าไบนารีเหล่านั้นเป็นดัชนีในการค้นหาคำในรายการคำ เราก็จะได้อยู่ที่วลีเมล็ดพันธุ์ที่สุ่ม
ปฏิกิริยาทันทีของคุณต่อสิ่งนี้อาจเป็น: 'ถ้ามีเพียงคำศัพท์ 2048 คำเท่านั้น ใครสักคนสามารถเดา seed phrase ของฉันได้หรือเปล่า?' เอาเป็นว่า ทางทฤษฎีแล้วถูก แต่มันเป็นเรื่องที่... จริงๆ, ไม่น่าจะเป็นไปได้มากเลย คุณสงสัยว่าน่าจะเป็นไปได้อย่างไรล่ะ?
สมมติว่าเราลืมขั้นตอนการสร้างตัวเลขสุ่ม 128 บิตและเลือกคำ 12 คำจากรายการเองแทน ทุกครั้งที่เราเลือกคำ เราก็เลือกหนึ่งตัวเลือกในกลุ่มคำ 2048 คำ
ดังนั้นเราสามารถบอกได้ว่าสำหรับใครบางคนที่จะเดาลำดับคำเหล่านี้ได้เช่นกัน พวกเขาจำเป็นต้องเดาคำเดียวกันกับเราด้วยโอกาส 1/2048 12 ครั้งติดต่อกัน ขณะนี้คุณอาจคิดว่า "โอเค ซึ่งไม่ยากอะไร..." ใช่ไหม?” แต่เรามาเล่นต่อ:
นี่คือ 2048 x 2048 x 2048 ... 12 ครั้ง หรือ 2048^12 ซึ่งเป็นจำนวนที่ใหญ่มากอย่างรุนแรง โดยประมาณ 5 ล้านล้านล้านล้าน หรือ 5 แสนล้านล้านล้าน นั่นเป็นสิ่งที่เราไม่สามารถเข้าใจได้ แต่ลองมาลองกัน...
จินตนาการว่าคุณเริ่มทายตอนนี้โดยใช้คอมพิวเตอร์ที่มีกำลังการทายตัวเลขเมล็ดพันล้านต่อวินาที จะใช้เวลาในการทายเมล็ดพันล้านปี 159 ล้านปีสำหรับทายเมล็ดพันล้านตัวหรือ (ขึ้นอยู่กับสิ่งที่คุณเชื่อ) ราว ๆ 11,000 เท่าของอายุปัจจุบันของจักรวาล
วลีเมล็ดพันธุ์ 24 คำดีกว่า 12 คำหรือไม่?
บางกระเป๋าเลือกใช้ 128 บิต (12 คำ), แต่กระเป๋าที่ทันสมัยมากขึ้นจะขอให้คุณจดจำ 24 คำสำหรับวลีเมล็ดพันธุ์ของคุณ! ซึ่งก็ใหญ่มากอีกครั้ง
ตอนนี้เรามีซีดฟราส์ 12 คำ แต่เราจะใช้มันเพื่อสร้างกุญแจส่วนตัวสำหรับบัญชีได้อย่างไร? เพื่อทำเช่นนี้เราต้องแปลงซีดฟราส์ของเราเป็นไบนารีซีดที่สามารถใช้สร้างกระเป๋าเงินได้ กระบวนการนี้รวมถึงขั้นตอนต่อไปนี้:
กระบวนการนี้ (เรียกว่าฟังก์ชันการกำหนดคีย์), ส่งออกค่าแฮชขนาด 64 ไบต์ที่เรียกว่าเมล็ดไบนารีโดยใช้อัลกอริทึมอื่นที่เรียกว่า HMAC-SHA512 เป็นฟังก์ชันเทียบเท่าสุ่ม
ค่าแฮช 64 ไบต์ที่ถูกส่งออกสามารถนำมาใช้ในการสร้างบัญชีโดยใช้ตรรกะที่มาจากมาตรฐานบิตคอยน์อื่น ๆ โดยเฉพาะอย่างยิ่ง BIP-32 และตามต้องการ BIP-44 ที่เป็นส่วนขยายของ BIP-32
BIP-32 แนะนํากระเป๋าเงินที่กําหนดลําดับชั้น (HD) ที่ซึ่งกระเป๋าเงินจํานวนมากสามารถได้มาจากเมล็ดเดียวและกระเป๋าเงินจํานวนมากสามารถหาได้จากกระเป๋าเงินเหล่านั้นสร้าง "ต้นไม้" ของกระเป๋าเงิน
BIP-44 จะให้ทางเลือกทางมาตรฐานในการสร้างโครงสร้างกระเป๋าสตรีมาจากเมล็ดเดียวโดยการนำเอาเส้นทางการสืบทอดเฉพาะกลุ่มไปปฏิบัติตามโครงสร้างต่อไปนี้: m / purpose’ / coin_type’ / account’ / change / address_index:
กระเป๋าเงินบางใบไม่ได้ใช้ BIP-44 แต่เป็นวิธีทั่วไปในการกําหนดมาตรฐานว่าบัญชีได้มาจากเมล็ดพันธุ์ไบนารีอย่างไร
เหมือนที่เราได้กล่าวไปก่อนหน้านี้ กุญแจส่วนตัวมี 64 อักขระฮ็อกเซนต์ ซึ่งเท่ากับ 32 ไบต์ และเราเพิ่งสร้างซีดไบนารีขนาด 64 ไบต์ผ่านกระบวนการ PBKDF2 - ดังนั้นเราจะใช้ค่าแฮชขนาด 64 ไบต์นี้เพื่อสร้างกุญแจส่วนตัวได้อย่างไร?
ก่อนอื่น แฮชจะถูกแบ่งเป็นสองครึ่ง แต่ละครึ่งมีขนาด 32 ไบต์:
ตอนนี้เราเข้าใจแล้วว่าคีย์ส่วนตัวมีลักษณะอย่างไรสร้างแบบสุ่มอย่างไรและได้มาซึ่งคีย์หลายคีย์จากวลีเมล็ดพันธุ์เดียว ต่อไปเรามาสํารวจว่าคีย์สาธารณะได้มาจากคีย์ส่วนตัวอย่างไร
โดยใช้คริปโทกราฟีแบบวงรี (ECC) เราสามารถหาคีย์สาธารณะสำหรับคีย์ส่วนตัวที่กำหนดได้ มีวงเล็บวงรีชนิดต่าง ๆ อยู่ แต่วงเล็บวงรีที่ใช้ทั้ง Bitcoin และ Ethereum คือ secp256k1
ข้อมูลสำหรับเส้นโค้งวงรีรวมถึงจุดเริ่มต้น G ที่ใช้เป็นจุดเริ่มต้นในการสร้างจุดอื่น ๆ บนเส้นโค้ง จากจุดเริ่มต้นนี้เราจะ "เคลื่อนที่" บนเส้นโค้งจำนวนครั้งที่กำหนด (โดยกำหนดโดยคีย์ส่วนตัวของเรา) ในวิธีที่เฉพาะเจาะจง จุดบนเส้นโค้งที่เราจะอยู่เมื่อเราหยุดกระบวนการนี้จะเป็นคีย์สาธารณะของเรา
วิธีที่เรา "เคลื่อนที่" บนเส้นโค้งเรียกว่าการคูณสกาล. เมื่อทำงานกับเส้นโค้งเอลลิปติก สกาลหมายถึงตัวเลขที่ใช้สเกลจุดบนเส้นโค้ง. เราเอาจุดฐาน G และใช้ตัวเลขสกาลบนจุดนั้นเพื่อให้ได้จุดใหม่บนเส้นโค้ง โดย "ยืดตัว" จุดนั้นออก
จำนวนสกาลที่เรานำมาใช้กับจุดเริ่มต้นคือคีย์ส่วนตัวของเรา; ง่ายๆ ก็คือเราเอาจุดเริ่มต้น G ของเราและนำมาคูณกับคีย์ส่วนตัวของเราเพื่อให้ได้คีย์สาธารณะของเรา
ในความเป็นจริงแล้วเนื่องจากเส้นโค้งถูกกำหนดในฟิลด์จำนวนเฉพาะ ℤp ดังนั้นดูเหมือนมีจุดกระจายอย่างกระจายทั่วไป... แต่ยังคงมีคุณสมบัติเดียวกันกับเส้นโค้งเทียมกัน
ตอนที่สิ้นสุดของกระบวนการคูณค่าสเกลาร์นี้ (กระเด่นโดยรอบจำนวนของคีย์ส่วนตัว), เราจะได้รับจุดใหม่บนเส้นโค้งซึ่งเป็นคีย์สาธารณะของเรา คุณสามารถจินตนาการกระบวนการนี้ดูเหมือนสิ่งใดสิ่งหนึ่งดังนี้:
คีย์สาธารณะ, ตามชื่อเสียงของมัน, สามารถแชร์กับทุกคนได้อย่างสะดวก มันเป็นประโยชน์สำหรับ:
กระเป๋าเป็นส่วนสำคัญของบล็อกเชนที่ใช้วิธีการเข้ารหัสเส้นโค้งเอลลิปติกเพื่ออนุญาตให้ผู้ใช้ส่งธุรกรรมและลงนามข้อความจากบัญชีของพวกเขา
อย่างไรก็ตาม บางบล็อกเชนเช่น Abstract ยังสนับสนุนประเภทของกระเป๋าใหม่ที่เรียกว่าบัญชีสมาร์ทคอนแทรค ที่ให้คุณสมบัติเพิ่มเติมและเปิดใช้งานกลไกการรักษาความปลอดภัยที่แข็งแกร่งขึ้น การกู้คืนเงิน และอื่น ๆ
บทความนี้ถูกสำเนามาจาก [https://abs.xyz/blog], ส่งต่อชื่อเรื่องต้นฉบับ 'คือกระเป๋าใบนี้หรือ?' ลิขสิทธิ์ทั้งหมดเป็นของผู้เขียนต้นฉบับ [ Jarrod Watts ] หากมีคำโต้แย้งในการเผยแพร่นี้ กรุณาติดต่อ Gate เรียนรู้ทีมงานและพวกเขาจะจัดการให้โดยเร็ว
ข้อจํากัดความรับผิดชอบความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนและไม่ถือเป็นคําแนะนําการลงทุนใด ๆ
การแปลบทความเป็นภาษาอื่น ๆ ทำโดยทีม Gate Learn ห้ามทำสำเนา แจกจ่ายหรือลอกเลียนแบบบทความแปล นอกจากที่ระบุ