[BITCOIN] Lightning Network toàn thư – hồi 2 : Giao tiếp với lightning network bằng gRPC !!!

Tram Ho

Trong phần này, chúng ta sẽ tìm hiểu cách thiết lập và tương tác với lnd thông qua giao thức gRPC . Trước khi bắt đầu bước này , hãy đảm bảo bạn đã cài đặt btcd và lnd các bạn có thể xem ở đây và ngoài ra là nodenpm nhé .
Tài liệu tham khảo tại đây , đây là web về docs API cho lncli (CLI) có thể tương tác bằng Python và JavaScript giao tiếp với local LND thông qua gRPC. Nó dành cho những người đã hiểu LND các bạn có thể đọc tại đây. Ngoài ra LND cũng cung cấp một phương thức tương tác vs LND khác đó là REST các bạn có thể đọc tại đây

Các ví dụ dưới đây giả định rằng đang chạy LND local và kết nối cổng gRPC ở cổng 10009.
File rpc.proto có thể download tại đây

Init wallet

Mình sẽ sử dụng repo của mình đã setup đầy đủ hết môi trường docker các bạn có thể clone tại https://github.com/vinhyenvodoi98/LightningNetwork-Nodejs

Lướt qua nhanh các bước để start 1 mạng LND nào
bạn chỉ cần chạy lệnh

Sau khi chạy lệnh này xong một chúng sẽ tạo ra :

  • một mạng bitcoin simnet
  • 3 Bitcoin LND node (đồng thời đã kết nối các peer giữa các node)

Chú thích: đặt tên 3 node này là alice, bob, charlie và chúng ta sẽ thao tác với node alice trong bài viết này

Sau đó để có biến môi trường chúng ta cần chạy

cop phần LND_MACAROON và LND_CERT của Alice vào file .env

Setting gRPC

Chúng ta sử dụng đoạn code này để setup connet bằng gRPC

Test thử một chút với hàm getinfo nhỉ :

Get walletbalance

Kiểm tra các peer

Tạo Channel

Bây giờ chúng ta cần khai thác 5 khối để kênh được coi là hợp lệ :

Chú ý việc tạo kênh ở đây là tạo kênh 1 hướng nghĩa là khi kênh đc tạo ra thì sẽ chỉ có ng tạo nạp tiền vào kênh thôi . Đây đc gọi là single-funded channel còn kênh được tạo ra với 2 người đều nạp tiền vào được gọi là mutually funded channels và bên phát triển LND vào những bản cập nhật tiếp theo . Có một số giải pháp được đề xuất các bạn có thể đọc tại đây :
https://bitcoin.stackexchange.com/questions/80792/how-to-create-bidirectional-channels-using-lnd

Thực hiện giao dịch giữa các channel

Tạo một hóa đơn

Chúng ta lấy payment_request rồi gửi thanh toán trong lênh của alice -> bob

Tạo thanh toán

Chúng ta chạy commad đối vs node của bob

payment_request lấy ở bên trên nhé .
sau đó chúng ta sẽ xác nhận

Là hoàn thành rồi

Đóng Channel

Phụ Lục

Bạn có thể tự tạo 1 node bên ngoài hoặc start thêm 1 container nữa rồi connect với các node còn lại rồi tạo channel giống như trên .

Creating the P2P Network

Bây h 2 tài khoản đã có một số Bitcoin trên mạng simnet rồi hãy kết nối 2 tài khoản đấy vs nhau nào

Chúng ta lấy public Key của Alice và biết được port của Alice là 10012

Trong đó identity_pubkey là Public key của mình

Connect peer

sau đó chúng ta có thể check peer

Như vậy chúng ta đã kết nối được với Alice rồi.

tài liệu tham khảo :

https://github.com/RadarTech/ln-api-boilerplate#simnet-suite

https://api.lightning.community/#lnd-grpc-api-reference

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo