Skip to main content

Hiểu chi tiêu UTxO thông qua scripts

Ngày 18 tháng 09 năm 2023 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Chi tiêu UTxO có thể có điều kiện với logic do scripts (scripts) xác định. Trong trường hợp như vậy, người chi tiêu UTxO phải cung cấp cho scripts dữ liệu đó để cho phép mở khóa UTxO. Trong bài viết này, chúng ta sẽ xem xét cách khóa UTxO và cách mở khóa nó bằng cách thực thi scripts để xác thực.

UTxO được chi tiêu thông qua Giao dịch

Để hiểu bài viết, cần hiểu mô hình tính toán UTxO, cấu trúc của UTxO, địa chỉ Shelley và cách chi tiêu UTxO phổ biến thông qua các thông tin xác thực bằng key. Chúng tôi đã mô tả điều này trong bài viết trước.

Trong hình ảnh bên dưới, bạn có thể thấy địa chỉ Shelley chứa Payment Credentials (Thông tin xác thực thanh toán) bao gồm hai tùy chọn để chi tiêu UTxO được liên kết. Một địa chỉ có thể được liên kết với các UTxO.

Payment Credentials là một phần của địa chỉ Shelley xác định ai sở hữu số tiền trong địa chỉ và do đó xác định được ai có thể chi tiêu UTxO. Payment Credentials có thể là thông tin xác thực bằng bằng một trong hai cách sau:

  • Xác thực bằng key (dựa trên khóa công khai/xác minh) hoặc
  • Xác thực bằng tệp lệnh (mã băm của tệp lệnh - scripts).

Yếu tố kích hoạt chi tiêu UTxO là một giao dịch. Trong số các tham số khác, giao dịch phải có witness. Witness là một phần dữ liệu chứng minh rằng giao dịch được chủ sở hữu tiền ủy quyền. Nếu witness hợp lệ, giao dịch có thể sử dụng UTxO đầu vào. Witness có thể là chữ ký (đối với thông tin xác thực bằng key) hoặc thực thi scripts (đối với thông tin xác thực bằng scripts).

Trong trường hợp thông tin xác thực bằng key, witness là chữ ký được tạo bởi khóa riêng của chủ sở hữu. Chữ ký phải tương ứng với thông tin xác thực bằng key (khóa chung) thuộc về địa chỉ chứa UTxO.

Khi người dùng muốn gửi tiền cho người khác, ví sẽ tạo một giao dịch thông thường cho họ. Ví chọn UTxO thích hợp và yêu cầu người gửi ký giao dịch. Trong khi đó, một witness được đưa vào giao dịch cho mỗi UTxO được chi tiêu.

Nếu giao dịch hợp lệ và sẽ được mạng Cardano hoàn tất (được lưu trữ vĩnh viễn trong Blockchain), giao dịch sẽ sử dụng UTxO đầu vào mà từ đó UTxO mới sẽ được tạo (chính xác như được xác định bởi người gửi). Chi tiêu có thể được hình dung đơn giản như việc di chuyển UTxO (tiền) từ địa chỉ này sang địa chỉ khác. Tiền có thể được phân phối lại trong quá trình di chuyển, nhưng tổng giá trị phải tương đương (hoặc có thể ít hơn).

Ở cuối blockchain, các khối mới chứa các giao dịch sẽ được thêm vào đều đặn. Blockchain Cardano có thể được coi là đề xuất kế toán về chuyển khoản UTxO.

Chúng tôi đã mô tả nó chi tiết trong bài viết trước. Trong bài viết này, chúng tôi chỉ tập trung vào trường hợp witness là script thực thi (script execution).

Khóa UTxO

Chi tiêu UTxO thông qua scripts (scripts xác thực) là một quá trình gồm hai giai đoạn với hai giao dịch riêng biệt. Giao dịch đầu tiên khóa tiền và giao dịch thứ hai mở khóa tiền bằng cách thực thi scripts. Chúng tôi gọi giao dịch đầu tiên là giao dịch khóa và giao dịch thứ hai là giao dịch chi tiêu.

