Lightning Network

**Lightning Network** là một giao thức "lớp thứ cấp" hoạt động trên một blockchain (thường là Bitcoin). Nó cho phép giao dịch tức thời giữa các node tham gia và là một giải pháp cho bài toán khả năng mở rộng Bitcoin. Nó có tính năng ngang hàng để thực hiện các khoản thanh toán nhỏ sử dụng tiền mã hóa thông qua một mạng lưới các kênh thanh toán hai chiều mà không cần ủy thác tiền hoặc tin tưởng các bên thứ ba. Lightning network cũng giúp cho việc hoán đổi (atomic swap) đơn giản hơn.

Việc sử dụng Lightning Network thông thường bao gồm việc mở một kênh thanh toán bằng cách thực hiện một giao dịch góp vốn vào blockchain có liên quan, tiếp theo là thực hiện một số giao dịch Lightning để cập nhật sự dịch chuyển tiền dự kiến của kênh mà không cần chuyển thông tin tới blockchain chính, cuối cùng là đóng kênh thanh toán bằng cách truyền thông tin về trạng thái quỹ cuối cùng sau tất cả các giao dịch lên blockchain.

Lightning Network phụ thuộc vào công nghệ Segregated Witness (*SegWit*) để có thể hoạt động.

## Thiết kế

Các kênh thanh toán cho phép người tham gia chuyển tiền cho nhau mà không phải thực hiện tất cả các giao dịch công khai trên blockchain. Điều này được thực hiện bằng cách phạt những người đã tham gia mà không hợp tác. Khi mở một kênh, người tham gia phải cam kết một khoản tiền (trong một giao dịch góp vốn trên blockchain). Các đoạn mã mở rộng của Segwit dựa trên thời gian như CheckSequenceVerify và CheckLockTimeVerify giúp điều này được thực thi tự động trên blockchain.

Phiên bản Bitcoin Improvement Proposal CheckSequenceVerify (CSV) ghi rõ cách thực thi hợp đồng Hash Time-Locked trong CSV và được sử dụng cho giao dịch Lightning.

### Giao dịch Cam kết

Nếu Alice và Bob thiết lập một kênh thanh toán, cả hai đều sẽ có sở hữu phiên bản giao dịch cam kết "mới nhất". Giao dịch cam kết phân chia các khoản tiền từ giao dịch góp vốn theo phân bổ chính xác giữa Alice và Bob. Ví dụ: nếu Alice sở hữu 1.0 mBTC và Bob sở hữu 1.0 mBTC trong kênh, các giao dịch cam kết sẽ chia tổng vốn của kênh theo cách đó.

Giao dịch cam kết cho phép nhiều người dùng tham gia vào một giao dịch đơn lẻ (và do đó hoạt động như một thực thể đơn lẻ) sử dụng một hệ thống đa điểm. Việc xác định tắc nghẽn chủ yếu dựa vào các thợ mỏ, do đó, mạng lưới này dựa trên giả định rằng thợ mỏ trung thực sẽ không tổ chức một cuộc tấn công 51%.

Vì các giao dịch cam kết chi tiêu tiền góp vốn nên chúng phải được ký bởi cả hai đối tác.

Các giao dịch cam kết là một cặp giao dịch bất đối xứng. Giao dịch cam kết của Alice bao gồm hai đầu ra: một trong đó trả Bob hoàn toàn, và cái còn lại là một đầu ra bị khóa thời gian (timelocked) và có thể bị truy hồi, mà cuối cùng sẽ trả lại Alice. Đầu ra này có thể bị Bob thu hồi nếu Bob biết khóa thu hồi. Giao dịch cam kết của Bob thì ngược lại: nó trả hoàn toàn cho Alice, nhưng trả phần của Bob dưới một đầu ra bị khóa thời gian, có thể bị truy hồi; nếu Alice biết khóa thu hồi đối với giao dịch cam kết của Bob, cô ấy có thể thu hồi nó.

Ban đầu, Alice giữ giao dịch cam kết A_1, Bob giữ giao dịch cam kết B_1. Alice biết khóa thu hồi cho giao dịch A_1 là R_{A_1}, nhưng Bob không biết. Ngược lại, Bob biết khóa thu hồi cho giao dịch B_1 là  R_{B_1}mà Alice không biết.

Giả sử Alice muốn trả 0,25&nbsp;mBTC cho Bob (trước giao dịch này, Alice và Bob mỗi người có 1&nbsp;mBTC):

# Alice tạo một giao dịch mới của Bob là B_2, mà chuyển 0.75&nbsp;mBTC tới Alice và 1.25&nbsp;mBTC tới Bob.
# Alice ký B_2 và gửi tới Bob.
# Bob nhận B_2, ký và giữ nó.
# Bob tạo một giao dịch mới của Alice là A_2, mà chuyển 0.75&nbsp;mBTC tới Alice và 1.25&nbsp;mBTC tới Bob.
# Bob ký A_2 và gửi tới Alice.
# Alice nhận A_2, ký và giữ nó.
# Alice cung cấp R_{A_1}, hủy A_1; sau đó Alice có thể xóa A_1.
# Bob cung cấp R_{B_1}, hủy B_1; sau đó Bob có thể xóa B_1.

