Một bài viết để hiểu cách thức hoạt động của Lightning Network
BFTF技术社区联盟
2018-08-23 01:16
本文约4558字,阅读全文需要约18分钟
Về cơ bản, Lightning Network là một phương thức để người dùng bitcoin trao đổi giá trị tiền tệ từ chuỗi khối bitcoin.

Bài viết này đến từ Liên minh cộng đồng công nghệ BFTF, tác giả: Liên minh cộng đồng công nghệ BFTF, được biên soạn bởi: Fangyuan, được xuất bản với sự cho phép.

Giới thiệu: Mạng Lightning là một sơ đồ cải tiến cho mạng Bitcoin được đề xuất để giải quyết vấn đề tắc nghẽn của mạng Bitcoin. Bản chất của Lightning Network là sử dụng mạng Bitcoin làm mạng thanh toán. Sau khi một kênh được thiết lập giữa hai nút, tất cả các giao dịch có thể được hoàn thành ngoài chuỗi. Tác giả của bài viết này giới thiệu toàn diện về Lightning Network, rất phù hợp cho những người thực hành blockchain đọc.

Nếu bạn đã từng sử dụng Bitcoin, có lẽ bạn đã từng trải qua thời gian giao dịch (xác nhận) lên đến một giờ (hoặc trường hợp xấu nhất lên đến một ngày). Vào những thời điểm có khối lượng giao dịch cao, mạng Bitcoin đã từng tồn đọng hơn 150.000 giao dịch chưa được xác minh và hiện tại nó đã trở thành tiêu chuẩn. Sự kết hợp giữa thời gian xác nhận giao dịch dài và phí cao khiến việc sử dụng Bitcoin trong các tình huống thanh toán vi mô trở nên khó khăn (ví dụ: nếu bạn chi 30 nhân dân tệ cho một bữa ăn vào buổi trưa, thì phí mà các thợ mỏ yêu cầu để đóng gói giao dịch có thể cao hơn nhiều so với mức này con số).


Lightning Network có thể giúp chúng tôi giải quyết vấn đề này. Lightning Network là sản phẩm trí tuệ của Thaddeus Dryja và Joseph Poon, người đã gửi một bài báo trắng về Lightning Network vào năm 2015. Nếu bạn không thích đọc các bài báo dài, tôi sẽ giới thiệu sơ qua về các nguyên tắc và quy trình của Lightning Network trong bài viết này.

Lightning Network là gì?

Về cơ bản, Lightning Network là một phương thức để người dùng bitcoin trao đổi giá trị tiền tệ từ chuỗi khối bitcoin. Điều này đạt được thông qua một số tập lệnh phức tạp tương tác với chuỗi khối Bitcoin và nó cho phép thanh toán nhanh chóng cho các giao dịch nhỏ (và phí giao dịch thấp). Lightning Network là một công cụ cần thiết để cải thiện khả năng mở rộng của chuỗi khối Bitcoin nếu Bitcoin trở thành một phương thức thanh toán khả thi trong tương lai. Thực tiễn này có thể được mở rộng cho các giao dịch xuyên chuỗi. Các giao dịch hoán đổi giá trị như vậy tương tự nhau trong thực tế, ngoại trừ chúng xảy ra giữa hai loại tiền tệ/chuỗi khối khác nhau. Chúng tôi thảo luận chi tiết hơn về hoán đổi nguyên tử tại đây.

Đến đây là kết thúc phần giới thiệu về vai trò và giới thiệu về Lightning Network, tiếp theo chúng ta sẽ bước vào giai đoạn giới thiệu chi tiết về Lightning Network.

Lightning Network hoạt động như thế nào?

Mở kênh thanh toán hai chiều

Nếu muốn sử dụng Lightning Network, bạn cần thiết lập một kênh thanh toán. Các kênh thanh toán là các đường dẫn giao dịch để chuyển giá trị qua Lightning Network. Để mở một kênh thanh toán, một giao dịch mới cần được tạo trên chuỗi khối Bitcoin.

