From cd5b76a413701c65742c94dc1ee93f2742d6982b Mon Sep 17 00:00:00 2001 From: huancheng-trili <168652455+huancheng-trili@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:13:11 +0100 Subject: [PATCH] fix: Fix method BigmapTypeDetection (#17) --- micheline/script.go | 49 ++++++++++++++++++++++++------------------ micheline/type_test.go | 32 +++++++++++++++++---------- 2 files changed, 49 insertions(+), 32 deletions(-) diff --git a/micheline/script.go b/micheline/script.go index 2a5f047..ec62362 100644 --- a/micheline/script.go +++ b/micheline/script.go @@ -367,39 +367,46 @@ func DetectBigmapTypes(typ Prim) map[string]Type { } _ = typ.Walk(func(p Prim) error { switch p.OpCode { - case T_BIG_MAP: - named[uniqueName(p.GetVarAnnoAny())] = NewType(p) - return PrimSkip + case K_STORAGE: + // The root node of the storage primitive; do nothing and continue + return nil + case T_MAP: - if p.Args[1].OpCode != T_BIG_MAP { - return PrimSkip + key := p.Args[0].String + if key == "" { + key = fmt.Sprint(p.Args[0].Hash64()) } - name := p.GetVarAnnoAny() - if n := p.Args[1].GetVarAnnoAny(); n != "" { - name = n + // Map's value type definition is in its second argument + for _, v := range DetectBigmapTypes(p.Args[1]) { + named[uniqueName(key)] = v } - named[uniqueName(name)] = NewType(p.Args[1]) return PrimSkip - case T_LIST: - if p.Args[0].OpCode != T_BIG_MAP { - return PrimSkip - } - name := p.GetVarAnnoAny() - if n := p.Args[0].GetVarAnnoAny(); n != "" { - name = n + + case T_BIG_MAP: + named[uniqueName(p.GetVarAnnoAny())] = NewType(p) + return PrimSkip + + case T_LIST, T_OPTION: + // Type definition of list items and option values is in the + // first (and the only) argument of the primitive + for n, v := range DetectBigmapTypes(p.Args[0]) { + named[uniqueName(n)] = v } - named[uniqueName(name)] = NewType(p.Args[0]) return PrimSkip - case T_LAMBDA: + case T_OR, T_PAIR: + // OR candidates are defined in the arguments of the OR primitive + for _, arg := range p.Args { + for n, v := range DetectBigmapTypes(arg) { + named[uniqueName(n)] = v + } + } return PrimSkip default: - // return PrimSkip - return nil + return PrimSkip } }) - return named } diff --git a/micheline/type_test.go b/micheline/type_test.go index 2307772..6cb7131 100644 --- a/micheline/type_test.go +++ b/micheline/type_test.go @@ -424,14 +424,12 @@ var bigmapDetectTests = []bigmapDetectTest{ Value: `{"prim":"Pair","args":[{"prim":"Pair","args":[{"int":"5316609"},{"int":"20480"},{"int":"86400"},{"int":"20"},{"int":"100"},{"int":"1"},{"int":"5"},{"int":"75"}]},{"prim":"Some","args":[{"prim":"Pair","args":[{"int":"39"},{"prim":"Left","args":[{"prim":"Pair","args":[{"int":"652701"},{"int":"652702"},{"int":"652703"},{"prim":"None"},{"prim":"None"},{"int":"668907990893488"}]}]}]}]},{"prim":"Some","args":[{"prim":"Pair","args":[{"bytes":"00e58c94bd5a793b09e8b127a1fcf4958c72ca6f86078a78760b41415fb3a7801d"},{"int":"652704"}]}]},{"int":"619238"}]}`, Expect: map[string]int64{"upvoters_upvotes_count": 652701, "upvoters_proposals": 652702, "proposals": 652703, "trigger_history": 652704, "metadata": 619238}, }, - /* - { - Name: "KT1CRyVS5t8JSoj3ADXwt422vSm7uRxubyWQ_test_list", - Type: `{"prim":"storage","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"nat","annots":["%adminsMax"]},{"prim":"nat","annots":["%memberRequestMax"]}]},{"prim":"nat","annots":["%organizationMax"]}],"annots":["%limits"]},{"prim":"address","annots":["%nftAddress"]}]},{"prim":"list","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"set","args":[{"prim":"address"}],"annots":["%admins"]},{"prim":"string","annots":["%business"]}]},{"prim":"option","args":[{"prim":"address"}],"annots":["%fundingAddress"]},{"prim":"string","annots":["%ipfsNftUrl"]}]},{"prim":"pair","args":[{"prim":"string","annots":["%logoUrl"]},{"prim":"set","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"string","annots":["%contactId"]},{"prim":"string","annots":["%contactIdProvider"]}]},{"prim":"string","annots":["%orgName"]},{"prim":"string","annots":["%reason"]}],"annots":["%joinRequest"]},{"prim":"address","annots":["%user"]}]}],"annots":["%memberRequests"]}]},{"prim":"big_map","args":[{"prim":"address"},{"prim":"unit"}],"annots":["%members"]},{"prim":"string","annots":["%name"]}]},{"prim":"string","annots":["%siteUrl"]},{"prim":"or","args":[{"prim":"or","args":[{"prim":"unit","annots":["%active"]},{"prim":"unit","annots":["%frozen"]}]},{"prim":"unit","annots":["%pendingApproval"]}],"annots":["%status"]}]}],"annots":["%organizations"]},{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"set","args":[{"prim":"address"}],"annots":["%admins"]},{"prim":"string","annots":["%business"]}]},{"prim":"option","args":[{"prim":"address"}],"annots":["%fundingAddress"]},{"prim":"string","annots":["%ipfsNftUrl"]}]},{"prim":"pair","args":[{"prim":"string","annots":["%logoUrl"]},{"prim":"set","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"string","annots":["%contactId"]},{"prim":"string","annots":["%contactIdProvider"]}]},{"prim":"string","annots":["%orgName"]},{"prim":"string","annots":["%reason"]}],"annots":["%joinRequest"]},{"prim":"address","annots":["%user"]}]}],"annots":["%memberRequests"]}]},{"prim":"big_map","args":[{"prim":"address"},{"prim":"unit"}],"annots":["%members"]},{"prim":"string","annots":["%name"]}]},{"prim":"string","annots":["%siteUrl"]},{"prim":"or","args":[{"prim":"or","args":[{"prim":"unit","annots":["%active"]},{"prim":"unit","annots":["%frozen"]}]},{"prim":"unit","annots":["%pendingApproval"]}],"annots":["%status"]}],"annots":["%tezosOrganization"]}]}]}`, - Value: `{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"int":"50"},{"int":"50"}]},{"int":"1000"}]},{"string":"KT1VeeSjhKRjr6qbFiGWjiuHXTxbfMqHiZR8"}]},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1cBifXeAimEXewxjuisUUZ6PwvdRRLNpAB"}],{"string":"Block Born is a tournament platform for gamers on Tezos and a content management system for game studios."}]},{"prim":"Some","args":[{"string":"tz1cBifXeAimEXewxjuisUUZ6PwvdRRLNpAB"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://storage.googleapis.com/block-born-prod/assets/Logo%40500x500.png"},[]]},{"int":"488518"},{"string":"Block Born"}]},{"string":"https://blockborn.gg/"},{"prim":"Right","args":[{"prim":"Unit"}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1d473kD8ctsHnJVtmoLAGW1wBZzYzMuU7n"}],{"string":"Decentralized lending and borrowing platform on Tezos blockchain. Lending pools guided by an automated interest rate market maker "}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":""},[]]},{"int":"483020"},{"string":"TezFin (Tezos Finance)"}]},{"string":"https://tezos.finance"},{"prim":"Right","args":[{"prim":"Unit"}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QssZXqqGznmaj5mEK53mtbjsnaasfo1Nf"}],{"string":"The Plenty team is building an all-in-one decentralized platform on Tezos. Plenty DEX allows swaps on uncorrelated assets, low-cost trades on tightly correlated assets, and features a bridge from Ethereum and Polygon to Tezos. Plenty manages Ctez, a synth"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://uploads-ssl.webflow.com/6307b856943c0f1358714dab/6307be3a634c24b505d20cb3_plentyIcon.svg"},[]]},{"int":"478686"},{"string":"Plenty Labs"}]},{"string":""},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"BatBits is a colony of cute Batsies, living in a cave on Tezos ecosystem! It's a community driven project which tries to give back to the community and to support the artists!"}]},{"prim":"Some","args":[{"string":"tz1bZ7eUmhbV99wy3qZxJXrTAVj3LARQq791"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://twitter.com/batbitsofficial/photo"},[]]},{"int":"471429"},{"string":"BatBits"}]},{"string":"https://batbits.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1UZZnrre9H7KzAufFVm7ubuJh5cCfjGwam"},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"Chainborn is a TCG for existing pfp collections on Tezos. You can summon a Hero from one of your existing NFT pfp collections and start battling other Heroes for fame and glory. By engaging in battles a Hero gains experience to become stronger!"}]},{"prim":"Some","args":[{"string":"tz1Tj4ZaQSnQiUEom25v8qb573XFwT32obhQ"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://chainborn.xyz/static/media/logo-big-color.8c8a0cec.webp"},[]]},{"int":"471422"},{"string":"Chainborn"}]},{"string":"https://chainborn.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"This project is all about charity and helping those in need - may it be animals or humans!"}]},{"prim":"Some","args":[{"string":"tz1PLQv5F7qvzjRZKrgB8Nt9vxifqigdvM18"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/952344765939208244/1116808941091950642/IMG_20230503_124736.jpg"},[]]},{"int":"471416"},{"string":"First Rain Charity"}]},{"string":"https://objkt.com/profile/firstraincharity/collections"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"I'm a hobby photographer who also likes to write. I try to combine these two passions with my NFTs. At the same time I try to bring some awereness of mental health and that each and everyone of us is beautiful and important."}]},{"prim":"Some","args":[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/952344765939208244/1116808523041488896/Profilbild.jpg"},[]]},{"int":"471403"},{"string":"First Rain"}]},{"string":"https://objkt.com/profile/firstrain/collections"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1MY1BKQd2QFDDsjCpkKi6vVDxPKycGiJA3"}],{"string":"IP and World Building"}]},{"prim":"Some","args":[{"string":"tz1MY1BKQd2QFDDsjCpkKi6vVDxPKycGiJA3"}]},{"string":""}]},{"prim":"Pair","args":[{"string":""},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Vessels"},{"string":"I'm your number one fan!"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"471259"},{"string":"Vessels"}]},{"string":"https://vesselsproject.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1PaCaFf6cf6tL8vkVE71WELKuYXyoSG5C6"},{"string":"tz1i35AGt1HS1FKN1Mqw4DuCMYHvWAHnUT3H"}],{"string":"Creation, Collection, Exhibition and Education of Blockchain/Crypto/Generative Art"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://images.squarespace-cdn.com/content/v1/621e19e02a75bc5e24ce9a20/377b2c63-db90-4369-8b0a-3e47a5f2f6f4/Frame.png?format=1500w"},[]]},{"int":"471053"},{"string":"Volume DAO"}]},{"string":"https://www.volumedao.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1ZW6AvZCjSvz5xARo2L9QVKq3ofHU6Z6Hc"}],{"string":"Human-readable names on Tezos"}]},{"prim":"Some","args":[{"string":"KT1W56o8dK5En5hM46VsD1zKtgpqWPhs3bLh"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://app.tezos.domains/assets/img/logo_notext.svg"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Tezos Domains"},{"string":"Because I'm using tez domains myself and I think it's a good thing. =)"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"470833"},{"string":"Tezos Domains"}]},{"string":"https://tezos.domains"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}],{"string":"An artistic expansion to the Ottez project. 5993 evolved Ottez are now on Tezos."}]},{"prim":"Some","args":[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://assets.objkt.media/file/assets-002/collection-logos/ottez_evolution.png"},[]]},{"int":"470466"},{"string":"Ottez Evolution"}]},{"string":"https://www.ottez.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}],{"string":"Humans are gone, Ottez have moved in. 4,007 generative artworks on the Tezos blockchain."}]},{"prim":"Some","args":[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://assets.objkt.media/file/assets-002/collection-logos/ottez.png"},[]]},{"int":"470460"},{"string":"Ottez"}]},{"string":"https://www.ottez.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz2HZsWyZvQfq8whWk3N2oKozaeFBNoPxP9D"}],{"string":"TZ APAC Pte. Ltd. (\"TZ APAC\") is the leading Asia-based blockchain adoption entity supporting the Tezos ecosystem. "}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":""},[]]},{"int":"469614"},{"string":"TZ APAC "}]},{"string":""},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1RZN17j7FuPtDpGpXKgMXbx57WEhpZGF6B"}],{"string":"We are a community driven project and we thrive to be a neutral hub for the tezos community to discuss everything tezos. We wanna learn together, hang out together and have some fun together."}]},{"prim":"Some","args":[{"string":"tz1RZN17j7FuPtDpGpXKgMXbx57WEhpZGF6B"}]},{"string":"Didn't get the member card yet but claimed it already =)"}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/973238864342839357/1116093223119618220/ron_west_TTC_logo_01.jpg"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@webidente"},{"string":"TWITTER"}]},{"string":"TheTezosCommunity"},{"string":"most open and inclusive community"}]},{"string":"tz2K1rDmszPuzVQYUcyDFxeSm7ZEJdDvhXx4"}]}]]},{"int":"469228"},{"string":"TheTezosCommunity"}]},{"string":"https://zealy.io/c/thetezoscommunity/questboard"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1ZMeJMXynXg5v8DaciSZjz3hmsxqZjaEnu"}],{"string":"Tezos core developer"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.dailambda.jp/img/triangle.png"},[]]},{"int":"468241"},{"string":"DaiLambda, Inc."}]},{"string":"https://dailamba.jp"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1LRHZKL44bCSV1pKmwTyh9ghiSCc3LyJoA"}],{"string":"vDL Digital Ventures GmbH"}]},{"prim":"Some","args":[{"string":"tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://avatars.githubusercontent.com/u/104824659?s=200&v=4"},[]]},{"int":"465577"},{"string":"StakeNow"}]},{"string":"https://vdl.digital/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1STaURypfCdS7FRkK5csHhi8eqdSs8CcPt"},{"string":"tz1XtjZTzEM6EQ3TnUPUQviCD6WfcsZRHXbj"},{"string":"tz1g6JRCpsEnD2BLiAzPNK3GBD1fKicV9rCx"}],{"string":"Community powered art platform on the Tezos Blockchain"}]},{"prim":"Some","args":[{"string":"KT1J9FYz29RBQi1oGLw8uXyACrzXzV1dHuvb"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://ipfs.io/ipfs/QmdNYgc5crenyLGViykvcnW3sAfC8XE59fWyv7Q7mTTBGH"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Teia DAO LLC"},{"string":"Because I'm your number 1 fan!"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"465578"},{"string":"Teia DAO LLC"}]},{"string":"https://teia.art"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QoiKkkjzNrqGEi7URiWr9nH26xbyJqvf3"}],{"string":"Functori is a R&D company created by experienced engineers in programming languages (particularly OCaml and Rust), formal verification (automated reasoning, model checking), and blockchain technology (core, smart contracts and applications development)."}]},{"prim":"Some","args":[{"string":"tz1QoiKkkjzNrqGEi7URiWr9nH26xbyJqvf3"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.functori.com/assets/img/brand/functori_logotype_square.svg"},[]]},{"int":"465579"},{"string":"Functori"}]},{"string":"https://www.functori.com/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1LB2f981WfmnXhz42hxybpabx1C7Js8f2y"},{"string":"tz1h5GajcQWq4ybaWuwSiYrR5PvmUxndm8T8"}],{"string":"Tezos core protocol and adoption"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://bit.ly/MarigolddevLogo"},[]]},{"int":"465580"},{"string":"Marigold"}]},{"string":"https://www.marigold.dev/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}],{"string":"News, projects, artists and events ; the only online media to gather the French Tezos community"}]},{"prim":"Some","args":[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://pbs.twimg.com/profile_images/1567279396590870529/tS9DP6ax_400x400.jpg"},[]]},{"int":"465581"},{"string":"Tezos France"}]},{"string":"https://tezosfrance.substack.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}],{"string":"PyratzLabs is the first Startup Studio fully specialized in Web3. We take innovative ideas from concept all the way through to launch, using our expertise in market leading Technology, Funding & Advisory."}]},{"prim":"Some","args":[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://uploads-ssl.webflow.com/63808b3b41be273d52703f26/63808b3b41be27dd8e703f60_logo-piratz-lab.svg"},[]]},{"int":"465582"},{"string":"Pyratz Labs"}]},{"string":"https://pyratzlabs.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1KmELgMMvCGamLRyMNr9qDoNaPBvDDBQux"}],{"string":"Tezos India, a Bengaluru-based startup funded by Tezos Foundation, promotes blockchain adoption in India. We tackle barriers to adoption by focusing on developer adoption, education, training, and ecosystem development. Advancing innovation in the Indian blockchain space is their goal."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://images.yourstory.com/cs/images/companies/zN5FSNQj400x4001-1646805134262.jpg"},[]]},{"int":"465583"},{"string":"TZ INDIA PVT. LTD"}]},{"string":"https://tezosindia.org.in/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QVzFA321GhZEBpvR7tEV2Tzd95wCQ74UD"}],{"string":"Research, development and key infrastructure support for the Tezos community."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.oxheadalpha.com/images/oxheadalpha.svg"},[]]},{"int":"465584"},{"string":"Oxhead Alpha"}]},{"string":"https://www.oxheadalpha.com/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1b1sH2FmuVazszFdkUn8GvfvZpNxSa7C8J"}],{"string":"alterHEN is a collective of artists exploring the cultural economy of NFT's, with a mission to present these transformative new models to the art world as accessible, art-focused and exciting opportunities that will benefit museums, curators, festivals and artists."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://pbs.twimg.com/profile_images/1438787875169054725/nQW0PNQp.jpg"},[]]},{"int":"465585"},{"string":"alterHEN"}]},{"string":"https://alterhen.art/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1SRqikWtR2KNpugCApreA9QeZuqh8swQMa"}],{"string":"The Tezos Commons Foundation empowers the community to be the architects through bootstrapping local communities, communications, promotion, education, funding open source initiatives and advocacy."}]},{"prim":"None"},{"string":"ipfs://QmZKSrCZwp9XmZQ2GiSdZ73RWpEGcrocAAiYU7CzZi3gBj"}]},{"prim":"Pair","args":[{"string":"https://gateway.pinata.cloud/ipfs/QmZKSrCZwp9XmZQ2GiSdZ73RWpEGcrocAAiYU7CzZi3gBj"},[]]},{"int":"465586"},{"string":"Tezos Commons"}]},{"string":"https://tezoscommons.org/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]}],{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1h5GajcQWq4ybaWuwSiYrR5PvmUxndm8T8"}],{"string":"Save the planet"}]},{"prim":"None"},{"string":"ipfs://QmdHrYEHaaDQBXVF7vZJXudLgeMaeoiPE4UuGapMNe25ej"}]},{"prim":"Pair","args":[{"string":"https://bit.ly/TZIMAGE"},[]]},{"int":"465587"},{"string":"TEZOS"}]},{"string":"https://tezos.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]}`, - Expect: map[string]int64{"members": 488518, "members_0": 483020, "members_1": 478686, "members_2": 471429, "members_3": 471422, "members_4": 471416, "members_5": 471403, "members_6": 471259, "members_7": 471053, "members_8": 470833, "members_9": 470466, "members_10": 470460, "members_11": 469614, "members_12": 469228, "members_13": 468241, "members_14": 465577, "members_15": 465578, "members_16": 465579, "members_17": 465580, "members_18": 465581, "members_19": 465582, "members_20": 465583, "members_21": 465584, "members_22": 465585, "members_23": 465586, "members_24": 465587}, - }, - */ + { + Name: "KT1CRyVS5t8JSoj3ADXwt422vSm7uRxubyWQ_test_list", + Type: `{"prim":"storage","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"nat","annots":["%adminsMax"]},{"prim":"nat","annots":["%memberRequestMax"]}]},{"prim":"nat","annots":["%organizationMax"]}],"annots":["%limits"]},{"prim":"address","annots":["%nftAddress"]}]},{"prim":"list","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"set","args":[{"prim":"address"}],"annots":["%admins"]},{"prim":"string","annots":["%business"]}]},{"prim":"option","args":[{"prim":"address"}],"annots":["%fundingAddress"]},{"prim":"string","annots":["%ipfsNftUrl"]}]},{"prim":"pair","args":[{"prim":"string","annots":["%logoUrl"]},{"prim":"set","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"string","annots":["%contactId"]},{"prim":"string","annots":["%contactIdProvider"]}]},{"prim":"string","annots":["%orgName"]},{"prim":"string","annots":["%reason"]}],"annots":["%joinRequest"]},{"prim":"address","annots":["%user"]}]}],"annots":["%memberRequests"]}]},{"prim":"big_map","args":[{"prim":"address"},{"prim":"unit"}],"annots":["%members"]},{"prim":"string","annots":["%name"]}]},{"prim":"string","annots":["%siteUrl"]},{"prim":"or","args":[{"prim":"or","args":[{"prim":"unit","annots":["%active"]},{"prim":"unit","annots":["%frozen"]}]},{"prim":"unit","annots":["%pendingApproval"]}],"annots":["%status"]}]}],"annots":["%organizations"]},{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"set","args":[{"prim":"address"}],"annots":["%admins"]},{"prim":"string","annots":["%business"]}]},{"prim":"option","args":[{"prim":"address"}],"annots":["%fundingAddress"]},{"prim":"string","annots":["%ipfsNftUrl"]}]},{"prim":"pair","args":[{"prim":"string","annots":["%logoUrl"]},{"prim":"set","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"pair","args":[{"prim":"string","annots":["%contactId"]},{"prim":"string","annots":["%contactIdProvider"]}]},{"prim":"string","annots":["%orgName"]},{"prim":"string","annots":["%reason"]}],"annots":["%joinRequest"]},{"prim":"address","annots":["%user"]}]}],"annots":["%memberRequests"]}]},{"prim":"big_map","args":[{"prim":"address"},{"prim":"unit"}],"annots":["%members"]},{"prim":"string","annots":["%name"]}]},{"prim":"string","annots":["%siteUrl"]},{"prim":"or","args":[{"prim":"or","args":[{"prim":"unit","annots":["%active"]},{"prim":"unit","annots":["%frozen"]}]},{"prim":"unit","annots":["%pendingApproval"]}],"annots":["%status"]}],"annots":["%tezosOrganization"]}]}]}`, + Value: `{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"int":"50"},{"int":"50"}]},{"int":"1000"}]},{"string":"KT1VeeSjhKRjr6qbFiGWjiuHXTxbfMqHiZR8"}]},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1cBifXeAimEXewxjuisUUZ6PwvdRRLNpAB"}],{"string":"Block Born is a tournament platform for gamers on Tezos and a content management system for game studios."}]},{"prim":"Some","args":[{"string":"tz1cBifXeAimEXewxjuisUUZ6PwvdRRLNpAB"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://storage.googleapis.com/block-born-prod/assets/Logo%40500x500.png"},[]]},{"int":"488518"},{"string":"Block Born"}]},{"string":"https://blockborn.gg/"},{"prim":"Right","args":[{"prim":"Unit"}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1d473kD8ctsHnJVtmoLAGW1wBZzYzMuU7n"}],{"string":"Decentralized lending and borrowing platform on Tezos blockchain. Lending pools guided by an automated interest rate market maker "}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":""},[]]},{"int":"483020"},{"string":"TezFin (Tezos Finance)"}]},{"string":"https://tezos.finance"},{"prim":"Right","args":[{"prim":"Unit"}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QssZXqqGznmaj5mEK53mtbjsnaasfo1Nf"}],{"string":"The Plenty team is building an all-in-one decentralized platform on Tezos. Plenty DEX allows swaps on uncorrelated assets, low-cost trades on tightly correlated assets, and features a bridge from Ethereum and Polygon to Tezos. Plenty manages Ctez, a synth"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://uploads-ssl.webflow.com/6307b856943c0f1358714dab/6307be3a634c24b505d20cb3_plentyIcon.svg"},[]]},{"int":"478686"},{"string":"Plenty Labs"}]},{"string":""},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"BatBits is a colony of cute Batsies, living in a cave on Tezos ecosystem! It's a community driven project which tries to give back to the community and to support the artists!"}]},{"prim":"Some","args":[{"string":"tz1bZ7eUmhbV99wy3qZxJXrTAVj3LARQq791"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://twitter.com/batbitsofficial/photo"},[]]},{"int":"471429"},{"string":"BatBits"}]},{"string":"https://batbits.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1UZZnrre9H7KzAufFVm7ubuJh5cCfjGwam"},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"Chainborn is a TCG for existing pfp collections on Tezos. You can summon a Hero from one of your existing NFT pfp collections and start battling other Heroes for fame and glory. By engaging in battles a Hero gains experience to become stronger!"}]},{"prim":"Some","args":[{"string":"tz1Tj4ZaQSnQiUEom25v8qb573XFwT32obhQ"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://chainborn.xyz/static/media/logo-big-color.8c8a0cec.webp"},[]]},{"int":"471422"},{"string":"Chainborn"}]},{"string":"https://chainborn.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"This project is all about charity and helping those in need - may it be animals or humans!"}]},{"prim":"Some","args":[{"string":"tz1PLQv5F7qvzjRZKrgB8Nt9vxifqigdvM18"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/952344765939208244/1116808941091950642/IMG_20230503_124736.jpg"},[]]},{"int":"471416"},{"string":"First Rain Charity"}]},{"string":"https://objkt.com/profile/firstraincharity/collections"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}],{"string":"I'm a hobby photographer who also likes to write. I try to combine these two passions with my NFTs. At the same time I try to bring some awereness of mental health and that each and everyone of us is beautiful and important."}]},{"prim":"Some","args":[{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/952344765939208244/1116808523041488896/Profilbild.jpg"},[]]},{"int":"471403"},{"string":"First Rain"}]},{"string":"https://objkt.com/profile/firstrain/collections"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1MY1BKQd2QFDDsjCpkKi6vVDxPKycGiJA3"}],{"string":"IP and World Building"}]},{"prim":"Some","args":[{"string":"tz1MY1BKQd2QFDDsjCpkKi6vVDxPKycGiJA3"}]},{"string":""}]},{"prim":"Pair","args":[{"string":""},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Vessels"},{"string":"I'm your number one fan!"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"471259"},{"string":"Vessels"}]},{"string":"https://vesselsproject.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1PaCaFf6cf6tL8vkVE71WELKuYXyoSG5C6"},{"string":"tz1i35AGt1HS1FKN1Mqw4DuCMYHvWAHnUT3H"}],{"string":"Creation, Collection, Exhibition and Education of Blockchain/Crypto/Generative Art"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://images.squarespace-cdn.com/content/v1/621e19e02a75bc5e24ce9a20/377b2c63-db90-4369-8b0a-3e47a5f2f6f4/Frame.png?format=1500w"},[]]},{"int":"471053"},{"string":"Volume DAO"}]},{"string":"https://www.volumedao.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1ZW6AvZCjSvz5xARo2L9QVKq3ofHU6Z6Hc"}],{"string":"Human-readable names on Tezos"}]},{"prim":"Some","args":[{"string":"KT1W56o8dK5En5hM46VsD1zKtgpqWPhs3bLh"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://app.tezos.domains/assets/img/logo_notext.svg"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Tezos Domains"},{"string":"Because I'm using tez domains myself and I think it's a good thing. =)"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"470833"},{"string":"Tezos Domains"}]},{"string":"https://tezos.domains"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}],{"string":"An artistic expansion to the Ottez project. 5993 evolved Ottez are now on Tezos."}]},{"prim":"Some","args":[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://assets.objkt.media/file/assets-002/collection-logos/ottez_evolution.png"},[]]},{"int":"470466"},{"string":"Ottez Evolution"}]},{"string":"https://www.ottez.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}],{"string":"Humans are gone, Ottez have moved in. 4,007 generative artworks on the Tezos blockchain."}]},{"prim":"Some","args":[{"string":"tz29DrxbfkcfpUveVGsmhgvWqjgkVtGXbQyP"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://assets.objkt.media/file/assets-002/collection-logos/ottez.png"},[]]},{"int":"470460"},{"string":"Ottez"}]},{"string":"https://www.ottez.xyz/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz2HZsWyZvQfq8whWk3N2oKozaeFBNoPxP9D"}],{"string":"TZ APAC Pte. Ltd. (\"TZ APAC\") is the leading Asia-based blockchain adoption entity supporting the Tezos ecosystem. "}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":""},[]]},{"int":"469614"},{"string":"TZ APAC "}]},{"string":""},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1RZN17j7FuPtDpGpXKgMXbx57WEhpZGF6B"}],{"string":"We are a community driven project and we thrive to be a neutral hub for the tezos community to discuss everything tezos. We wanna learn together, hang out together and have some fun together."}]},{"prim":"Some","args":[{"string":"tz1RZN17j7FuPtDpGpXKgMXbx57WEhpZGF6B"}]},{"string":"Didn't get the member card yet but claimed it already =)"}]},{"prim":"Pair","args":[{"string":"https://cdn.discordapp.com/attachments/973238864342839357/1116093223119618220/ron_west_TTC_logo_01.jpg"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@webidente"},{"string":"TWITTER"}]},{"string":"TheTezosCommunity"},{"string":"most open and inclusive community"}]},{"string":"tz2K1rDmszPuzVQYUcyDFxeSm7ZEJdDvhXx4"}]}]]},{"int":"469228"},{"string":"TheTezosCommunity"}]},{"string":"https://zealy.io/c/thetezoscommunity/questboard"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1ZMeJMXynXg5v8DaciSZjz3hmsxqZjaEnu"}],{"string":"Tezos core developer"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.dailambda.jp/img/triangle.png"},[]]},{"int":"468241"},{"string":"DaiLambda, Inc."}]},{"string":"https://dailamba.jp"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1LRHZKL44bCSV1pKmwTyh9ghiSCc3LyJoA"}],{"string":"vDL Digital Ventures GmbH"}]},{"prim":"Some","args":[{"string":"tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://avatars.githubusercontent.com/u/104824659?s=200&v=4"},[]]},{"int":"465577"},{"string":"StakeNow"}]},{"string":"https://vdl.digital/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1STaURypfCdS7FRkK5csHhi8eqdSs8CcPt"},{"string":"tz1XtjZTzEM6EQ3TnUPUQviCD6WfcsZRHXbj"},{"string":"tz1g6JRCpsEnD2BLiAzPNK3GBD1fKicV9rCx"}],{"string":"Community powered art platform on the Tezos Blockchain"}]},{"prim":"Some","args":[{"string":"KT1J9FYz29RBQi1oGLw8uXyACrzXzV1dHuvb"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://ipfs.io/ipfs/QmdNYgc5crenyLGViykvcnW3sAfC8XE59fWyv7Q7mTTBGH"},[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"@_FirstRain_"},{"string":"TWITTER"}]},{"string":"Teia DAO LLC"},{"string":"Because I'm your number 1 fan!"}]},{"string":"tz1a95jRX4Z9WG7iHbPXZoQMLB9qN6wJvp4W"}]}]]},{"int":"465578"},{"string":"Teia DAO LLC"}]},{"string":"https://teia.art"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QoiKkkjzNrqGEi7URiWr9nH26xbyJqvf3"}],{"string":"Functori is a R&D company created by experienced engineers in programming languages (particularly OCaml and Rust), formal verification (automated reasoning, model checking), and blockchain technology (core, smart contracts and applications development)."}]},{"prim":"Some","args":[{"string":"tz1QoiKkkjzNrqGEi7URiWr9nH26xbyJqvf3"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.functori.com/assets/img/brand/functori_logotype_square.svg"},[]]},{"int":"465579"},{"string":"Functori"}]},{"string":"https://www.functori.com/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1LB2f981WfmnXhz42hxybpabx1C7Js8f2y"},{"string":"tz1h5GajcQWq4ybaWuwSiYrR5PvmUxndm8T8"}],{"string":"Tezos core protocol and adoption"}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://bit.ly/MarigolddevLogo"},[]]},{"int":"465580"},{"string":"Marigold"}]},{"string":"https://www.marigold.dev/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}],{"string":"News, projects, artists and events ; the only online media to gather the French Tezos community"}]},{"prim":"Some","args":[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://pbs.twimg.com/profile_images/1567279396590870529/tS9DP6ax_400x400.jpg"},[]]},{"int":"465581"},{"string":"Tezos France"}]},{"string":"https://tezosfrance.substack.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}],{"string":"PyratzLabs is the first Startup Studio fully specialized in Web3. We take innovative ideas from concept all the way through to launch, using our expertise in market leading Technology, Funding & Advisory."}]},{"prim":"Some","args":[{"string":"tz1iAuFqKbnrK6p18di4CEdVCZgB7X5tS4hX"}]},{"string":""}]},{"prim":"Pair","args":[{"string":"https://uploads-ssl.webflow.com/63808b3b41be273d52703f26/63808b3b41be27dd8e703f60_logo-piratz-lab.svg"},[]]},{"int":"465582"},{"string":"Pyratz Labs"}]},{"string":"https://pyratzlabs.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1KmELgMMvCGamLRyMNr9qDoNaPBvDDBQux"}],{"string":"Tezos India, a Bengaluru-based startup funded by Tezos Foundation, promotes blockchain adoption in India. We tackle barriers to adoption by focusing on developer adoption, education, training, and ecosystem development. Advancing innovation in the Indian blockchain space is their goal."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://images.yourstory.com/cs/images/companies/zN5FSNQj400x4001-1646805134262.jpg"},[]]},{"int":"465583"},{"string":"TZ INDIA PVT. LTD"}]},{"string":"https://tezosindia.org.in/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1QVzFA321GhZEBpvR7tEV2Tzd95wCQ74UD"}],{"string":"Research, development and key infrastructure support for the Tezos community."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://www.oxheadalpha.com/images/oxheadalpha.svg"},[]]},{"int":"465584"},{"string":"Oxhead Alpha"}]},{"string":"https://www.oxheadalpha.com/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1b1sH2FmuVazszFdkUn8GvfvZpNxSa7C8J"}],{"string":"alterHEN is a collective of artists exploring the cultural economy of NFT's, with a mission to present these transformative new models to the art world as accessible, art-focused and exciting opportunities that will benefit museums, curators, festivals and artists."}]},{"prim":"None"},{"string":""}]},{"prim":"Pair","args":[{"string":"https://pbs.twimg.com/profile_images/1438787875169054725/nQW0PNQp.jpg"},[]]},{"int":"465585"},{"string":"alterHEN"}]},{"string":"https://alterhen.art/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1SRqikWtR2KNpugCApreA9QeZuqh8swQMa"}],{"string":"The Tezos Commons Foundation empowers the community to be the architects through bootstrapping local communities, communications, promotion, education, funding open source initiatives and advocacy."}]},{"prim":"None"},{"string":"ipfs://QmZKSrCZwp9XmZQ2GiSdZ73RWpEGcrocAAiYU7CzZi3gBj"}]},{"prim":"Pair","args":[{"string":"https://gateway.pinata.cloud/ipfs/QmZKSrCZwp9XmZQ2GiSdZ73RWpEGcrocAAiYU7CzZi3gBj"},[]]},{"int":"465586"},{"string":"Tezos Commons"}]},{"string":"https://tezoscommons.org/"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]}],{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[[{"string":"tz1h5GajcQWq4ybaWuwSiYrR5PvmUxndm8T8"}],{"string":"Save the planet"}]},{"prim":"None"},{"string":"ipfs://QmdHrYEHaaDQBXVF7vZJXudLgeMaeoiPE4UuGapMNe25ej"}]},{"prim":"Pair","args":[{"string":"https://bit.ly/TZIMAGE"},[]]},{"int":"465587"},{"string":"TEZOS"}]},{"string":"https://tezos.com"},{"prim":"Left","args":[{"prim":"Left","args":[{"prim":"Unit"}]}]}]}`, + Expect: map[string]int64{"members": 488518, "members_0": 483020, "members_1": 478686, "members_2": 471429, "members_3": 471422, "members_4": 471416, "members_5": 471403, "members_6": 471259, "members_7": 471053, "members_8": 470833, "members_9": 470466, "members_10": 470460, "members_11": 469614, "members_12": 469228, "members_13": 468241, "members_14": 465577, "members_15": 465578, "members_16": 465579, "members_17": 465580, "members_18": 465581, "members_19": 465582, "members_20": 465583, "members_21": 465584, "members_22": 465585, "members_23": 465586, "members_24": 465587}, + }, // { // Name: "", // Type: ``, @@ -520,10 +518,22 @@ func detectBigmapTypes(p Prim) map[string]Type { if n == "" { n = "bigmap_" + strconv.Itoa(i) } - if _, ok := named[n]; ok { - n += "_" + strconv.Itoa(i) + uniqueName := func(n string) string { + if _, ok := named[n]; !ok && n != "" { + return n + } + if n == "" { + n = "bigmap" + } + for i := 0; ; i++ { + name := n + "_" + strconv.Itoa(i) + if _, ok := named[name]; ok { + continue + } + return name + } } - named[n] = NewType(bigmaps[i]) + named[uniqueName(n)] = NewType(bigmaps[i]) } return named }