Merkle Tree Là Gì

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

Bạn đang xem: Merkle tree là gì


Cây Merkle là một kết cấu hiệu quả dùng làm xác minh tính trọn vẹn của tài liệu trong tập hợp. Kết cấu này đặc trưng 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 tin tức một cách độc lập.
Hàm băm là nơi bắt đầu của cấu tạo cây Merkle, vày vậy chúng ta nên xem bài Hashing (băm) là gì? trước khi tiếp tục.
Giả sử bạn có nhu cầu tải về một tệp lớn. Lúc dùng phần mềm mã nguồn mở, chúng ta thường mong kiểm tra coi hàm băm của tệp đã cài về bao gồm khớp với mã nhưng mà nhà phạt triển công khai minh bạch hay không. Trường hợp đúng, chúng ta biết được rằng tệp trên sản phẩm tính của bản thân mình hoàn toàn giống với tệp của nhà phát triển.

Nếu những hàm băm không khớp có nghĩa là đã xẩy ra vấn đề. Chúng ta đã mua về một tệp ô nhiễm và độc hại giả dạng ứng dụng hoặc tải ứng dụng không đúng cách nên phần mềm sẽ quan yếu hoạt động. Giả dụ trường hợp máy hai xảy ra, thiệt chẳng vui một chút nào khi chúng ta phải hóng một lúc để tệp mua về. Bây giờ, chúng ta cần triển khai lại quá trình và mong muốn không xảy ra lỗi nữa.


Bạn suy nghĩ rằng giá như bao gồm một cách dễ ợt hơn để thực hiện việc này. Thiệt may mắn, đây là lúc đề xuất đến cây Merkle. Khi sử dụng một vào những cấu trúc cây này, bạn sẽ chia nhỏ tệp của chính bản thân mình thành những phần. Nếu sử dụng với tệp 50GB, chúng ta cũng có thể chia thành một trăm phần, sao cho mỗi phần có size 0,5GB. Sau đó, khối hệ thống sẽ thiết lập về từng phần một. Về cơ bản, đây quá trình thực hiện khi bạn chia nhỏ dại tệp của mình. 
Trong trường vừa lòng này, nguồn của bạn sẽ cung cấp một hàm băm được call là gốc Merkle. Hàm băm đối kháng này là đại diện thay mặt cho số đông phần dữ liệu tạo cho tệp của bạn. Mà lại nhờ gốc Merkle, việc xác minh dữ liệu thuận tiện hơn nhiều. 
Để bạn dễ hiểu hơn, công ty chúng tôi sẽ mang một ví dụ thực hiện tệp 8GB được chia thành tám phần. Đặt tên những mảnh này từ A đến H. Từng mảnh tiếp đến được chuyển qua một hàm băm và shop chúng tôi có tám hàm băm.
*

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

Tốt rồi, bây giờ những việc công ty chúng tôi thực hiện nay sẽ dễ hiểu hơn một chút. Chúng tôi có hàm băm của tất cả các mảnh bắt buộc nếu một mảnh bị lỗi, cửa hàng 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 khá kém hiệu quả. Trường hợp tệp có hàng nghìn mảnh, liệu các bạn có thực sự sẽ "băm" toàn bộ và so sánh tỉ mỉ kết quả không?


Không. Vậy vào đó, công ty chúng tôi sẽ rước từng cặp hàm băm, phối hợp lại, tiếp nối băm bọn chúng với nhau. Vì thế chúng tôi băm hA + hBhC + hDhE + hF với hG + hH. Bọn chúng tôi xong với tư hàm băm. Sau đó, shop chúng tôi thực hiện một vòng băm không giống với rất nhiều hàm băm này và xong xuôi khi sót lại hai hàm băm. Cuối cùng, shop chúng tôi băm hai hàm băm còn sót lại để thu được mang đế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 kiểu như với một chiếc cây lộn ngược. Ở hàng bên dưới cùng, chúng tôi có lá, được phối hợp để tạo nên các node và ở đầu cuối là gốc.

Bây giờ chúng tôi có nơi bắt đầu Merkle thay mặt cho tệp mình đã tải về. Shop chúng tôi có thể đối chiếu hàm băm cội này cùng với hàm băm do nguồn cung cấp cấp. Nếu hai hàm này khớp nhau thì tốt vời! nhưng mà nếu những hàm băm không giống nhau, thì chắc chắn rằng rằng dữ liệu đã trở nên sửa đổi. Nói cách khác, một hoặc các mảnh đã tạo ra hàm băm khác. Bởi vậy, bất kỳ sửa đổi nhỏ nào trong dữ liệu cũng biến thành mang đến cho công ty chúng tôi một gốc Merkle hoàn toàn khác. 


May mắn là tất cả một phương thức hữu ích để shop chúng tôi kiểm tra được mảnh nào bị lỗi. Trong trường hợp của này, đưa sử mảnh hE bị lỗi. Chúng ta sẽ bước đầu bằng cách hỏi một người tiêu dùng khác về hai hàm băm tạo nên gốc Merkle là (hABCD và hEFGH). Giá chỉ trị hABCD của các bạn sẽ khớp với mức giá trị của nguồn vị sẽ không tồn tại sai sót vào nhánh cây đó. Nhưng hEFGH thì không hợp nên chúng ta biết mình đề xuất kiểm tra hàm này. Sau đó, bạn yêu cầu khám nghiệm 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 đã ổ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 những hàm băm của hEhF. Hiện giờ bạn đã biết rằng hE không đúng mực nên chúng ta có thể tải lại mảnh này.

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

Xem thêm: Những Kẻ Tiểu Nhân, Tin Tức Kẻ Tiểu Nhân, Làm Sao Nhận Diện Kẻ Tiểu Nhân

Bạn muốn bước đầu cùng chi phí mã hoá? thiết lập Bitcoin trên hawacorp.vn ngay lập tức hôm nay!

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


Bạn có thể dùng cây Merkle trong vô số trường hợp cơ mà trong bài viết này, chúng tôi sẽ tập trung vào tầm đặc biệt của cấu trúc này đối với các blockchain. Cây Merkle rất đặc trưng đối với Bitcoin cùng nhiều loại tiền mã hóa khác. Cấu trúc này là một phần không thể thiếu hụt của mọi block và đông đảo người có thể tìm thấy các cấu tạo 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 giao dịch thanh toán ( TXID) của mọi giao dịch có vào block. 

Gốc Merkle dùng để phục vụ cho một vài mục đích trong trường hòa hợp này. Hãy xem xét những ứng dụng của bọn chúng trong việc đào chi phí mã hóa và xác minh giao dịch.

Đào tiền


Một block Bitcoin được cấu thành từ nhì phần. Phần thứ nhất là title khối, một phân đoạn bao gồm kích thước cố định chứa siêu dữ liệu cho block. Phần sản phẩm công nghệ hai là danh sách những giao dịch có rất nhiều kích thước nhưng lại 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 kết quả khớp với các điều kiện tốt nhất định, từ kia đào ra block đúng theo lệ. Trước khi tìm ra một block, chúng ta phải cố gắng thử hàng trăm tỷ lần. Với mỗi lần thử, họ biến đổi một số tự dưng trong title khối ( nonce) để tạo thành một hiệu quả khác. Mặc dù nhiên, vẫn giữ lại nguyên nhiều phần của block. Rất có thể có mặt hàng nghìn thanh toán và bạn vẫn buộc phải băm chúng mỗi lần giao dịch.

Một gốc Merkle giúp đơn giản hóa các bước đáng kể. Khi bắt đầu đào, các bạn sẽ sắp xếp toàn bộ các thanh toán giao dịch muốn cung ứng và sản xuất một cây Merkle. Các bạn đặt hàm băm gốc hiệu quả (32 byte) vào title khối. Sau đó, khi đã đào, bạn chỉ cần băm title khối, cố gắng vì toàn bộ block.

