Bước tới nội dung

Lightning Network

Bách khoa toàn thư mở Wikipedia
Lightning Network
Thiết kế bởiJoseph Poon, Thaddeus Dryja
Phát triển bởiDự Án Elements (Blockstream)
Lightning Labs
ACINQ
MIT DCI
Bản xem thử
1.0 RC / 6 tháng 12 năm 2017; 6 năm trước (2017-12-06)
Viết bằngC, Go, Scala
Thể loạiTiền mã hóa
Websitelightning.network(paper website)
Trạng tháiĐang phát triển

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[1] (SegWit) để có thể hoạt động.[2]

Thiết kế

[sửa | sửa mã nguồn]

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ư CheckSequenceVerifyCheckLockTimeVerify giúp điều này được thực thi tự động trên blockchain.

Giả sử tồn tại một mạng lưới lớn các kênh thanh toán trên blockchain Bitcoin, và tất cả người dùng Bitcoin đang tham gia vào mạng lưới này bằng cách mở ít nhất một kênh trên Bitcoin blockchain, thì chúng ta có thể tạo ra một số lượng gần vô hạn các giao dịch bên trong mạng này. Các giao dịch duy nhất cần phải ghi lại vào Bitcoin blockchain sớm là với các đối tác trong kênh mà không hợp tác.

— Lightning Paper[3]

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.[4]

Giao dịch Cam kết

[sửa | sửa mã nguồn]
Tổng quan về Lightning Network

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%.[5]

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 , Bob giữ giao dịch cam kết . Alice biết khóa thu hồi cho giao dịch , nhưng Bob không biết. Ngược lại, Bob biết khóa thu hồi cho giao dịch mà Alice không biết.

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

  1. Alice tạo một giao dịch mới của Bob là , mà chuyển 0.75 mBTC tới Alice và 1.25 mBTC tới Bob.
  2. Alice ký và gửi tới Bob.
  3. Bob nhận , ký và giữ nó.
  4. Bob tạo một giao dịch mới của Alice là , mà chuyển 0.75 mBTC tới Alice và 1.25 mBTC tới Bob.
  5. Bob ký và gửi tới Alice.
  6. Alice nhận , ký và giữ nó.
  7. Alice cung cấp , hủy ; sau đó Alice có thể xóa .
  8. Bob cung cấp , hủy ; sau đó Bob có thể xóa .

Phê bình

[sửa | sửa mã nguồn]

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.[6]

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.[7]

Lịch sử

[sửa | sửa mã nguồn]

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.[2]

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.[8] 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[9]. 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.[10]

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[11], chấp nhập mọi rủi ro mất tiền khi gửi thanh toán qua Lightning.[12]

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".[13][14]

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.[15]

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.[16]

Tấn công DDOS năm 2018

[sửa | sửa mã nguồn]

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".[17]

Implementations

[sửa | sửa mã nguồn]

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:

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Does Lightning require Segregated Witness? in Rusty Russell's Lightning Things To Know
  2. ^ a b “lightning-rfc: Lightning Network Specifications”. ngày 25 tháng 9 năm 2017 – qua GitHub.
  3. ^ https://lightning.network/lightning-network-paper.pdf
  4. ^ “bips: Bitcoin Improvement Proposals”. ngày 25 tháng 9 năm 2017 – qua GitHub.
  5. ^ Poon, Joseph (tháng 11 năm 2015). “The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments” (PDF). We Use Coins.
  6. ^ “Lightning Network May Not Solve Bitcoin's Scaling 'Trilemma'. Article. CoinDesk. ngày 20 tháng 1 năm 2018.
  7. ^ “Understanding the Lightning Network, Part 3: Completing the Puzzle and Closing the Channel”. Article. BitcoinMagazine. ngày 17 tháng 6 năm 2016.
  8. ^ “Alpha Release of the Lightning Network Daemon”. Lightning Network Community Blog. Lightning Labs. ngày 10 tháng 1 năm 2017. Truy cập ngày 19 tháng 9 năm 2017.
  9. ^ “BITCOIN LIGHTNING NETWORK IS COMING: TEST A TRANSACTION NOW”. Bitcoinist. ngày 20 tháng 12 năm 2017. Truy cập ngày 21 tháng 12 năm 2017.
  10. ^ “Payment Provider Bitrefill Runs Successful Lightning Transaction Test”. Coindesk. ngày 29 tháng 12 năm 2017. Truy cập ngày 4 tháng 1 năm 2018.
  11. ^ “TorGuard VPN announcing mainnet Lightning network support”.
  12. ^ “TorGuard VPN officially announces coverage of potential losses”.
  13. ^ “Blockstream Launches Micropayments Processing System for Bitcoin Apps”. Coindesk. ngày 17 tháng 1 năm 2018. Truy cập ngày 21 tháng 1 năm 2018.
  14. ^ 'UNFAIRLY CHEAP' LIGHTNING NETWORK MAINNET HITS 40 NODES, 60 CHANNELS”. Bitcoinist. ngày 18 tháng 1 năm 2018. Truy cập ngày 21 tháng 1 năm 2018.
  15. ^ “Bitcoin price: What is Bitcoin lightning network - how could it cause CHAOS with BTC price”.
  16. ^ “Statistics”.
  17. ^ “Peter Tod cảnh báo về nguy cơ bảo mật của Lightning Network”.

Liên kết ngoài

[sửa | sửa mã nguồn]