Hash – Câu đố về Bitcoin


Trong bài trước chúng tôi đã giải thích các ý tưởng đằng sau hệ thống Bitcoin, tuy nhiên, một vấn đề vẫn chưa được giải thích: Câu đố khó khăn đẫm máu này là gì mà những người khai thác Bitcoin liên tục cố gắng giải quyết?

Hãy nhớ lại rằng trong hệ thống Bitcoin, các công ty khai thác luôn cạnh tranh: Bất cứ ai giải câu đố trước sẽ nhận được vinh dự khi thêm một khối mới vào chuỗi khối và cũng kiếm được một số tiền. Do đó, các thợ mỏ cố gắng sốt sắng để trở thành người đầu tiên giải câu đố. Trong phần sau chúng ta sẽ giải quyết các câu hỏi sau:

  • Chính xác thì câu đố này là gì?
  • Nó được tích hợp trong hệ thống Bitcoin như thế nào?

Câu đố – Câu đố băm mật mã

Donv rất sợ từ ‘mật mã học, trong ngữ cảnh của chúng tôi, nó đơn giản có nghĩa là câu đố puzzle băm băm có liên quan đến thế giới của mật mã, tức là xây dựng các hệ thống không thể phá vỡ.

Có lẽ sự tương đồng trong thế giới thực tốt nhất với câu đố băm là dấu vân tay.

Dấu vân tay trên nền màu xanh

Hãy tưởng tượng rằng bạn được cung cấp một mẫu vân tay và bạn được yêu cầu khám phá chiều cao, cân nặng và cái nhìn tổng thể của người mà dấu vân tay này thuộc về. Bạn sẽ làm gì?

Để làm cho nó khó hơn một chút, giả sử rằng không có mối tương quan giữa dấu vân tay và các đặc điểm khác của con người (như màu tóc), vì vậy cách duy nhất để kiểm tra xem dấu vân tay này đến từ người bạn thân nhất của bạn là lấy dấu vân tay của anh ấy và so sánh với dấu vân tay khác.

Sau đó, lựa chọn tốt nhất của bạn sẽ là lấy dấu vân tay từ mọi người trên Trái đất và sau đó so sánh nó với dấu vân tay đang đề cập, cho đến khi bạn tìm thấy một trận đấu và dừng lại. Trong trường hợp bạn không may mắn, đúng người sẽ là người cuối cùng bạn kiểm tra, điều đó có nghĩa là bạn sẽ tiếp tục tìm kiếm anh ta trong 13,555 năm tiếp theo, giả sử bạn kiểm tra một người mỗi phút (và dân số Trái đất là khoảng 7,125 tỷ Mọi người). Tuy nhiên, nếu bạn may mắn, bạn sẽ tìm kiếm người đó chỉ trong một nửa thời gian đó, hoan hô! Tin xấu ah?

Hãy để trở lại câu đố băm của chúng tôi. Trong câu đố băm, dấu vân tay mà bạn đưa ra là một danh sách các ký tự (hãy gọi nó là một từ), giống như chú chó con, sau đó nhiệm vụ của bạn là tìm đúng người (trong trường hợp của chúng tôi cũng là một từ) mà sản xuất dấu vân tay. Cuối cùng, điều duy nhất bạn có thể làm là thử tất cả các tổ hợp chữ số có thể (có độ dài), từng cái một.

tiền điện tử

