Categories
Blockchain

Cơ chế của Bitcoin 3: Ứng dụng của Bitcoin scripts

3.3. Ứng dụng của Bitcoin scripts

Bây giờ bạn đã hiểu cách thức hoạt động của các script Bitcoin, hãy cùng xem một số ứng dụng mạnh mẽ có thể được thực hiện với ngôn ngữ script này. Hóa ra chúng ta có thể làm nhiều điều gọn gàng để biện minh cho sự phức tạp của việc sử dụng ngôn ngữ script thay vì chỉ chỉ định các khóa công khai.

Giao dịch ký quỹ

Giả sử rằng Alice và Bob muốn làm ăn với nhau—Alice muốn trả cho Bob bằng bitcoin để Bob gửi một số hàng hóa vật chất cho Alice. Vấn đề là Alice không muốn trả tiền cho đến khi cô ấy nhận được hàng, nhưng Bob không muốn gửi hàng cho đến khi anh ấy đã được thanh toán. Chúng ta có thể làm gì về điều đó? Một giải pháp tốt trong Bitcoin là giới thiệu một bên thứ ba và sử dụng giao dịch ký quỹ.

Các giao dịch ký quỹ có thể được thực hiện khá đơn giản bằng cách sử dụng MULTISIG. Alice không gửi tiền trực tiếp cho Bob mà thay vào đó, tạo một giao dịch MULTISIG yêu cầu hai trong ba người ký để đổi tiền. Và ba người đó sẽ là Alice, Bob và một số trọng tài bên thứ ba, Judy, người sẽ tham gia trong trường hợp có bất kỳ tranh chấp nào. Vì vậy, Alice tạo giao dịch MULTISIG 2 trong 3 gửi một số đồng xu mà cô ấy sở hữu và chỉ định rằng chúng có thể được chi tiêu nếu bất kỳ hai trong số Alice, Bob và Judy ký tên. Giao dịch này được bao gồm trong chuỗi khối và tại thời điểm này, những đồng tiền này được giữ trong ký quỹ giữa Alice, Bob và Judy, sao cho bất kỳ hai người nào trong số họ đều có thể chỉ định tiền sẽ đi đâu. Tại thời điểm này, Bob tin rằng việc gửi hàng cho Alice là an toàn, vì vậy anh ta sẽ gửi hàng qua bưu điện hoặc giao hàng tận nơi. Bây giờ trong trường hợp bình thường, Alice và Bob đều trung thực. Vì vậy, Bob sẽ gửi hàng hóa mà Alice đang mong đợi, và khi Alice nhận được hàng hóa, Alice và Bob đều ký một giao dịch quy đổi số tiền từ ký quỹ và gửi chúng cho Bob. Lưu ý rằng trong trường hợp cả Alice và Bob đều trung thực, Judy chưa bao giờ phải nhúng tay vào. Không có tranh chấp và chữ ký của Alice và Bob đáp ứng yêu cầu 2 trong 3 của giao dịch MULTISIG. Vì vậy, trong trường hợp bình thường, điều này không kém hiệu quả hơn nhiều so với việc Alice chỉ gửi tiền cho Bob. Nó chỉ yêu cầu một giao dịch bổ sung trên chuỗi khối.

Nhưng điều gì sẽ xảy ra nếu Bob không thực sự gửi hàng hoặc chúng bị thất lạc trong bưu kiện? Hoặc nếu hàng hóa không phải như những gì Alice đã đặt? Alice bây giờ không muốn trả tiền cho Bob, vì cô ấy nghĩ rằng mình đã bị lừa, và cô ấy muốn lấy lại tiền của mình. Vì vậy, Alice chắc chắn sẽ không ký một giao dịch chuyển tiền cho Bob. Nhưng Bob có thể phủ nhận mọi hành vi sai trái và từ chối ký một giao dịch trả lại tiền cho Alice. Đây là lúc Judy cần phải tham gia. Judy phải quyết định xem ai trong hai người này xứng đáng với số tiền đó. Nếu Judy quyết định rằng Bob đã gian lận, Judy sẽ sẵn sàng ký một giao dịch cùng với Alice, gửi tiền từ ký quỹ trở lại cho Alice. Chữ ký của Alice và Judy đáp ứng yêu cầu 2 trong 3 của giao dịch MULTISIG và Alice sẽ nhận lại tiền của mình. Và dĩ nhiên, nếu Judy nghĩ rằng Alice có lỗi ở đây và Alice chỉ đơn giản là từ chối thanh toán khi cô ấy cần, Judy có thể ký một giao dịch cùng với Bob, gửi tiền cho Bob. Vì vậy, Judy quyết định giữa hai kết quả có thể xảy ra. Nhưng ưu điểm của phương pháp này là cô ấy sẽ không phải nhúng tay vào, trừ khi có tranh chấp.