Giao dịch đầu tiên là giao dịch tạo UTxO bị khóa trên Địa chỉ tệp lệnh (script address). Không có scripts nào được thực thi khi UTxO bị khóa tại Địa chỉ tệp lệnh. Chỉ địa chỉ đích (được xác định trong UTxO đầu ra của giao dịch khóa) là quan trọng, đó là Địa chỉ tệp lệnh.

Giao dịch thứ hai cố gắng sử dụng UTxO do Địa chỉ tệp lệnh nắm giữ. Điều này kích hoạt việc thực thi scripts xác thực. Giá trị trả về của scripts (kết quả của việc thực thi scripts) sẽ quyết định có mở khóa UTxO hay không.

Trong hình ảnh bên dưới, bạn có thể thấy quá trình khóa và mở khóa UTxO thông qua một scripts. Giao dịch khóa có một UTxO đầu ra có địa chỉ đích hiển thị Địa chỉ tệp lệnh. Giao dịch này khóa UTxO vào Địa chỉ tệp lệnh. Sau đó, giao dịch chi tiêu sử dụng UTxO từ Địa chỉ tệp lệnh, điều này kích hoạt việc thực thi scripts trên node của Cardano (mũi tên màu đỏ). Hình ảnh mô tả khái niệm cơ bản. Chúng tôi sẽ giải thích điều này chi tiết hơn dưới đây.

Hãy giải thích thuật ngữ Địa chỉ tệp lệnh (script address). Địa chỉ Shelley là một thuật ngữ chung cho bất kỳ địa chỉ nào được hỗ trợ bởi kỷ nguyên Shelley của Cardano. Địa chỉ Shelley có thể có nhiều loại và định dạng khác nhau, tùy thuộc vào thông tin xác thực và loại mạng (mainnet hay testnet). Địa chỉ Shelley có thể sử dụng mã Scripts Hash làm Payment Credentials và điều này khiến địa chỉ đó trở thành Địa chỉ tệp lệnh. Nếu bạn nghe thấy thuật ngữ Địa chỉ tệp lệnh, bạn sẽ biết rằng việc chi tiêu UTxO chỉ có thể thực hiện được thông qua scripts.

Địa chỉ tệp lệnh được lấy từ hàm băm của scripts xác thực. Các nhà phát triển tạo một scripts và tạo một hàm băm cho nó. Hàm băm được sử dụng làm Payment Credentials của địa chỉ Shelley. Khi UTxO được liên kết với Địa chỉ tệp lệnh, nó chỉ có thể được mở khóa bằng scripts. Scripts sẽ được chuyển qua một số đầu vào (sẽ nói thêm về điều đó sau) và nếu quá trình thực thi của nó kết thúc với giá trị trả về là True thì số tiền có thể được chi tiêu.

Một lưu ý rất quan trọng, Địa chỉ tệp lệnh đã được tạo nhưng scripts (nội dung scripts) không được lưu trữ trong Blockchain. Chỉ hàm băm của scripts được sử dụng để tạo Địa chỉ tệp lệnh (và Địa chỉ tệp lệnh thì không đủ để thực thi). Dưới đây chúng ta sẽ cùng tìm hiểu cách nội dung của scripts được gửi đến node của Cardano để xác thực giao dịch chi tiêu.

Trong hình ảnh bên dưới, bạn có thể thấy địa chỉ có scripts băm được đặt trong Payment Credentials. Khi mã nguồn của scripts đã hoàn tất (và đã được kiểm tra), nhà phát triển sẽ sử dụng nó làm cơ sở để tạo hàm Scripts Hash. Mã Scripts Hash là mã định danh duy nhất được hash từ nội dung của scripts. Scripts Hash là một dạng dấu vân tay kỹ thuật số ngắn nhằm đảm bảo rằng scripts chính xác (nội dung của scripts) được sử dụng để tạo hàm băm sẽ được sử dụng trong quá trình xác thực (tức là thực thi scripts). Điều này đảm bảo rằng các điều kiện chi tiêu UTxO không thể thay đổi nếu sử dụng scripts khác.

