

Tóm tắt báo cáo:
Tóm tắt báo cáo:
Phân mảnh là một công nghệ mở rộng bắt nguồn từ cơ sở dữ liệu, có thể được sử dụng để cải thiện khả năng mở rộng của hệ thống chuỗi khối. Ý tưởng cơ bản là chia các nút trong mạng thành các phân đoạn khác nhau và mỗi phân đoạn có thể xử lý song song các giao dịch khác nhau, sao cho chúng có thể xử lý song song lẫn nhau.Các giao dịch chưa thiết lập kết nối giữa chúng để tăng tính đồng thời của mạng. Nó được đặc trưng bởi sự gia tăng thông lượng mạng khi số lượng nút tăng lên. Khó khăn cốt lõi nằm ở việc xác định các giá trị đặc trưng chính của các phân đoạn dữ liệu và sự không nhất quán do giao tiếp siêu dữ liệu giữa các phân đoạn bị chậm trễ.Việc giao tiếp giữa các phân đoạn thường xuyên sẽ làm giảm đáng kể hiệu suất của mạng chuỗi khối. Do dữ liệu trong mỗi phân đoạn được cập nhật riêng biệt, nên cần đảm bảo cập nhật thông tin thành công khi thiết kế logic ứng dụng, đồng thời, cần dự trữ một mức độ mạnh mẽ nhất định để xử lý các mâu thuẫn có thể xảy ra trong quy trình để đạt được sự nhất quán cuối cùng.
Việc bảo vệ trong chuỗi khối được chia thành bảo vệ giao dịch, bảo vệ mạng và bảo vệ trạng thái theo đối tượng, điều đáng chú ý là công nghệ bảo vệ mạng được sử dụng trong chuỗi khối, tức là các thợ mỏ được chia thành nhiều mạng con chịu trách nhiệm. để xác minh các giao dịch trên phân đoạn, cần đảm bảo rằng số lượng nút độc hại đủ nhỏ và do đó, cần phải cẩn thận để đảm bảo tính ngẫu nhiên trong các quy tắc chỉ định người khai thác. Trong ứng dụng của công nghệ sharding trong blockchain, vấn đề cần được quan tâm là khả năng phòng thủ trước các cuộc tấn công khác nhau như tấn công sybil, tấn công DDOS, tấn công double-spend… Cần đảm bảo tổng số node trong mỗi shard đồng thời cân nhắc hiệu quả. Số lượng nút đủ và trung thực chiếm đa số, đồng thời công nghệ sharding có yêu cầu bảo mật cực cao, đồng thời số lượng nút trong hệ thống blockchain nhiều hơn so với cơ sở dữ liệu truyền thống và gặp hạn chế về băng thông. Nó cần được xem xét đầy đủ Các vấn đề về hiệu suất và bảo mật do sự không nhất quán gây ra bởi sự chậm trễ, vì vậy có rất ít dự án liên quan đã hạ cánh. Nó cần phải được kiểm tra và xác minh trong một mạng lưới quy mô lớn trong một thời gian dài, kết hợp với một bằng chứng giải pháp lý thuyết chặt chẽ, để thuyết phục.
Công nghệ phân mảnh theo khái niệm truyền thống là chia cơ sở dữ liệu thành nhiều mảnh và đặt chúng trên các máy chủ khác nhau. Trong các dịch vụ đám mây hiện đại, dữ liệu thường được lưu trữ tại các trang khác nhau và được phân vùng. Lý do cho phương pháp này bao gồm cân bằng tải trên nhiều máy tính để cải thiện khả năng mở rộng, lưu trữ dữ liệu trên nhiều trang web để cải thiện tính khả dụng, v.v. Công nghệ sharding chuỗi khối là một công nghệ mở rộng dựa trên khái niệm sharding cơ sở dữ liệu.
Bất kể trong lĩnh vực chuỗi khối hay cơ sở dữ liệu, bước đầu tiên trong sharding là trích xuất các giá trị đặc trưng chính của dữ liệu và chia các giá trị đặc trưng chính thành các đoạn khác nhau để xử lý theo các quy tắc nhất định. Việc lựa chọn các giá trị tính năng chính là rất quan trọng, nó liên quan đến việc đảm bảo tính duy nhất của biểu diễn dữ liệu và ảnh hưởng của sự phân mảnh. Về phương pháp lựa chọn giá trị riêng, có một tiêu chuẩn ngắn gọn: dựa trên những gì bạn nghĩ mẫu truy cập chính sẽ là (dựa trên những gì bạn nghĩ mẫu dữ liệu cơ bản sẽ là). Do đó, chúng ta thường có thể thấy trong các dự án blockchain, sharding dựa trên khóa cá nhân/địa chỉ tài khoản của người dùng, v.v., bởi vì các giá trị này là duy nhất và không thay đổi theo thời gian, và logic của sharding tương đối rõ ràng.
Trong công nghệ cơ sở dữ liệu truyền thống, có ba cách chính để phân mảnh dữ liệu:
1. Chế độ băm, modulo trực tiếp:Ví dụ: nếu có 3 phân đoạn, dữ liệu sẽ được băm và modulo 3 và được gán cho các phân đoạn cụ thể theo kết quả. có nhiều khả năng được phân phối đồng đều giữa các mảnh khác nhau. Một ví dụ ngược lại là nếu giá trị đặc trưng chính của dữ liệu là thứ tự thời gian đăng ký, thì dữ liệu mới đăng ký sẽ hoạt động nhiều hơn và có thể gán chúng cho một phân đoạn nhất định. Nhưng nhược điểm của phương pháp này là nếu các phân đoạn mới được thêm vào, rất khó để cân bằng lại các phân đoạn đó; ưu điểm là không cần duy trì thông tin trạng thái bổ sung.
2. Băm nhất quán:Phương pháp băm nhất quán không có nút ảo có nghĩa là dữ liệu được ánh xạ tới vòng băm từ đầu đến cuối theo giá trị đặc trưng và các nút cũng được ánh xạ theo các quy tắc nhất định. Nút đầu tiên được dữ liệu tìm thấy theo chiều kim đồng hồ là nút nơi nó được lưu trữ. Băm nhất quán với các nút ảo cũng tương tự, ngoại trừ việc các nút ảo được ánh xạ tới vòng băm, do đó, một nút vật lý thực tế có thể chiếm nhiều phạm vi trên vòng băm. Phương pháp này cần duy trì thông tin trạng thái, nghĩa là dữ liệu được phân bổ cho nút nào, nhưng ưu điểm là dễ dàng cân bằng lại các phân đoạn nếu số lượng phân đoạn cần tăng lên. Tuy nhiên, việc duy trì thông tin trạng thái phân đoạn cần xem xét các vấn đề về tính nhất quán, điều này phức tạp hơn.
3. Range based:Nó được chia thành các khoảng khác nhau theo các giá trị tính năng chính và mỗi nút tương ứng với một hoặc nhiều khoảng Tương tự như cách băm nhất quán, thông tin trạng thái cũng cần được duy trì.
Trong hệ thống chuỗi khối, cần phải có một cơ chế để biết nút nào thực hiện phân đoạn nào. Trong các hệ thống cơ sở dữ liệu truyền thống, thông tin phân đoạn (nghĩa là siêu dữ liệu, dữ liệu được chia thành phân đoạn nào) thường yêu cầu lưu trữ máy chủ chuyên dụng. Đôi khi Để giảm áp lực lên máy chủ siêu dữ liệu, trong một hệ thống phân tán, siêu dữ liệu sẽ được lưu trữ trên các nút khác.Ý tưởng trong chuỗi khối cũng gần giống như vậy, cần đảm bảo tính nhất quán của siêu dữ liệu được lưu trong bộ nhớ cache giữa các nút hoặc giới thiệu một máy chủ chính tương tự để đảm bảo hiệu suất, nhưng cả hai đều mang lại những thách thức về tính nhất quán.
Tính nhất quán và tính khả dụng của nhiều bản sao là phạm vi thảo luận về lý thuyết CAP và chủ yếu có hai giải pháp khả dụng.
Đầu tiên là đồng bộ hóa master-slave. Đầu tiên, máy chủ chính được chọn và chỉ máy chủ chính cung cấp các dịch vụ bên ngoài. Máy chủ chính lưu thông tin cập nhật của siêu dữ liệu vào không gian lưu trữ dùng chung dưới dạng nhật ký, sau đó máy chủ phụ đọc từ không gian lưu trữ dùng chung. Lấy nhật ký và áp dụng nó để đạt được trạng thái nhất quán với máy chủ chính. Nếu máy chủ chính được phát hiện có lỗi (chẳng hạn như thông qua nhịp tim), máy chủ chính mới sẽ được chọn lại . Trong trường hợp phân đoạn mạng, có thể mọi người đều nghĩ rằng máy chủ chính ban đầu đã ngừng hoạt động và một máy chủ chính mới được bầu chọn, nhưng trong thời gian thực, máy chủ chính ban đầu vẫn tiếp tục cung cấp dịch vụ, dẫn đến sự xuất hiện của Hiện tượng "máy chủ chính kép". Để giải quyết vấn đề này, cần phải tìm cách cách ly máy chủ chính cũ để nó không thể cung cấp các dịch vụ bên ngoài một cách bình thường. Để đảm bảo tính nhất quán mạnh mẽ của siêu dữ liệu, khi chuẩn bị chuyển đổi, máy chủ chính mới phải xác nhận rằng siêu dữ liệu đã được đồng bộ hóa hoàn toàn trước khi tiếp tục cung cấp dịch vụ bên ngoài. Để đạt được mục tiêu này, một cách là thông báo ngay lập tức cho tất cả các máy chủ bộ đệm khi siêu dữ liệu thay đổi và khóa dữ liệu.Ví dụ: nếu nhiệm vụ hoàn thành của hệ thống yêu cầu nhiều phân đoạn cập nhật trạng thái cùng một lúc, thì trước khi cập nhật hoàn tất, quyền truy cập sẽ bị từ chối. Một cách khác để duy trì mức độ nhất quán cao giữa dữ liệu được sao chép thường đạt được trong cơ sở dữ liệu NoSQL có khả năng mở rộng cao là sử dụng số đại biểu đọc-ghi và lập phiên bản. Cách tiếp cận này tránh khóa dữ liệu với chi phí phức tạp hơn trong việc đọc và ghi dữ liệu.
Cách thứ hai là đạt được tính nhất quán của nhiều bản sao thông qua giao thức đồng thuận phân tán, chẳng hạn như giao thức Paxos và Raft, giao thức có thể nhận ra rằng tất cả các bản sao lưu đều có thể cung cấp dịch vụ bên ngoài và đảm bảo tính nhất quán mạnh mẽ.
Phân đoạn trạng thái của chuỗi khối có nghĩa là mỗi nút chỉ lưu trữ một phần thông tin trạng thái chuỗi khối và cần có một cơ chế tương tự để duy trì thông tin trạng thái để biết lát cắt nào lưu trữ trạng thái cần thiết. Vấn đề nhất quán cần được giải quyết tương tự như trên và việc thực hiện phân mảnh giao dịch đơn giản hơn. Trong hệ thống chuỗi khối dựa trên tài khoản, mỗi giao dịch sẽ có địa chỉ của người gửi và sau đó hệ thống có thể phân bổ một phân đoạn dựa trên địa chỉ của người gửi. Điều này đảm bảo rằng hai giao dịch chi tiêu gấp đôi sẽ được xác minh trong cùng một phân đoạn, vì vậy hệ thống có thể dễ dàng phát hiện các giao dịch chi tiêu hai lần mà không cần bất kỳ giao tiếp giữa các phân đoạn nào. Nếu các nút là xác định, thì hầu như không có vấn đề gì do cập nhật siêu dữ liệu đã thảo luận ở trên. Tuy nhiên, nếu xác minh giao dịch liên quan đến giao tiếp giữa các phân đoạn, chi phí chung thường cao, điều này sẽ ảnh hưởng đến thông lượng và lợi ích kinh tế của mạng.
Mạng sharding của chuỗi khối đề cập đến việc chia các công cụ khai thác thành nhiều nhóm, xác minh các giao dịch cùng một lúc, cải thiện khả năng xử lý các giao dịch song song của hệ thống và do đó cải thiện TPS. Thông thường, có thể quyết định chọn một nút đồng thuận bằng cách thường xuyên tạo các số ngẫu nhiên. Miễn là nó được ánh xạ tới các phân đoạn đã được đánh số, vấn đề sẽ trở nên dễ giải quyết hơn nhiều. Tuy nhiên, nếu một nút ngừng hoạt động và nút đó được gán lại, thì cần phải hình thành sự đồng thuận giữa các phân đoạn. Điều đáng chú ý là công nghệ phân đoạn mạng được sử dụng trong chuỗi khối, nghĩa là các công cụ khai thác được chia thành nhiều mạng con chịu trách nhiệm xác minh các giao dịch trên các phân đoạn, cần đảm bảo rằng số lượng nút độc hại đủ nhỏ , vì vậy các quy tắc chỉ định người khai thác cần được thực hiện cẩn thận để đảm bảo tính ngẫu nhiên.
người giới thiệu:
người giới thiệu:
1. "Học phân mảnh dữ liệu của các hệ thống phân tán với các câu hỏi",https://www.cnblogs.com/xybaby/p/7076731.html
2. "Công nghệ Sharding (Sharding) - Giải pháp tốt cho vấn đề mở rộng chuỗi khối",http://www.8btc.com/sharding-blockchain-scalability
3. 《sharding》,https://docs.mongodb.com/manual/sharding/
4. 《Sharding pattern》,https://docs.microsoft.com/en-us/azure/architecture/patterns/sharding
5. 《Database sharding explained in plain English》,https://www.citusdata.com/blog/2018/01/10/sharding-in-plain-english/
6. Lu Xiaoming, "Công nghệ sharding được coi là tương lai của chuỗi công cộng cách chúng ta bao xa?" ",https://www.odaily.com/post/5132394
7. Coin Academy, "Tổng quan về Sharding, Zilliqa và QuarkChain",http://8btc.com/article-4660-1.html
