Ví tiền là gì?

Người mới bắt đầu10/1/2024, 6:09:44 PM
Trong bài viết này, chúng tôi sẽ giải thích về ví tiền là gì, cách tạo ví tiền và cách sử dụng mật mã đường cong elliptic để tạo và bảo mật các cặp khóa riêng-tụ công khai, tạo chuỗi hạt giống (seed phrases) và tạo điều kiện cho các giao dịch an toàn trên blockchain.

Ví tiền là công cụ cần thiết giúp người dùng quản lý tài khoản blockchain, lưu trữ tài sản một cách an toàn, và ký giao dịch để thực hiện thay đổi trạng thái blockchain.

Trong bài viết này, chúng tôi sẽ giải thích các khái niệm về ví tiền, cách tạo ví tiền và cách sử dụng mật mã đường cong elip để tạo và bảo mật cặp khóa riêng tư-công khai, rút trích các cụm từ gốc, và tạo điều kiện cho các giao dịch blockchain an toàn.

Ví tiền là gì?

Ví tiền là một ứng dụng cho phép bạn xem và tương tác với tài khoản blockchain của mình; các tài khoản này cho phép bạn gửi giao dịch để thực hiện các hành động như gửi token hoặc tương tác với hợp đồng thông minh.

Mỗi tài khoản trên blockchain được tạo thành từ một cặp khóa mã học; một bộ 2 khóa được liên kết với nhau. Trong ngữ cảnh của các blockchain, loại tài khoản này thường được gọi là Tài khoản Sở hữu Bên Ngoài (EOA) và bao gồm một khóa công khai và một khóa bí mật:

  • Khóa công khai: Địa chỉ ví của bạn. Nó có thể được chia sẻ với bất kỳ ai và người khác (hoặc hợp đồng thông minh) có thể sử dụng nó để gửi tiền điện tử cho bạn.
  • Khóa riêng tư: "Khóa ký" bạn sử dụng để ký tin nhắn hoặc giao dịch. Bất cứ ai có quyền truy cập vào khóa riêng tư đều có toàn quyền kiểm soát số tiền trong ví.

Cặp khóa này có một tính năng mạnh mẽ, gọi là hàm cửa sau; có nghĩa là:

  • Dễ dàng nhận ra khóa công khai nếu bạn có khóa bí mật (A→B).
  • Không thể tìm ra khóa riêng nếu bạn có khóa công khai (B→A).

Ví tiền được sử dụng để làm gì?

Ví tiền được sử dụng để ký các tin nhắn hoặc giao dịch bằng khóa riêng của ví tiền để gửi đến một chuỗi khối.

Ví tiền cung cấp một cách để biết được những tin nhắn hoặc giao dịch mà một ví tiền đã đồng ý; vì khóa công khai của người gửi giao dịch có thể được khôi phục từ chữ ký giao dịch. Điều này rất quan trọng để ngăn chặn các giao dịch giả mạo/độc hại từ việc được chấp nhận trên blockchain.

Ví dụ, Jarrod có thể gửi một giao dịch khẳng định rằng Abril đã gửi cho anh ấy 5 ETH ngay cả khi cô ấy chưa bao giờ đồng ý với giao dịch này. Tuy nhiên, vì blockchain xác minh chữ ký của mỗi giao dịch, nó sẽ nhanh chóng từ chối giao dịch khi địa chỉ được khôi phục từ chữ ký không khớp với “người gửi” của giao dịch (tức là Abril).

Các blockchain như Ethereum sử dụng ECDSA (Thuật toán Chữ ký số Đường cong Elliptic) để kiểm tra xem khóa công khai phục hồi từ chữ ký giao dịch có khớp với khóa công khai của người gửi giao dịch tới mạng hay không.

Ví tiền được tạo như thế nào?

Để tạo một ví tiền, bạn cần tạo một cặp khóa công khai - khóa bí mật. Tuy nhiên, giá trị của cặp khóa này cần tuân theo một số quy tắc để hoạt động trên một blockchain.

  1. Một khóa bí mật được tạo ra từ 64 ký tự hệ thập lục phân (các ký tự 0→F).
  2. Khóa công khai được tạo ra từ khóa bí mật bằng cách sử dụng mật mã đường cong Elliptic (ECC).
  3. Khóa công khai được chia nhỏ, băm và định dạng để trở thành một địa chỉ 42 ký tự.

Quá trình 3 bước này là quy trình cốt lõi để tạo ra tài khoản trên blockchain.

Tiếp theo, chúng ta sẽ tìm hiểu cách một khóa công khai được tạo ra bằng cách sử dụng một đường cong elip và một khóa riêng. Nhưng trước khi làm điều đó, chúng ta sẽ trả lời một số câu hỏi khác mà bạn có thể quan tâm về ví tiền, chẳng hạn như:

  • Làm thế nào để đảm bảo rằng khóa riêng tư của tôi được tạo ngẫu nhiên?
  • Nếu tôi có cùng một khóa riêng tư với ai đó thì sao?
  • Cụm từ khóa giống như thế nào trong quy trình này?
  • Làm thế nào để tạo ra nhiều cặp khóa từ một cụm từ gốc duy nhất?

Mã gốc là gì?