"Nhưng tôi tưởng bạn đã nói tất cả những điều này xảy ra ngoài chuỗi?" Đừng lo lắng, Lightning Network là ngoài chuỗi, nhưng trước tiên bạn phải cho mạng Bitcoin biết rằng bạn đang thực hiện giao dịch. Khi điều này được thực hiện, cả hai bên tham gia giao dịch sẽ giữ lại bảng cân đối kế toán trên kênh. Mỗi khi tiền được di chuyển, giao dịch và số dư tài khoản được cập nhật sẽ được ghi vào sổ cái này và sau khi bạn thực hiện thanh toán trên kênh, kết quả cuối cùng có thể được phát lên chuỗi khối.

ví đa chữ ký

Vì vậy, nếu các kênh thanh toán xảy ra ngoài chuỗi, tiền được quản lý ở đâu/như thế nào và chúng được ghi lại như thế nào trên chuỗi khối Bitcoin? Để sử dụng kênh thanh toán, cả hai bên cần gửi tiền của họ đến một địa chỉ ví đa chữ ký.

Giả sử Molly và Steve đặt cược vào kết quả của trận Super Bowl. Mỗi người họ đặt cược 1 BTC và muốn đảm bảo bên kia nắm giữ giao dịch của mình, vì vậy họ gửi tiền vào ví nhiều chữ ký. Ví đa chữ ký có chức năng giống như một két an toàn ký gửi và một bộ khóa riêng cho giao dịch có thể cho phép một trong hai bên truy cập tiền. Tiền sẽ vẫn bị khóa trong ví cho đến khi:


  • Cả Molly và Steve đều ký thỏa thuận cuối cùng

  • một bên hoàn thành giao dịch cuối cùng, hoặc

  • Đã đạt đến giới hạn thời gian và giao dịch được gửi tự động. Khi điều này xảy ra, tiền sẽ được chuyển trở lại ví cá nhân của cả hai bên.


Để thiết lập thành công ví đa chữ ký, cả Molly và Steve đều tạo ra một giá trị (về cơ bản là khóa mở khóa giao dịch), sau đó họ sử dụng giá trị này để tạo hàm băm và gửi cho nhau. Nắm vững những điều này là rất quan trọng để hiểu cách thức hoạt động của các giao dịch cam kết sau này.

Sau khi Molly và Steve đã gửi tiền tương ứng của họ vào ví đa chữ ký, họ có thể tạo cái được gọi là kênh thanh toán và phát nó lên chuỗi khối Bitcoin. Sau khi phát sóng, tiền được quản lý bằng cách sử dụng một loạt các giao dịch cam kết.

Chuyển tiền thông qua các giao dịch cam kết

Cuối cùng, Molly đã thắng cược và cô ấy đã giành được 0,5 bitcoin.Để bắt đầu chuyển số tài sản này, cả Molly và Steve sẽ cập nhật số dư tương ứng của họ trong kênh thanh toán bằng cách ký một giao dịch cam kết. Các giao dịch cam kết phân chia tiền giữa hai bên tham gia theo thỏa thuận chung.Về bản chất, các giao dịch này giống như IOU, được thanh toán thực sự (được gọi trên chuỗi khối Bitcoin) sau khi đóng kênh thanh toán.

Ví dụ: Molly ký một giao dịch gửi 1,5 BTC cho chính cô ấy và 0,5 BTC đến một địa chỉ đa chữ ký mới. Sau đó, cô ấy ký giao dịch này và gửi hàm băm của nó cho Steve. Đổi lại, Steve đã ký một giao dịch cam kết tương tự như của Molly, ngoại trừ việc anh ấy đã gửi 0,5 BTC cho chính mình và 1,5 BTC đến một địa chỉ nhiều chữ ký khác. Sau đó, anh ta ký giao dịch và gửi hàm băm của giao dịch này cho Molly.