(Nguồn hình ảnh: https://blog.varonis.com/the-definitive-guide-to-cryptographic-hash-fifts-part-1/)

Về mặt khái niệm, bạn có một cỗ máy mà bất cứ khi nào bạn đặt một số chữ số vào nó, nó sẽ tạo ra một đầu ra của một số tổ hợp chữ số khác. Bạn hoàn toàn không biết gì về cỗ máy này và nó hoạt động như ma thuật – bạn không thấy bất kỳ mối tương quan nào giữa các nhân vật mà bạn đưa vào và các nhân vật mà nó tạo ra. Quy tắc duy nhất mà bạn đã quan sát là cho dù bạn đặt bao nhiêu ký tự vào máy, thì đầu ra được tạo ra luôn có cùng độ dài.

Một chút kỹ thuật: Các ký tự được sử dụng bởi máy (cả đầu vào và đầu ra của nó) chỉ được tạo bởi mười chữ số 0-9 và sáu chữ cái a-f. Điều này có nghĩa là mỗi ký tự của đầu vào hoặc đầu ra có thể là một trong số 16 ký tự.

Câu đố về cơ bản là một từ (danh sách các ký tự), gọi nó là A, đại diện cho đầu ra của máy, để giải quyết nó, nhiệm vụ của bạn là tìm đầu vào chính xác (một từ khác), gọi nó là B, sao cho khi bạn đặt B vào máy bạn sẽ nhận được A làm đầu ra.

Bắt đầu với một trường hợp đơn giản, giả sử rằng máy tạo ra kết quả đầu ra của một ký tự. Điều này có nghĩa là chỉ có 16 đầu ra khác nhau có thể. Ví dụ, giả sử bạn có nhân vật (như câu đố) và cỗ máy hoạt động theo cách mà mọi nhân vật được chèn vào đều dẫn đến một nhân vật xuất ra khác nhau. Do đó, nếu bạn thử tất cả các ký tự có thể 0-9 và a-f, bạn sẽ tìm thấy kết quả khớp, tức là ký tự mà khi được chèn vào máy sẽ tạo ra ký tự như một đầu ra. Cụ thể, tối thiểu 16 so sánh là bắt buộc để được Hoàn toàn chắc chắn rằng một trận đấu sẽ được tìm thấy.

Làm phức tạp thêm một chút nữa, hãy xem xét trường hợp máy tạo ra đầu ra gồm 2 ký tự thay vì một ký tự, như trong ví dụ trước. Điều này có nghĩa là có 16X16 = 256 đầu ra khác nhau có thể. Vì vậy, khi được đưa ra một số câu đố, ví dụ ‘4c’, thì bạn sẽ cần thử tất cả các đầu vào có thể có của 2 ký tự (ví dụ: ’00’, ’01’ ” ” ” ” ” ” ” ” ” thành công.

Lưu ý rằng việc tăng chiều dài đầu ra của máy bằng một ký tự duy nhất sẽ tăng số lượng thử nghiệm bạn cần thực hiện theo một bậc độ lớn (trong ví dụ của chúng tôi theo hệ số 16!). Do đó, đầu ra của một ký tự dẫn đến 16 thử nghiệm, đầu ra 2 ký tự dẫn đến 256 thử nghiệm, đầu ra 3 ký tự dẫn đến 4096 thử nghiệm, v.v..

Vì vậy, ’s những gì mà các vấn đề lớn? Máy tính ngày nay rất nhanh, bạn có thể xây dựng một phần mềm sẽ tính toán tất cả các thử nghiệm cho bạn trong vài giây!

Chà, bạn có thể nhận thấy rằng số lượng thử nghiệm đang tăng lên trong một số mũ đường! Điều này có nghĩa là đối với đầu ra của x ký tự, bạn sẽ phải tạo x16trials! Để có đầu ra 40 ký tự, bạn sẽ cần thực hiện 1461501637330902918203684832716283019655932542976 thử nghiệm !! Con số này quá lớn, không máy tính hiện đại nào có thể thực hiện số lượng thử nghiệm này ngay cả khi nó hoạt động liên tục cho đến khi hệ mặt trời sụp đổ.

Nếu bạn vẫn không tin rằng câu đố băm là một câu đố khó, bạn có thể muốn thử nó và tìm giải pháp cho câu đố sau: Tìm một danh sách các ký tự mà khi bạn đặt nó qua máy SHA1, bạn sẽ nhận được kết quả đầu ra ký tự không (đó là ‘000000’ ‘). Máy có sẵn tại sha1-online.com. Chúc may mắn

Kết nối với Bitcoin

Hãy nhớ lại (từ bài trước) rằng trong mỗi thời gian ngắn (thường là 10 phút), một khối block được gắn vào chuỗi ’chuỗi khối bởi một‘ thợ mỏ duy nhất (người thắng vòng đấu). Người khai thác đó, người nối thêm khối đó, là người đầu tiên tìm ra giải pháp cho câu đố băm. Để hiểu được câu đố này, chúng ta cần biết một khối trông như thế nào. Chi tiết theo dõi.

Tóm lại, một khối trong chuỗi khối là một số cấu trúc dữ liệu có chứa:

  1. Một nonce, đây là hạt nhân của giải pháp, một phần của khối cho phép người khai thác phí giao dịch.
  2. Tham chiếu đến khối trước – điều này là bắt buộc để có thể theo dõi lịch sử của tất cả các giao dịch, mỗi khối đề cập đến tiền thân của nó, theo cách này, người ta có thể quay lại lịch sử cho đến khối đầu tiên (Bạn có thể theo dõi lịch sử giao dịch tại blockchain .info)
  3. Danh sách tất cả các giao dịch sẽ được xử lý nếu khối này được gắn vào chuỗi khối.

Trong hình bên dưới, bạn có thể thấy 3 thuộc tính này: nonce (ở hàng màu vàng cuối cùng), tham chiếu (‘băm khối trước’) và danh sách các giao dịch trong các hàng màu xám (phía bên phải được tô sáng của hình được giải thích Sớm).

sơ đồ khối-ghash

(nguồn hình ảnh: http://www.righto.com/2014/09/mining-bitcoin-with-ppson-and-apers.html)

Như đã đề cập, các thợ mỏ đang tìm kiếm một nonce chính xác sẽ giải được câu đố. Câu đố băm được mô tả trong câu hỏi trước là một riêng danh sách các ký tự mà máy đã tạo ra như một đầu ra, để giải quyết nó, người ta cần tìm một đầu vào tạo ra cái này riêng đầu ra.

Tuy nhiên, trong hệ thống bitcoin, câu đố băm có phần dễ dàng hơn: Thay vì chạy theo một đầu ra cụ thể, người khai thác cần tìm một đầu vào tạo ra đầu ra từ một tập hợp lớn các đầu ra được phép. Đó là, một câu đố có thể là một danh sách các nhân vật sao cho 16 ký tự đầu tiên của nó là ‘0, trong khi không có giới hạn nào đối với các nhân vật còn lại, họ có thể là bất cứ điều gì. Mặc dù điều này làm cho câu đố dễ dàng hơn rất nhiều, nhưng nó là một vấn đề tốn thời gian và năng lượng để giải quyết. Trong hình trên, người khai thác thực hiện nhiều thử nghiệm để giải câu đố, lĩnh vực duy nhất được phép thay đổi trong mỗi thử nghiệm là nonce. Trong mọi thử nghiệm, công cụ khai thác kết hợp nonce mà nó vừa chọn, danh sách giao dịch mà nó muốn thêm vào chuỗi khối và tham chiếu đến khối trước đó cùng nhau, sau đó nhập nó vào máy SHA1. Nếu đầu ra của máy SHA1 bắt đầu bằng 16 ‘0 ký tự thì nó đã giải được câu đố và giành chiến thắng trong trò chơi.

Hy vọng bạn thích đọc, hẹn gặp lại trong bài tiếp theo!

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map