Sét trong chai

Bắt đầu

Trong phần hai của loạt mạng sét của chúng tôi, chúng tôi sẽ trình bày chi tiết về trải nghiệm của chúng tôi với mạng sét và một số cạm bẫy mà chúng tôi đã phát hiện ra trên đường đi. Trong phần thứ ba của loạt bài, chúng tôi sẽ bắt đầu hướng dẫn về cách chạy các nút cục bộ của riêng bạn, nút Lightning từ điện thoại Android và tạo kênh thanh toán giữa nút di động và nút cục bộ.

Tổng quan

Chúng tôi bắt tay vào nhiệm vụ thiết lập nút bitcoin và nút sét trong đám mây AWS, nút sét chạy từ điện thoại Android và cuối cùng thiết lập kênh thanh toán giữa hai nút sét. Để bắt đầu, chúng tôi muốn mọi thứ hoạt động cục bộ trên testnet Bitcoin trước khi thử để các nút chạy từ đám mây. Đối với phần Android, chúng tôi đã sử dụng triển khai mạng sét của ACINQ. Chúng tôi muốn gửi lời cảm ơn lớn đến họ vì đã mở nguồn cho dự án của họ và cho nhóm LND vì đã cung cấp sự hỗ trợ vô tận trên kênh chùng của họ!

Toolchain được sử dụng

  • Android Java với triển khai Scala của Lightning Network
  • Việc triển khai LND của Mạng Lightning
  • btcsuite bổ sung giao thức bitcoin
  • Docker để chứa các nút của chúng tôi
  • phục vụ cho việc đưa nút sét địa phương của tôi ra thế giới

Chúng tôi dự định sử dụng AWS cho các khả năng của đám mây, nhưng chúng tôi gặp phải nhiều vấn đề hơn là ngăn cản chúng tôi đạt đến điểm đó trong quá trình phát triển.

Bắt nó chạy cục bộ

Nút địa phương

Bắt các nút Bitcoin và Lightning hoạt động không phải là quá phức tạp và chủ yếu liên quan đến việc cài đặt và tải xuống tất cả các phụ thuộc đúng của Bitcoin. Vì chúng tôi đang sử dụng testnet, chỉ mất khoảng 4 giờ để tải xuống. Bên cạnh đó, điều quan trọng là phải đảm bảo rằng chúng tôi có các cờ và cấu hình chính xác cho các nút.

Android

Bắt Lightning Network chạy trên điện thoại Android tốn nhiều công sức hơn. Trước hết, chúng tôi phải xem qua ví điện tử eclair ACINQ để hiểu cách sử dụng triển khai Scala của họ đối với Lightning Network. Thoạt nhìn có vẻ khá phức tạp, nhưng từng mảnh chúng tôi đã phá vỡ nó và cô lập các thành phần chúng tôi cần cho mã tấm nồi hơi cơ bản.

Cài đặt bổ sung

Bước cuối cùng cần thiết để tạo thuận lợi cho việc giao tiếp giữa các nút cục bộ của tôi và thế giới bên ngoài là hiển thị chúng thông qua máy chủ SSH để chuyển tiếp cổng. Chúng tôi đã sử dụng phục vụ cho việc này, nhưng ngrok cũng hoạt động tốt.

Những thách thức ban đầu

Kiểm tra là khía cạnh tẻ nhạt nhất về việc đưa các nút lên và chạy và tạo kênh thanh toán. Vì chúng tôi đang sử dụng testnet, chúng tôi vẫn phải chờ 6 xác nhận từ các thợ mỏ và họ có thể mất tới 30 phút để hoàn thành. Bất cứ khi nào chúng tôi sẽ tạo một giao dịch tài trợ cho các giao dịch ngoài chuỗi, hoặc đóng và giải quyết một kênh thanh toán, chúng tôi đã chờ đợi trong nửa giờ.

Một bất tiện khác mà chúng tôi gặp phải là chúng tôi không thể tài trợ cho kênh thanh toán sau khi được mở. Về cơ bản, số tiền bạn đã mở kênh thanh toán là tất cả số tiền bạn phải chi tiêu trước khi nhà nước phải được phát trên chuỗi chính. Trái ngược với các kênh thanh toán mà chúng tôi đã triển khai trên mạng Ethereum, các kênh thanh toán trên Mạng Lightning không có địa chỉ hoặc ít nhất là các địa chỉ được hiển thị có thể có tiền được gửi đến chúng.

