Yêu cầu giá trị ada tối thiểu

UTXO trên sổ cái có thể chứa một bộ sưu tập token không đồng nhất, bao gồm cả ada, là một tài nguyên có giới hạn trong hệ thống Cardano. Cần phải có một lượng ada trong mọi UTXO (trong đó số lượng này dựa trên kích thước của UTXO, tính bằng byte), giới hạn tổng kích thước tối đa mà các UTXO đầu vào (UTXO entries) chiếm trên sổ cái tại bất kỳ thời điểm nhất định nào.

Kích thước UTXO tối đa có thể (tổng các kích thước của tất cả các UTXO vào) được điều chỉnh ngầm bằng cách tăng và giảm thông số min-ada-value. Bằng cách này, sẽ ràng buộc bảo vệ sổ cái Cardano không phát triển vượt quá một kích thước nhất định. Sổ cái không có giới hạn kích thước rất dễ bị ảnh hưởng bởi quá nhiều dữ liệu mà người dùng sẽ không thể xử lý nó (hoặc chạy một node) với những máy đáp ứng các thông số kỹ thuật được giới thiệu để chạy một node.

Trường hợp chỉ dành cho ada

Nhờ vào thông số min-ada-value constraint một giới hạn về số lượng trong UTXO vào chỉ bao gồm ada là:

max No. UTxOs <= (total ada in circulation) / (minimum ada value)

Công thức này giới hạn số lượng UTXO vào, nhưng không nói gì về việc điều chỉnh kích thước của từng đầu vào, bởi vì tất cả các UTXO vào chỉ chứa ada đều có cùng kích thước. Kích thước của bộ UTXO được giới hạn bởi:

max UTxO size <= (max No. UTxOs) * (max UTxO entry size) + overhead

Trong sổ cái Cardano đa tài sản, các UTXO vào sẽ có các kích thước khác nhau. Cụ thể, bất kỳ đầu vào nào chứa tài sản không phải là ada đều chứa các bản ghi về policyID, tên tài sản và số lượng của từng tài sản không phải ada. Để duy trì kích thước UTXO tối đa bị ràng buộc trên UTXO được lưu trữ trên sổ cái với kích thước đầu vào thay đổi, chúng tôi phải điều chỉnh giá trị ada tối thiểu cho mỗi UTXO vào, dựa trên kích thước của nó.

Dưới đây, chúng tôi trình bày một tính toán và lý giải chi tiết hơn cho việc điều chỉnh này.

Tính toán giá trị min-ada-value

Số lượng ada tối thiểu bắt buộc phải có trong mỗi UTXO chỉ có ada mà không có dữ liệu bổ sung (tức là UTXO chỉ chứa địa chỉ và số lượng ada) là một tham số giao thức của hệ thống Cardano, được gọi là: minUTxOValue

Như vậy kích thước của một UTXO có giới hạn trên: adaOnlyUTXOSize

Chúng tôi có thể tính toán giới hạn trên về kích thước của UTXO u chứa token không phải ada: sizeBound (u).

Chúng tôi muốn tính min-ada cần thiết để chứa trong u: minAda (u)

Một lượng ada minUTXOValue trả cho adaOnlyUTXOSize byte UTXO lưu trữ trên sổ cái. Để làm cho giá trị min-ada-value tỷ lệ thuận với tất cả các UTXO, tỷ lệ sau phải được thỏa mãn:

MinUTXOValue / adaOnlyUTXOSize = minAda (u) / sizeBound (u)

Tính toán min-ada cho bất kỳ UTXO nào gần đúng với công thức trên. Điều này sử dụng các hằng số

coinSize = 0 (lưu ý: đây là lỗi triển khai và sẽ được thay đổi thành giá trị chính xác, 2, trong lần fork tiếp theo. Điều này sẽ làm giảm giá trị ada tối thiểu theo một tỷ lệ phần trăm nhỏ).

UtxoEntrySizeWithoutVal = 27

AdaOnlyUTxOSize = utxoEntrySizeWithoutVal + coinSize = 27

Các hàm được sử dụng trong công thức dưới đây là:

quot a b là thương của (a, b) tức là quot 11 5 = 2 bởi vì 11 = 5 * 2 + 1