Dù có thể tạo ra một giá trị 64-hex ngẫu nhiên như chúng tôi vừa thể hiện, thường thì khóa riêng tư được tạo ra bằng cách sử dụng các tiêu chuẩn cụ thể xuất phát từ Bitcoin. Các tiêu chuẩn này cho phép người dùng nhớ một cụm từ gốc, đó là một cụm từ gồm 12-24 từ có thể được sử dụng để tạo ra bất kỳ số lượng tài khoản mới nào liên kết với nó.

Điều này cho phép người dùng nhớ một bộ từ duy nhất để truy cập vào tất cả các tài khoản của họ; mỗi tài khoản có một cặp khóa công khai-tư nhân riêng biệt. Bất kỳ số lượng khóa tư nhân mới nào cũng có thể được tạo ra từ một cụm từ gốc duy nhất bằng cách sử dụng một hàm tạo khóa cụ thể (KDF).

Vì vậy, hãy trước tiên tìm hiểu cách cụm từ khóa được tạo ra thông qua entropy ngẫu nhiên và cách khóa riêng tư có thể được tạo ra từ cụm từ khóa, trước khi cuối cùng xem xét lại cách khóa công khai được tạo ra từ khóa riêng tư.

Cách Seed Phrases Hoạt Động

Khi bạn cài đặt ứng dụng ví tiền lần đầu, thông thường, nó sẽ yêu cầu bạn viết và lưu trữ một cụm từ khóa ở một nơi an toàn; thường là một cụm từ 12 hoặc 24 từ. Bạn có thể xem một danh sách ví dụ về các từ tiếng Anh có thể cóở đây, mà bạn sẽ nhận thấy có độ dài 2048 từ (chúng ta sẽ quay lại con số đó trong ít phút).

BIP-39 là gì?

Ý tưởng lưu trữ cụm từ gốc mnemonics này được giới thiệu vào năm 2013 với một BIP (Đề xuất Cải thiện Bitcoin); BIP-39. Đề xuất này cung cấp một cách chuẩn hóa để tạo ra entropy ngẫu nhiên và dịch nó thành một chuỗi từ dễ nhớ.

Làm thế nào để tạo ra một cụm từ khóa mật?

Trước tiên, chúng ta cần đảm bảo cụm từ khóa gốc của chúng ta được tạo ngẫu nhiên, sau tất cả, chúng ta không muốn ai khác vô tình lấy được vào ví tiền của chúng ta và truy cập vào quỹ tiền của chúng ta.

Để làm điều này, một số ngẫu nhiên được tạo ra bằng cách sử dụng CSPRNG (Bộ tạo số ngẫu nhiên bảo mật mật mã), bạn có thể thực hiện điều này trên trình duyệt của bạn:

Số ngẫu nhiên này được gọi là entropy. Entropy này được sử dụng để tạo ra các từ tạo thành một cụm từ khóa. Trong trường hợp của chúng tôi, 128 bit tương ứng với 12 từ, nhưng cũng có thể sử dụng độ dài khác, như là:

  • 15 từ: 160 bit
  • 18 từ: 192 bit
  • 21 từ: 224 bit
  • 24 từ: 256 bit

Vậy, chúng ta sử dụng những bit này để tạo cụm từ khóa như thế nào? Mối quan hệ giữa bit và từ là gì? Đầu tiên, một checksum cho entropy được tạo ra và được thêm vào 128 bit; đây là một băm 4 bit của entropy được tạo ra để đảm bảo tính toàn vẹn của nó.

Vì vậy, bây giờ chúng ta có 128 bit của mật khẩu ngẫu nhiên + 4 bit của mã kiểm tra, tổng cộng là 132 bit. Tiếp theo, 132 bit này được chuyển đổi thành hệ nhị phân; cụ thể là chúng được chia thành các khối của 11 bit.

Chúng tôi hiện có một bộ 12 số nhị phân, mỗi số có độ dài 11 bit. Gợi ý: chúng tôi có 12 số, và cụm từ khóa của chúng tôi sẽ là 12 từ!

Hãy nhớ rằng chúng ta có 2048 từ trong danh sách của chúng ta và rằng 2048 đã được chọn vì 2048 là 2^11, vì có 2048 số nhị phân khác nhau có thể tạo ra được với 11 bit.

Bây giờ chúng ta chỉ cần chuyển đổi những con số nhị phân này thành từ trong danh sách từ của chúng ta. Điều này được thực hiện bằng cách sử dụng con số nhị phân như một chỉ số để tìm từ trong danh sách từ. Ví dụ: Nếu con số nhị phân là 10, chúng ta sử dụng từ thứ 9 trong danh sách (vì chúng ta bắt đầu từ chỉ số 0), ví dụ:

  • 000000111, (7 trong hệ nhị phân) là phần tử thứ 8 trong danh sách, là trừu tượng! 😉
  • 11111111111, (2047 trong nhị phân) là mục cuối cùng trong danh sách (thứ 2048), đó là "sở thú".

Lặp lại điều này 12 lần, mỗi lần cho một số 11 bit để tạo thành một cụm từ khóa chứa 12 từ.