Scripts Hash được xác thực bởi node của Cardano khi nó được xác minh xem các node có xác thực scripts chính xác hay không. Nếu bạn thay đổi một ký tự trong scripts gốc, giá trị hàm băm của scripts sẽ hoàn toàn khác. Nếu scripts được kích hoạt thông qua một giao dịch thì nội dung của scripts đó phải tạo ra cùng một hàm băm giống hệt với hàm băm được lưu trong Payment Credentials.

Luôn phải có sự trùng khớp giữa hàm băm được lưu trong Payment Credentials và hàm băm của mã nguồn của scripts sẽ được thực thi để xác thực giao dịch. Nếu các giá trị băm khác nhau thì việc xác thực sẽ thất bại.

Địa chỉ tệp lệnh phải được tạo trước khi giao dịch gửi tiền (liên kết) tới nó. Nếu không, giao dịch khóa sẽ không biết gửi tiền ở đâu và làm cách nào để khóa chúng bằng scripts.

Sau khi Địa chỉ tệp lệnh được tạo, tiền có thể được gửi đến địa chỉ đó, như bạn có thể thấy trong hình bên dưới. Giao dịch có một UTxO đầu vào và hai đầu ra. Người gửi giao dịch là Alice. Alice ủy quyền giao dịch bằng cách cung cấp một witness duy nhất cho UTxO đầu vào. Alice muốn gửi 1000 ADA đến Địa chỉ tệp lệnh thuộc DEX. Cô ấy chỉ có UTxO với 2500 ADA trong ví của mình. Địa chỉ đích đầu tiên thuộc về cô ấy và trả lại 1500 ADA cho địa chỉ của cô ấy. Địa chỉ đích thứ hai là Địa chỉ tệp lệnh thuộc về DEX.

Trong hình ảnh bên dưới, bạn có thể thấy Địa chỉ tệp lệnh sau khi mạng đã xác thực (và hoàn tất) giao dịch. UTxO được liên kết với Địa chỉ tệp lệnh.

Datum là một tham số tùy chọn có thể được sử dụng để lưu trữ một số thông tin hoặc trạng thái có liên quan đến việc sử dụng UTxO. Dữ liệu được lưu trữ cùng với UTxO tại Địa chỉ tệp lệnh và có thể được truy cập bằng scripts xác thực trong quá trình thực thi.

Một Datum được chèn vào giao dịch khóa UTxO tại Địa chỉ tệp lệnh và do đó cũng được chèn vào giao dịch mở khóa UTxO từ Địa chỉ tệp lệnh.

Trong hình ảnh bên dưới, bạn có thể thấy giao dịch khóa UTxO trên Địa chỉ tệp lệnh cùng với Datum. Giao dịch khóa này khác với giao dịch khóa trước đó chỉ ở chỗ nó chứa Datum sẽ được liên kết với UTxO.

Trong hình ảnh bên dưới, bạn có thể thấy Địa chỉ tệp lệnh sau khi mạng đã xác thực (và hoàn tất) giao dịch. UTxO được liên kết với Địa chỉ tệp lệnh và nó chứa Datum.

Số tiền trên Địa chỉ tệp lệnh được kiểm soát bởi chính scripts, xác định các điều kiện để chi tiêu UTxO. Scripts lấy một số thông tin đầu vào, chẳng hạn như witness, Datum, Redeemer và Scripts Context , rồi trả về Đúng hoặc Sai, cho biết khoản chi tiêu có hợp lệ hay không. Chúng ta sẽ nói chi tiết về đầu vào của scripts sau.