Địa chỉ xanh

Một ứng dụng thú vị khác là những gì được gọi là địa chỉ xanh. Giả sử Alice muốn thanh toán cho Bob và Bob đang ngoại tuyến. Vì anh ấy ngoại tuyến, Bob không thể nhìn vào chuỗi khối để xem liệu giao dịch mà Alice đang gửi có ở đó hay không. Cũng có thể Bob đang trực tuyến, nhưng không có thời gian để xem chuỗi khối và đợi các giao dịch được xác nhận. Hãy nhớ rằng thông thường chúng ta muốn một giao dịch nằm trong chuỗi khối và được xác nhận bởi sáu khối, mất tới một giờ trước khi chúng ta tin tưởng rằng nó thực sự nằm trong chuỗi khối. Nhưng đối với một số hàng hóa, chẳng hạn như thực phẩm, Bob không thể đợi một giờ trước khi giao hàng. Nếu Bob là một người bán hàng rong bán xúc xích, không chắc Alice sẽ đợi cả tiếng đồng hồ để nhận đồ ăn của cô ấy. Hoặc có thể vì một số lý do khác mà Bob không có bất kỳ kết nối nào với Internet và do đó không thể kiểm tra chuỗi khối.

Để giải quyết vấn đề có thể gửi tiền bằng Bitcoin mà không cần người nhận truy cập chuỗi khối, chúng ta phải giới thiệu một bên thứ ba khác, mà chúng ta sẽ gọi là ngân hàng (trên thực tế, nó có thể là một sàn giao dịch hoặc bất kỳ trung gian tài chính nào khác). Alice nói chuyện với ngân hàng của cô ấy: “Này, tôi đây, Alice. Tôi là khách hàng thân thiết của bạn. Đây là thẻ của tôi hoặc giấy tờ tùy thân của tôi. Và tôi thực sự muốn trả tiền cho Bob ở đây, bạn có thể giúp tôi không? ” Và ngân hàng trả lời “Chắc chắn rồi. Tôi sẽ trừ một số tiền trong tài khoản của bạn. Và lập một giao dịch chuyển tiền từ một trong những địa chỉ xanh của tôi cho Bob. ”

Lưu ý rằng số tiền này đến trực tiếp từ ngân hàng cho Bob. Tất nhiên, một số tiền có thể nằm trong một địa chỉ thay đổi để trở lại ngân hàng. Nhưng về cơ bản, ngân hàng đang thanh toán cho Bob từ một địa chỉ do ngân hàng kiểm soát, mà chúng ta gọi là “địa chỉ xanh”. Hơn nữa, ngân hàng đảm bảo rằng họ sẽ không chi tiêu gấp đôi số tiền này. Vì vậy, ngay khi Bob thấy rằng giao dịch này được ngân hàng ký kết, nếu anh ấy tin tưởng vào sự đảm bảo của ngân hàng không chi tiêu gấp đôi số tiền, anh ấy có thể chấp nhận rằng tiền cuối cùng sẽ là của anh ấy khi nó được xác nhận trong chuỗi khối.

Đây là bảo đảm trong thế giới thực, không phải là bảo đảm được thực thi bằng Bitcoin. Để hệ thống này hoạt động, Bob phải tin tưởng rằng ngân hàng, trong thế giới thực, quan tâm đến danh tiếng của nó và do đó sẽ không chi tiêu gấp đôi. Và ngân hàng sẽ có thể nói, “Bạn có thể xem lịch sử của tôi. Tôi đã sử dụng địa chỉ xanh này trong một thời gian dài và tôi chưa bao giờ chi tiêu gấp đôi. Vì vậy, tôi rất khó có thể làm như vậy trong tương lai ”. Vì vậy, Bob không còn phải tin tưởng Alice, người mà anh ta có thể không biết gì về nó. Thay vào đó, anh đặt niềm tin vào ngân hàng để không chi tiêu gấp đôi số tiền mà ngân hàng đã gửi cho anh.

Tất nhiên, nếu ngân hàng chi tiêu gấp đôi, mọi người sẽ ngừng tin tưởng (các) địa chỉ xanh của ngân hàng. Trên thực tế, hai dịch vụ trực tuyến nổi bật nhất đã triển khai địa chỉ xanh là Instawallet và Mt. Gox, và cả hai đều sụp đổ. Ngày nay, địa chỉ xanh không được sử dụng nhiều. Khi ý tưởng lần đầu tiên được đề xuất, nó đã tạo ra nhiều hứng thú như một cách để thực hiện thanh toán nhanh hơn và không cần truy cập vào chuỗi khối. Tuy nhiên, giờ đây, mọi người trở nên khá lo lắng về ý tưởng này và lo lắng rằng nó đặt quá nhiều niềm tin vào ngân hàng.