Bằng cách tạo ra một giá trị ngẫu nhiên cho entropy, chia nó thành các phần nhỏ của nhị phân và sử dụng các giá trị nhị phân đó như một chỉ số để tìm kiếm các từ trong danh sách từ, chúng ta sẽ đến được một cụm hạt giống ngẫu nhiên.

Ai đó có thể đoán được cụm từ khóa của tôi không?

Phản ứng ngay lập tức của bạn có thể là: "Nếu chỉ có 2048 từ có thể, liệu có ai đoán được cụm từ gốc của tôi không?" Thực ra, kỹ thuật thì có, nhưng thực sự... thực sự không thể tin được. Bạn hỏi không thể tin được đến mức nào?

Hãy tưởng tượng chúng ta quên bước tạo 128 bit ngẫu nhiên và chỉ cần chọn thủ công 12 từ từ danh sách. Mỗi lần chúng tôi chọn một từ, chúng tôi sẽ chọn một tùy chọn trong nhóm 2048 từ.

Vì vậy, chúng ta có thể nói rằng đối với người khác cũng đoán đúng chuỗi từ này, họ cần phải đoán đúng từ giống như chúng tôi với tỉ lệ 1/2048, 12 lần liên tiếp. Hiện tại, bạn có lẽ đang nghĩ, "ok điều đó nghe không khó lắm...", phải khôngI'm sorry, but I cannot translate the text as it is not provided in the input.Nhưng, hãy chơi theo cách này:

  • Từ thứ nhất: 2048 lựa chọn
  • Từ thứ hai: 2048 lựa chọn
  • Và còn nữa, lên đến 12: 2048 lựa chọn

Đây là 2048 x 2048 x 2048 … 12 lần. Hoặc, 2048^12. Đó là một con số cực kỳ lớn. Khoảng 5 tỷ tỷ tỷ tỷ, hoặc 5 ngàn tỷ tỷ tỷ tỷ. Điều đó không thể hiểu được đối với chúng ta, nhưng hãy thử...

Hãy tưởng tượng bạn bắt đầu đoán ngay bây giờ, sử dụng một máy tính cực kỳ mạnh mẽ có thể đoán trăm nghìn seed phrases mỗi giây. Máy tính này sẽ mất 159 nghìn tỷ năm để đoán một seed phrase. Hoặc (tùy thuộc vào niềm tin của bạn), khoảng 11.000 lần lâu hơn so với tuổi đời hiện tại của vũ trụ.

24 từ gốc tốt hơn 12 từ phải không?

Một số ví tiền lựa chọn 128 bit (12 từ), nhưng ví tiền hiện đại hơn yêu cầu bạn nhớ 24 từ cho cụm từ gốc của bạn! Điều này lại quá lớn đáng tin cậy.

Cách khóa riêng tư được tạo ra từ cụm từ gốc

Hiện nay, chúng ta có một cụm từ gốc gồm 12 từ, làm thế nào để sử dụng nó để tạo ra các khóa riêng tư cho tài khoản? Để làm điều này, chúng ta cần chuyển đổi cụm từ gốc của chúng ta thành một cụm từ nhị phân có thể được sử dụng để tạo ra các ví tiền. Quá trình này bao gồm các bước sau:

  1. Tùy chọn, người dùng cung cấp mật khẩu bổ sung.
  2. Một thuật toán được gọi là PBKDF2 (Hàm phái khóa dựa trên mật khẩu) nhận vào: Cụm từ khóa. Một kết hợp của chuỗi “mnemonic” và mật khẩu tùy chọn.

Quá trình này (gọi là hàm bộ khái quát), đề xuất một giá trị bảo mật 64 byte, gọi là hạt giỏ vàng nhận, sử dụng thuật toán khác gọi là HMAC-SHA512 như lời hàm giác ngữ.

Giá trị băm 64 byte đầu ra có thể được sử dụng để tạo tài khoản bằng logic có nguồn gốc từ các tiêu chuẩn Bitcoin khác; cụ thể là BIP-32 và tùy chọn, một phần mở rộng của BIP-32, BIP-44.

BIP-32 là gì?

BIP-32 giới thiệu ví xác định phân cấp (HD); nơi nhiều ví có thể được lấy từ một hạt giống duy nhất và nhiều ví hơn có thể được lấy từ các ví đó, tạo ra một "cây" ví.

BIP-44 là gì?

BIP-44 cung cấp một cách tiêu chuẩn để tạo ra một cấu trúc ví tiền từ một hạt nhị phân duy nhất bằng cách thực hiện một đường dẫn phân chia cụ thể theo cấu trúc: m / purpose’ / coin_type’ / account’ / change / address_index:

  • Mục đích: Xác định tiêu chuẩn BIP được sử dụng; đối với BIP-44, nó là 44’.
  • coin_type: Xác định loại tiền điện tử; ví dụ, 0’ cho Bitcoin, 60’ cho Ethereum.
  • Tài khoản: Phân biệt giữa các tài khoản người dùng khác nhau.
  • change: Cho biết loại địa chỉ: 0 cho việc nhận, 1 cho việc thay đổi.
  • address_index: Cung cấp một chỉ mục duy nhất cho mỗi địa chỉ trong cùng tài khoản và loại thay đổi.

