Suiでは、ネットワークの安全性と安定性を保証するために、いくつかの制限と制約が設けられています。これらの制限は、悪用を防ぎ、ネットワークが安定かつ効率的に機能するために必要です。このガイドでは、これらの制限と制約の概要と、それらの中でアプリケーションを構築する方法について説明します。

これらの制限はプロトコルの設定に定義されており、ネットワークによって強制されます。制限を超えると、トランザクションは拒否されるか中止されます。これらの制限はプロトコルの一部であり、ネットワークのアップグレードを通じてのみ変更できます。

トランザクションのサイズ

トランザクションのサイズは128KBに制限されています。これには、トランザクションのペイロード、署名、メタデータのサイズが含まれます。この制限を超えるトランザクションはネットワークによって拒否されます。

オブジェクトのサイズ

オブジェクトのサイズは256KBに制限されています。これにはオブジェクトデータのサイズが含まれます。この制限を超えるオブジェクトはネットワークによって拒否されます。単一のオブジェクトではこの制限を超えることはできませんが、基本オブジェクトに他のオブジェクトを動的フィールド(例:バッグ)を使って結びつけることで、より広範なストレージオプションを使用することが可能です。

単一純粋引数のサイズ

単一の純粋引数のサイズは16KBに制限されています。この制限を超えるトランザクション引数は実行失敗につながります。そのため、約500以上のアドレス(一つのアドレスは32バイト)を含むベクトルを作成する場合、トランザクションブロックまたはMove関数内で動的に結合する必要があります。vector::append()のような標準関数を使用して、約16KBの二つのベクトルを結合し、約32KBのデータを単一の値として扱うことができます。

作成可能なオブジェクトの最大数

単一トランザクションで作成可能なオブジェクトの最大数は2048です。2048を超えるオブジェクトを作成しようとするトランザクションは、ネットワークによって拒否されます。これは動的フィールドにも影響し、キーと値の両方がオブジェクトであるため、単一トランザクションで作成可能な動的フィールドの最大数は1024です。