Bây giờ chúng ta đã khóa UTxO trên Địa chỉ tệp lệnh.

Truy vấn scripts

Trước khi bắt đầu giải thích cách mở khóa UTxO, chúng ta cần xem cách các node tìm thấy scripts được sử dụng để xác thực các giao dịch cố gắng sử dụng UTxO từ Địa chỉ tệp lệnh. Nội dung của scripts phải có sẵn cho node của Cardano để nó có thể thực thi nó, tức là xác thực giao dịch chi tiêu.

Nội dung scripts có thể được chèn vào dữ liệu giao dịch chi tiêu dưới dạng witness scripts. Điều này có nghĩa là giao dịch cố gắng sử dụng UTxO phải bao gồm nội dung của scripts như một phần của nội dung giao dịch. Điều này làm tăng kích thước của giao dịch và do đó cũng làm tăng phí. Nhìn chung, nó hạn chế độ phức tạp của Script vì nó buộc các nhà phát triển phải làm cho Script càng nhỏ càng tốt (vì kích thước khối bị giới hạn và người dùng không muốn trả phí cao).

Nếu người dùng gửi nhiều giao dịch như vậy, nội dung của cùng một scripts sẽ được lưu trữ trong Blockchain nhiều lần, điều này gây lãng phí lĩnh vực không cần thiết.

Trong hình ảnh bên dưới, bạn có thể thấy một giao dịch chi tiêu có chứa nội dung scripts trong phần witness (màu đỏ). Lưu ý cách UTxO đầu vào xác định thông qua hàm Scripts Hash mà scripts phải được sử dụng để xác thực. Node của Cardano lấy nội dung scripts từ nội dung giao dịch và tạo hàm băm. Hàm băm phải khớp với giá trị Scripts Hash có trong Payment Credentials (mũi tên màu đỏ).

Một khả năng khác là scripts có thể được liên kết với UTxO dưới dạng scripts tham chiếu. Điều này có nghĩa là giao dịch khóa tạo UTxO phải bao gồm scripts như một phần của đầu ra giao dịch. Nội dung của scripts sau đó được lưu trữ trên Blockchain dưới dạng scripts tham chiếu và có thể được truy cập bằng hàm băm của nó.

Do đó, các scripts chỉ cần được lưu trữ trên Blockchain một lần và sau đó được sử dụng lại cho các giao dịch tiếp theo mà không cần phải bao gồm nội dung của scripts. Thay vào đó, các giao dịch sau đó có thể tham chiếu đến các scripts bằng hàm băm của chúng, đây cũng là cách chúng được xác định trong các Địa chỉ tệp lệnh. Điều này làm giảm quy mô và phí của các giao dịch, đồng thời cho phép các scripts linh hoạt hơn và có thể mở rộng hơn.

Trong hình ảnh bên dưới, bạn có thể thấy một giao dịch khóa lưu trữ nội dung của scripts vào Blockchain tại Địa chỉ tệp lệnh.

Đầu tiên, một Địa chỉ tệp lệnh được tạo như mô tả ở trên. Sau khi tạo địa chỉ Script, nó không chứa nội dung của Script. Khi Địa chỉ tệp lệnh tồn tại, nội dung của scripts có thể được lưu trữ trên đó thông qua giao dịch.

Trong hình ảnh bên dưới, bạn có thể thấy Địa chỉ tệp lệnh sau khi mạng đã xác thực (và hoàn tất) giao dịch. Nội dung của scripts được lưu trữ trong Blockchain và có thể được tham chiếu bởi các giao dịch khác.

Luôn chỉ có một Địa chỉ tệp lệnh được liên kết với scripts. Sau đó, người dùng có thể gửi (và do đó khóa) các UTxO khác đến cùng một Địa chỉ tệp lệnh thông qua việc khóa các giao dịch và cố gắng sử dụng chúng từ địa chỉ đó thông qua các giao dịch chi tiêu (việc mở khóa luôn yêu cầu thực thi scripts).

