Chủ Nhật, Tháng Chín 25, 2022
25 C
Ho Chi Minh City
spot_img

Giải thích về cây Merkle và gốc Merkle | Binance Academy

Must read

Openlivenft
Openlivenfthttps://openlivenft.info/
Trang tổng hợp thông tin nhanh - mới nhất về NFT, COIN, Metaverse, tài chính, crypto của OpenliveNFT

Nội dung

Cây Merkle là gì?

Khái niệm về cây Merkle được đặt ra vào đầu những năm 80 bởi Ralph Merkle – một nhà khoa học máy tính nổi tiếng với khu công trình điều tra và nghiên cứu về công nghệ tiên tiến mật mã khóa công khai minh bạch

Cây Merkle là một cấu trúc hiệu quả dùng để xác minh tính toàn vẹn của dữ liệu trong tập hợp. Cấu trúc này đặc biệt thú vị trong bối cảnh mạng lưới P2P, khi những người tham gia cần chia sẻ và xác thực thông tin một cách độc lập.

Hàm băm là gốc của cấu trúc cây Merkle, thế cho nên bạn nên xem bài Hashing ( băm ) là gì ? trước khi liên tục .

Cách cây Merkle hoạt động

Giả sử bạn muốn tải về một tệp lớn. Khi dùng ứng dụng mã nguồn mở, bạn thường muốn kiểm tra xem hàm băm của tệp đã tải về có khớp với mã mà nhà tăng trưởng công khai minh bạch hay không. Nếu đúng, bạn biết được rằng tệp trên máy tính của mình trọn vẹn giống với tệp của nhà tăng trưởng .Nếu những hàm băm không khớp tức là đã xảy ra yếu tố. Bạn đã tải về một tệp ô nhiễm giả dạng ứng dụng hoặc tải ứng dụng không đúng cách nên ứng dụng sẽ không hề hoạt động giải trí. Nếu trường hợp thứ hai xảy ra, thật chẳng vui chút nào khi bạn phải chờ một lúc để tệp tải về. Bây giờ, bạn cần thực thi lại quy trình và kỳ vọng không xảy ra lỗi nữa .Bạn nghĩ rằng giá như có một cách thuận tiện hơn để triển khai việc này. Thật như mong muốn, đây là lúc cần đến cây Merkle. Khi dùng một trong những cấu trúc cây này, bạn sẽ chia nhỏ tệp của mình thành nhiều phần. Nếu sử dụng với tệp 50GB, bạn hoàn toàn có thể chia thành một trăm phần, sao cho mỗi phần có kích cỡ 0,5 GB. Sau đó, mạng lưới hệ thống sẽ tải về từng phần một. Về cơ bản, đây quy trình thực thi khi bạn chia nhỏ tệp của mình .

Trong trường hợp này, nguồn của bạn sẽ cung cấp một hàm băm được gọi là gốc Merkle. Hàm băm đơn này là đại diện cho mọi phần dữ liệu tạo nên tệp của bạn. Nhưng nhờ gốc Merkle, việc xác minh dữ liệu dễ dàng hơn nhiều. 

Để bạn dễ hiểu hơn, chúng tôi sẽ lấy một ví dụ sử dụng tệp 8GB được chia thành tám phần. Đặt tên những mảnh này từ A đến H. Mỗi mảnh sau đó được chuyển qua một hàm băm và chúng tôi có tám hàm băm .

Chúng tôi chuyển mỗi mảnh trong số tám mảnh thông qua một hàm băm để lấy các hàm băm của chúng.Chúng tôi chuyển mỗi mảnh trong số tám mảnh thông qua một hàm băm để lấy các hàm băm của chúng.Chúng tôi chuyển mỗi mảnh trong số tám mảnh trải qua một hàm băm để lấy những hàm băm của chúng .

Tốt rồi, giờ đây những việc chúng tôi triển khai sẽ dễ hiểu hơn một chút ít. Chúng tôi có hàm băm của tổng thể những mảnh nên nếu một mảnh bị lỗi, chúng tôi sẽ phát hiện bằng cách so sánh mảnh đó với hàm băm của nguồn, phải không ? Có thể, nhưng việc này cũng rất kém hiệu suất cao. Nếu tệp có hàng nghìn mảnh, liệu bạn có thực sự sẽ ” băm ” tổng thể và so sánh tỉ mỉ tác dụng không ?

Không. Thay vào đó, chúng tôi sẽ lấy từng cặp hàm băm, kết hợp lại, sau đó băm chúng với nhau. Vì thế chúng tôi băm hA + hBhC + hDhE + hF và  hG + hH. Chúng tôi kết thúc với bốn hàm băm. Sau đó, chúng tôi thực hiện một vòng băm khác với những hàm băm này và kết thúc khi còn lại hai hàm băm. Cuối cùng, chúng tôi băm hai hàm băm còn lại để thu được đến hàm băm chính của mình –  gốc Merkle (hoặc hàm băm gốc).

Cấu trúc này giống với một cái cây lộn ngược. Ở hàng dưới cùng, chúng tôi có lá, được kết hợp để tạo ra các node và cuối cùng là gốc.Cấu trúc này giống với một cái cây lộn ngược. Ở hàng dưới cùng, chúng tôi có lá, được kết hợp để tạo ra các node và cuối cùng là gốc.Cấu trúc này giống với một cái cây lộn ngược. Ở hàng dưới cùng, chúng tôi có lá, được tích hợp để tạo ra những node và ở đầu cuối là gốc .

Bây giờ chúng tôi có gốc Merkle đại diện thay mặt cho tệp mình đã tải về. Chúng tôi hoàn toàn có thể so sánh hàm băm gốc này với hàm băm do nguồn phân phối. Nếu hai hàm này khớp nhau thì tuyệt vời ! Nhưng nếu những hàm băm khác nhau, thì chắc như đinh rằng tài liệu đã bị sửa đổi. Nói cách khác, một hoặc nhiều mảnh đã tạo ra hàm băm khác. Vì vậy, bất kể sửa đổi nhỏ nào trong tài liệu cũng sẽ mang đến cho chúng tôi một gốc Merkle trọn vẹn khác .

May mắn là có một cách thức hữu ích để chúng tôi kiểm tra được mảnh nào bị lỗi. Trong tình huống của này, giả sử mảnh hE bị lỗi. Bạn sẽ bắt đầu bằng cách hỏi một người dùng khác về hai hàm băm tạo nên gốc Merkle là (hABCD và hEFGH). Giá trị hABCD của bạn sẽ khớp với giá trị của nguồn vì sẽ không có sai sót trong nhánh cây đó. Nhưng hEFGH thì không khớp nên bạn biết mình cần kiểm tra hàm này. Sau đó, bạn yêu cầu kiểm tra hai hàm băm hEFhGH, rồi so sánh chúng với các hàm băm của bạn. hGH sẽ ổn nên bạn biết rằng hEF là nguyên nhân gây ra lỗi. Cuối cùng, bạn so sánh các hàm băm của hEhF. Bây giờ bạn đã biết rằng hE không chính xác nên bạn có thể tải lại mảnh này.

Tóm lại, một cây Merkle được tạo ra bằng cách chia dữ liệu thành nhiều phần, sau đó được băm nhiều lần để tạo thành gốc Merkle. Tiếp đó, bạn có thể xác minh một cách hiệu quả xem có vấn đề gì xảy ra với một phần dữ liệu hay không. Như chúng ta sẽ thấy trong phần tiếp theo, còn có cả những ứng dụng thú vị khác.

Bạn muốn bắt đầu cùng tiền mã hoá? Mua Bitcoin trên Binance ngay hôm nay!

Tại sao dùng gốc Merkle trong Bitcoin?

Bạn hoàn toàn có thể dùng cây Merkle trong nhiều trường hợp nhưng trong bài viết này, chúng tôi sẽ tập trung chuyên sâu vào tầm quan trọng của cấu trúc này so với những blockchain. Cây Merkle rất quan trọng so với Bitcoin và nhiều loại tiền mã hóa khác. Cấu trúc này là một phần không hề thiếu của mọi block và mọi người hoàn toàn có thể tìm thấy những cấu trúc cây này trong tiêu đề khối. Để lấy ” lá ” tài liệu cho cây của mình, chúng tôi sử dụng hàm băm thanh toán giao dịch ( TXID ) của mọi thanh toán giao dịch có trong block .Gốc Merkle dùng để Giao hàng cho một vài mục tiêu trong trường hợp này. Hãy xem xét những ứng dụng của chúng trong việc đào tiền mã hóa và xác định thanh toán giao dịch .

Đào tiền

