NguyenHaDoanh / se07-24.1

Tìm hiểu về blockchain
1 stars 0 forks source link

Hàm băm( Hash function) #10

Open NguyenHaDoanh opened 2 years ago

NguyenHaDoanh commented 2 years ago

Tìm hiểu về hàm băm ?

KhanhDung2702 commented 2 years ago

Hàm băm (tiếng Anh: hash function) là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi ký tự, một đối tượng trong lập trình hướng đối tượng, v.v...). Giá trị băm đóng vai gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp nhận hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó. Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn). image

Một hàm băm tốt phải thỏa mãn các điều kiện sau:

phucding commented 2 years ago

Hàm băm hoạt động như thế nào? Các hàm băm khác nhau sẽ tạo ra các kết quả đầu ra có kích thước khác nhau, nhưng kích thước của các kết quả đầu ra có thể nhận được luôn cố định, không đổi. Ví dụ, thuật toán SHA-256 chỉ có thể tạo ra các kết quả đầu ra có kích thước 256 bit, trong khi thuật toán SHA-1 sẽ luôn tạo ra một kết quả đại diện có kích thước 160-bit.

KhanhDung2702 commented 2 years ago

Một số hàm băm phổ biến image

KhanhDung2702 commented 2 years ago

Tính chất cơ bản của hàm băm:

Doanlly commented 2 years ago

https://andersbrownworth.com/blockchain/hash thêm thuật toán băm nữa ae

Doanlly commented 2 years ago

Băm là quá trình chuyển đổi đầu vào gồm các chữ cái và ký tự có kích thước không cố định để tạo đầu ra có kích thước cố định. Quá trình này được thực hiện bằng cách sử dụng các công thức toán học như các hàm băm (được thực hiện dưới dạng các thuật toán băm). Mặc dù không phải hàm băm nào cũng sử dụng mật mã hóa, nhưng cái gọi là hàm băm mật mã hóa chính là cốt lõi của tiền mã hóa. Nhờ chúng, blockchain và các hệ thống phân tán khác có thể đạt được tính toàn vẹn và bảo mật của dữ liệu ở mức độ cao. Những hàm băm phổ biến thường dùng Hiện nay có rất nhiều dạng mã Hash code khác nhau, nhưng phổ biến nhất có 3 loại:

phucding commented 2 years ago

Ứng dụng của Hash +Hashing trong định danh tệp hoặc dữ liệu +Hashing trong xác minh tính toàn vẹn của thông điệp hoặc tập tin +Hashing trong tạo và xác nhận chữ ký image +Hashing trong xác minh mật khẩu image

+Hashing và Bằng chứng công việc (Proof of Work) image +Hashing trong blockchain image

phucding commented 2 years ago

Ý nghĩa của Hash trong Blockchain Blockchain chỉ chứa các giao dịch được xác thực, giúp ngăn chặn các giao dịch gian lận và chi tiêu gấp đôi tiền tệ. Quá trình xác nhận dựa trên dữ liệu được mã hóa bằng cách sử dụng băm thuật toán. Giá trị được mã hóa kết quả là một chuỗi các số và chữ cái không giống với dữ liệu gốc và được gọi là hàm băm. Khai thác tiền điện tử liên quan đến việc làm việc với hàm băm này.

Băm yêu cầu xử lý dữ liệu từ một khối thông qua hàm toán học, dẫn đến kết quả đầu ra có độ dài cố định. Sử dụng đầu ra có độ dài cố định sẽ tăng tính bảo mật, vì bất kỳ ai đang cố gắng giải mã hàm băm không thể cho biết đầu vào dài hay ngắn chỉ bằng cách nhìn vào độ dài của đầu ra. Hàm được sử dụng để tạo hàm băm có tính xác định, nghĩa là nó sẽ tạo ra cùng một kết quả mỗi lần sử dụng cùng một đầu vào; có thể tạo ra một đầu vào băm hiệu quả; làm cho việc xác định đầu vào khó khăn (dẫn đến khai thác); và thực hiện các thay đổi nhỏ đối với kết quả đầu vào trong hàm băm rất khác nhau.

Việc xử lý các hàm băm cần thiết để mã hóa các khối mới đòi hỏi sức mạnh xử lý đáng kể của máy tính, có thể tốn kém. Để lôi kéo các cá nhân và công ty, được gọi là người khai thác, đầu tư vào công nghệ cần thiết, các mạng tiền điện tử thưởng cho họ cả token tiền điện tử mới và phí giao dịch. Công cụ khai thác chỉ được bù nếu chúng là người đầu tiên tạo ra hàm băm đáp ứng các yêu cầu được đặt ra trong hàm băm đích.

Giải quyết hàm băm về cơ bản là giải quyết một vấn đề toán học phức tạp và bắt đầu với dữ liệu có sẵn trong tiêu đề khối. Mỗi tiêu đề khối chứa một số phiên bản, dấu thời gian, hàm băm được sử dụng trong khối trước đó, hàm băm của Merkle Root, nonce và băm đích. Công cụ khai thác tập trung vào nonce, một chuỗi số. Số này được gắn vào nội dung được băm của khối trước đó, sau đó chính nó được băm. Nếu hàm băm mới này nhỏ hơn hoặc bằng hàm băm mục tiêu, thì nó được chấp nhận làm giải pháp, người khai thác được trao phần thưởng và khối được thêm vào blockchain.

Việc giải hàm băm yêu cầu người khai thác xác định chuỗi nào sẽ sử dụng làm chuỗi không, chính nó yêu cầu một số lượng đáng kể thử và sai. Điều này là do nonce là một chuỗi ngẫu nhiên. Rất khó có khả năng một người khai thác sẽ thành công với lần đầu tiên chính xác trong lần thử đầu tiên, có nghĩa là người khai thác có thể kiểm tra một số lượng lớn các tùy chọn nonce trước khi thực hiện đúng. Độ khó càng lớn – thước đo mức độ khó để tạo ra một hàm băm đáp ứng yêu cầu của hàm băm mục tiêu – càng mất nhiều thời gian để tạo ra một giải pháp.