Không thể đoán trước chung về mạng là một chủ đề nổi bật trong suốt nghiên cứu của chúng tôi về Mạng Lightning. Một số lần chúng tôi sẽ cố gắng mở kênh thanh toán bằng một nút ngẫu nhiên mà chúng tôi đã kết nối và chúng tôi sẽ gặp phải lỗi sau:

Lỗi là cho chúng tôi biết rằng chúng tôi không có đủ satoshi trong ví của mình để tài trợ cho giao dịch mở .¹ Chúng tôi đã cố gắng tài trợ cho kênh với 20000 satoshi, nếu phí là 485281 satoshis, giống như trong lỗi tổng số 505281 satoshi. Trong ví của chúng tôi, chúng tôi có 41173093, quá đủ để tài trợ cho giao dịch.

Cuối cùng, khi bạn thực hiện các giao dịch ngoài chuỗi trên Mạng Lightning, bạn vẫn phải trả phí nếu giao dịch của bạn phải đi qua nhiều nút! Những người tạo ra Lightning Network ước tính rằng mức phí phải là 1 satoshi cho mỗi nút hoặc nhỏ hơn. Khoản phí này là danh nghĩa, nhưng dù sao bạn vẫn phải trả một khoản phí cho các nút bạn đi qua, không giống như các kênh thanh toán Ethereum nơi không có phí nào cả.

  1. Satoshi là mệnh giá thấp nhất của Bitcoin. Giá trị của nó là một trăm triệu Bitcoin. Đơn giản chỉ cần đặt, 1BTC = 10⁸ satoshi.

Nút trong Mây

Dockerizing nút của chúng tôi

Docker là phần mềm cho phép bạn chứa các máy chủ của bạn và tạo hình ảnh từ đó nhiều máy chủ của bạn có thể được khởi tạo từ đó. Nó thường được sử dụng trong giao diện với AWS để máy chủ của bạn được đóng gói và dễ dàng quay vòng.

Lướt qua github LND, chúng tôi đã tìm thấy hình ảnh Docker và bắt đầu các tập lệnh đã được nhóm LND xây dựng, vì vậy chúng tôi quyết định thử chúng. Chúng tôi nhanh chóng gặp phải nhiều lỗi trong khi cố gắng xây dựng hình ảnh và chúng tôi cũng nhận thấy rằng hình ảnh được kết nối thông qua các liên kết Docker. Việc xây dựng các hình ảnh đã đủ đơn giản, bây giờ tất cả những gì chúng ta phải làm là chia sẻ chứng chỉ rpc bằng cách sử dụng một khối lượng giữa nút Bitcoin và nút Lightning.

Mặc dù chia sẻ chứng chỉ rpc giữa các nút và xác minh rằng chúng có mặt trong cả hai container, nút Lightning không thể tạo kết nối với nút Bitcoin. Chúng tôi đảm bảo kiểm tra kỹ xem tất cả các cổng bên phải có bị lộ trên cả hai container hay không, tuy nhiên chúng tôi vẫn không gặp may mắn với nó.

  1. Liên kết Docker là một cách liên kết các container thông qua một kênh an toàn để cho phép giao tiếp giữa chúng. Khi sử dụng mạng Docker thay thế, Docker tạo ra một mạng ảo nơi các container có địa chỉ ip mạng con riêng.

Túm cái vạy lại là

Trải nghiệm của chúng tôi với Lightning Network rất thú vị, vui vẻ và nhiều thông tin. Chúng tôi đã học được rất nhiều về giao thức Lightning và tiềm năng mà công nghệ nắm giữ. Thật không may, công nghệ vẫn còn quá không ổn định và kém phát triển để được sử dụng trong một giải pháp mức sản xuất có thể mở rộng. Chúng tôi chắc chắn sẽ giữ cho đôi mắt của chúng tôi lột để xem công nghệ đi đâu.

Cảm ơn bạn đã đọc blog của chúng tôi, chúng tôi hy vọng bạn đã học được một chút từ kinh nghiệm của chúng tôi với Lightning Network. Hãy nhớ theo dõi Phần 3 nơi chúng tôi chỉ cho bạn cách quay các nút của riêng bạn, một nút trên điện thoại Android và tạo kênh thanh toán giữa chúng!