TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

Trong hai tuần nay, Runet đã gây ồn ào về Telegram và tình hình bị Roskomnadzor ngăn chặn vô nghĩa và tàn nhẫn. Vụ tấn công đã xúc phạm nhiều người, nhưng tất cả đều là chủ đề cho các bài đăng trên Geektimes. Tôi đã rất ngạc nhiên bởi một điều khác - tôi vẫn chưa thấy một phân tích nào về Habré của mạng TON được lên kế hoạch phát hành trên cơ sở Telegram - Telegram Open Network. Tôi muốn bù đắp cho sự thiếu sót này, bởi vì có điều gì đó để nghiên cứu ở đó - ngay cả khi thiếu những tuyên bố chính thức về nó.

Hãy để tôi nhắc bạn rằng có tin đồn rằng Telegram đã tung ra một ICO khép kín quy mô rất lớn và đã thu về số tiền đáng kinh ngạc. Dự kiến, tiền điện tử của riêng Gram sẽ được ra mắt trong năm nay - và mọi người dùng Telegram sẽ tự động có một ví, điều này tự nó tạo ra lợi thế đáng kể so với các loại tiền điện tử khác.

Thật không may, vì không có tuyên bố chính thức nào nên tôi chỉ có thể tiếp tục từ giấy tờ không rõ nguồn gốc, điều mà tôi cảnh báo bạn ngay lập tức. Tất nhiên, nó có thể là một sự giả mạo rất khéo léo, nhưng cũng có thể đây là sách trắng thực sự của hệ thống tương lai, được viết bởi Nikolai Durov (và có thể bị rò rỉ bởi một trong những nhà đầu tư). Nhưng dù là giả thì cũng không ai cấm chúng ta nghiên cứu, bàn luận phải không?

Tài liệu này nói gì? Tôi sẽ cố gắng kể lại bằng lời của mình, sát với văn bản, nhưng bằng tiếng Nga và nhân văn hơn một chút (xin Nikolai tha thứ cho tôi về xu hướng đi sâu vào toán học hình thức). Hãy nhớ rằng ngay cả khi đây là bản chính hãng thì đây vẫn là bản mô tả dự thảo của hệ thống và rất có thể sẽ thay đổi vào thời điểm ra mắt công chúng.

Chúng tôi biết rằng ngoài tiền điện tử, còn có rất nhiều điều được mong đợi. Hãy thực hiện theo thứ tự.

  • Blockchain TON. Đây là cơ sở của toàn bộ hệ thống. Nếu bạn không biết nó là gì chặn — Tôi khuyên bạn nên tìm hiểu vì sẽ có rất nhiều blockchain ở đây. Được lồng vào nhau, các chuỗi khối hầu như bị phân mảnh và thậm chí là “dọc” trong các khối của các chuỗi khối khác. Cũng sẽ có một số thuật ngữ nghe có vẻ hay như Định tuyến Hypercube tức thì и Mô hình phân mảnh vô hạn, Nhưng nhiều hơn về điều này sau. Và tất nhiên, bằng chứng cổ phần và hợp đồng thông minh.
  • Mạng P2P TON. Mạng ngang hàng trên cơ sở đó hệ thống sẽ được xây dựng. Cô ấy sẽ được thảo luận đầu tiên trong phần này của câu chuyện.
  • TON lưu trữ. Lưu trữ tệp, bất kể blockchain, sẽ được xây dựng trên mạng ngang hàng nêu trên. Có thể so sánh với torrent.
  • TON ủy quyền. Đây là một dịch vụ có mục đích tăng tính ẩn danh của những người tham gia mạng. Bất kỳ gói nào cũng có thể được gửi không trực tiếp mà thông qua các đường hầm trung gian có mã hóa bổ sung - như I2P hoặc TOR.
  • TÔN DHT. Bảng băm phân tán để lưu trữ các giá trị tùy ý. Nó cũng được xây dựng trên Mạng TON (nhưng đồng thời nó cũng được anh ấy sử dụng) và giúp TON lưu trữ tìm các nút “phân phối” và TON ủy quyền - các bộ lặp trung gian. Nhưng cần lưu ý rằng, không giống như blockchain, bảng băm này không phải là nơi lưu trữ an toàn; thông tin quan trọng không thể được lưu trữ trong đó.
  • Dịch vụ TON. Nền tảng cho các dịch vụ tùy chỉnh. Về bản chất, đây là một Internet mới dựa trên tất cả những gì được mô tả ở trên. Trao đổi dữ liệu - qua Mạng TON/TON ủy quyềnvà logic nằm trong các hợp đồng thông minh của Blockchain TON. Và giao diện với các URL khá quen thuộc.
  • TẤN DNS. Vì chúng ta đang nói về các URL quen thuộc, chúng ta cũng cần một trình chuyển đổi từ chúng thành địa chỉ 256-bit - tài khoản, hợp đồng, dịch vụ và nút.
  • Thanh toán TON. Và đây là lúc vấn đề tiền bạc phát huy tác dụng. Và nó sẽ không chỉ gram — giống như ether, mọi “mã thông báo” đều có thể sử dụng được; Gram sẽ chỉ là loại tiền tệ “mặc định” ở đây.