Không phải tất cả các ví tiền đều sử dụng BIP-44, nhưng đó là cách thông thường để chuẩn hóa cách tài khoản được tạo ra từ một hạt nhị phân.

Khóa riêng tư được tạo ra từ hạt nhị phân như thế nào?

Như chúng tôi đã đề cập trước đó, khóa riêng tư có 64 ký tự hexa, tương đương 32 byte. Và chúng tôi vừa tạo ra một hạt nhị phân 64 byte thông qua quá trình PBKDF2 - vậy chúng ta sử dụng giá trị băm 64 byte này để tạo khóa riêng tư như thế nào?

Đầu tiên, hash được chia thành hai nửa, mỗi nửa có kích thước 32 byte:

  1. Nửa đầu tiên là khóa bí mật chính. Đây là một ánh xạ trực tiếp 1-1 của hạt nhị phân (được tạo ra bằng cụm từ gốc của bạn) và ví của bạn. Nó có thể được sử dụng trong quá trình tạo khóa bí mật con.
  2. Nửa sau là mã chuỗi. Điều này được sử dụng để đảm bảo: Nếu một khóa con bị đe dọa, thì khóa chính vẫn an toàn. Các khóa con có thể được xây dựng một cách nhất quán và mỗi khóa đều là duy nhất.

Bây giờ chúng ta hiểu được hình dạng của các khóa riêng tư, cách chúng được tạo ngẫu nhiên và cách nhiều khóa có thể được tạo ra từ một cụm từ gốc duy nhất. Tiếp theo, hãy khám phá cách khóa công khai được tạo ra từ các khóa riêng tư.

Cách khóa công khai-cá nhân hoạt động như thế nào

Sử dụng mật mã đường cong elip (ECC), chúng ta có thể tìm ra khóa công khai cho một khóa riêng tư nhất định. Có các loại đường cong elip khác nhau, nhưng đường cong được sử dụng cả trong Bitcoin và Ethereum được gọi là secp256k1.

Đặc tả cho đường cong elip này bao gồm một điểm cơ sở, G, được sử dụng làm điểm bắt đầu để chúng ta tạo ra các điểm khác trên đường cong. Từ điểm bắt đầu này, chúng ta “di chuyển xung quanh” đường cong một số lần nhất định (do khóa riêng tư của chúng ta xác định), theo một cách cụ thể. Điểm trên đường cong mà chúng ta kết thúc khi chúng ta dừng quá trình này sẽ là khóa công khai của chúng ta.

Cách chúng ta "di chuyển" theo đường cong được gọi là nhân vô hướng. Khi làm việc với các đường cong elliptic, một scalar (số cực hóa) đề cập đến một số được sử dụng để tỉ lệ một điểm trên đường cong. Chúng ta lấy điểm cơ sở G và áp dụng số scalar lên nó để đạt được một điểm mới trên đường cong bằng cách "kéo dãn" điểm đó.

Số vô hướng mà chúng ta áp dụng cho điểm cơ sở là khóa riêng của chúng ta; Nói một cách đơn giản, chúng ta lấy điểm bắt đầu G và nhân vô hướng nó với khóa riêng của chúng ta để đạt được khóa công khai của chúng ta.

Trên thực tế, vì đường cong được xác định trên trường số nguyên tố ℤp, nó trông giống như một cụm điểm rải rác... nhưng vẫn có các thuộc tính giống như đường cong elip.

Khi kết thúc quá trình nhân cơ số này (nảy lên số lần), chúng ta sẽ đến điểm mới trên đường cong, đó chính là public key của chúng ta. Bạn có thể tưởng tượng quá trình này giống như sau:

Công khai khóa được sử dụng để làm gì trên blockchain?

Khóa công khai, như tên gọi, có thể được chia sẻ công khai với bất kỳ ai. Chúng hữu ích cho:

  • Xem ai đã gửi giao dịch trên chuỗi khối
  • Nhận tiền như ETH từ các ví tiền khác
  • Có thể sử dụng để xác minh xem một khóa riêng đã ký một tin nhắn hay chưa.

Kết thúc

Ví tiền là một phần thiết yếu của các chuỗi khối sử dụng mật mã đường cong elip để cho phép người dùng gửi giao dịch và ký thông điệp từ tài khoản của họ.

Tuy nhiên, một số blockchain như Abstract cũng hỗ trợ các loại ví mới, được gọi là tài khoản hợp đồng thông minh, cung cấp nhiều tính năng hơn và cho phép bảo mật, cơ chế khôi phục mạnh mẽ hơn và hơn thế nữa.