a) 2 BTC trong ví nhiều chữ ký ban đầu, b) .5 BTC trong ví nhiều chữ ký, được trả cho Steve và c) 1,5 BTC trong ví nhiều chữ ký cho Molly. Trên thực tế, sau khi bất kỳ bên nào gửi hàm băm giao dịch tương ứng của mình, bảng cân đối kế toán trong kênh thanh toán sẽ được cập nhật. Vì vậy, theo cách này, chúng tôi có một giao dịch mà không cần sử dụng chuỗi khối Bitcoin.

Tiền trong ví chỉ có thể được mở khóa theo ba điều kiện:

  • thời gian khóa đã hết

  • Một trong hai bên mở khóa tiền từ ví đa chữ ký mà họ đã thiết lập thông qua giá trị (khóa) hoặc

  • Hai bên cùng nhau ký kết giao dịch.

Lưu ý rằng nếu một bên quyết định đóng kênh thanh toán và ký giao dịch riêng, họ sẽ phải đợi cho đến thời điểm định trước (được chỉ định bởi hợp đồng) được đặt khi giao dịch được ký để nhận được tiền của mình. Điều này nghe có vẻ quá đáng, nhưng gian lận phải được ngăn chặn bằng những cách như vậy.

Kênh thanh toán/gia hạn định kỳ

Điều gì sẽ xảy ra nếu Molly và Steve muốn tiếp tục cập nhật các kênh hoặc thực hiện nhiều trao đổi?

Giả sử Steve đang trả tiền cho Molly cho một dịch vụ định kỳ, chẳng hạn như cắt tóc. Steve gửi 0,2 BTC vào ví đa chữ ký của họ và sau mỗi lần cắt tóc, anh ấy ký một giao dịch cam kết với Molly, gửi 0,001 BTC đến địa chỉ đa chữ ký mới. Để làm điều này, anh ấy phải lặp lại những gì chúng tôi vừa làm, mở một giao dịch mới trên chuỗi khối.

Do đó, để xử lý các khoản thanh toán định kỳ, số dư tài khoản trong địa chỉ nhiều chữ ký cần được cập nhật mỗi lần. Để làm được điều này, mỗi khi Steve đi cắt tóc, anh ấy sẽ trả tiền cho Molly bằng cách bỏ một khoản tiền mới vào ví nhiều chữ ký mà anh ấy đã thiết lập. Nhưng khi làm như vậy, anh ấy đã tạo ra một giá trị mới và hàm băm mới cho giao dịch mới này. Molly cũng làm tương tự, khi 2 bên trao đổi một hash mới, họ cũng trao đổi giá trị cũ của giao dịch trước đó (lưu ý rằng thay vì trao đổi hash, hash của giao dịch cũ đã được trao đổi lần trước).

Điều này đảm bảo rằng không bên nào có thể gian lận bên kia. Nếu Steve cố lừa Molly bằng cách phát các giao dịch cũ khi kênh thanh toán bị đóng, anh ấy sẽ gặp rắc rối.

Ví dụ: nếu Steve phát trạng thái ban đầu khi đóng kênh, anh ấy đã ký giao dịch ban đầu (mỗi người một BTC cho Molly và Steve). Vì Molly có chìa khóa của giao dịch trước đó nên cô ấy có thể trừng phạt Steve. Quan trọng hơn, Steve phải đợi đến thời điểm khóa mới lấy được tiền, trong khi Molly có thể lấy tiền ngay. Vì vậy, nếu cô ấy phát hiện ra rằng Steve đã phát dữ liệu thô, cô ấy có thể chỉ cần lấy 2 BTC trong ví đa chữ ký (vì cô ấy có chìa khóa cho giao dịch này và do đó, có thể mở khóa tiền của nó).

Vì vậy, nếu một bên cố gắng gian lận bên kia, đối tác sẽ nhận được tất cả số tiền. Hình phạt này nhằm ngăn chặn những kẻ xấu lạm dụng việc phân bổ tiền từ các kênh thanh toán.

Ngoài ra, những người điều hành nút và người khai thác phát hiện hành vi chơi xấu như vậy có thể thay mặt cô ấy hành động nếu Molly không trực tuyến. Để đền bù, những người này sẽ nhận được một khoản tiền thưởng nhất định.