Đây là phần đầu tiên mô tả lớp “nối đất” của TON - phần mạng của nó, được xây dựng dựa trên các giao thức truyền thống. Trong phần tiếp theo, chúng ta sẽ nói về “mềm” - blockchain, sẽ được hỗ trợ bởi hệ thống được mô tả bên dưới. Vì vậy, thứ tự kể lại của tôi hơi khác so với thứ tự được sử dụng trong tài liệu nêu trên (bắt đầu ngay ở cấp độ trừu tượng).

Các khái niệm cơ bản

TL (Loại ngôn ngữ). Nó là một định dạng nhị phân trừu tượng cho các cấu trúc dữ liệu tùy ý. Nó được sử dụng trong giao thức Telegram và sẽ được sử dụng tích cực trong TON. Nếu bạn muốn làm quen với nó một cách chi tiết - đây là mô tả của anh ấy.

băm (băm). Hàm thực hiện chuyển đổi không thể đảo ngược cấu trúc dữ liệu tùy ý thành một số có độ dài cố định. Trong suốt tài liệu chúng ta nói về chức năng SHA-256.

Nút mạng (nút). Nút là phần mềm sẽ đảm bảo hệ thống hoạt động. Cụ thể, người ta giả định rằng mỗi ứng dụng khách Telegram sẽ bao gồm một nút TON. Ở cấp độ thấp, các nút có địa chỉ IPv4/IPv6 và giao tiếp bằng giao thức UDP; ở cấp độ cao hơn, chúng có địa chỉ trừu tượng và triển khai giao thức ADNL (về địa chỉ trừu tượng và ADNL - xem bên dưới). Khi nói đến việc một số bộ phận của hệ thống thực hiện một việc gì đó hoặc lưu trữ một số dữ liệu, người ta hiểu rằng việc này được thực hiện bởi các nút mạng.

địa chỉ trừu tượng (hoặc đơn giản địa chỉ, địa chỉ). Địa chỉ của một nút được xác định bởi khóa chung của nó. Nghiêm túc hơn, đó là hàm băm 256 bit (SHA256) của cấu trúc dữ liệu chứa khóa chung (thuật toán mã hóa cụ thể không được chỉ định - các đường cong elip và RSA-2048 được đưa ra làm ví dụ). Để một nút giao tiếp với nút khác, nó không chỉ cần biết địa chỉ của nút đó mà còn cả cấu trúc dữ liệu này. Về lý thuyết, một nút vật lý có thể tạo ra bất kỳ số lượng địa chỉ nào (tương ứng với các khóa khác nhau).

Hơn nữa, một liên kết như vậy thường được sử dụng: một “nguyên mẫu” ở dạng cấu trúc TL (chứa hầu hết mọi dữ liệu) và hàm băm 256 bit từ nó, được sử dụng để đánh địa chỉ.

