BigMapコンテナとは何ですか?なぜそれが重要なのですか?
1 回答
- 投票
-
- 2019-02-22
- BigMapコンテナは、ストレージがオンデマンドでキーごとにのみ読み取りまたは書き込みされる特別なマップ(辞書)です.
このようなコンテナを使用する動機は次のとおりです.多かれ少なかれ独立したデータを多数含む契約があり、すべてのデータを一度に読み取り/書き込みするのではなく、その一部のみを読み取りたいとします.クリプトキティ、コレクション、STO(セキュリティトークン)などを考えてみてください. 一般に、すべてをロードするのではなく、必要な部分にのみアクセスする方が、リソースの面ではるかに効率的です(ガスと実行時間).
-
契約ごとに1つだけという制限は、Michelsonの実装を単純化するためのものです.
-
今日の実装では、BigMapが1つしかないということは、map1とmap2のような2つが必要な場合、次のようにしてmap1とmap2の混合をエンコードする必要があることを意味します.
key=左key1|右キー2
このようなマップを2つ作成したい例としては、不動産と所有者、または収集品と所有者を表す契約があります.一部の商品の所有者または一部の所有者の商品にアクセスすることをお勧めします.
個人的には、マイケルソンでこの制限を解除するのがいいと思います.
- The BigMap container is a special map (dictionary) whose storage is only read or written per key on demand.
The motivation to have such a container is the following. Suppose that you have a contract containing lots of more or less independent data and you don't want to read / write all of the data at once but only a small part of it. Think of crypto-kitties, collections, STOs (security tokens), etc. It is in general much more efficient resource wise (gas and execution time) to only access the part you need instead of loading everything.
The limitation of only one per contract is really for simplicity purposes in the Michelson implementation.
With today's implementation, having only one BigMap means that if you need two such things map1 and map2, you need to encode the mixing of map1 and map2 by doing something like:
key = Left key1 | Right key2
An example where you would wish to have two such maps can be a contract that represents real estate and owners or collectibles and owners. You may wish to access owners of some goods or goods of some owners.
I personally think that lifting this restriction in Michelson would be nice.
-
残念ながら、合計タイプは比較できないため(正当な理由がないため)、合計タイプをビッグマップのキーとして使用することはできません.太陽型のハッシュ、またはそのパックされたバイト表現を使用する必要があります.Unfortunately, you can't use sum types as keys to bigmaps because sum types aren't comparable (for no good reason). You would have to use the hash of the sun type, or its packed byte representation.
- 1
- 2019-03-19
- Arthur B
-
@ArthurBこの回答を書いたとき、私はこの制限を逃しました.精度をありがとう.最終的にこの制限を解除することは合理的かもしれません(そして私が推測するユニットとオプションも同様に行います).@ArthurB I missed this limitation when I wrote this answer. Thanks for the precision. It might be reasonable to lift this restriction eventually (and do unit and option as well I guess).
- 0
- 2019-03-19
- FFF
-
...とペア. はい、これらのタイプを比較できるようにするのは非常に簡単なパッチです... and Pair. And yes, it's a pretty straightforward patch to make these types comparable
- 1
- 2019-03-20
- Arthur B
Tezosは、スマートコントラクト内にデータを保存するために、BigMapと呼ばれる特定の種類のコンテナーを利用していると多くの場所で聞いています.
これまでのところ、単一のスマートコントラクト内で許可されるBigMapインスタンスは1つだけであるため、オブジェクトは比較的複雑である必要があります.
私の質問は次のとおりです: