BigMap 컨테이너는 무엇이며 왜 중요한가요?
1 대답
- 투표
-
- 2019-02-22
- BigMap 컨테이너는 요청시 키당 읽기 또는 쓰기 만 가능한 특수지도 (사전)입니다.
이러한 용기를 갖게 된 동기는 다음과 같습니다. 다소 독립적 인 데이터를 많이 포함하는 계약이 있고 모든 데이터를 한 번에 읽고 쓰기를 원하지 않고 일부만 읽고 싶다고 가정 해 보겠습니다. 암호화 키티,컬렉션,STO (보안 토큰) 등을 생각해보십시오. 일반적으로 모든 것을로드하는 대신 필요한 부분에만 액세스하는 것이 훨씬 더 효율적인 리소스 (가스 및 실행 시간)입니다.
-
계약 당 하나의 제한은 실제로 Michelson 구현의 단순화를위한 것입니다.
-
오늘의 구현에서 BigMap이 하나만 있다는 것은map1과map2와 같은 두 가지가 필요한 경우 다음과 같은 작업을 수행하여map1과map2의 혼합을 인코딩해야 함을 의미합니다.
키=왼쪽 키 1| 오른쪽 키 2
두 개의지도를 갖고 싶은 예는 부동산과 소유자 또는 수집품과 소유자를 나타내는 계약일 수 있습니다. 일부 상품의 소유자 또는 일부 소유자의 상품에 액세스 할 수 있습니다.
개인적으로 Michelson에서 이러한 제한을 해제하는 것이 좋을 것이라고 생각합니다.
- 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.
-
불행히도 합계 유형은 비교할 수 없기 때문에 빅맵의 키로 사용할 수 없습니다 (합당한 이유 없음).sun 유형의 해시 또는 압축 된 바이트 표현을 사용해야합니다.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 인스턴스 만 허용되기 때문에 객체는 상대적으로 복잡해야합니다.
제 질문은 다음과 같습니다.