Các khoản thanh toán vi mô hiệu quả

Ví dụ thứ ba của chúng ta về tập lệnh Bitcoin là một ví dụ giúp thanh toán vi mô hiệu quả. Giả sử rằng Alice là một khách hàng muốn liên tục trả cho Bob những khoản tiền nhỏ cho một số dịch vụ mà Bob cung cấp. Ví dụ: Bob có thể là nhà cung cấp dịch vụ không dây của Alice và yêu cầu cô ấy trả một khoản phí nhỏ cho mỗi phút cô ấy nói chuyện trên điện thoại của mình.

Tạo một giao dịch Bitcoin cho mỗi phút mà Alice nói trên điện thoại sẽ không hoạt động. Điều đó sẽ tạo ra quá nhiều giao dịch và phí giao dịch sẽ tăng lên. Nếu giá trị của mỗi giao dịch theo thứ tự của phí giao dịch, Alice sẽ trả một khoản chi phí khá cao để thực hiện việc này.

Chúng ta muốn kết hợp tất cả các khoản thanh toán nhỏ này thành một khoản thanh toán lớn ở cuối. Nó chỉ ra rằng có một cách gọn gàng để làm điều này. Chúng ta bắt đầu với một giao dịch MULTISIG thanh toán số tiền tối đa mà Alice cần phải chi cho một đầu ra yêu cầu cả Alice và Bob phải ký để giải ngân tiền. Bây giờ, sau phút đầu tiên Alice sử dụng dịch vụ (hoặc lần đầu tiên cô ấy cần thực hiện thanh toán vi mô), cô ấy ký một giao dịch sử dụng số tiền được gửi đến địa chỉ MULTISIG, gửi một đơn vị thanh toán cho Bob và trả lại phần còn lại cho Alice. Sau phút tiếp theo sử dụng dịch vụ, Alice ký một giao dịch khác, lần này trả hai đơn vị cho Bob và gửi phần còn lại cho chính cô ấy. Lưu ý rằng những điều này chỉ được ký bởi Alice và chưa được ký bởi Bob, chúng cũng không được xuất bản lên chuỗi khối. Alice sẽ tiếp tục gửi các giao dịch này cho Bob mỗi phút mà cô ấy sử dụng dịch vụ. Cuối cùng, Alice sẽ hoàn thành việc sử dụng dịch vụ và nói với Bob, “Tôi đã hoàn tất, vui lòng cắt dịch vụ của tôi.” Tại thời điểm này, Alice sẽ ngừng ký các giao dịch bổ sung. Khi nghe thấy điều này, Bob sẽ ngắt kết nối dịch vụ của cô ấy, ký giao dịch cuối cùng mà Alice đã gửi và xuất bản nó lên chuỗi khối.

Vì mỗi giao dịch trả cho Bob nhiều hơn một chút và Alice ít hơn một chút, giao dịch cuối cùng mà Bob quy đổi sẽ trả cho anh ta đầy đủ dịch vụ mà anh ta đã cung cấp và trả lại phần tiền còn lại cho Alice. Tất cả các giao dịch mà Alice đã ký trên đường đi sẽ không được đưa vào chuỗi khối. Bob không cần phải ký chúng. Chúng sẽ bị loại bỏ.

Về mặt kỹ thuật, tất cả các giao dịch trung gian này đều là chi tiêu gấp đôi. Vì vậy, không giống như trường hợp của các địa chỉ xanh, nơi chúng ta đặc biệt cố gắng tránh chi tiêu gấp đôi bằng cách sử dụng bảo đảm mạnh mẽ, với giao thức thanh toán vi mô này, chúng ta thực sự đang tạo ra một số lượng chi tiêu gấp đôi tiềm năng rất lớn. Tuy nhiên, trên thực tế, nếu cả hai bên đang hoạt động bình thường, Bob sẽ không bao giờ ký bất kỳ giao dịch nào trừ giao dịch cuối cùng, trong trường hợp đó, chuỗi khối sẽ không phát hiện bất kỳ nỗ lực nào nhằm chi tiêu gấp đôi.