Đóng kênh thanh toán

Khi Molly và Steve sẵn sàng đóng kênh, họ chỉ cần ký một giao dịch bằng khóa riêng của mình, chuyển số dư tài khoản cuối cùng của họ lên chuỗi khối. Tại thời điểm này, các thợ mỏ sẽ xác minh và lưu trữ nó trong chuỗi khối. Giống như giao dịch mở kênh, giao dịch đóng kênh này cần tương tác với chuỗi khối Bitcoin.

Ngoài ra, các bên cũng có thể ấn định ngày hết hạn cho thời hạn của hợp đồng. Ví dụ: sử dụng thuật toán nLockTime, họ có thể đảm bảo rằng kênh thanh toán sẽ mở trong 30 ngày, sau đó kênh sẽ bị đóng và số dư cuối cùng sẽ được phát lên chuỗi khối. Tuy nhiên, bất cứ khi nào các bên muốn cập nhật số dư của họ, ngày đáo hạn sẽ giảm xuống. Vì vậy, nếu Molly và Steve đặt cược vào nhiều trận bóng đá trong một mùa, thì hợp đồng nLockTime sẽ có ngày hết hạn mới, được rút ngắn mỗi lần đặt cược (ví dụ: nếu giao dịch đã cam kết đầu tiên sẽ được hoàn thành trong vòng 30 ngày, thì giao dịch thứ hai sẽ hết hạn vào ngày 29, sau đó giao dịch thứ ba sẽ hết hạn vào ngày 28, v.v.).

Mục đích của hợp đồng nLockTime rất đơn giản: nó giữ cho số dư tài khoản được cập nhật và ngăn một bên giả mạo hóa đơn. Như chúng ta đã thảo luận trước đây, mỗi khi một giao dịch cam kết được thỏa thuận, số dư tài khoản cũ sẽ được đổi lấy số dư tài khoản mới và mỗi bên ghi lại số dư mới này cùng với khóa cá nhân cũ. Nếu một trong hai bên cố gắng lừa dối bên kia, bên lừa đảo sẽ bị phạt.

Thanh toán đa kênh và HTLC

“Điều gì sẽ xảy ra nếu Molly và Steve muốn gửi bitcoin cho nhau, nhưng họ không có kênh thanh toán mở giữa họ?” Họ có thể thông qua một người trung gian.

Hóa ra, cả Molly và Steve đều mở kênh thanh toán với Chuck nên họ không cần mở kênh mới mà giao dịch qua Chuck.

Về mặt lý thuyết, đây là một giao dịch đáng tin cậy, mẹo là thực hiện nó một cách an toàn. Để đạt được mục tiêu này, Lightning Network triển khai Hợp đồng khóa thời gian băm (HTLC).

Molly muốn trả cho Steve 0,5 BTC. Để làm điều này, Steve phải tạo một giá trị (về cơ bản là mã xác nhận hoặc khóa). Sau đó, anh ta tạo một hàm băm của giá trị này và gửi nó cho Molly. Để đơn giản hóa hình minh họa bằng văn bản này, chúng tôi sẽ sử dụng V cho giá trị và H cho hàm băm.

Khi Molly nhận được H, cô ấy chia sẻ nó với Chuck. Nếu Chuck tiết lộ V, Molly sẽ gửi cho Chuck 0,5 BTC. Để có được V, Chuck gửi cho Steve 0,5 BTC của chính mình để đổi lấy V. Khi anh ta có giá trị này, anh ta gửi V cho Molly và nhận được 0,5 BTC. Điều này chuyển 0,5 BTC cho Steve từ Molly một cách hiệu quả.

Quy trình cụ thể như sau:

Steve tạo V và H → Steve gửi H cho Molly → Molly gửi H cho Chuck → Chuck gửi BTC cho Steve → Steve gửi V cho Chuck → Chuck gửi V cho Molly → Molly gửi BTC cho Chuck

Do đó, giá trị (V) được sử dụng làm mã xác nhận/khóa cho hàm băm (H), biểu thị việc nhận/khóa giao dịch.