Chuỗi khối (blockchain). Blockchain là một cấu trúc dữ liệu, các phần tử (Blocks) được sắp xếp thành một “chuỗi” và mỗi khối tiếp theo của chuỗi chứa hàm băm của chuỗi trước đó. Bằng cách này, tính toàn vẹn đạt được - các thay đổi chỉ có thể được thực hiện bằng cách thêm các khối mới.

Dịch vụ (dịch vụ). Các dịch vụ trong TON có thể có nhiều loại khác nhau, tùy thuộc vào việc chúng có sử dụng blockchain hay không. Ví dụ: một (hoặc nhiều) nút mạng có thể xử lý một số yêu cầu RPC nhất định bằng giao thức ADNL được mô tả bên dưới mà không tạo bất kỳ bản ghi nào trong chuỗi khối - giống như các máy chủ web truyền thống. Bao gồm khả năng triển khai HTTP qua ADNL, cũng như việc chuyển đổi chính trình nhắn tin sang giao thức này. Bằng cách tương tự với TOR hoặc I2P, điều này sẽ giúp nó có khả năng chống lại các hoạt động chặn khác nhau tốt hơn.

Đồng thời, một số dịch vụ liên quan đến cả tương tác với blockchain và xử lý các yêu cầu bên ngoài nó. Ví dụ: đối với TON Storage - lưu trữ tệp - việc lưu trữ chính các tệp trên blockchain là không hợp lý lắm. Nó sẽ chỉ chứa các tệp băm (cùng với một số thông tin meta về chúng) và các nút mạng chuyên dụng sẽ hoạt động như “máy chủ tệp”, sẵn sàng gửi chúng đến các nút khác thông qua ADNL.

Dịch vụ sương mù (dịch vụ sương mù). Chúng ta đang nói về một số dịch vụ ngụ ý phân cấp và tham gia cởi mở vào chúng. Ví dụ: TON Proxy là dịch vụ có thể được hỗ trợ bởi bất kỳ người tham gia nào muốn cung cấp nút của họ làm gói chuyển tiếp trung gian (proxy) giữa các nút khác. Nếu muốn, anh ta có thể tính một khoản phí do anh ta đặt ra cho việc này - sử dụng hệ thống Thanh toán TON cho các khoản thanh toán vi mô (do đó, cũng là một dịch vụ sương mù).

ADNL: Lớp mạng gói dữ liệu trừu tượng

Ở mức thấp nhất, việc liên lạc giữa các nút sẽ được thực hiện bằng giao thức UDP (mặc dù các tùy chọn khác đều được chấp nhận).

Như đã đề cập ở trên, để một nút gửi gói đến nút khác, nó phải biết một trong các khóa chung của nó (và do đó biết địa chỉ mà nó xác định). Nó mã hóa gói bằng khóa này và thêm địa chỉ đích 256 bit vào đầu gói - vì một nút có thể có một số địa chỉ này, điều này sẽ cho phép nó xác định khóa nào sẽ sử dụng để giải mã.

TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

Ngoài ra, thay vì địa chỉ của người nhận, phần đầu của gói dữ liệu có thể chứa cái gọi là. định danh kênh. Trong trường hợp này, việc xử lý gói đã phụ thuộc vào các thỏa thuận cụ thể giữa các nút - ví dụ: dữ liệu được gửi đến một kênh nhất định có thể được dành cho nút khác và phải được chuyển tiếp tới nút đó (đây là dịch vụ TON ủy quyền). Một trường hợp đặc biệt khác có thể là tương tác trực tiếp giữa các nút, nhưng với mã hóa bằng cặp khóa riêng cho kênh này (được tạo trước bằng giao thức Diffie-Hellman).