Một block Bitcoin được cấu thành từ hai phần. Phần tiên phong là tiêu đề khối, một phân đoạn có size cố định và thắt chặt chứa siêu dữ liệu cho block. Phần thứ hai là list những thanh toán giao dịch có nhiều kích cỡ nhưng thường lớn hơn nhiều so với tiêu đề .Thợ đào phải liên tục băm tài liệu để tạo ra tác dụng khớp với những điều kiện kèm theo nhất định, từ đó đào ra block hợp lệ. Trước khi tìm ra một block, họ phải nỗ lực thử hàng nghìn tỷ lần. Với mỗi lần thử, họ đổi khác một số ít ngẫu nhiên trong tiêu đề khối ( nonce ) để tạo ra một hiệu quả khác. Tuy nhiên, vẫn giữ nguyên phần đông của block. Có thể có hàng nghìn thanh toán giao dịch và bạn vẫn cần băm chúng mỗi lần thanh toán giao dịch .Một gốc Merkle giúp đơn giản hóa tiến trình đáng kể. Khi khởi đầu đào, bạn sẽ sắp xếp toàn bộ những thanh toán giao dịch muốn thêm vào và thiết kế xây dựng một cây Merkle. Bạn đặt hàm băm gốc tác dụng ( 32 byte ) vào tiêu đề khối. Sau đó, khi đang đào, bạn chỉ cần băm tiêu đề khối, thay vì hàng loạt block .Phương pháp này thực sự hiệu suất cao vì hoàn toàn có thể chống trá hình. Bạn tóm tắt hiệu suất cao tổng thể những thanh toán giao dịch của block trong một định dạng nhỏ gọn. Bạn không hề tìm tiêu đề khối hợp lệ, rồi đổi khác list thanh toán giao dịch, vì điều đó sẽ làm đổi khác gốc Merkle. Khi block được gửi đến những node khác, chúng sẽ tính gốc từ list thanh toán giao dịch. Nếu block này không khớp với một trong những tiêu đề thì sẽ bị phủ nhận .

Xác minh

Gốc Merkle có một đặc thù mê hoặc khác mà tất cả chúng ta hoàn toàn có thể tận dụng. Điều này tương quan đến những light client ( những node không chứa bản sao không thiếu của blockchain ). Nếu đang chạy một node trên thiết bị có tài nguyên hạn chế, bạn sẽ không muốn tải về và băm hàng loạt thanh toán giao dịch của block. Thay vào đó, những gì bạn hoàn toàn có thể làm chỉ là nhu yếu phân phối vật chứng Merkle – vật chứng do node khá đầy đủ cung ứng để chứng tỏ rằng thanh toán giao dịch của bạn nằm trong một block đơn cử. Quy trình này thường được gọi là Xác minh thanh toán giao dịch đơn giản hóa hoặc SPV và được Satoshi Nakamoto trình diễn chi tiết cụ thể trong sách trắng về Bitcoin .

Để kiểm tra hD, chúng tôi chỉ cần các hàm băm có màu đỏ.Để kiểm tra hD, chúng tôi chỉ cần các hàm băm có màu đỏ.

Để kiểm tra hD, chúng tôi chỉ cần các hàm băm có màu đỏ.

Hãy xem xét tình huống mà chúng tôi muốn biết thông tin về giao dịch có TXID là hD. Nếu hC được cung cấp, chúng tôi có thể tính hCD. Khi đó, ta cần hAB để tính hABCD. Cuối cùng, với hEFGH, chúng tôi có thể kiểm tra xem gốc Merkle được tính ra có khớp với gốc từ tiêu đề khối hay không. Nếu khớp, đó chính là bằng chứng cho thấy giao dịch đã được thêm vào block – thật khó để tạo ra cùng một hàm băm với nhiều dữ liệu.

Trong ví dụ trên, chúng ta chỉ phải băm ba lần. Nếu không có bằng chứng Merkle, chúng ta sẽ cần thực hiện việc này bảy lần. Vì các block ngày nay chứa hàng nghìn giao dịch, việc sử dụng bằng chứng Merkle giúp chúng ta tiết kiệm rất nhiều thời gian và tài nguyên máy tính.

Tổng kết

Cây Merkle đã tự chứng tỏ tính hữu dụng trong một loạt những ứng dụng khoa học máy tính – như đã thấy, chúng mang lại nhiều giá trị trong những blockchain. Trong những mạng lưới hệ thống phân tán, cây Merkle được cho phép thuận tiện xác định thông tin mà không làm ngập mạng lưới với tài liệu không thiết yếu .Nếu không có cây Merkle ( và gốc Merkle ), Bitcoin và những block của những loại tiền mã hóa khác khó mà nhỏ gọn như ngày này. Đồng thời, khi những light client thiếu góc nhìn quyền riêng tư và bảo mật thông tin, vật chứng Merkle sẽ được cho phép người dùng kiểm tra xem những thanh toán giao dịch của họ đã được đưa vào một block với ngân sách tối thiểu hay chưa .

Source: https://openlivenft.info
Category : TIN COIN

Đánh giá bài post
- Advertisement -spot_img

More articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisement -spot_img

Latest article

Ethereum là gì? | OpenliveNFT