## Phê bình
Một lỗ hổng nghiêm trọng trong thiết kế của Lightning Network là tập trung quỹ vào các "trung tâm" ngoài blockchain. Các giao dịch phải được đối chiếu hai lần trên blockchain (một lần khi mở một kênh và một lần nữa khi đóng một kênh), khiến người dùng tự hỏi tại sao lại cần sử dụng mạng, đặc biệt là khi những blockchain khác đang hoạt động hiện đang tồn tại với thời gian giao dịch nhanh và lệ phí tối thiểu, mà không cần góp vốn vào một kênh thứ cấp ngoài mạng blockchain. Mạng lưới Lightning được tạo thành từ các kênh thanh toán hai chiều giữa hai nút kết hợp tạo hợp đồng thông minh.

Tại bất kỳ thời điểm nào, nếu có một bên rời bỏ kênh, kênh sẽ được thanh toán và đóng lại trên blockchain.

## Lịch sử
Joseph Poon và Thaddeus Dryja đã viết bản cáo bạch về Lightning từ năm 2016. Các đặc tả đã được công bố sau khi công bố whitepaper, và đang được phát triển bởi nhiều bên, bao gồm dự án Elements (c-lightning, phụ thuộc vào Bitcoin Core/bitcoind), Lightning Labs (lnd, phụ thuộc vào btcsuite/btcd hoặc Bitcoin Core/bitcoind), và ACINQ (eclair). Các đặc điểm kỹ thuật đều có sẵn trên Github, và người đóng góp nhiều nhất là Rusty Russell của Blockstream.

Việc phát hành phiên bản alpha của lnd đã được thực hiện vào ngày 10 tháng 1 năm 2017. Phiên bản Release Candidate (RC1) của đặc tả giao thức Lightning được phát hành vào ngày 6 tháng 12 năm 2017.

Vào tháng 12 năm 2017, ba thực thể khác nhau đang làm việc để triển khai phần mềm Lightning, ACINQ, Lightning Labs, Blockstream đã thực hiện một loạt các giao dịch kiểm tra tương thích. Cũng có một phiên bản thực hiện bởi DCI của MIT sử dụng một đặc tả khác. Nhà cung cấp thanh toán Bitrefill công bố thực thi giao dịch Lightning đầu tiền vào tháng 12 năm 2017.

Vào ngày 4 tháng 1 năm 2018. TorGuard trở thành nhà cung cấp VPN đầu tiên chấp nhận thanh toán qua mạng chính của Lightning, chấp nhập mọi rủi ro mất tiền khi gửi thanh toán qua Lightning.

Vào tháng 1 năm 2018, Blockstream đã tung ra một hệ thống xử lý thanh toán cho các nhà bán lẻ trực tuyến gọi là "Lightning Charge" và lưu ý rằng Lightning đã hoạt động trên mainnet với 60 nút hoạt động kể từ ngày 18 tháng 1 năm 2018 và nên được coi là "đang thử nghiệm".

Vào ngày 15 tháng 3 năm 2018, Giám đốc điều hành Lightning Labs Elizabeth Stark đã công bố bản phát hành ban đầu 0,4-beta cho các nhà phát triển với mục đích làm cho nó có sẵn cho mục đích thử nghiệm trên mạng bitcoin chính với sự hỗ trợ Litecoin.

Vào tháng 3 năm 2018, CTO của Stellar Jed McCaleb tuyên bố rằng Stellar Network sẽ thực hiện một giao thức lấy cảm hứng từ Lightning Network.

Khái niệm Lightning Network đã được xác nhận bởi doanh nhân Jack Dorsey vào tháng 3 năm 2018.

Từ tháng 4 năm 2018 đến tháng 8 năm 2018, Mạng lưới Bitcoin Lightning có tốc độ tăng trưởng hàng tháng khoảng 15%. Số lượng nút tăng từ 1.500 đến 3.000 và số lượng kênh tăng từ 4.000 lên 11.000.

## Tấn công DDOS năm 2018
20 tháng 3 năm 2018, hệ thống Lightning Network bị tấn công từ chối dịch vụ phân tán (DDoS) khiến 200 node bị rớt mạng, giảm tổng số node hoạt động từ 1,050 xuống 870. Kẻ tấn công đã mở thật nhiều kết nối tới các node để những kết nối bình thường không thể được tiếp tục sinh ra. Một tháng trước đó, lập trình viên Bitcoin Peter Tod đã phát biểu rằng giao thức Ligntning có thể dễ dàng "được chứng minh là dễ bị tổn hại trước kiểu tấn công từ chối dịch vụ trong tình trạng hiện nay, có thể bị ảnh hưởng tới cả mạng ngang hàng và tầng blockchain của dự án".

## Implementations
Các tiêu chuẩn công nghệ Lightning (BOLT - Basis of Lightning Technology) đã được soạn thảo từ năm 2016. Từ đó tới nay, đã có vài phiên bản phần mềm thực thi theo tiêu chuẩn này:
* Phiên bản của MIT Digital Currency Initiative
* Phiên bản C-lightning của Blockstream implementation được viết bằng C
* Phiên bản Eclair của ACINQ viết bằng Scala
*  Phiên bản lnd của Lightning labs viết bằng Go

## Tham khảo

## Liên kết ngoài
* http://dev.lightning.community/
* https://lists.linuxfoundation.org/pipermail/lightning-dev/ on the Linux Foundation servers
* What is the Lightning Network and how can it help Bitcoin scale?