UTxO với scripts luôn nằm trên Địa chỉ tệp lệnh trừ khi nó được sử dụng để đáp ứng scripts. Và, giao dịch sử dụng UTxO có thể tham chiếu scripts bằng hàm băm của nó mà không cần phải đưa nó vào dữ liệu giao dịch.

Trong hình bên dưới, bạn có thể thấy một Địa chỉ tệp lệnh có UTxO lưu trữ nội dung của scripts (màu đỏ) và 3 UTxO (màu xanh) được người dùng khác gửi đến địa chỉ đó và sẽ được sử dụng từ địa chỉ đó thông qua thực thi scripts. Địa chỉ sẽ được sử dụng lại miễn là scripts được sử dụng.

Bây giờ bạn đã biết cách khóa UTxO tại Địa chỉ tệp lệnh và cách node của Cardano lấy nội dung của scripts. Chúng ta hãy xem xét kỹ hơn việc mở khóa UTxO.

Mở khóa UTxO

UTxO bị khóa tại Địa chỉ tệp lệnh có thể được chi tiêu thông qua giao dịch chi tiêu kích hoạt việc thực thi scripts. Nếu UTxO được liên kết với một Địa chỉ tệp lệnh, scripts phải luôn được thực thi và không có cách nào khác.

Không quan trọng địa chỉ đích nào được xác định trong UTxO đầu ra của giao dịch chi tiêu và cách phân phối tiền thông qua UTxO mới.

Hãy xem cách node của Cardano xác thực giao dịch chi tiêu yêu cầu thực thi scripts.

Node kiểm tra xem giao dịch chi tiêu có hợp lệ giai đoạn 1 hay không, nghĩa là nó được xây dựng chính xác và có thể trả phí xử lý hay không.

Giao dịch phải trả đủ phí để trang trải chi phí thực thi scripts xác thực, điều này phụ thuộc vào kích thước và độ phức tạp của scripts. Phí được tính bằng cách sử dụng tham số giao thức coinsPerUTxOWord, xác định số lượng ADA cần thiết cho mỗi byte mã scripts.

Nếu giao dịch vượt qua xác thực giai đoạn 1, scripts có thể được thực thi, nếu không, giao dịch sẽ bị từ chối.

Trong quá trình xác thực giai đoạn 2, scripts sẽ được thực thi. Giao dịch sẽ chỉ hợp lệ nếu có thể chi tiêu (mở khóa) từng UTxO đầu vào. Đối với mỗi UTxO đầu vào được liên kết với Địa chỉ tệp lệnh, giá trị trả về của scripts phải là True.

Node truy xuất scripts được liên kết với UTxO mà giao dịch cố gắng chi tiêu. Scripts có thể được tham chiếu bằng hàm băm của nó hoặc được chèn vào dữ liệu giao dịch. Node cũng kiểm tra xem hàm băm của scripts được truy xuất hoặc chèn có khớp với hàm băm được lưu trong Payment Credentials của đầu ra hay không. Nếu không khớp, giao dịch sẽ bị từ chối vì không hợp lệ.

Node chuyển đầu vào cho scripts và thực thi nó. Scripts trình xác thực có thể nhận được các đầu vào sau:

  • Datum: Đây là một phần dữ liệu được gắn vào UTxO mà scripts đang khóa. Dữ liệu có thể được sử dụng để lưu trữ một số trạng thái hoặc điều kiện có liên quan đến việc sử dụng UTxO.
  • Redeemer: Đây là một phần dữ liệu được đính kèm với đầu vào chi tiêu. Điều này thường được sử dụng để cung cấp đầu vào cho scripts từ người chi tiêu. Nó có thể được sử dụng để cung cấp một số thông tin hoặc logic cần thiết để mở khóa tiền. Redeemer là bắt buộc đối với mọi UTxO đầu vào có địa chỉ dựa trên scripts, bất kể loại hoặc nội dung của scripts.
  • Script Context: Đây là một phần dữ liệu thể hiện thông tin về giao dịch chi tiêu. Điều này được sử dụng để đưa ra khẳng định về cách chi tiêu đầu ra. Ví dụ: logic của scripts có thể yêu cầu chữ ký. Chữ ký có thể được sử dụng để chứng minh quyền sở hữu một số quỹ hoặc token được scripts yêu cầu.