Cuối cùng, một trường hợp đặc biệt là kênh “null” - nếu một nút chưa biết khóa chung của “hàng xóm” của nó, thì nó có thể gửi cho họ các gói mà không cần mã hóa. Điều này chỉ nhằm mục đích khởi tạo - sau khi các nút gửi thông tin về khóa của chúng, chúng sẽ được sử dụng để liên lạc thêm.

Giao thức được mô tả ở trên (256 bit định danh kênh + nội dung gói) được gọi là ADNL. Tài liệu đề cập đến khả năng triển khai một giao thức tương tự TCP trên nó hoặc tiện ích bổ sung của riêng nó - RLDP (Giao thức gói dữ liệu lớn đáng tin cậy), nhưng không đi sâu vào chi tiết về việc triển khai chúng.

TON DHT: Bảng băm phân tán

Giống như các hệ thống phân tán khác, TON liên quan đến việc triển khai DHT - bảng băm phân tán. Cụ thể hơn, bảng giống Kademlia. Nếu bạn chưa quen với loại bảng băm này thì đừng lo lắng, dưới đây tôi sẽ mô tả đại khái cách chúng hoạt động.

TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

Theo nghĩa trừu tượng, DHT ánh xạ các khóa 256 bit thành các giá trị nhị phân có độ dài tùy ý. Trong trường hợp này, các khóa trong bảng là các giá trị băm từ một cấu trúc TL nhất định (bản thân các cấu trúc này cũng được lưu trữ cùng với DHT). Điều này rất giống với việc hình thành các địa chỉ nút - và chúng thực sự có thể có mặt trong DHT (ví dụ: sử dụng khóa như vậy địa chỉ IP của nút tương ứng với một địa chỉ nhất định địa chỉ trừu tượng, nếu anh ta không giấu nó). Nhưng trong trường hợp chung, “nguyên mẫu của chìa khóa” (của chúng mô tả, mô tả chính) là siêu dữ liệu cho biết “chủ sở hữu” của một mục trong bảng băm (nghĩa là khóa chung của một số nút), loại giá trị được lưu trữ và các quy tắc mà mục này sau đó có thể được thay đổi. Ví dụ: một quy tắc có thể chỉ cho phép chủ sở hữu thay đổi giá trị hoặc cấm thay đổi giá trị xuống (để bảo vệ khỏi các cuộc tấn công lặp lại).

Ngoài các khóa 256-bit, khái niệm về địa chỉ DHT cũng được đưa ra. Sự khác biệt với địa chỉ máy chủ thông thường là địa chỉ DHT nhất thiết phải được gắn với địa chỉ IP. Nếu một nút không ẩn IP của nó thì nó có thể sử dụng địa chỉ thông thường cho DHT. Nhưng thường xuyên hơn, một địa chỉ “bán cố định” riêng biệt sẽ được tạo cho nhu cầu DHT.
TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ
Khái niệm khoảng cách được giới thiệu phía trên các khóa và địa chỉ DHT - ở đây mọi thứ đều trùng khớp với các bảng kademlia - khoảng cách giữa các phím bằng XOR (OR độc quyền theo bit) của chúng. Như trong bảng Kademlia, giá trị tương ứng với một khóa nhất định phải được lưu trữ trên s các nút có khoảng cách ngắn nhất đến khóa này (s đây là một con số tương đối nhỏ).

Để một nút DHT giao tiếp với các nút khác như vậy, nó sẽ lưu trong bộ nhớ Bảng định tuyến DHT — Địa chỉ DHT và IP của các nút mà nó đã tương tác trước đó, được nhóm theo khoảng cách đến chúng. Có 256 nhóm như vậy (chúng tương ứng với bit quan trọng nhất được đặt trong giá trị khoảng cách - nghĩa là các nút ở khoảng cách từ 0 đến 255 sẽ thuộc một nhóm, từ 256 đến 65535 - vào nhóm tiếp theo, v.v.). Trong mỗi nhóm, một số lượng hạn chế các nút “tốt nhất” được lưu trữ (dưới dạng ping tới chúng).

TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