"Nhưng làm sao Molly biết rằng chữ V mà Chuck đưa cho cô ấy là hợp pháp, nếu Steve trả tiền xong thì Steve bỏ chạy thì sao?"

Giống như nLockTime yêu cầu mọi người phải trung thực trong kênh thanh toán hai chiều, hợp đồng khóa thời gian băm khiến tất cả các bên phải chịu trách nhiệm về điều đó.

Với HTLC, số tiền bitcoin đang được giao dịch một lần nữa bị khóa trong ví nhiều chữ ký và chỉ có thể được mở khóa sau khi giá trị (V) và hàm băm (H) được cung cấp a) hoặc b) hợp đồng hết hạn sau một khoảng thời gian chờ.

Thực tế, điều này có nghĩa là khi Molly và Chuck đi đến thỏa thuận để Molly trả tiền cho Steve, cô ấy sử dụng HTLC để khóa bitcoin mà cô ấy nợ Chuck trong ví nhiều chữ ký. Sau khi Chuck trả tiền cho Steve và nhận được V, anh ta có thể nhập V và H vào HTLC để nhận bitcoin do Molly thanh toán. Ngoài ra, nếu Chuck không hoàn thành giao dịch và hợp đồng hết hạn sau một tuần, bitcoin của Molly sẽ được giải phóng và nhập lại vào ví cá nhân của cô ấy.

Hành động tương tự cũng xảy ra với các kênh thanh toán riêng của Chuck và Steve. Chuck không thể giao bitcoin của mình cho Steve cho đến khi Steve tiết lộ V. Sau khi Steve tiết lộ chữ V, Chuck sẽ có quyền truy cập vào tiền từ Molly và Steve sẽ nhận được BTC của Chuck.

Về lý thuyết, quy trình này có thể chạy với nhiều kênh thanh toán và nhiều người.

Tóm tắt: Tại sao Lightning Network lại quan trọng


Đó là một chủ đề phức tạp và thật khó để giải thích bằng những thuật ngữ đơn giản, nhưng đọc nó là tình yêu đích thực.

Tổng quan: Lightning Network là một hệ thống ngoại tuyến cho phép các cá nhân trao đổi bitcoin nhiều lần mà không cần ghi lại tất cả các giao dịch đó trên chuỗi. Chỉ có hai giao dịch (và mở và đóng) được ghi lại trên chuỗi khối, trong khi tất cả các giao dịch khác (càng nhiều càng tốt) được xử lý thông qua các nút ngoại tuyến.

Mô hình này có một số lợi ích chính:

  • Thanh toán vi mô hiệu quả: Lightning Network hướng tới các khoản thanh toán vi mô. Thay vì trả các khoản phí cắt cổ vượt quá giá trị được chuyển, Lightning Network cho phép người dùng gửi một lượng nhỏ tiền tệ cho nhau mà không cần trực tiếp thông qua mạng Bitcoin. Họ vẫn phải trả phí cho các hoạt động của nút, nhưng điều này không đáng kể so với phí mạng Bitcoin.

  • Giải pháp về khả năng mở rộng và độ trễ: Phù hợp với các lập luận trước đó, Lightning Network sẽ giảm sự phình to của mạng Bitcoin. Giảm số lượng giao dịch trên chuỗi có nghĩa là ít công việc hơn cho người khai thác, điều này có nghĩa là thời gian giao dịch nhanh hơn và phí thấp hơn. Mạng sẽ chạy trơn tru hơn nếu mọi giao dịch không phải được đặt trên sổ cái công khai của chuỗi khối. Ngoài ra, giao dịch Lightning Network sẽ nhanh hơn nhiều so với giao dịch trên chuỗi.

Hiện tại, Lightning Network hỗ trợ Bitcoin, Litecoin và Vertcoin. Lightning Network vẫn đang trong giai đoạn thử nghiệm và không có sự ra mắt mainnet nào được xác nhận tại thời điểm xuất bản.


BFTF技术社区联盟
作者文库