Scripts trả về Đúng hoặc Sai, cho biết điều kiện chi tiêu có được đáp ứng hay không. Nếu Đúng thì giao dịch được chấp nhận và UTxO được chi tiêu. Nếu Sai thì giao dịch sẽ bị từ chối và UTxO vẫn chưa được chi tiêu.

Hình ảnh bên dưới hiển thị việc mở khóa UTxO thông qua giao dịch chi tiêu. Đầu vào của giao dịch là UTxO được liên kết với Địa chỉ tệp lệnh (mũi tên màu xanh).

Giao dịch tham chiếu scripts (trong ví dụ này nội dung scripts không phải là một phần của nội dung giao dịch). Node của Cardano lấy nội dung scripts được lưu trữ trong Blockchain (trong UTxO) và so sánh hàm băm của nội dung scripts với hàm Scripts Hash trong Payment Credentials (mũi tên màu đỏ).

Tiếp theo, cần lấy đầu vào cho scripts và chuyển chúng vào scripts (mũi tên màu xanh lá cây).

Nếu Datum đã được lưu trữ trên Blockchain thì không cần thiết phải chèn lại dữ liệu đó vào giao dịch chi tiêu. Node có thể tìm thấy giá trị Datum bằng cách tra cứu hàm băm Datum được lưu trữ trong UTxO. Tuy nhiên, nếu Datum không được lưu trữ trên Blockchain thì giao dịch chi tiêu phải cung cấp giá trị Datum khớp với hàm băm Datum trong UTxO. Điều này nhằm đảm bảo rằng scripts có thể truy cập giá trị Datum khi xác thực giao dịch chi tiêu.

Hơn nữa, Redeemer và Context của giao dịch được chuyển làm đầu vào cho scripts. Context của giao dịch chứa tất cả thông tin cần thiết về giao dịch, do đó, danh sách UTxO đầu vàoUTxO đầu ra, phí, witness (chữ ký), Datum, scripts xác thực (hoặc tham chiếu đến chúng), v.v. sẽ được lưu trữ.

Đầu vào được chuyển tới scripts và logic scripts được thực thi. Các đầu vào ảnh hưởng đến giá trị trả về. Trong ví dụ của chúng tôi, giá trị trả về là True, do đó UTxO có thể được sử dụng (mũi tên đen). Tiền sẽ được chuyển đến địa chỉ đích mới.

Giới thiệu về logic của scripts DEX

Trong bài viết này, chúng tôi sẽ cố gắng giải thích thêm một số bối cảnh liên quan đến hợp đồng thông minh trên Cardano.

Trong ví dụ của chúng tôi, Alice đã gửi 1000 ADA đến Địa chỉ tệp lệnh của DEX, điều đó có nghĩa là cô ấy đã tạo UTxO bị khóa bởi Địa chỉ tệp lệnh. Địa chỉ tệp lệnh được lấy từ hàm băm của scripts xác thực của DEX, chứa logic để trao đổi token trên nền tảng DEX. Scripts cũng có thể chứa logic để hủy đơn hàng.

Làm thế nào thực sự có thể Alice không phải tạo giao dịch theo cách thủ công? Cô sử dụng giao diện người dùng của sàn giao dịch, nhập yêu cầu của mình (lệnh hoán đổi swap) và sau đó được nhắc xác nhận giao dịch. DEX (ứng dụng) sẽ tạo giao dịch cho Alice.

