Học lập trình phát triển ứng dụng trên mạng ngang hàng. Tut1 - Giới thiệu và cài môi trường

Thảo luận trong 'ACM/Programming' bắt đầu bởi Testthuthoi, 16/11/19, 04:11 AM.

  1. Testthuthoi

    Testthuthoi Moderator Thành viên BQT

    Tham gia: 26/06/18, 10:06 AM
    Bài viết: 26
    Đã được thích: 19
    Điểm thành tích:
    3
    Chào các bác, em là testthuthoi đây! Các bác bấm vào đây là đều có ý định tìm hiểu về mạng ngang hàng, muốn phát triển ứng dụng trên mạng ngang hàng, tìm hiểu thêm về kiến thức hoặc có nhiều bác bấm vào xem có gì vui thì tôi nói luôn nội dung chính từ đầu để các bác đỡ bị spam nhé!

    Mục tiêu của loạt bài viết này em và các bác sẽ cùng nhau hành tẩu, chém gió, giao lưu về lĩnh vực lập trình phát triển các ứng dụng trên mạng ngang hàng.

    Bác nào mạnh về nó thì mạnh dạn chỉ giáo để rút kinh nghiệm.

    Từ đâu mà em lại nghiện ngập và đi tìm hiểu: Chuyện là thế này mấy hôm đi nghe các chuyên gia chém về blockchain em cứ nghe đến mạng ngang hàng và điểm mạnh của nó. Em liền lục lọi chí nhớ thì cũng có học qua lúc đại học về mạng ngang hàng nhưng cũng chỉ lý thuyết thôi cũng chẳng đọng lại gì thế là toang. Em đành phải ngồi tìm hiểu và ghi chép lại bản tính thích vọc nên muốn viết một chương trình chạy thử xem nó khác bọt gì không? dạng như sờ nắn tí. Thôi dẫn dắt từng đó đủ rồi vào nội dung chính bài này em chia thành 2 phần. Phần 1 là nhứng kiến thức cơ bản và những ứng dụng của mạng ngang hàng, phần 2 là cài môi trường để phục vụ cho những bài sau.

    Phần 1. Mạng ngang hàng là gì? Tại sao Blockchain lại sử dụng nó?

    Mạng ngang hàng là gì?

    Trong khoa học máy tính, mạng ngang hàng, hay mạng đồng đẳng (P2P | peer-to-peer) bao gồm một nhóm các thiết bị cùng lưu trữ và chia sẻ tập tin. Mỗi người tham gia (nút) hoạt động như một đồng đẳng riêng lẻ. Thông thường, tất cả các nút có sức mạnh như nhau và thực hiện các nhiệm vụ giống nhau.

    Tản mạn nó còn có cả khái niệm trong kinh tế nữa cho vay ngang hàng các bác gõ youtube đầy nhé! Trong công nghệ tài chính, thuật ngữ ngang hàng thường dùng để mô tả quá trình trao đổi tiền mã hóa hoặc tài sản kỹ thuật số thông qua mạng phân tán. Nền tảng P2P cho phép người mua và người bán thực hiện giao dịch mà không cần đến trung gian. Trong một số trường hợp, các trang web cũng có thể cung cấp một môi trường P2P để kết nối người cho vay với người vay.

    Các bác xem ở đây cho sinh động :


    Kiến trúc P2P có thể phù hợp với nhiều trường hợp sử dụng khác nhau, nhưng nó trở nên đặc biệt phổ biến vào những năm 1990 khi các chương trình chia sẻ tệp đầu tiên được tạo. Ngày nay, mạng P2P là yếu tố cốt lõi của hầu hết các loại tiền mã hóa, chiếm một phần lớn trong ngành công nghiệp blockchain. Tuy nhiên, chúng cũng được khai thác trong các ứng dụng điện toán phân tán khác, bao gồm các công cụ tìm kiếm web, nền tảng phát trực tuyến, thị trường trực tuyến và giao thức web Hệ thống tệp tin liên hành tinh (IPFS).

    Mạng ngang hàng hoạt động như thế nào?

    Về bản chất, hệ thống ngang hàng được duy trì bởi một mạng lưới người dùng phân tán. Mạng này thường không có quản trị viên trung tâm hoặc máy chủ vì mỗi nút lưu trữ một bản sao của các tệp và mỗi nút đóng vai trò như một máy khách và máy chủ cho các nút khác. Do đó, mỗi nút có thể tải tệp về từ các nút khác hoặc tải lên tệp cho các nút khác. Đây là điểm khác biệt giữa các mạng ngang hàng với các hệ thống máy chủ-máy khách truyền thống hơn, trong đó các thiết bị máy khách tải xuống các tệp từ một máy chủ tập trung.

    Trên mạng ngang hàng, các thiết bị được kết nối chia sẻ các tệp được lưu trữ trên ổ cứng của chúng. Sử dụng các ứng dụng phần mềm được thiết kế để làm trung gian cho việc chia sẻ dữ liệu, người dùng có thể truy vấn các thiết bị khác trên mạng để tìm và tải xuống các tệp. Khi người dùng đã tải xuống một tệp, họ có thể đóng vai trò là nguồn của tệp đó.

    Nói cách khác, khi một nút hoạt động như một máy khách, họ tải xuống các tệp từ các nút khác trên mạng. Nhưng khi họ hoạt động như một máy chủ, họ là nguồn mà các nút khác có thể tải xuống các tệp. Tuy nhiên, trên thực tế, các nút có thể thực hiện hai chức năng cùng một lúc (ví dụ: tải xuống tệp A và tải lên tệp B).

    Vì mỗi nút đều có chức năng lưu trữ, truyền và nhận tệp, mạng ngang hàng có xu hướng hoạt động nhanh và hiệu quả hơn khi cộng đồng người dùng của họ phát triển lớn hơn. Ngoài ra, kiến trúc phân tán của họ làm cho các hệ thống P2P có khả năng chống lại các cuộc tấn công mạng rất cao. Không giống như các mô hình truyền thống, mạng P2P không có sự hư hỏng tại một điểm.

    Phân tán so với phi tập trung

    Mặc dù kiến trúc P2P có tính chất phân tán, nhưng điều quan trọng cần lưu ý là có nhiều mức độ phân tán khác nhau. Vì vậy, không phải tất cả các mạng P2P đều phi tập trung.

    Trên thực tế, nhiều hệ thống dựa vào một hệ thống trung tâm để điều hành hoạt động của mạng, khiến chúng phần nào đó mang tính tập trung. Chẳng hạn, một số hệ thống chia sẻ tệp ngang hàng cho phép người dùng tìm kiếm và tải xuống tệp từ những người dùng khác, nhưng người dùng đó không thể tham gia vào các quy trình khác, như quản lý truy vấn tìm kiếm.

    Ngoài ra, các mạng nhỏ được kiểm soát bởi một cộng đồng người dùng nhỏ với các mục tiêu chung cũng có thể được cho là có mức độ tập trung cao hơn, mặc dù không có một cơ sở hạ tầng mạng tập trung.

    Vai trò của P2P trong blockchain

    Trong giai đoạn đầu của Bitcoin, Satoshi Nakamoto định nghĩa nó là một “Hệ thống tiền mặt điện tử ngang hàng” Bitcoin ban đầu được tạo ra như một dạng tiền kỹ thuật số. Nó có thể được chuyển từ người dùng này sang người dùng khác thông qua mạng ngang hàng, mạng này quản lý một cuốn sổ cái phân tán được gọi là chuỗi khối (blockchain).

    Trong bối cảnh này, chính kiến trúc ngang hàng, một công nghệ trung tâm của blockchain cho phép người dùng có thể giao dịch Bitcoin và các loại tiền mã hóa khác trên toàn thế giới mà không cần đến trung gian cũng như bất kỳ máy chủ trung tâm nào. Ngoài ra, bất kỳ ai cũng có thể trở thành một nút trên mạng Bitcoin nếu họ muốn tham gia vào quá trình xác minh và xác thực các khối.

    Vì vậy, không có ngân hàng nào để xử lý hoặc ghi lại các giao dịch trên mạng Bitcoin. Thay vào đó, blockchain hoạt động như một sổ cái kỹ thuật số ghi lại công khai tất cả hoạt động. Về cơ bản, mỗi nút giữ một bản sao của blockchain và so sánh nó với các nút khác để đảm bảo dữ liệu chính xác. Mạng nhanh chóng từ chối mọi hoạt động độc hại hoặc không chính xác.

    Trong bối cảnh của các blockchain của tiền mã hóa, các nút có thể đảm nhận các vai trò khác nhau. Ví dụ, các nút đầy đủ là các nút giúp duy trì tính bảo mật cho mạng bằng cách xác minh các giao dịch theo các quy tắc đồng thuận của hệ thống.

    Mỗi nút đầy đủ duy trì một bản sao hoàn chỉnh, cập nhật của blockchain - cho phép họ tham gia vào công việc chung để xác minh trạng thái thực của sổ cái phân tán. Tuy nhiên, điều đáng chú ý là không phải tất cả các nút xác thực đầy đủ đều là thợ đào.

    Ưu điểm của mạng ngang hàng

    Kiến trúc ngang hàng của blockchain mang lại nhiều lợi ích. Lợi ích quan trọng nhất là các mạng ngang hàng có tính bảo mật cao hơn so với kiến trúc máy khách-máy chủ truyền thống. Việc phân phối các chuỗi khối trên một số lượng lớn các nút làm cho chúng hầu như có khả năng chống lại các cuộc tấn công Từ chối Dịch vụ (DoS) đã được sử dụng để tấn công nhiều hệ thống.

    Tương tự như vậy, vì phần lớn các nút phải đạt được sự đồng thuận trước khi dữ liệu mới được thêm vào blockchain, nên kẻ tấn công gần như không thể thay đổi dữ liệu. Điều này đặc biệt đúng đối với các mạng lớn như mạng Bitcoin. Các blockchain nhỏ hơn dễ bị tấn công hơn vì một người hoặc một nhóm có thể giành được kiểm soát đối với phần lớn các nút (điều này được gọi là một cuộc tấn công 51%).

    Do đó, mạng ngang hàng phân tán, khi được kết hợp với yêu cầu về sự đồng thuận của đa số người tham gia, giúp các blockchain có khả năng cao chống lại các hoạt động gây hại. Chính mô hình P2P là một trong những yếu tố giúp cho Bitcoin (và các blockchain khác) có thể đạt được cái gọi là khả năng chịu lỗi Byzantine.

    Ngoài khả năng bảo mật, việc sử dụng kiến trúc P2P trong các blockchain tiền mã hóa cũng giúp chúng chống lại sự kiểm duyệt của các cơ quan trung ương. Khác với các tài khoản ngân hàng tiêu chuẩn, chính phủ không thể đóng băng hoặc rút sạch các ví tiền mã hóa. Ngoài ra, kiến trúc P2P cũng giúp các blockchain chống lại sự kiểm duyệt của các nền tảng nội dung và nền tảng xử lý thanh toán tư nhân. Một số nhà sáng tạo nội dung và các thương gia trực tuyến đã chấp nhận phương thức thanh toán qua tiền mã hóa như một cách để tránh bị chặn thanh toán bởi các bên thứ ba.

    Hạn chế của mạng ngang hàng

    Mặc dù có nhiều ưu điểm, việc sử dụng mạng P2P trên blockchain cũng có những hạn chế nhất định.

    Vì sổ cái phân tán phải được cập nhật trên mỗi nút thay vì trên máy chủ trung tâm, nên việc thêm giao dịch vào blockchain đòi hỏi một lượng lớn sức mạnh tính toán. Trong khi điều này giúp tăng khả năng bảo mật, nó làm giảm đáng kể hiệu suất hoạt động và là một trong những trở ngại chính đến khả năng mở rộng và ứng dụng mạng rộng rãi.

    Hơn nữa, bản chất phân tán của mạng P2P khiến chúng tương đối khó kiểm soát và điều tiết, không chỉ trong phân khúc blockchain. Một số ứng dụng và công ty P2P đã tham gia vào các hoạt động bất hợp pháp và vi phạm bản quyền.

    Phần 2 Cài đặt môi trường.

    Nãy giờ toàn là kiến thức và em cũng chưa đề cập đến chúng ta sẽ dùng gì để cùng nhau tìm hiểu phát triển ứng dụng trên P2P. Nếu các bác đọc kĩ sẽ thấy có IPFS (InterPlanetary File System) nguyên văn của nó trong wikipedia: là một giao thức phân phối mã nguồn mở của giao thức hypermedia hoạt động dựa trên nội dung và danh tính. Cụ thể hơn, nó sẽ phân phối dữ liệu theo hình thức P2P, hay còn gọi là mạng ngang hàng (mạng đồng đẳng). Em chỉ nhắc đến nó thôi chứ chúng ta cũng không dùng nó đâu vì IPFS nó quá to và nó sinh ra cũng có sứ mệnh riêng (em sẽ không nói rõ IPFS ở đây vì nó sẽ rất dài nếu các bác yêu cầu em sẽ viết). Vậy chúng ta không dùng IPFS em lại nói đến nó làm gì? Thực ra việc dùng dao mổ trâu để giết gà là điều tối kị vì thế em đặt mục tiêu cần một cái thư viện vừa đam bảo kiểm soát được và thoải mái tùy biến cho các dự án của chúng ta. Nó chính là https://libp2p.io/ .

    Libp2p là gì?

    Libp2p bắt đầu như một phần của dự án IPFS và vẫn là một thành phần thiết yếu của IPFS. Do đó, libp2p kết hợp tốt với các khái niệm trừu tượng và công cụ được cung cấp bởi các dự án khác trong IPFS. Điểm nổi bật là libp2p là một hệ thống mô-đun gồm các giao thức, thông số kỹ thuật và thư viện cho phép phát triển các ứng dụng mạng ngang hàng.

    Vì thế các bác cứ yên tâm xài thư viện này đi, được dự án to chống lưng, em cũng check cả giấy phép trên github rồi sử dụng để thương mại hóa được. (MIT)

    upload_2019-11-16_4-26-44.png

    Theo trang chủ, chúng ta có các ngôn ngữ được hỗ trợ như: JS,GO,Rust,Python,Java nhưng theo khuyến cáo thì nên sử dụng JS,GO,Rust, vì cơ bản thư viện nó đã hoàn thiện vì thế nên ở đây em sử dụng ngôn ngữ NodeJS.

    Các bác cần chuẩn bị :
    - Hệ điều hành Ubuntu
    - Cài sẵn Node.JS lên Ubuntu
    - Cài git lên Ubuntu
    - https://docs.libp2p.io/tutorials/getting-started/go/ các bác có thể tự làm trước hôm nay đến đây thôi, tiêu hóa hết đống kiến thức này là ổn rồi. Hẹn gặp lại các bác ở bài tiếp theo.
     
    Last edited by a moderator: 18/11/19, 11:11 AM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    whf thích bài này.
  1. krone
  2. krone
  3. Sugi_b3o
  4. krone
  5. krone