NumAsset số lượng các AssetID khác nhau trong B, ví dụ. if B = [(policyID1, myAssetNameSBS, 10), (policyID1, yourAssetNameSBS, 5), (policyID2, someAssetNameSBS, 250), (policyID3, someAssetNameSBS, 43)]

NumAssets B = 4

NumPIDs: số lượng các PolicyID khác nhau trong B, ví dụ, nếu B như trên, numPID B = 3 (đó là policyID1, policyID2, policyID3)

SumAssetNameLengts: tổng độ dài của các chuỗi Byte đại diện cho tên các tài sản khác nhau, ví dụ: nếu B như trên,

sumAssetNameLengths B = length myAssetNameSBS + length yourAssetNameSBS + length someAssetNameSBS

pidSize: chiều dài hash của một chính sách (tức là chiều dài của chính sách). Các chiều dài này giống nhau đối với tất cả các chính sách và được quy định bởi thuật toán hashing hiện tại được sử dụng để tính toán các địa chỉ hash thanh toán và stake.

PidSize B = 28 hiện tại (cũng như trong kỷ nguyên tiếp theo)

RoundupBytesToWords chuyển đổi byte thành các lệnh dài 8 byte, làm tròn lên roundupBytesToWords b = quot (b + 7) 8

Size B là kích thước của gói token B trong các lệnh dài 8 byte: size B = 6 roundupBytesToWords (((numAssets B) * 12) + (sumAssetNameLengths B) + ((numPids B) * pidSize))

Đối với UTXO chứa gói token B, phép tính giá trị tối thiểu như sau:

  • Trường hợp 1: Gói token B trong UTXO u chỉ chứa ada (không có token nào khác)

minAda (u) = minUTxOValue

  • Trường hợp 2: Gói token B trong UTXO u chứa ada cũng như các token khác

minAda (u) = max (minUTxOValue, (quot (minUTxOValue, adaOnlyUTxOSize)) * (utxoEntrySizeWithoutVal + (size B)))

Như một hệ quả của thiết kế này,

  • Không thể tạo đầu ra chỉ chứa các token tùy chỉnh.
  • Số lượng mỗi loại token trong đầu ra không ảnh hưởng đến giá trị tối thiểu (min-ada-value) của đầu ra, nhưng số lượng loại token có trong đầu ra làm tăng giá trị tối thiểu (min-value).
  • Lý giải cho điều này là tên và policyID của mỗi loại token chiếm thêm không gian trong output.
  • Việc gửi token tùy chỉnh đến một địa chỉ luôn bao gồm việc gửi giá trị tối thiểu (min-ada-value) của ada đến địa chỉ đó cùng với token tùy chỉnh (bằng cách bao gồm ada trong cùng một output). Nếu – địa chỉ không thể sử dụng được bởi người dùng gửi token, thì ada được gửi cùng với token không còn thuộc về người gửi.
  • Trước khi chuyển token tùy chỉnh, người dùng có thể chọn sử dụng sự giao tiếp ngoài chuỗi để thương lượng xem ai cung cấp ada để trả phần min-ada-value trong đầu ra của giao dịch.
  • Để tìm lại được ada được lưu trữ cùng với token tùy chỉnh trong đầu ra O, người dùng phải: a) Sử dụng đầu ra O và lấy lại token tùy chỉnh được lưu trữ trong đó b) Sử dụng đầu ra O và đầu ra O ‘, và hợp nhất các mã trong đó với cùng một bộ sưu tập các loại token tùy chỉnh được lưu trữ trong một đầu ra khác (được chi tiêu trong cùng một giao dịch) Ví dụ: (CryptoDoggiesPolicy, poodle, 1) có trong O có thể được hợp nhất với (CryptoDoggiesPolicy, poodle, 3) trong O ‘, tổng cộng là (CryptoDoggiesPolicy, poodle, 4) trong một đầu ra mới được thực hiện bởi giao dịch hợp nhất.
  • Việc chia nhỏ các token tùy chỉnh thành nhiều đầu ra hơn chúng có trước khi giao dịch được xử lý đòi hỏi phải sử dụng tổng cộng nhiều ada hơn để bao gồm giá trị min-ada-value, vì ada là cần thiết trong các đầu ra bổ sung.

Yêu cầu giá trị ada tối thiểu