Trong hình ảnh bên dưới, bạn có thể thấy rằng trong hệ sinh thái Cardano, một hợp đồng thông minh có thể bao gồm các phần off-chain và on-chain của ứng dụng. Logic off-chain chịu trách nhiệm xây dựng các giao dịch khóa và chi tiêu. Trong trường hợp DEX, logic off-chain được xử lý trên máy chủ (trên đám mây). Trong bài viết, chúng tôi chỉ đề cập đến logic on-chain, tức là xác thực scripts, diễn ra trên Blockchain thông qua Máy ảo Cardano.

Alice chỉ tương tác với phần off-chain của DEX để xây dựng các giao dịch. Một giao dịch khóa (lệnh hoán đổi) cần có chữ ký của Alice.

Alice có thể lấy lại tiền nếu cô quyết định hủy đơn hàng trên DEX. Để làm điều này, cô ấy phải tạo một giao dịch sử dụng UTxO bị khóa bởi Địa chỉ tệp lệnh và gửi nó trở lại địa chỉ của chính cô ấy. Giao dịch hủy (chi tiêu) được xây dựng theo logic off-chain, và Alice chỉ sử dụng giao diện của DEX. Cô ấy phải cung cấp một witness chứng minh quyền sở hữu UTxO của mình và Redeemer cho biết ý định hủy đơn hàng của cô ấy. Scripts xác thực sau đó sẽ xác minh xem Alice có thực sự là chủ sở hữu của UTxO hay không.

Các scripts xác thực của các DEX khác nhau (hoặc các ứng dụng khác) khác nhau đáng kể về chức năng và các tùy chọn mà chúng cung cấp cho người dùng.

Để mở khóa số tiền, DEX, Alice hoặc bất kỳ ai khác muốn chi tiêu UTxO phải cung cấp thông tin đầu vào chính xác cho scripts trình xác thực, chẳng hạn như chữ ký, Redeemer hoặc Datum. Sau đó, scripts trình xác thực sẽ kiểm tra xem dữ liệu đầu vào có đáp ứng các quy tắc trao đổi hay không, chẳng hạn như khớp giá ưu đãi, thanh toán phí và tôn trọng khoảng thời gian hiệu lực.

Mặc dù về cơ bản, bất kỳ ai cũng có thể tiêu tiền, nhưng DEX phải khớp lệnh và thực hiện hoán đổi, tức là nó có thể đáp ứng tốt nhất các điều kiện của scripts. Tuy nhiên, một trong những điều kiện của scripts có thể là chữ ký bằng khóa riêng của Alice hoặc DEX, do đó có thể xác định nhóm những người có thể tiêu tiền.

DEX không thể lấy cắp tiền trên các Địa chỉ tệp lệnh. DEX chỉ có thể đáp ứng scripts bằng cách cung cấp đầu vào và do đó thực thi lệnh của người dùng. Khi DEX thực hiện đơn hàng, không cần có chữ ký của Alice. DEX có thể thực hiện hoán đổi mà không cần bất kỳ tương tác nào nữa với Alice. Nói cách khác, DEX có thể xây dựng giao dịch chi tiêu đáp ứng các điều kiện của scripts. Alice nhận được token tại địa chỉ của mình do yêu cầu hoán đổi một cặp token.

Lời kết

Các scripts xác thực thường rất đơn giản và hoạt động với một lượng thông tin hạn chế. Về cơ bản, họ chỉ quyết định xem tiền có thể được chi tiêu từ Địa chỉ tệp lệnh hay không. Một điều kiện đơn giản có thể đủ cho việc này. Hầu hết logic ứng dụng phải nằm ở các phần off-chain. Việc thực thi các scripts xác thực tiêu tốn tài nguyên của mạng phân tán, có thể tốn kém hơn so với việc sử dụng tài nguyên của máy chủ hoặc máy tính cục bộ của người dùng.

Nguồn bài viết tại đây


Picture


Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới