SPV là kỹ thuật được mô tả trong bài báo của Satoshi Nakamoto cho phép người dùng xác nhận, kiểm tra một giao dịch transaction đã được thêm vào blockchain hay chưa mà không cần phải tải về toàn bộ blockchain. Do đó, với những thiết bị máy tính, mobile hạn chế về phần cứng cũng có thể xác nhận được giao dịch của mình mình đã được xác nhận (thêm vào) trên blockchain. Chính vì lí do đó, module của các phần mềm ví như Electrum hỗ trợ SPV thường bảo mật hơn các ví điện tử nền tảng web, vì họ không cần phải gởi các thông tin riêng tư tới những máy chủ để xác nhận. Để xác nhận một giao tác nằm trên blockchain, SPV client sẽ yêu cầu bằng chứng là một dạng của một nhánh trong cây Merkle . SPV-bitcoin.png

Người dùng chỉ cần giữ bản sao của các headers của blockchain (thường là rất rất nhỏ so với toàn bộ blockchain). Một block bất kỳ bao gồm 2 phần: header và body. Phần header chứa thông tin như hình trên, bao gồm phần hash của block trước đó, số ngẫu nhiên duy nhất Nounce, và Merkle Root hash. Phần body là chi tiết các giao tác của người dùng (transaction). Cây Merkle đơn giản là cấu trúc cây, nốt lá là thông tin chi tiết của các giao tác, các nốt trung gian là kết quả sau của phép băm các giao tác. Các giao tác sẽ được băm, sau đó kết hợp thành cặp và tiếp tục băm chúng với nhau. Quá trình băm tiếp tục từ lá lên cho tới khi chỉ còn 1 nốt gốc. Nốt gốc được gọi là merkle node hash. merkletree-l1-l4.png

Tới đây, chúng ta sẽ thấy lợi ích của cấu trúc cây merkle đó là chúng ta chỉ cần biết mã băm gốc là có thể xác minh xem một giao dịch có phải là một phần của cây hay không, điều đó có nghĩa là nó đã được đưa vào khối Bitcoin. Điều này được thực hiện bằng cách lấy các nốt nằm trong đường dẫn kết nối với nốt gốc với một trong các giao dịch dưới cùng và nhóm chúng lại với nhau để tạo ra bằng chứng. merkletree-pr.png

Với bằng chứng đó, người dùng ban đầu chỉ cần truy cập vào nốt lá và đi theo đường dẫn trở lại gốc theo cách có thể xác minh được, cụ thể anh ta có thể kiểm tra xem băm Hash1 và Hash0 cùng tạo ra băm trên cùng hay không, có nghĩa là Hash1 và Hash0 là nốt con hợp pháp, sau đó áp dụng kiểm tra tương tự này cho Hash0–0 và Hash0–1, do đó khẳng định rằng hai thứ này cũng là một phần của khối, và cuối cùng, kiểm tra xem L1 có phải là nguồn của Hash0–0, chứng minh rằng L1 được bao gồm trong khối, do đó xác nhận nó là một giao dịch Bitcoin được chấp nhận. Chúng ta sử dụng phương pháp SPV để xác nhận một giao tác đã được thêm vào chuỗi khối mà không cần phải tải toàn bộ chuỗi khối (bao gồm cả phần body là rất khổng lồ). Thay vào đó, chúng ta chỉ cần tải phần header của tất cả khối trong chuỗi khối; điều này làm giảm khối lượng đến 99%;do đó quá trình xác nhận, kiểm tra 1 giao dịch hợp lệ hay không có thể chạy trên các thiết bị giới hạn về sức mạnh, như máy tính cá nhân, hoặc thậm chí thiết bị di động. Phương pháp SPV gặp vấn đề khi bị 51% tấn công trên chuỗi khối, nghĩa là nếu hacker có thể tạo ra trên 51% số lượng các máy đào server. Do đó, càng nhiều server đào cá nhân sẽ giúp gia tăng sức mạnh của hệ thống Bitcoin.


By Jimmy nguyen