Mỗi nút phải hỗ trợ một số hoạt động: lưu trữ giá trị cho khóa, tìm kiếm nút и tìm kiếm giá trị. Việc tìm kiếm các nút liên quan đến việc phát hành, dựa trên một khóa nhất định, các nút gần nó nhất trong bảng định tuyến; việc tra cứu các giá trị cũng giống nhau, ngoại trừ khi nút biết giá trị của khóa (sau đó nó chỉ trả về giá trị đó). Theo đó, nếu một nút muốn tìm một giá trị theo khóa trong DHT, nó sẽ gửi truy vấn đến một số lượng nhỏ các nút gần khóa này nhất từ ​​bảng định tuyến của nó. Nếu giá trị được yêu cầu không nằm trong số phản hồi của họ nhưng có các địa chỉ nút khác thì yêu cầu sẽ được lặp lại với họ.

TON DHT có thể được sử dụng cho nhiều mục đích khác nhau, chẳng hạn như để triển khai việc lưu trữ tệp giống như torrent (xem phần XNUMX). TON lưu trữ); để xác định địa chỉ của các nút thực hiện các dịch vụ nhất định; để lưu trữ thông tin về chủ tài khoản trong blockchain. Nhưng ứng dụng quan trọng nhất là khám phá các nút theo địa chỉ trừu tượng của chúng. Để thực hiện việc này, địa chỉ được sử dụng làm khóa có giá trị cần tìm. Do yêu cầu, chính nút đó sẽ được tìm thấy (nếu địa chỉ được tìm kiếm là địa chỉ DHT bán cố định của nó) hoặc giá trị sẽ là địa chỉ IP và cổng để kết nối - hoặc một địa chỉ khác sẽ được sử dụng làm địa chỉ đường hầm trung gian.

Mạng lớp phủ trong TON

Giao thức ADNL được mô tả ở trên ngụ ý khả năng bất kỳ nút nào có thể trao đổi thông tin với nhau - mặc dù không nhất thiết phải theo những cách tối ưu. Có thể nói rằng nhờ ADNL, tất cả các nút tạo thành biểu đồ TON toàn cầu (được kết nối lý tưởng). Nhưng cũng có thể tạo các mạng lớp phủ - các sơ đồ con trong biểu đồ này.
TON: Mạng mở Telegram. Phần 1: Giới thiệu, lớp mạng, ADNL, DHT, mạng lớp phủ

Trong mạng như vậy, sự tương tác chỉ được thực hiện trực tiếp - thông qua các kết nối được hình thành trước giữa các nút tham gia mạng (thông qua các kênh ADNL được mô tả ở trên). Việc hình thành các kết nối như vậy giữa các hàng xóm, việc tự tìm kiếm hàng xóm, là một quá trình tự động nhằm duy trì kết nối của mạng lớp phủ và giảm thiểu độ trễ trong việc trao đổi dữ liệu trong đó.

Ngoài ra, có một cách để nhanh chóng phân phối các bản cập nhật phát sóng lớn trong mạng - chúng được chia thành nhiều phần, bổ sung mã sửa lỗi và tất cả các phần này được gửi từ người tham gia này sang người tham gia khác. Do đó, người tham gia không cần phải lấy đầy đủ tất cả các phần trước khi gửi chúng đi xa hơn trên mạng.

Mạng lớp phủ có thể là công khai hoặc riêng tư. Trở thành thành viên của mạng công cộng không khó - bạn cần tìm cấu trúc TL mô tả nó (nó có thể ở chế độ công khai hoặc có thể truy cập bằng một khóa nhất định trong DHT). Trong trường hợp mạng riêng, cấu trúc này phải được nút biết trước.

Để được tiếp tục

Tôi quyết định chia bài đánh giá TON thành nhiều bài viết. Đây là nơi phần này kết thúc, và ở phần tiếp theo Tôi chuyển sang xem xét cấu trúc của blockchain (chính xác hơn là các blockchain) mà TON sẽ bao gồm.

Nguồn: www.habr.com

Thêm một lời nhận xét