Bài 3: Keys và cơ chế tạo ra Address
Blockchain là công nghệ của tương lai, sẽ được ứng dụng trong nhiều lĩnh vực, nhiều mục đích. Nó không phải là Bitcoin, mà Bitcoin chỉ là một con cá trong đại dương Blockchain. Loạt bài tìm hiểu công nghệ Blockchain thông qua cái đang tồn tại _ Bitcoin, hi vọng sẽ cung cấp cho các bạn nào quan tâm có cái nhìn sâu sắc hơn về Blockchain.
2.1. Private Key
Private Key đơn giản là một số ngẫu nhiên k được tạo ra (dựa trên một nguồn xáo trộn đủ phức tạp _ gọi là entropy). Đây là mã bí mật, tuyệt đối không được để lộ
2.2. Public Key
Public Key được tạo ra từ Private Key theo 1 chiều, có nghĩa là không thể tìm ra Private Key khi có Public Key.
Người ta thực hiện phép nhân vô hướng K=k*G trên đường cong Elliptic để xác định được điểm K thuộc đường cong, phép nhân vô hướng này được thực hiện trên một trường hữu hạn bởi số nguyên tố M được chọn trước (là một số nguyên tố cố định, đủ lớn)
Trong đó G là điểm cơ sở cũng được chọn trước
K có tọa độ là K(x,y) giá trị HEX
+ Nối 04 với x và tiếp theo là y ta được một chuỗi gọi là Uncompressed Public Key
+ Vì có thể xác định được y khi biết x thông qua y 2 = x 3 + 7, nên để lưu trữ lượng dữ liệu ít hơn, ta chỉ cần lưu x. Nhưng, khi giải hàm số tìm y, ta sẽ tìm được 2 giá trị y thỏa mãn y (+) và y (-), trong trường hữu hạn số nguyên tố thì y (+) và y (-) tương ứng là y chẵn và lẽ, do đó khi lưu x cần thêm ký tự phía trước x để xác định y là chẵn hay lẽ. Thêm 02 nếu y chẵn và 03 nếu y lẽ. Chuỗi mới này gọi là Compressed Public Key
2.3. Address
Địa chỉ Bitcoin là một chuổi ký tự được tạo ra từ việc thực hiện Hash chuổi Public Key (có thể là chuổi Uncompressed Public Key hoặc Compressed Public Key tùy phiên bản Wallet, các phiên bản Wallet sau này toàn dùng Compressed Public Key như là một cải tiến đã được chấp nhận). Address được tạo ra từ Uncompressed Public Key thì gọi là Uncompressed Address, tương tự Address được tạo ra từ Compressed Public Key thì gọi là Compressed Address
2.4. WIF và WIF-uncompressed
Việc xuất hiện hai loại Address như đã nêu trên dẫn theo hệ lụy là làm sao khi Import Private Key vào Wallet, Wallet sẽ sử dụng loại Address nào? Do đó, ta cần dùng đến Wallet Import Format (WIF) _ là một dạng định dạng cho phép Export/Import một Private Key giữa các Wallet kèm theo một flag (cờ) cho biết có sử dụng Compressed Public Key hay không.
+ WIF được tạo ra từ việc thực hiện Base58 Check Encoding trên k, kết quả là 1 chuỗi bắt đầu bằng 5
+ WIF-compressed được tạo ra từ việc thực hiện Base58 Check Encoding trên k01 (nối thêm 01 vào sau k trước khi Encode), kết quả là 1 chuỗi bắt đầu bằng K hoặc L
2.5. Base58 Check Encoding
Base58 Encoding thực chất giống Base64 Encoding nhưng sử dụng bộ ký tự đã được loại bỏ bớt các ký tự dễ gây nhầm lẫn như: 0 (số 0), O (chữ o hoa), l (chữ L thường), I (chữ I hoa) và các ký tự "+" và "/"
Base58 Check Encoding là phương thức Encoding mở rộng, thêm Version Prefix ở đầu chuổi rồi tạo và thêm Checksum vào cuối chuổi mới sau đó áp dụng Base58 Encoding
Dưới đây là sơ đồ mô tả cơ chế tạo ra Bitcoin Address
Đối với Bitcoin, những thứ dưới đây đã được chọn sẵn:
Phương trình đường cong Elliptic: y 2 = x 3 + 7
Modulo nguyên tố = 2256 – 232 – 29 – 28 – 27 – 26 – 24 – 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
Điểm cơ sở = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
Bậc của điểm = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
Bình luận gần đây