Tuyên bố từ chối trách nhiệm:

  1. Bài viết này được tái bản từ [https://abs.xyz/blogChuyển tiếp Tiêu đề Gốc 'What is a Wallet?' , Tất cả bản quyền thuộc về tác giả gốc [Jarrod Watts]. Nếu có phản đối về việc tái bản này, xin vui lòng liên hệ vớiHọc cổngđội ngũ, và họ sẽ xử lý nhanh chóng.

  2. Tuyên bố từ chối trách nhiệm: Các quan điểm và ý kiến được trình bày trong bài viết này chỉ là của tác giả và không cấu thành bất kỳ lời khuyên đầu tư nào.

  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi được đề cập, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.

Ví tiền là gì?

Người mới bắt đầu10/1/2024, 6:09:44 PM
Trong bài viết này, chúng tôi sẽ giải thích về ví tiền là gì, cách tạo ví tiền và cách sử dụng mật mã đường cong elliptic để tạo và bảo mật các cặp khóa riêng-tụ công khai, tạo chuỗi hạt giống (seed phrases) và tạo điều kiện cho các giao dịch an toàn trên blockchain.

Ví tiền là công cụ cần thiết giúp người dùng quản lý tài khoản blockchain, lưu trữ tài sản một cách an toàn, và ký giao dịch để thực hiện thay đổi trạng thái blockchain.

Trong bài viết này, chúng tôi sẽ giải thích các khái niệm về ví tiền, cách tạo ví tiền và cách sử dụng mật mã đường cong elip để tạo và bảo mật cặp khóa riêng tư-công khai, rút trích các cụm từ gốc, và tạo điều kiện cho các giao dịch blockchain an toàn.

Ví tiền là gì?

Ví tiền là một ứng dụng cho phép bạn xem và tương tác với tài khoản blockchain của mình; các tài khoản này cho phép bạn gửi giao dịch để thực hiện các hành động như gửi token hoặc tương tác với hợp đồng thông minh.

Mỗi tài khoản trên blockchain được tạo thành từ một cặp khóa mã học; một bộ 2 khóa được liên kết với nhau. Trong ngữ cảnh của các blockchain, loại tài khoản này thường được gọi là Tài khoản Sở hữu Bên Ngoài (EOA) và bao gồm một khóa công khai và một khóa bí mật:

  • Khóa công khai: Địa chỉ ví của bạn. Nó có thể được chia sẻ với bất kỳ ai và người khác (hoặc hợp đồng thông minh) có thể sử dụng nó để gửi tiền điện tử cho bạn.
  • Khóa riêng tư: "Khóa ký" bạn sử dụng để ký tin nhắn hoặc giao dịch. Bất cứ ai có quyền truy cập vào khóa riêng tư đều có toàn quyền kiểm soát số tiền trong ví.

Cặp khóa này có một tính năng mạnh mẽ, gọi là hàm cửa sau; có nghĩa là:

  • Dễ dàng nhận ra khóa công khai nếu bạn có khóa bí mật (A→B).
  • Không thể tìm ra khóa riêng nếu bạn có khóa công khai (B→A).

Ví tiền được sử dụng để làm gì?

Ví tiền được sử dụng để ký các tin nhắn hoặc giao dịch bằng khóa riêng của ví tiền để gửi đến một chuỗi khối.

Ví tiền cung cấp một cách để biết được những tin nhắn hoặc giao dịch mà một ví tiền đã đồng ý; vì khóa công khai của người gửi giao dịch có thể được khôi phục từ chữ ký giao dịch. Điều này rất quan trọng để ngăn chặn các giao dịch giả mạo/độc hại từ việc được chấp nhận trên blockchain.

Ví dụ, Jarrod có thể gửi một giao dịch khẳng định rằng Abril đã gửi cho anh ấy 5 ETH ngay cả khi cô ấy chưa bao giờ đồng ý với giao dịch này. Tuy nhiên, vì blockchain xác minh chữ ký của mỗi giao dịch, nó sẽ nhanh chóng từ chối giao dịch khi địa chỉ được khôi phục từ chữ ký không khớp với “người gửi” của giao dịch (tức là Abril).

Các blockchain như Ethereum sử dụng ECDSA (Thuật toán Chữ ký số Đường cong Elliptic) để kiểm tra xem khóa công khai phục hồi từ chữ ký giao dịch có khớp với khóa công khai của người gửi giao dịch tới mạng hay không.

Ví tiền được tạo như thế nào?

Để tạo một ví tiền, bạn cần tạo một cặp khóa công khai - khóa bí mật. Tuy nhiên, giá trị của cặp khóa này cần tuân theo một số quy tắc để hoạt động trên một blockchain.

  1. Một khóa bí mật được tạo ra từ 64 ký tự hệ thập lục phân (các ký tự 0→F).
  2. Khóa công khai được tạo ra từ khóa bí mật bằng cách sử dụng mật mã đường cong Elliptic (ECC).
  3. Khóa công khai được chia nhỏ, băm và định dạng để trở thành một địa chỉ 42 ký tự.

Quá trình 3 bước này là quy trình cốt lõi để tạo ra tài khoản trên blockchain.

Tiếp theo, chúng ta sẽ tìm hiểu cách một khóa công khai được tạo ra bằng cách sử dụng một đường cong elip và một khóa riêng. Nhưng trước khi làm điều đó, chúng ta sẽ trả lời một số câu hỏi khác mà bạn có thể quan tâm về ví tiền, chẳng hạn như:

  • Làm thế nào để đảm bảo rằng khóa riêng tư của tôi được tạo ngẫu nhiên?
  • Nếu tôi có cùng một khóa riêng tư với ai đó thì sao?
  • Cụm từ khóa giống như thế nào trong quy trình này?
  • Làm thế nào để tạo ra nhiều cặp khóa từ một cụm từ gốc duy nhất?

Mã gốc là gì?

Dù có thể tạo ra một giá trị 64-hex ngẫu nhiên như chúng tôi vừa thể hiện, thường thì khóa riêng tư được tạo ra bằng cách sử dụng các tiêu chuẩn cụ thể xuất phát từ Bitcoin. Các tiêu chuẩn này cho phép người dùng nhớ một cụm từ gốc, đó là một cụm từ gồm 12-24 từ có thể được sử dụng để tạo ra bất kỳ số lượng tài khoản mới nào liên kết với nó.

Điều này cho phép người dùng nhớ một bộ từ duy nhất để truy cập vào tất cả các tài khoản của họ; mỗi tài khoản có một cặp khóa công khai-tư nhân riêng biệt. Bất kỳ số lượng khóa tư nhân mới nào cũng có thể được tạo ra từ một cụm từ gốc duy nhất bằng cách sử dụng một hàm tạo khóa cụ thể (KDF).

Vì vậy, hãy trước tiên tìm hiểu cách cụm từ khóa được tạo ra thông qua entropy ngẫu nhiên và cách khóa riêng tư có thể được tạo ra từ cụm từ khóa, trước khi cuối cùng xem xét lại cách khóa công khai được tạo ra từ khóa riêng tư.

Cách Seed Phrases Hoạt Động

Khi bạn cài đặt ứng dụng ví tiền lần đầu, thông thường, nó sẽ yêu cầu bạn viết và lưu trữ một cụm từ khóa ở một nơi an toàn; thường là một cụm từ 12 hoặc 24 từ. Bạn có thể xem một danh sách ví dụ về các từ tiếng Anh có thể cóở đây, mà bạn sẽ nhận thấy có độ dài 2048 từ (chúng ta sẽ quay lại con số đó trong ít phút).

BIP-39 là gì?

Ý tưởng lưu trữ cụm từ gốc mnemonics này được giới thiệu vào năm 2013 với một BIP (Đề xuất Cải thiện Bitcoin); BIP-39. Đề xuất này cung cấp một cách chuẩn hóa để tạo ra entropy ngẫu nhiên và dịch nó thành một chuỗi từ dễ nhớ.

Làm thế nào để tạo ra một cụm từ khóa mật?

Trước tiên, chúng ta cần đảm bảo cụm từ khóa gốc của chúng ta được tạo ngẫu nhiên, sau tất cả, chúng ta không muốn ai khác vô tình lấy được vào ví tiền của chúng ta và truy cập vào quỹ tiền của chúng ta.

Để làm điều này, một số ngẫu nhiên được tạo ra bằng cách sử dụng CSPRNG (Bộ tạo số ngẫu nhiên bảo mật mật mã), bạn có thể thực hiện điều này trên trình duyệt của bạn:

Số ngẫu nhiên này được gọi là entropy. Entropy này được sử dụng để tạo ra các từ tạo thành một cụm từ khóa. Trong trường hợp của chúng tôi, 128 bit tương ứng với 12 từ, nhưng cũng có thể sử dụng độ dài khác, như là:

  • 15 từ: 160 bit
  • 18 từ: 192 bit
  • 21 từ: 224 bit
  • 24 từ: 256 bit

Vậy, chúng ta sử dụng những bit này để tạo cụm từ khóa như thế nào? Mối quan hệ giữa bit và từ là gì? Đầu tiên, một checksum cho entropy được tạo ra và được thêm vào 128 bit; đây là một băm 4 bit của entropy được tạo ra để đảm bảo tính toàn vẹn của nó.

Vì vậy, bây giờ chúng ta có 128 bit của mật khẩu ngẫu nhiên + 4 bit của mã kiểm tra, tổng cộng là 132 bit. Tiếp theo, 132 bit này được chuyển đổi thành hệ nhị phân; cụ thể là chúng được chia thành các khối của 11 bit.

Chúng tôi hiện có một bộ 12 số nhị phân, mỗi số có độ dài 11 bit. Gợi ý: chúng tôi có 12 số, và cụm từ khóa của chúng tôi sẽ là 12 từ!

Hãy nhớ rằng chúng ta có 2048 từ trong danh sách của chúng ta và rằng 2048 đã được chọn vì 2048 là 2^11, vì có 2048 số nhị phân khác nhau có thể tạo ra được với 11 bit.

Bây giờ chúng ta chỉ cần chuyển đổi những con số nhị phân này thành từ trong danh sách từ của chúng ta. Điều này được thực hiện bằng cách sử dụng con số nhị phân như một chỉ số để tìm từ trong danh sách từ. Ví dụ: Nếu con số nhị phân là 10, chúng ta sử dụng từ thứ 9 trong danh sách (vì chúng ta bắt đầu từ chỉ số 0), ví dụ:

  • 000000111, (7 trong hệ nhị phân) là phần tử thứ 8 trong danh sách, là trừu tượng! 😉
  • 11111111111, (2047 trong nhị phân) là mục cuối cùng trong danh sách (thứ 2048), đó là "sở thú".

Lặp lại điều này 12 lần, mỗi lần cho một số 11 bit để tạo thành một cụm từ khóa chứa 12 từ.

Bằng cách tạo ra một giá trị ngẫu nhiên cho entropy, chia nó thành các phần nhỏ của nhị phân và sử dụng các giá trị nhị phân đó như một chỉ số để tìm kiếm các từ trong danh sách từ, chúng ta sẽ đến được một cụm hạt giống ngẫu nhiên.

Ai đó có thể đoán được cụm từ khóa của tôi không?

Phản ứng ngay lập tức của bạn có thể là: "Nếu chỉ có 2048 từ có thể, liệu có ai đoán được cụm từ gốc của tôi không?" Thực ra, kỹ thuật thì có, nhưng thực sự... thực sự không thể tin được. Bạn hỏi không thể tin được đến mức nào?

Hãy tưởng tượng chúng ta quên bước tạo 128 bit ngẫu nhiên và chỉ cần chọn thủ công 12 từ từ danh sách. Mỗi lần chúng tôi chọn một từ, chúng tôi sẽ chọn một tùy chọn trong nhóm 2048 từ.

Vì vậy, chúng ta có thể nói rằng đối với người khác cũng đoán đúng chuỗi từ này, họ cần phải đoán đúng từ giống như chúng tôi với tỉ lệ 1/2048, 12 lần liên tiếp. Hiện tại, bạn có lẽ đang nghĩ, "ok điều đó nghe không khó lắm...", phải khôngI'm sorry, but I cannot translate the text as it is not provided in the input.Nhưng, hãy chơi theo cách này:

  • Từ thứ nhất: 2048 lựa chọn
  • Từ thứ hai: 2048 lựa chọn
  • Và còn nữa, lên đến 12: 2048 lựa chọn

Đây là 2048 x 2048 x 2048 … 12 lần. Hoặc, 2048^12. Đó là một con số cực kỳ lớn. Khoảng 5 tỷ tỷ tỷ tỷ, hoặc 5 ngàn tỷ tỷ tỷ tỷ. Điều đó không thể hiểu được đối với chúng ta, nhưng hãy thử...

Hãy tưởng tượng bạn bắt đầu đoán ngay bây giờ, sử dụng một máy tính cực kỳ mạnh mẽ có thể đoán trăm nghìn seed phrases mỗi giây. Máy tính này sẽ mất 159 nghìn tỷ năm để đoán một seed phrase. Hoặc (tùy thuộc vào niềm tin của bạn), khoảng 11.000 lần lâu hơn so với tuổi đời hiện tại của vũ trụ.

24 từ gốc tốt hơn 12 từ phải không?

Một số ví tiền lựa chọn 128 bit (12 từ), nhưng ví tiền hiện đại hơn yêu cầu bạn nhớ 24 từ cho cụm từ gốc của bạn! Điều này lại quá lớn đáng tin cậy.

Cách khóa riêng tư được tạo ra từ cụm từ gốc

Hiện nay, chúng ta có một cụm từ gốc gồm 12 từ, làm thế nào để sử dụng nó để tạo ra các khóa riêng tư cho tài khoản? Để làm điều này, chúng ta cần chuyển đổi cụm từ gốc của chúng ta thành một cụm từ nhị phân có thể được sử dụng để tạo ra các ví tiền. Quá trình này bao gồm các bước sau:

  1. Tùy chọn, người dùng cung cấp mật khẩu bổ sung.
  2. Một thuật toán được gọi là PBKDF2 (Hàm phái khóa dựa trên mật khẩu) nhận vào: Cụm từ khóa. Một kết hợp của chuỗi “mnemonic” và mật khẩu tùy chọn.

Quá trình này (gọi là hàm bộ khái quát), đề xuất một giá trị bảo mật 64 byte, gọi là hạt giỏ vàng nhận, sử dụng thuật toán khác gọi là HMAC-SHA512 như lời hàm giác ngữ.

Giá trị băm 64 byte đầu ra có thể được sử dụng để tạo tài khoản bằng logic có nguồn gốc từ các tiêu chuẩn Bitcoin khác; cụ thể là BIP-32 và tùy chọn, một phần mở rộng của BIP-32, BIP-44.

BIP-32 là gì?

BIP-32 giới thiệu ví xác định phân cấp (HD); nơi nhiều ví có thể được lấy từ một hạt giống duy nhất và nhiều ví hơn có thể được lấy từ các ví đó, tạo ra một "cây" ví.

BIP-44 là gì?

BIP-44 cung cấp một cách tiêu chuẩn để tạo ra một cấu trúc ví tiền từ một hạt nhị phân duy nhất bằng cách thực hiện một đường dẫn phân chia cụ thể theo cấu trúc: m / purpose’ / coin_type’ / account’ / change / address_index:

  • Mục đích: Xác định tiêu chuẩn BIP được sử dụng; đối với BIP-44, nó là 44’.
  • coin_type: Xác định loại tiền điện tử; ví dụ, 0’ cho Bitcoin, 60’ cho Ethereum.
  • Tài khoản: Phân biệt giữa các tài khoản người dùng khác nhau.
  • change: Cho biết loại địa chỉ: 0 cho việc nhận, 1 cho việc thay đổi.
  • address_index: Cung cấp một chỉ mục duy nhất cho mỗi địa chỉ trong cùng tài khoản và loại thay đổi.

Không phải tất cả các ví tiền đều sử dụng BIP-44, nhưng đó là cách thông thường để chuẩn hóa cách tài khoản được tạo ra từ một hạt nhị phân.

Khóa riêng tư được tạo ra từ hạt nhị phân như thế nào?

Như chúng tôi đã đề cập trước đó, khóa riêng tư có 64 ký tự hexa, tương đương 32 byte. Và chúng tôi vừa tạo ra một hạt nhị phân 64 byte thông qua quá trình PBKDF2 - vậy chúng ta sử dụng giá trị băm 64 byte này để tạo khóa riêng tư như thế nào?

Đầu tiên, hash được chia thành hai nửa, mỗi nửa có kích thước 32 byte:

  1. Nửa đầu tiên là khóa bí mật chính. Đây là một ánh xạ trực tiếp 1-1 của hạt nhị phân (được tạo ra bằng cụm từ gốc của bạn) và ví của bạn. Nó có thể được sử dụng trong quá trình tạo khóa bí mật con.
  2. Nửa sau là mã chuỗi. Điều này được sử dụng để đảm bảo: Nếu một khóa con bị đe dọa, thì khóa chính vẫn an toàn. Các khóa con có thể được xây dựng một cách nhất quán và mỗi khóa đều là duy nhất.

Bây giờ chúng ta hiểu được hình dạng của các khóa riêng tư, cách chúng được tạo ngẫu nhiên và cách nhiều khóa có thể được tạo ra từ một cụm từ gốc duy nhất. Tiếp theo, hãy khám phá cách khóa công khai được tạo ra từ các khóa riêng tư.

Cách khóa công khai-cá nhân hoạt động như thế nào

Sử dụng mật mã đường cong elip (ECC), chúng ta có thể tìm ra khóa công khai cho một khóa riêng tư nhất định. Có các loại đường cong elip khác nhau, nhưng đường cong được sử dụng cả trong Bitcoin và Ethereum được gọi là secp256k1.

Đặc tả cho đường cong elip này bao gồm một điểm cơ sở, G, được sử dụng làm điểm bắt đầu để chúng ta tạo ra các điểm khác trên đường cong. Từ điểm bắt đầu này, chúng ta “di chuyển xung quanh” đường cong một số lần nhất định (do khóa riêng tư của chúng ta xác định), theo một cách cụ thể. Điểm trên đường cong mà chúng ta kết thúc khi chúng ta dừng quá trình này sẽ là khóa công khai của chúng ta.

Cách chúng ta "di chuyển" theo đường cong được gọi là nhân vô hướng. Khi làm việc với các đường cong elliptic, một scalar (số cực hóa) đề cập đến một số được sử dụng để tỉ lệ một điểm trên đường cong. Chúng ta lấy điểm cơ sở G và áp dụng số scalar lên nó để đạt được một điểm mới trên đường cong bằng cách "kéo dãn" điểm đó.

Số vô hướng mà chúng ta áp dụng cho điểm cơ sở là khóa riêng của chúng ta; Nói một cách đơn giản, chúng ta lấy điểm bắt đầu G và nhân vô hướng nó với khóa riêng của chúng ta để đạt được khóa công khai của chúng ta.

Trên thực tế, vì đường cong được xác định trên trường số nguyên tố ℤp, nó trông giống như một cụm điểm rải rác... nhưng vẫn có các thuộc tính giống như đường cong elip.

Khi kết thúc quá trình nhân cơ số này (nảy lên số lần), chúng ta sẽ đến điểm mới trên đường cong, đó chính là public key của chúng ta. Bạn có thể tưởng tượng quá trình này giống như sau:

Công khai khóa được sử dụng để làm gì trên blockchain?

Khóa công khai, như tên gọi, có thể được chia sẻ công khai với bất kỳ ai. Chúng hữu ích cho:

  • Xem ai đã gửi giao dịch trên chuỗi khối
  • Nhận tiền như ETH từ các ví tiền khác
  • Có thể sử dụng để xác minh xem một khóa riêng đã ký một tin nhắn hay chưa.

Kết thúc

Ví tiền là một phần thiết yếu của các chuỗi khối sử dụng mật mã đường cong elip để cho phép người dùng gửi giao dịch và ký thông điệp từ tài khoản của họ.

Tuy nhiên, một số blockchain như Abstract cũng hỗ trợ các loại ví mới, được gọi là tài khoản hợp đồng thông minh, cung cấp nhiều tính năng hơn và cho phép bảo mật, cơ chế khôi phục mạnh mẽ hơn và hơn thế nữa.

Tuyên bố từ chối trách nhiệm:

  1. Bài viết này được tái bản từ [https://abs.xyz/blogChuyển tiếp Tiêu đề Gốc 'What is a Wallet?' , Tất cả bản quyền thuộc về tác giả gốc [Jarrod Watts]. Nếu có phản đối về việc tái bản này, xin vui lòng liên hệ vớiHọc cổngđội ngũ, và họ sẽ xử lý nhanh chóng.

  2. Tuyên bố từ chối trách nhiệm: Các quan điểm và ý kiến được trình bày trong bài viết này chỉ là của tác giả và không cấu thành bất kỳ lời khuyên đầu tư nào.

  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi được đề cập, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.

Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500