Có một chi tiết phức tạp khác: điều gì sẽ xảy ra nếu Bob không bao giờ ký vào giao dịch cuối cùng? Anh ta có thể chỉ nói, “Tôi rất vui khi để những đồng tiền đó nằm ở đó mãi mãi trong ký quỹ”, trong trường hợp đó, có thể những đồng tiền sẽ không di chuyển, nhưng Alice sẽ mất toàn bộ giá trị mà cô ấy đã trả lúc đầu. Có một cách rất thông minh để tránh vấn đề này bằng cách sử dụng một tính năng mà chúng ta đã đề cập ngắn gọn trước đó và sẽ giải thích ngay bây giờ.

Thời gian khóa

Để tránh vấn đề này, trước khi giao thức thanh toán vi mô thậm chí có thể bắt đầu, Alice và Bob đều sẽ ký một giao dịch hoàn trả tất cả số tiền của Alice cho cô ấy, nhưng khoản hoàn trả sẽ bị “khóa” cho đến một thời điểm nào đó trong tương lai. Vì vậy, sau khi Alice ký, nhưng trước khi cô ấy phát sóng, giao dịch MULTISIG đầu tiên đưa tiền của cô ấy vào ký quỹ, cô ấy sẽ muốn nhận giao dịch hoàn lại tiền này từ Bob và giữ nó. Điều đó đảm bảo rằng nếu cô ấy đến kịp thời điểm t và Bob chưa ký bất kỳ giao dịch nhỏ nào mà Alice đã gửi, Alice có thể xuất bản giao dịch này, giao dịch này sẽ hoàn lại tất cả tiền trực tiếp cho cô ấy.

Điều đó có nghĩa là tiền hoàn lại bị khóa cho đến thời điểm t? Nhớ lại rằng siêu dữ liệu trong các giao dịch Bitcoin bao gồm một tham số lock_time, không được giải thích trong Phần 3.2. Nếu bạn chỉ định bất kỳ giá trị nào khác 0 cho thời gian khóa, nó sẽ thông báo cho các thợ đào không xuất bản giao dịch cho đến thời điểm được chỉ định. Giao dịch sẽ không hợp lệ trước một số khối cụ thể. Vì vậy, đây là một cách chuẩn bị cho một giao dịch chỉ có thể được chi tiêu vào một thời điểm nào đó trong tương lai—miễn là đồng xu mà nó đang cố gắng sử dụng chưa được tiêu vào thời điểm đó trong một số giao dịch khác. Nó hoạt động khá hiệu quả trong giao thức thanh toán vi mô như một van an toàn để trấn an Alice rằng nếu Bob không bao giờ ký, cuối cùng cô ấy sẽ có thể lấy lại tiền của mình.

Những ví dụ này cho thấy một số điều gọn gàng mà chúng ta có thể làm với các tập lệnh Bitcoin. Chúng ta đã thảo luận về ba ví dụ đơn giản và thực tế, nhưng nhiều ví dụ khác đã được nghiên cứu. Một trong số đó là xổ số nhiều người chơi, một giao thức nhiều bước phức tạp với nhiều giao dịch có thời gian khóa và ký quỹ khác nhau trong trường hợp mọi người gian lận. Một số giao thức gọn gàng sử dụng ngôn ngữ kịch bản Bitcoin để cho phép những người khác nhau kết hợp các đồng tiền của họ theo cách mà rất khó để theo dõi ai sở hữu đồng tiền nào. Chúng ta thảo luận chi tiết về giao thức này trong Chương 6.

Hợp đồng thông minh

Thuật ngữ chung cho các hợp đồng như những hợp đồng được thảo luận trong phần này là “hợp đồng thông minh”. Đây là những hợp đồng mà chúng ta có một số mức độ thực thi kỹ thuật đối với Bitcoin, trong khi theo truyền thống, chúng được thực thi thông qua luật hoặc tòa án trọng tài. Một tính năng thực sự thú vị của Bitcoin là chúng ta có thể sử dụng tập lệnh, công cụ khai thác và xác thực giao dịch để thực hiện giao thức ký quỹ hoặc giao thức thanh toán vi mô mà không cần đến cơ quan có thẩm quyền tập trung.

Nghiên cứu về hợp đồng thông minh vượt xa các ứng dụng được thảo luận trong phần này. Có nhiều loại hợp đồng thông minh mà mọi người muốn thực thi nhưng không được ngôn ngữ kịch bản Bitcoin hỗ trợ ngày nay. Hoặc ít nhất, không ai nghĩ ra một cách sáng tạo để thực hiện chúng. Như chúng ta đã thấy, với một chút sáng tạo, bạn có thể làm được khá nhiều điều với tập lệnh Bitcoin như hiện tại.

Leave a Reply

Your email address will not be published. Required fields are marked *