Phương pháp này thực sự công dụng vì rất có thể chống mang mạo. Chúng ta tóm tắt tác dụng tất cả các giao dịch của block trong một định dạng nhỏ tuổi gọn. Chúng ta không thể kiếm tìm tiêu đề khối hòa hợp lệ, rồi đổi khác danh sách giao dịch, vì điều đó sẽ làm biến đổi gốc Merkle. Lúc block được gởi đến những node khác, chúng sẽ tính nơi bắt đầu từ list giao dịch. Giả dụ block này sẽ không khớp với trong những tiêu đề thì sẽ ảnh hưởng từ chối.

Xác minh


Gốc Merkle bao gồm một tính chất thú vị khác mà bạn cũng có thể tận dụng. Điều này liên quan đến các light client (các node không chứa bạn dạng sao không thiếu của blockchain). Nếu đang làm việc một node trên thiết bị tài giỏi nguyên hạn chế, các bạn sẽ không ý muốn tải về cùng băm tổng thể giao dịch của block. Nạm vào đó, số đông gì chúng ta có thể làm chỉ cần yêu cầu cung cấp bằng triệu chứng Merkle – bằng chứng do node đầy đủ cung cấp để minh chứng rằng giao dịch của người sử dụng nằm vào một block vắt thể. Tiến trình này hay được gọi là Xác minh thanh toán đơn giản hóa hoặc SPV và được Satoshi Nakamoto trình bày cụ thể trong sách white về Bitcoin.
*

Hãy xem xét trường hợp mà shop 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, shop chúng tôi có thể tính hCD. Lúc đó, ta cần hAB để tính hABCD. Cuối cùng, với hEFGH, chúng tôi có thể kiểm soát xem gốc Merkle được xem ra có khớp với gốc từ title khối tốt không. Ví như khớp, đó chính là bằng chứng cho thấy giao dịch sẽ được cung cấp block – thật nặng nề để tạo ra cùng một hàm băm với tương đối nhiều dữ liệu.

Trong lấy ví dụ như trên, chúng ta chỉ buộc phải băm cha lần. Nếu không tồn tại bằng triệu chứng Merkle, họ sẽ cần thực hiện việc này bảy lần. Vì các block thời nay chứa hàng trăm ngàn giao dịch, vấn đề sử dụng vật chứng Merkle giúp họ tiết kiệm không ít thời gian và tài nguyên thiết bị tính.

Tổng kết

Cây Merkle đã tự minh chứng tính có lợi trong một loạt các ứng dụng khoa học máy vi tính – như vẫn thấy, chúng đem lại nhiều giá bán trị trong những blockchain. Trong các hệ thống phân tán, cây Merkle chất nhận được dễ dàng xác minh tin tức mà không có tác dụng ngập mạng lưới với tài liệu không phải thiết.

Xem thêm: "Display Control Unit ( Dcu Là Gì, Nghĩa Của Từ Dcu, Dcu Là Gì, Nghĩa Của Từ Dcu


Nếu không có cây Merkle (và nơi bắt đầu Merkle), Bitcoin và những block của các loại tiền mã hóa khác khó khăn mà nhỏ gọn như ngày nay. Đồng thời, khi các light client thiếu góc cạnh quyền riêng bốn và bảo mật, dẫn chứng Merkle sẽ cho phép người dùng soát sổ xem những giao dịch của mình đã được đưa vào một trong những block với ngân sách tối thiểu giỏi chưa.
Điều khoản với Điều kiệnChính sách Quyền riêng rẽ tưTuyên ba miễn trừ trách nhiệmHướng dẫn gửi yêu cầuHướng dẫn dịch thuậtYêu cầu nội dungPhản hồi
EnglishFrançaisPolski简体中文繁體中文Tiếng Việtالعربية한국어РусскийEspañolTürkçePortuguêsItalianoBahasa Indonesia日本語FilipinoУкраїнська моваČeštinaБългарскиاردوlatviešu valodaSvenskaSlovenčinaDanskSuomiNorskEestiRomânăMagyar nyelvবাংলাעבריתΕλληνικάDeutsch (Schweiz)