From 14821290b0e4f7b36b4eaf3cd1523cba089e0e24 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Fri, 21 Jan 2022 15:08:45 +0100 Subject: [PATCH 1/6] updated some libs, added feature flags for I protocol changes --- .../conseil/common/tezos/TezosOptics.scala | 3 +++ .../conseil/common/tezos/TezosTypes.scala | 13 ++++++++++++- conseil-lorre/src/main/resources/application.conf | 8 ++++---- .../main/resources/registered_tokens/ithacanet.json | 1 + .../indexer/tezos/TezosDatabaseConversions.scala | 8 ++++---- .../conseil/indexer/tezos/TezosJsonDecoders.scala | 1 + 6 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 conseil-lorre/src/main/resources/registered_tokens/ithacanet.json diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala index 4be4d5fdc..7601a7bf3 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala @@ -178,6 +178,9 @@ object TezosOptics { case x: EndorsementWithSlot => index += 1 x.copy(blockOrder = Some(index)) + case x: Preendorsement => + index += 1 + x.copy(blockOrder = Some(index)) case x: SeedNonceRevelation => index += 1 x.copy(blockOrder = Some(index)) diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala index edf820452..99560ece0 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala @@ -247,6 +247,12 @@ object TezosTypes { blockOrder: Option[Int] = None ) extends Operation + final case class Preendorsement( + level: BlockLevel, + metadata: PreendorsementMetadata, + blockOrder: Option[Int] = None + ) extends Operation + final case class SeedNonceRevelation( level: BlockLevel, nonce: Nonce, @@ -348,7 +354,12 @@ object TezosTypes { //metadata definitions, both shared or specific to operation kind final case class EndorsementMetadata( slot: Option[Int], - slots: List[Int], + slots: Option[List[Int]], + delegate: PublicKeyHash, + balance_updates: List[OperationMetadata.BalanceUpdate] + ) + + final case class PreendorsementMetadata( delegate: PublicKeyHash, balance_updates: List[OperationMetadata.BalanceUpdate] ) diff --git a/conseil-lorre/src/main/resources/application.conf b/conseil-lorre/src/main/resources/application.conf index ac5a38a58..3bd45e8be 100644 --- a/conseil-lorre/src/main/resources/application.conf +++ b/conseil-lorre/src/main/resources/application.conf @@ -37,17 +37,17 @@ lorre { # feature flags: select if some functionality should be turned off enabled-features { - future-rights-fetching-is-on: true + future-rights-fetching-is-on: false future-rights-fetching-is-on: ${?CONSEIL_LORRE_FUTURE_RIGHTS_FETCHING_ENABLED} - metadata-fetching-is-on: true + metadata-fetching-is-on: false metadata-fetching-is-on: ${?CONSEIL_LORRE_BLOCK_RIGHTS_FETCHING_ENABLED} fork-handling-is-on: false fork-handling-is-on: ${?CONSEIL_LORRE_FORK_DETECTION_ENABLED} registered-tokens-is-on: false registered-tokens-is-on: ${?CONSEIL_LORRE_REGISTERED_TOKENS_FETCHING_ENABLED} - rights-processing-is-on: true + rights-processing-is-on: false rights-processing-is-on: ${?CONSEIL_LORRE_RIGHTS_PROCESSING_ENABLED} - baker-features-are-on: true + baker-features-are-on: false baker-features-are-on: ${?CONSEIL_LORRE_BAKER_FEATURES_ENABLED} } diff --git a/conseil-lorre/src/main/resources/registered_tokens/ithacanet.json b/conseil-lorre/src/main/resources/registered_tokens/ithacanet.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/conseil-lorre/src/main/resources/registered_tokens/ithacanet.json @@ -0,0 +1 @@ +[] diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala index 01d9b1a3e..92982015f 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala @@ -263,7 +263,7 @@ private[tezos] object TezosDatabaseConversions { kind = "endorsement_with_slot", level = Some(endorsement.operations.level), delegate = Some(metadata.delegate.value), - slots = Some(metadata.slots).map(concatenateToString), + slots = metadata.slots.map(concatenateToString), operationOrder = blockOrder, blockHash = block.data.hash.value, blockLevel = block.data.header.level, @@ -271,7 +271,7 @@ private[tezos] object TezosDatabaseConversions { internal = false, cycle = TezosOptics.Blocks.extractCycle(block), branch = block.operationGroups.find(h => h.hash == groupHash).map(_.branch.value), - numberOfSlots = Some(metadata.slots.length), + numberOfSlots = metadata.slots.map(_.length), period = TezosOptics.Blocks.extractPeriod(block.data.metadata), utcYear = year, utcMonth = month, @@ -290,7 +290,7 @@ private[tezos] object TezosDatabaseConversions { kind = "endorsement", level = Some(level), delegate = Some(metadata.delegate.value), - slots = Some(metadata.slots).map(concatenateToString), + slots = metadata.slots.map(concatenateToString), operationOrder = blockOrder, blockHash = block.data.hash.value, blockLevel = block.data.header.level, @@ -298,7 +298,7 @@ private[tezos] object TezosDatabaseConversions { internal = false, cycle = TezosOptics.Blocks.extractCycle(block), branch = block.operationGroups.find(h => h.hash == groupHash).map(_.branch.value), - numberOfSlots = Some(metadata.slots.length), + numberOfSlots = metadata.slots.map(_.length), period = TezosOptics.Blocks.extractPeriod(block.data.metadata), utcYear = year, utcMonth = month, diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosJsonDecoders.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosJsonDecoders.scala index 1aac14730..594833b8d 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosJsonDecoders.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosJsonDecoders.scala @@ -252,6 +252,7 @@ private[tezos] object TezosJsonDecoders { //derive all the remaining decoders, sorted to preserve dependencies implicit val balanceUpdateDecoder: Decoder[OperationMetadata.BalanceUpdate] = deriveConfiguredDecoder implicit val endorsementMetadataDecoder: Decoder[EndorsementMetadata] = deriveConfiguredDecoder + implicit val preendorsementMetadataDecoder: Decoder[PreendorsementMetadata] = deriveConfiguredDecoder implicit val balanceUpdatesMetadataDecoder: Decoder[BalanceUpdatesMetadata] = deriveConfiguredDecoder implicit val revealResultDecoder: Decoder[OperationResult.Reveal] = deriveConfiguredDecoder implicit val transactionResultDecoder: Decoder[OperationResult.Transaction] = deriveConfiguredDecoder From d0a30dd943a1a6681d5ee89bde876e48b62127c8 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Thu, 3 Feb 2022 10:15:37 +0100 Subject: [PATCH 2/6] more changes for ithacanet --- conseil-api/src/main/resources/metadata.conf | 4 + .../resources/metadata/tezos.ithacanet.conf | 3413 +++++++++++++++++ .../conseil/indexer/tezos/TezosIndexer.scala | 2 +- .../tezos/JsonDecodersTestFixtures.scala | 2 +- ...TezosDatabaseConversionsTestFixtures.scala | 2 +- .../TezosDatabaseOperationsTestFixtures.scala | 2 +- 6 files changed, 3421 insertions(+), 4 deletions(-) create mode 100644 conseil-api/src/main/resources/metadata/tezos.ithacanet.conf diff --git a/conseil-api/src/main/resources/metadata.conf b/conseil-api/src/main/resources/metadata.conf index 04ef44404..1b3a8136b 100644 --- a/conseil-api/src/main/resources/metadata.conf +++ b/conseil-api/src/main/resources/metadata.conf @@ -59,6 +59,10 @@ metadata-configuration { include "metadata/tezos.hangzhounet.conf" visible: true } + hangzhounet { + include "metadata/tezos.ithacanet.conf" + visible: true + } } } bitcoin { diff --git a/conseil-api/src/main/resources/metadata/tezos.ithacanet.conf b/conseil-api/src/main/resources/metadata/tezos.ithacanet.conf new file mode 100644 index 000000000..80a525a08 --- /dev/null +++ b/conseil-api/src/main/resources/metadata/tezos.ithacanet.conf @@ -0,0 +1,3413 @@ +{ + entities { + accounts_checkpoint { + description: "Internal table to keep track of account sync process" + visible: false + } + processed_chain_events { + description: "Internal table to keep track of account sync process" + visible: false + } + accounts { + display-name-plural: "Accounts" + display-name: "Account" + visible: true, + attributes { + account_id { + description: "Sometimes referred to as 'public key hash', the address is a unique account identifier" + display-name: "Address" + placeholder: "tz1..." + visible: true + data-type: "accountAddress" + display-priority: 0 + display-order: 0 + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + value-map: { + "tz1ck2Dg17CaAT592JQhCDrsMzbvfEzr4urZ": "Taco Klepto" + "tz1aPzpnmcXpp4ukou11pDgEuNHAsMT2hUUv": "Taco Hoarder" + "tz1VwmmesDxud2BJEyDKUTV5T5VEP8tGBKGD": "Mainnet Faucet" + "tz1Z9MxKUBcbA6SKyKu9VLif8PeiQ5fkpCeo": "@tezosnoob (Legacy)" + "tz2PhQ4Pq5S77YRjXMMpZetXSrSCrfKAvngB": "@tezosnoob" + "tz2V2T51d8pg2D7pGSD6LdHpua72v7CSAEpP": "@tezosnftfaucet" + "tz1RaGb8tWxUh194btmAiXT9Tkk6pGBMZVL8": "USDtz Mother" + "tz1djRgXXWWJiY1rpMECCxr5d9ZBqWewuiU1": "Galleon Support" + "tz1cPGs7kKJ4NmAB5XTB1dubK4cfDoFffHq5": "STKR AirDrop" + "tz1SiPXX4MYGNJNDsRc7n8hkvUqFzg8xqF9m": "Binance A" + "tz1eogbwM5NdoojKEvvSnjYGcJapZgADRK3m": "Binance B" + "tz1ch7nvDDAchbAPfTio3yBsdvN1SZJZj1wY": "Binance C" + "tz1Q3jvYU9knekDYJfyvj3GjUy6898MNjvb2": "Binance D" + "tz1d6qqVYwPLLvzZ8X37ATHr4Hi2TcBXQmSZ": "Binance E" + "tz1XTQWJZnDFpYPh13LyZcWSSuxEmWRjNxWn": "Binance F" + "tz1c5wM9826YcUNQ8a17z9eUYpKQ3oW3zfmJ": "Kaiko Price Oracle Updater A" + "tz1QSbd179w1Xp9WTaCwcBt4xxvBpZEtxbxJ": "Harbinger Coinbase Pro Oracle Updater A" + "tz2L9474hvA2EXyNLi4u3YnqrKVf3GzeZ8tb": "Harbinger Coinbase Pro Oracle Updater B" + "tz1cYfMsbsGhxPqDovmaQHDByTeqiRTygEpc": "Upbit A" + "tz1MRssJTFokjJ4WHAY63wFTufQ8qpxZJtvU": "Upbit B" + "tz1bDXD6nNSrebqmAnnKKwnX1QdePSMCj4MX": "Kraken A" + "tz1YpWsMwc4gSyjtxEF3JbmN6YrGiDidaSmg": "Kraken B" + "tz1NH4A2kRyFQUYhyi9aL8jrrySQUrCgNsX9": "Kraken C" + "tz1cgJLxcS8ZTgq5dXPtojJJR7Bp8fKDyxPK": "Kraken D" + "tz1e9ZH87proooFwLidjvE8fhusWfeDf3bgk": "Kraken E" + "tz1ejivVeR6WxqzphH31EJPm87jyYu6HVXXw": "worldartday2021" + "tz1bkMZKrPYUWvVmP4yw4EHv6PTAA76b6pcJ": "Smartlink ICO" + "tz1dMYz5pcXYXnfH5gjr652iSDq9zc2SrqRi": "Tezos India Covid Charity" + "tz1ecr3NoPwvbJQSQXFJrk1cYGcDsJmmKEG5": "Hicathon" + "tz1WC3dUzy19mbkGwz4J3KhuSonE7AQxbZuF": "@KidMograph" + "tz1gqaKjfQBhUMCE6LhbkpuittRiWv5Z6w38": "@jjjjjjjjjjohn" + "tz1UBZUkXpKGhYsP5KtzDNqLLchwF4uHrGjw": "@hicetnunc2000" + + "KT1ChNsEFxwyCbJyWGSL3KdjeXE28AY1Kaog": "TCF Baker Registry" + "KT1GfAzvH7aUtVPbqRw6WbYMbd77dFPErQUg": "StakerDAO Manager" + "KT1EctCuorV2NfVb1XTQgvzJ88MQtWP8cMMv": "StakerDAO Token (Legacy)" + "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9": "USDtz Token" + "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn": "tzBTC" + "KT1Jr5t9UvGiqkvvsuUbPJHaYx24NzdUwNW9": "Harbinger Storage: Coinbase Pro" + "KT1AdbYiPYb5hDuEuVrfxmFehtnBCXv4Np7r": "Harbinger Normalizer: Coinbase Pro" + "KT1Mx5sFU4BZqnAaJRpMzqaPbd2qMCFmcqea": "Harbinger Storage: Binance" + "KT1SpD9Xh3PcmBGwbZPhVmHUM8shTwYhQFBa": "Harbinger Normalizer: Binance" + "KT1Jud6STRGZs6hSfgZsaeztbkzfwC3JswJP": "Harbinger Storage: Gemini" + "KT1JywdJbaVW5HtsYh4XNNuHcVL2vE6sYh7W": "Harbinger Normalizer: Gemini" + "KT1G3UMEkhxso5cdx2fvoJRJu5nUjBWKMrET": "Harbinger Storage: OKEx" + "KT1J623FNZ6an8NHkWFbtvm5bKXgFzhBc5Zf": "Harbinger Normalizer: OKEx" + "KT1DrJV8vhkdLEj76h1H9Q4irZDqAkMPo1Qf": "Compromised Dexter tzBTC Pool" + "KT1Puc9St8wdNoGtLiD2WXaHbWU7styaxYhD": "Compromised Dexter USDtz Pool" + "KT19kgnqC5VWoxktLRdRUERbyUPku9YioE8W": "Kaiko Price Oracle" + "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8": "ETHtz Token" + "KT19c8n5mWrqpxMcR3J687yssHxotj88nGhZ": "Compromised Dexter ETHtz Pool" + "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH": "wXTZ Token" + "KT1V4Vp7zhynCNuaBjWMpNU535Xm2sgqkz6M": "wXTZ Core" + "KT1FMSwqX2W2p1CCJeJNy2rvYEYEYjRiUza3": "Tezex Swap Contract" + "KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU": "Dexter ETHtz Pool" + "KT1Tr2eG3eVmPRbymrbU2UppUmKjFPXomGG9": "Dexter USDtz Pool" + "KT1BGQR7t4izzKZ7eRodKWTodAsM23P38v7N": "Dexter tzBTC Pool" + "KT1D56HQfMmwdopmFLTwNHFJSs6Dsg2didFo": "Dexter wXTZ Pool" + "KT1H28iie4mW9LmmJeYLjH6zkC8wwSmfHf5P": "TzButton Round 2" + "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV": "Kolibri Token" + "KT1AbYeDbjjcAnV1QK7EZUUdqku77CdkTuv6": "Dexter kUSD Pool" + "KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9": "hic et nunc Art House (Legacy v1)" + "KT1HbQepzV1nVGg8QVznG7z4RcHseD5kwqBn": "hic et nunc Art House v2" + "KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton": "hic et nunc NFT" + "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW": "hic et nunc hDAO" + "KT1CpeSQKdkhWi4pinYcseCFKmDhs5M74BkU": "tzcolors Auction House" + "KT1FyaDqiMQWg7Exo7VUiXAgZbd2kCzo3d4s": "tzcolors NFT" + "KT1VG2WtYdSWz5E7chTeAdDPZNy2MpP8pTfL": "Atomex" + "KT1VgXHLXRgh6J5iGw4zkk7vUfjLoPhRnt9L": "RAMP DeFi rStake Manager" + "KT1MEouXPpCx9eFJYnxfAWpFA7NxhW3rDgUN": "BLND Token" + "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea": "Staker Governance Token (STKR)" + "KT1JdufSdfg3WyxWJcCRNsBFV9V3x9TQBkJ2": "Kolibri Oven Proxy" + "KT1Ty2uAmF5JxWyeGrVpk17MEyzVB8cXs8aJ": "Kolibri Minter" + "KT1Ldn1XWQmk7J4pYgGFjjwV57Ew8NYvcNtJ": "Kolibri Oven Registry" + "KT1TybhR7XraG75JFYKSrh7KnxukMBT5dor6": "OBJKT-hDAO Curation" + "KT1Mgy95DVzqVBNYhsW93cyHuB57Q94UFhrh": "Kolibri Oven Factory" + "KT1AxaBxkFLCUi3f8rdDAAxBKHfzY8LfKDRA": "kUSD Liquidation Pool" + "KT1EH8yKXkRoxNkULRB1dSuwhkKyi5LJH82o": "Tezos Mandala" + "KT1QZt5o2eU2ymEpUW8EFhybaLpd9cWfqfUL": "Kalamint IPFS Registry" + "KT1EpGgjQs73QfFJs9z7m1Mxm5MTnpC2tqse": "Kalamint Art House" + "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT": "KALAM Token" + "KT1HvpCCHvC9c4iNzAa6rx4MqNsmPRJf6CEw": "Alchememist Auction" + "KT1BwxoxUJEnGcrWtfz2CiCZ19KN1xiN7dNF": "Project Uanon Rewards Distributor" + "KT1AUaGsGAkiYgH5wXvQ2tR8JV5dTkenM8XN": "Project Uanon NFT Distributor" + "KT1VJsKdNFYueffX6xcfe6Gg9eJA6RUnFpYr": "Project Uanon Puzzle Oracle" + "KT1EpQVwqLGSH7vMCWKJnq6Uxi851sEDbhWL": "Atomex FA1.2" + "KT1NmoofGosSaWFKgAbt7AMTqnV1xfqeAhLT": "RAMP DeFi rStake Creator" + "KT1UmxSSUQ5716tRa2RLNSAkiSG6TWbzZ7GL": "tezostaco.shop" + "KT1JBThDEqyqrEHimhxoUBCSnsKAqFcuHMkP": "NFTz.fun NFT" + "KT1MWxucqexguPjhqEyk4XndE1M5tHnhNhH7": "QuipuSwap 1.0 USDtz Pool" + "KT1CiSKXR68qYSxnbzjwvfeMCRburaSDonT2": "QuipuSwap 1.0 kUSD Pool" + "KT1NABnnQ4pUTJHUwFLiVM2uuEu1RXihAVmB": "QuipuSwap 1.0 wXTZ Pool" + "KT1N1wwNPqT5jGhM91GQ2ae5uY8UzFaXHMJS": "QuipuSwap 1.0 tzBTC Pool" + "KT1DX1kpCEfEg5nG3pXSSwvtkjTr6ZNYuxP4": "QuipuSwap 1.0 ETHtz Pool" + "KT1R5Fp415CJxSxxXToUj6QvxP1LHaYXaxV6": "QuipuSwap 1.0 STKR Pool" + "KT1V41fGzkdTJki4d11T1Rp9yPkCmDhB7jph": "QuipuSwap 1.0 hDAO Pool" + "KT1T4wNjJtNqZ9XCKSZqR5BXsuGczTxhV9Vu": "QuipuSwap 1.0 USDS Pool" + "KT1WxgZ1ZSfMgmsSDDcUn8Xn577HwnQ7e1Lb": "QuipuSwap 1.1 USDtz Pool" + "KT1K4EwTpbvYN9agJdjpyJm4ZZdhpUNKB3F6": "QuipuSwap 1.1 kUSD Pool" + "KT1W3VGRUjvS869r4ror8kdaxqJAZUbPyjMT": "QuipuSwap 1.1 wXTZ Pool" + "KT1WBLrLE2vG8SedBqiSJFm4VVAZZBytJYHc": "QuipuSwap 1.1 tzBTC Pool" + "KT1Evsp2yA19Whm24khvFPcwimK6UaAJu8Zo": "QuipuSwap 1.1 ETHtz Pool" + "KT1BMEEPX7MWzwwadW3NCSZe9XGmFJ7rs7Dr": "QuipuSwap 1.1 STKR Pool" + "KT1Qm3urGqkRsWsovGzNb2R81c3dSfxpteHG": "QuipuSwap 1.1 hDAO Pool" + "KT1H4NVBGeHXRh1voDv5PPC1Xb6M7xJFQcW5": "QuipuSwap 1.1 USDS Pool" + "KT1QxLqukyfohPV5kPkw97Rs6cw1DDDvYgbB": "QuipuSwap 1.2 hDAO Pool" + "KT1KFszq8UFCcWxnXuhZPUyHT9FK3gjmSKm6": "QuipuSwap 1.2 USDS Pool" + "KT1PrRTVNgxkRgyqqNQvwTiVhd55dqyxXJ6n": "QuipuSwap sDAO AMM" + "KT1WDe2vJCDqz5euKupppQsioPcakUd45Tfo": "QuipuSwap rSAL AMM" + "KT1DssMzoSr8fnUUq1WxeSuHfLG4gzS7pgge": "QuipuSwap bDAO AMM" + "KT1WYQj3HEt3sxdsV4dMLA8RKzUnYAzXgguS": "QuipuSwap GUTS AMM" + "KT1WtFb1mTsFRd1n1nAYMdrE2Ud9XREz5hjK": "QuipuSwap QLkUSD AMM" + "KT1BgezWwHBxA9NrczwK9x3zfgFnUkc7JJ4b": "QuipuSwap Hedgehoge AMM" + "KT1Lpysr4nzcFegC9ci9kjoqVidwoanEmJWt": "QuipuSwap wLINK AMM" + "KT1GsTjbWkTgtsWenM6oWuTuft3Qb46p2x4c": "Quipuswap wHT AMM" + "KT1UMAE2PBskeQayP5f2ZbGiVYF7h8bZ2gyp": "Quipuswap wBUSD AMM" + "KT1MpRQvn2VRR26VJFPYUGcB8qqxBbXgk5xe": "Quipuswap wLEO AMM" + "KT1AN7BBmeSUN5eDDQLEhWmXv1gn4exc5k8R": "Quipuswap wHUSD AMM" + "KT1Lvtxpg4MiT2Bs38XGxwh3LGi5MkCENp4v": "Quipuswap wAAVE AMM" + "KT1SzCtZYesqXt57qHymr3Hj37zPQT47JN6x": "Quipuswap wFTT AMM" + "KT1GSjkSg6MFmEMnTJSk6uyYpWXaEYFahrS4": "Quipuswap wCRO AMM" + "KT1DA8NH6UqCiSZhEg5KboxosMqLghwwvmTe": "Quipuswap wCOMP AMM" + "KT1PQ8TMzGMfViRq4tCMFKD2QF5zwJnY67Xn": "Quipuswap wDAI AMM" + "KT1DksKXvCBJN7Mw6frGj6y6F3CbABWZVpj1": "Quipuswap wWBTC AMM" + "KT1FG63hhFtMEEEtmBSX2vuFmP87t9E7Ab4t": "Quipuswap WRAP AMM" + "KT1X1LgNkQShpF9nRLYw3Dgdy4qp38MX617z": "Quipuswap PLENTY AMM" + "KT1NXdxJkCiPkhwPvaT9CytFowuUoNcwGM1p": "Quipuswap SOIL AMM" + "KT1J3wTYb4xk5BsSBkg6ML55bX1xq7desS34": "Quipuswap KALAM AMM" + "KT1RRgK6eXvCWCiEGWhRZCSVGzhDzwXEEjS4": "Quipuswap CRUNCHY AMM" + "KT1DuYujxrmgepwSDHtADthhKBje9BosUs1w": "Quipuswap wWETH AMM" + "KT1Q93ftAUzvfMGPwC78nX8eouL1VzmHPd4d": "Quipuswap FLAME AMM" + "KT1U2hs5eNdeCpHouAvQXGMzGFGJowbhjqmo": "Quipuswap wUSDC AMM" + "KT1T4pfr6NL8dUiz8ibesjEvH2Ne3k6AuXgn": "Quipuswap wUSDT AMM" + "KT1RsfuBee5o7GtYrdB7bzQ1M6oVgyBnxY4S": "Quipuswap wMATIC AMM" + "KT1Ti3nJT85vNn81Dy5VyNzgufkAorUoZ96q": "Quipuswap wUNI AMM" + "KT1Ca5FGSeFLH3ugstc5p56gJDMPeraBcDqE": "Quipuswap wPAX AMM" + "KT1X3zxdTzPB9DgVzA3ad6dgZe9JEamoaeRy": "QuipuSwap QUIPU AMM" + "KT1K8A8DLUTVuHaDBCZiG6AJdvKJbtH8dqmN": "QuipuSwap PAUL AMM" + "KT1Gdix8LoDoQng7YqdPNhdP5V7JRX8FqWvM": "QuipuSwap SMAK AMM" + "KT1FHiJmJUgZMPtv5F8M4ZEa6cb1D9Lf758T": "QuipuSwap crDAO AMM" + "KT1EtjRRCBC2exyCRXz8UfV7jz7svnkqi7di": "QuipuSwap uUSD AMM" + "KT1PL1YciLdwMbydt21Ax85iZXXyGSrKT2BE": "QuipuSwap YOU AMM" + "KT1NEa7CmaLaWgHNi6LkRi5Z1f4oHfdzRdGA": "QuipuSwap kDAO AMM" + "KT1JyPE1BWdYoRGBvvKhEPbcVRd3C9NCCwQC": "QuipuSwap GOT AMM" + "KT1Wa8yqRBpFCusJWgcQyjhRz7hUQAmFxW7j": "FLAME Token" + "KT1KPoyzkj82Sbnafm6pfesZKEhyCpXwQfMc": "fDAO" + "KT1Ph8ptSU4rf7PPg2YBMR6LTpr6rc4MMyrq": "Catz Token" + "KT1K7whn5yHucGXMN7ymfKiX5r534QeaJM29": "QuipuSwap 1.0 FA1.2 Pool Factory" + "KT1MMLb2FVrrE9Do74J3FH1RNNc4QhDuVCNX": "QuipuSwap 1.0 FA2 Pool Factory" + "KT1Lw8hCoaBrHeTeMXbqHPG4sS4K1xn7yKcD": "QuipuSwap 1.1 FA1.2 Pool Factory" + "KT1SwH9P1Tx8a58Mm6qBExQFTcy2rwZyZiXS": "Quipuswap 1.1 FA2 Pool Factory" + "KT1PvEyN1xCFCgorN92QCfYjw3axS6jawCiJ": "Quipuswap 1.2 FA2 AMM Factory" + "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf": "Stably USD" + "KT1J5dqegz1qYaYc7X3KjynYL9St1wcZ8ZyV": "Maelstrom Mixer" + "KT19ovJhcsUn4YU8Q5L3BGovKSixfbWcecEA": "Salsa" + "KT1DLif2x9BtK6pUq9ZfFVVyW5wN2kau9rkW": "WRAP Quorum" + "KT1GUNKmkrgtMQjJp3XxcmCj6HZBhkUmMbge": "Bazaar DAO" + "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd": "WRAP Token" + "KT1G1cCRNBgQ48mVDjopHjEmTN5Sbtar8nn9": "Hedgehoge Token" + "KT1BHCumksALJQJ8q8to2EPigPW6qpyTr7Ng": "Crunchy.network Token" + "KT1XPFjZqCULSnqfKaaYy8hJjeY63UNSGwXg": "crDAO" + "KT1GBZmSxmnKJXGMdMLbugPfLyUPmuLSMwKS": "Tezos Domains Registry" + "KT1CaSP4dn8wasbMsfdtGiCPgYFW7bvnPRRT": "Tezos Domains Auction" + "KT1P8n2qzJjwMPbHJfi4o8xu6Pe3gaU3u2A3": "Tezos Domains Committer", + "KT191reDVKrLxU9rjTSxg53wRqj6zh8pnHgr": "Tezos Domains Sales", + "KT1TnTr6b2YxSx2xUQ8Vz3MoWy771ta66yGx": "Tezos Domains Claim Reverse Record", + "KT1J9VpjiH5cmcsskNb8gEXpBtjD4zrAx4Vo": "Tezos Domains Update Reverse Record", + "KT1CozhoKRtWSoEvyk7mXrPNFxawMcmXvZtM": "Hicathon Token" + "KT1Nbc9cmx19qFrYYFpkiDoojVYL8UZJYVcj": "GUTS Gaming Token" + "KT1TtaMcoSx5cZrvaVBWsFoeZ1L15cxo5AEy": "SOIL Token" + "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b": "Plenty Token" + "KT1UDe1YP963CQSb5xN7cQ1X8NJ2pUyjGw5T": "Plenty 1.0 Token Pool" + "KT1J7v85udA8GnaBupacgY9mMvrb8zQdYb3E": "Plenty 1.0 ETHtz Pool" + "KT1Vs8gqh7YskPnUQMfmjogZh3A5ZLpqQGcg": "Plenty 1.0 hDAO Pool" + "KT1JCkdS3x5hTWdrTQdzK6vEkeAdQzsm2wzf": "Plenty 1.0 wLINK Pool" + "KT1TNzH1KiVsWh9kpFrWACrDNnfK4ihvGAZs": "Plenty 1.0 wMATIC Pool" + "KT1K5cgrw1A8WTiizZ5b6TxNdFnBq9AtyQ7X": "Plenty 1.0 USDtz Pool" + "KT1BfQLAsQNX8BjSBzgjTLx3GTd3qhwLoWNz": "Plenty 1.0 QuipuSwap Liquidity Farm" + "KT1JQAZqShNMakSNXc2cgTzdAWZFemGcU6n1": "Plenty 1.1 QuipuSwap Liquidity Farm" + "KT1QqjR4Fj9YegB37PQEqXUPHmFbhz6VJtwE": "Plenty 1.1 Token Pool" + "KT19asUVzBNidHgTHp8MP31YSphooMb3piWR": "Plenty 1.1 ETHtz Pool" + "KT1Ga15wxGR5oWK1vBG2GXbjYM6WqPgpfRSP": "Plenty 1.1 hDAO Pool" + "KT1MBqc3GHpApBXaBZyvY63LF6eoFyTWtySn": "Plenty 1.1 USDtz Pool" + "KT1KyxPitU1xNbTriondmAFtPEcFhjSLV1hz": "Plenty 1.1 wLINK Pool" + "KT1XherecVvrE6X4PV5RTwdEKNzA294ZE9T9": "Plenty 1.1 wMATIC Pool" + "KT1KJhxkCpZNwAFQURDoJ79hGqQgSC9UaWpG": "Plenty wBUSD LP Farm" + "KT1VCrmywPNf8ZHH95HKHvYA4bBQJPa8g2sr": "Plenty USDtz LP Farm" + "KT1M82a7arHVwcwaswnNUUuCnQ45xjjGKNd1": "Plenty wWBTC LP Farm" + "KT1La1qZiJtDRcd9ek8w5KYD47i9MQqAQHmP": "Plenty wWBTC LP Token" + "KT1UqnQ6b1EwQgYiKss4mDL7aktAHnkdctTQ": "Plenty wLINK LP Farm" + "KT1UP9XHQigWMqNXYp9YXaCS1hV9jJkCF4h4": "Plenty wMATIC LP Farm" + "KT1PuPNtDFLR6U7e7vDuxunDoKasVT6kMSkz": "Plenty wUSDC AMM" + "KT1D36ZG99YuhoCRZXLL86tQYAbv36bCq9XM": "Plenty USDtz AMM" + "KT18qSo4Ch2Mfq4jP3eME7SWHB8B8EDTtVBu": "Plenty USDtz LP Token" + "KT1XXAavg3tTj12W1ADvd3EEnm1pu6XTmiEF": "Plenty wBUSD AMM" + "KT1UC3vcVZ4K9b39uQxaMNA2N1RuJXKLCnoA": "PLENTY wBUSD LP Token" + "KT19Dskaofi6ZTkrw3Tq4pK7fUqHqCz4pTZ3": "Plenty wWBTC AMM" + "KT1XVrXmWY9AdVri6KpxKo4CWxizKajmgzMt": "Plenty wLINK Swap" + "KT1VeNQa4mucRj36qAJ9rTzm4DTJKfemVaZT": "Plenty wMATIC AMM" + "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ": "Wrap Token Family" + "KT1KENVgwsrAnXZHkm5MptHWhMYiXeG5hwa3": "Wrap wLink Farm" + "KT1LXQT3b39wLSiFQ1rHatzALzeKsRGmd8gr": "Wrap wAAVE Farm" + "KT1Stv6ATejBZ2uD9eMm5HyQ3nrNrC32zpRL": "Wrap wBUSD Farm" + "KT1FQBbU7uNkHSq4oLyiTyBFTZ7KfTWGLpcv": "Wrap wCEL Farm" + "KT1NSKpB8ppqABLAEDozUmcLv3QUceN5uHQi": "Wrap wCOMP Farm" + "KT1HLJ9E4nd8a6DnKdrZNXiEHihk5nyJJDoR": "Wrap wCRO Farm" + "KT1UfeNuqT3F6ntYwucDGPHwHdYa1pQbWfST": "Wrap wDAI Farm" + "KT1KY55T9jVZwFaCpRcj62LQNwoVYgtRHG6F": "Wrap wFTT Farm" + "KT1U9pATbqyDL3ZXzTQnPN2LnaGN78UnpzUw": "Wrap wHT Farm" + "KT1BKu6MnA86QF7JDUPj8anAEPDJNDsUYs3v": "Wrap wHUSD Farm" + "KT1N7RC3hLLsKgmKhjnYBiVxY2jfYcohZzwR": "Wrap wLEO Farm" + "KT1GCNfU4RQ85VgQF3fsj69Lgw8Ucz7RGoph": "Wrap wMATIC Farm" + "KT19ohHrCtSv5u4RzU3SySZJPKGhcovkf9sS": "Wrap wMKR Farm" + "KT1K5oY3YC16AgcxPYBDty96xyzVPa89X3yh": "Wrap wOKB Farm" + "KT1UxnT4id9zKz1tgK1UxwpigFi5ny7vTCu9": "Wrap wPAX Farm" + "KT1Ls37uwiU2vD7sSBRmUV7ccdNuvgRTxtCQ": "Wrap wSUSHI Farm" + "KT1UeEeeSfSd7uDWpbxBTBkBBpVeDrcqcUr7": "Wrap wUNI Farm" + "KT1HVrGpv4GUoSR6qCmkxmHzAFtwfKxzfcop": "Wrap wUSDC Farm" + "KT1DQg57yTJ7QKxzk6AkPtDGvZYTM5pX4GYE": "Wrap wUSDT Farm" + "KT1SZVLvLDQvqx6qMbF8oXZe2tfP7bJMASy2": "Wrap wWBTC Farm" + "KT1J82G1XVAA4oqjC44qskihdWerrneNVHnn": "Wrap wWETH Farm" + "KT1AnsHEdYKEdM62QCNpZGc5PfpXhftcdu22": "Wrap Token Farm" + "KT1QY4siBbWg9qpj52fEzrWdWfkbFcwwjfoA": "Wrap LP Farm" + "KT1T9zQKY259fbCt6tKHFnrMHEePgmsWAJYW": "Wrap wLINK LP Farm" + "KT1AxiZu1CtCMg5g5YiPL145cDx9axdwAexX": "Wrap wWBTC LP Farm" + "KT1BN1Si6u8ndd46RbbES5cNGojyRK6T8Md8": "Wrap wWETH LP Farm" + "KT1NvQJYeMCdEtzF45bs3UNpMmjfY97u2qW2": "Wrap wAAVE LP Farm" + "KT19hzFPbMW9cYgUhLNghytkWEymMKsPrdfX": "PixelPotus v1" + "KT1WGDVRnff4rmGzJUbdCRAJBmYt12BrPzdD": "PixelPotus v2" + "KT1KY2x1XrWykYd2dbBNXfE6tVUU3eYNB4wo": "PixelPotus Market" + "KT1My1wDZHDGweCrJnQJi3wcFaS67iksirvj": "hic et nunc SUBJKT" + "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X": "SMAK Token" + "KT1VHd7ysjnvxEzwtjBAmYAmasvVCfPpSkiG": "Green Salsa Token" + "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb": "QuipuSwap DAO Token" + "KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3": "Crunchy Farms v1" + "KT1FvqJwEDWb1Gwc55Jd1jjTHRVWbYKUUpyq": "objkt.com Market" + "KT1XjcRq5MLAzMKQ3UHsrue2SeU2NbxUrzmU": "objkt.com English Auction" + "KT1DdxmJujm3u2ZNkYwV24qLBJ6iR7sc58B9": "Tezzardz Crowdsale" + "KT1LHHLso8zQWQWg1HUukajdxxbkGfNoHjh6": "Tezzardz NFT" + "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6": "PAUL Token" + "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL": "YOU Governance Token" + "KT1Lz5S39TMHEA7izhQn8Z1mQoddm6v1jTwH": "Youves Reward Pool" + "KT1FFE2LC5JpVakVjHm5mM36QVp2p3ZzH4hH": "Youves Vault Originator" + "KT1RkQaK5X84deBAT6sXJ2VLs7zN4pM7Y3si": "Youves uUSD Options" + "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW": "uUSD Token" + "KT1RC22chBZGJtWv82e5pSeyqyBLEyDRqobz": "Ubinetic uUSD Price Oracle" + "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5": "Granada tzBTC AMM" + "KT1BijKznvGCkU4iFEgdfSaEQgnbRViMh97f": "Flame Poker" + "KT1GioMCKwRyWoQpdrwxvsPVEsFJkkLyquVZ": "GOT Token" + "KT1Cq3pyv6QEXugsAC2iyXr7ecFqN7fJVTnA": "Tezotopia Resources" + "KT1PSUKkif8KZzSeWdPewWMkx61QBR8VuXsm": "Tezotopia Market" + "KT1HGL8vx7DP4xETVikL4LUYvFxSV19DxdFN": "aka NFT Market" + "KT19JYndHaesXpvUfiwgg8BtE41HKkjjGMRC": "Rocket Tokens" + "KT1H5KJDxuM9DURSfttepebb6Cn7GbvAAT45": "MAG Token" + "KT1FVbyctinHvVJNyMWeueCzXFFX2MCqsYDj": "tzPunks NFT" + + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + block_id { + description: "Most recent account activity" + display-name: "Block Hash" + data-type: "hash" + visible: true + display-priority: 2 + display-order: 8 + reference: { + entity: "blocks" + key: "hash" + } + } + manager { + visible: true + data-type: "accountAddress" + display-priority: 0 + display-order: 2 + reference: { + entity: "accounts" + key: "account_id" + } + } + spendable { + visible: true + cache-config { + cached: true + } + } + delegate_setable { + display-priority: 3 + display-order: 10 + display-name: "Delegatable" + visible: true + } + delegate_value { + display-name: "Delegate" + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + value-map: { + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + counter { + visible: true + display-priority: 2 + } + script { + display-priority: 1 + display-order: 3 + visible: true + } + storage { + display-priority: 1 + display-order: 4 + visible: true + } + balance { + display-priority: 0 + display-order: 1 + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + block_level { + display-priority: 1 + display-order: 9 + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + is_baker { + display-name: "Is Baker" + visible: true + } + is_activated { + visible: true + } + } + } + accounts_history { + display-name-plural: "Account History" + display-name: "Account History" + temporal-partition: "account_id" + visible: true, + attributes { + account_id { + description: "Sometimes referred to as 'public key hash', the address is a unique account identifier" + display-name: "Address" + placeholder: "tz1..." + visible: true + data-type: "accountAddress" + display-priority: 0 + display-order: 0 + reference: { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + } + block_id { + description: "Most recent account activity" + display-name: "Block Hash" + data-type: "hash" + visible: true + display-priority: 2 + display-order: 8 + reference: { + entity: "blocks" + key: "hash" + } + } + delegate_value { + display-name: "Delegate" + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + value-map: { + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + counter { + visible: true + display-priority: 2 + } + storage { + display-priority: 1 + display-order: 4 + visible: true + } + balance { + display-priority: 0 + display-order: 1 + visible: true + scale: 6, + data-type: "currency" + currencySymbolCode: 42793 + } + cycle { + display-name: "Cycle" + visible: true + } + block_level { + display-priority: 1 + display-order: 9 + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + temporal-column: true + } + asof { + visible: true + data-format: "YYYY MMM DD, HH:mm" + temporal-column: true + } + is_baker { + display-name: "Is Baker" + visible: true + } + is_activated { + visible: true + } + is_active_baker { + visible: true + } + } + } + balance_updates { + display-name-plural: "Balance Updates" + display-name: "Balance Update" + visible: true + attributes { + id { + visible: false + reference: { + entity: "operations" + key: "operation_id" + } + } + source { + visible: true + value-map: { + "block": "Block", + "operation": "Operation", + "operation_result": "Operation Result" + } + } + source_id { + visible: false + } + source_hash { + visible: true + data-type: "hash" + display-name: "Source Hash" + } + kind { + visible: true + cache-config { + cached: true + } + } + account_id { + display-name: "Account" + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + } + change { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + level { + data-type: "int" + visible: true + } + category { + visible: true + } + operation_group_hash { + display-name: "Op Group Hash" + visible: true + data-type: "hash" + reference: { + entity: "operations" + key: "operation_group_hash" + } + } + block_id { + display-name: "Block Hash" + data-type: "hash" + visible: true + } + block_level { + display-name: "Block Level" + data-type: "int" + visible: true + } + cycle { + visible: true + } + period { + visible: true + } + } + } + big_maps { + display-name-plural: "Big Maps" + display-name: "Big Map" + visible: true + attributes { + big_map_id { + display-priority: 0 + display-order: 0 + display-name: "Id" + data-type: "int" + visible: true + } + key_type { + display-priority: 0 + display-order: 1 + visible: true + } + value_type { + display-priority: 0 + display-order: 2 + visible: true + } + } + } + metadata { + visible: true + attributes { + address { + visible: true + } + raw_metadata { + visible: true + } + name { + visible: true + } + description { + visible: true + } + last_updated { + visible: true + } + } + } + nfts { + visible: true + attributes { + contract_address { + visible: true + } + op_group_hash { + visible: true + } + block_level { + visible: true + } + timestamp { + visible: true + data-format: "YYYY MMM DD, HH:mm" + } + contract_name { + visible: true + } + asset_type { + visible: true + } + asset_location { + visible: true + } + raw_metadata { + visible: true + } + } + } + big_map_contents { + display-name-plural: "Big Map Contents" + display-name: "Big Map Content" + visible: true + attributes { + big_map_id { + display-priority: 0 + display-order: 3 + display-name: "Map Id" + data-type: "int" + visible: true + reference: { + entity: "big_maps" + key: "big_map_id" + } + } + key { + display-priority: 0 + display-order: 0 + visible: true + } + key_hash { + display-priority: 0 + display-order: 1 + visible: true + } + operation_group_id { + data-type: "hash" + display-priority: 0 + display-order: 2 + visible: true + } + value { + display-priority: 0 + display-order: 3 + visible: true + } + block_level { + display-priority: 0 + display-order: 4 + display-name: "Block Level" + data-type: "int" + visible: true + } + timestamp { + display-priority: 0 + display-order: 5 + data-format: "YYYY MMM DD, HH:mm" + visible: true + } + cycle { + display-priority: 0 + display-order: 6 + visible: true + } + period { + display-priority: 0 + display-order: 7 + visible: true + } + } + } + big_map_contents_history { + display-name-plural: "Big Map Contents" + display-name: "Big Map Content" + visible: true + attributes { + big_map_id { + display-priority: 0 + display-order: 3 + display-name: "Map Id" + data-type: "int" + visible: true + reference: { + entity: "big_maps" + key: "big_map_id" + } + } + key { + display-priority: 0 + display-order: 0 + visible: true + } + key_hash { + display-priority: 0 + display-order: 1 + visible: true + } + operation_group_id { + data-type: "hash" + display-priority: 0 + display-order: 2 + visible: true + } + value { + display-priority: 0 + display-order: 3 + visible: true + } + block_level { + display-priority: 0 + display-order: 4 + display-name: "Block Level" + data-type: "int" + visible: true + temporal-column: true + } + timestamp { + display-priority: 0 + display-order: 5 + data-format: "YYYY MMM DD, HH:mm" + visible: true + temporal-column: true + } + cycle { + display-priority: 0 + display-order: 6 + visible: true + } + period { + display-priority: 0 + display-order: 7 + visible: true + } + } + } + originated_account_maps { + display-name-plural: "Contract Big Maps" + display-name: "Contract Big Maps" + visible: true + attributes { + big_map_id { + display-priority: 0 + display-order: 0 + display-name: "Map id" + data-type: "int" + visible: true + reference: { + entity: "big_maps" + key: "big_map_id" + } + } + account_id { + display-priority: 0 + display-order: 1 + data-type: "accountaddress" + visible: true + reference: { + entity: "accounts" + key: "account_id" + } + } + } + } + blocks { + display-name-plural: "Blocks" + display-name: "Block" + visible: true + attributes { + level { + display-priority: 0 + display-order: 1 + data-type: "int" + visible: true + } + proto { + display-name: "Protocol Index" + visible: true + } + predecessor { + display-priority: 0 + display-order: 3 + display-name: "Predecessor Hash" + data-type: "hash" + visible: true + reference: { + entity: "blocks" + key: "hash" + } + } + timestamp { + display-priority: 0 + display-order: 2 + data-format: "YYYY MMM DD, HH:mm" + visible: true + } + fitness { + visible: true + } + context { + visible: true + data-type: "hash" + } + signature { + visible: true + data-type: "hash" + } + protocol { + display-name: "Protocol Hash" + data-type: "hash" + visible: true + value-map: { + "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx": "Hangzhou Actual" + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV": "Granada" + "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i": "Florence" + "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA": "Edo Actual" + "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo": "Delphi" + "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb": "Carthage 2.0" + "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS": "Babylon 2.1" + "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd": "Athens A" + "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP": "Alpha 3" + "PsYLVpVvgbLhAhoqAkMFUo6gudkJ9weNXhUYCiLDzcUpFpkk8Wt": "Alpha 2" + "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY": "Alpha 1" + "Ps9mPmXaRzmzk35gbAYNCAw6UXdE2qoABTHbN2oEEc1qM7CwT9P": "Bootstrap" + "PrihK96nBAFSxVL1GLJTVhu9YnzkMFiBeuJRPA8NwuZVZCE1L6i": "Genesis" + } + } + chain_id { + display-name: "Chain Id" + visible: true + } + hash { + display-priority: 0 + display-order: 0 + display-name: "Block Hash" + data-type: "hash" + visible: true + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + } + operations_hash { + display-priority: 1 + display-order: 5 + display-name: "Operations Hash" + visible: true + data-type: "hash" + } + period_kind { + display-name: "Voting Period" + visible: true + } + current_expected_quorum { + display-name: "Expected Quorum" + visible: true + } + active_proposal { + display-name: "Active Proposal" + visible: true + data-type: "hash" + } + baker { + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 10 + } + value-map: { + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + consumed_gas { + display-name: "Consumed Gas" + visible: true + } + meta_level { + visible: false + } + meta_level_position { + visible: false + } + meta_cycle { + display-name: "Cycle" + visible: true + } + meta_cycle_position { + visible: true + display-name: "Cycle Position" + } + meta_voting_period { + display-name: "Period Index" + visible: true + } + meta_voting_period_position { + display-name: "Period Position" + visible: true + } + priority { + visible: true + } + utc_year: { + visible: true + } + utc_month: { + visible: true + } + utc_day: { + visible: true + } + utc_time: { + visible: true + } + } + } + fees { + display-name-plural: "Fees" + display-name: "Fee" + visible: true + attributes { + low { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + medium { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + high { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + timestamp { + visible: true + data-format: "YYYY MMM DD, HH:mm" + } + kind { + visible: true + } + level { + data-type: "int" + visible: true + } + cycle { + visible: true + } + } + } + operation_groups { + display-name-plural: "Operation Groups" + display-name: "Operation Group" + visible: true + attributes { + protocol { + visible: true + data-type: "hash" + value-map: { + "Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A": "Ithaca 2.0" + "PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP": "Ithaca" + "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx": "Hangzhou Actual" + "PsCUKj6wydGtDNGPRdxasZDs4esZcVD9tf44MMiVy46FkD9q1h9": "Hanghouz-USDtz-LB" + "PtHangzHogokSuiMHemCuowEavgYTP8J5qQ9fQS793MHYFpCY3r": "Hangzhou" + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV": "Granada" + "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i": "Florence" + "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA": "Edo 2.0" + "PtEdoTezd3RHSC31mpxxo1npxFjoWWcFgQtxapi51Z8TLu6v6Uq": "Edo" + "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo": "Delphi" + "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb": "Carthage 2.0" + "PtCarthavAMoXqbjBPVgDCRd5LgT7qqKWUPXnYii3xCaHRBMfHH": "Carthage" + "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS": "Babylon 2.1" + "PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU": "Babylon 2.0" + "PsBABY5nk4JhdEv1N1pZbt6m6ccB9BfNqa23iKZcHBh23jmRS9f": "Babylon" + "PtdRxBHvc91c2ea2evV6wkoqnzW7TadTg9aqS9jAn2GbcPGtumD": "Brest A" + "Psd1ynUBhMZAeajwcZJAeq5NrxorM6UCU4GJqxZ7Bx2e9vUWB6z": "Athens B" + "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd": "Athens A" + } + } + chain_id { + visible: true + } + hash { + visible: true + data-type: "hash" + reference: { + entity: "operations" + key: "operation_group_hash" + } + } + branch { + visible: true + data-type: "hash" + } + signature { + visible: true + data-type: "hash" + } + block_level: { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + block_id { + display-name: "Block Hash" + data-type: "hash" + visible: true + reference: { + entity: "blocks" + key: "hash" + } + } + } + } + operations { + display-name-plural: "Operations" + display-name: "Operation" + visible: true + attributes { + operation_id: { + visible: false + } + operation_group_hash: { + visible: true + display-name: "Op Group Hash" + data-type: "hash" + } + kind: { + visible: true + cache-config { + cached: true, + min-match-length: 1, + max-result-size: 100 + } + } + cycle: { + visible: true + } + level: { + visible: true + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + delegate: { + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + } + slots: { + visible: true + } + nonce: { + visible: true + } + pkh: { + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + } + secret: { + visible: true + } + source: { + visible: true + data-type: "accountAddress" + reference { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + value-map: { + "tz1ck2Dg17CaAT592JQhCDrsMzbvfEzr4urZ": "Taco Klepto" + "tz1aPzpnmcXpp4ukou11pDgEuNHAsMT2hUUv": "Taco Hoarder" + "tz1VwmmesDxud2BJEyDKUTV5T5VEP8tGBKGD": "Mainnet Faucet" + "tz1Z9MxKUBcbA6SKyKu9VLif8PeiQ5fkpCeo": "@tezosnoob (Legacy)" + "tz2PhQ4Pq5S77YRjXMMpZetXSrSCrfKAvngB": "@tezosnoob" + "tz2V2T51d8pg2D7pGSD6LdHpua72v7CSAEpP": "@tezosnftfaucet" + "tz1RaGb8tWxUh194btmAiXT9Tkk6pGBMZVL8": "USDtz Mother" + "tz1djRgXXWWJiY1rpMECCxr5d9ZBqWewuiU1": "Galleon Support" + "tz1cPGs7kKJ4NmAB5XTB1dubK4cfDoFffHq5": "STKR AirDrop" + "tz1SiPXX4MYGNJNDsRc7n8hkvUqFzg8xqF9m": "Binance A" + "tz1eogbwM5NdoojKEvvSnjYGcJapZgADRK3m": "Binance B" + "tz1ch7nvDDAchbAPfTio3yBsdvN1SZJZj1wY": "Binance C" + "tz1Q3jvYU9knekDYJfyvj3GjUy6898MNjvb2": "Binance D" + "tz1d6qqVYwPLLvzZ8X37ATHr4Hi2TcBXQmSZ": "Binance E" + "tz1XTQWJZnDFpYPh13LyZcWSSuxEmWRjNxWn": "Binance F" + "tz1c5wM9826YcUNQ8a17z9eUYpKQ3oW3zfmJ": "Kaiko Price Oracle Updater A" + "tz1QSbd179w1Xp9WTaCwcBt4xxvBpZEtxbxJ": "Harbinger Coinbase Pro Oracle Updater A" + "tz2L9474hvA2EXyNLi4u3YnqrKVf3GzeZ8tb": "Harbinger Coinbase Pro Oracle Updater B" + "tz1cYfMsbsGhxPqDovmaQHDByTeqiRTygEpc": "Upbit A" + "tz1MRssJTFokjJ4WHAY63wFTufQ8qpxZJtvU": "Upbit B" + "tz1bDXD6nNSrebqmAnnKKwnX1QdePSMCj4MX": "Kraken A" + "tz1YpWsMwc4gSyjtxEF3JbmN6YrGiDidaSmg": "Kraken B" + "tz1NH4A2kRyFQUYhyi9aL8jrrySQUrCgNsX9": "Kraken C" + "tz1cgJLxcS8ZTgq5dXPtojJJR7Bp8fKDyxPK": "Kraken D" + "tz1e9ZH87proooFwLidjvE8fhusWfeDf3bgk": "Kraken E" + "tz1ejivVeR6WxqzphH31EJPm87jyYu6HVXXw": "worldartday2021" + "tz1bkMZKrPYUWvVmP4yw4EHv6PTAA76b6pcJ": "Smartlink ICO" + "tz1dMYz5pcXYXnfH5gjr652iSDq9zc2SrqRi": "Tezos India Covid Charity" + "tz1ecr3NoPwvbJQSQXFJrk1cYGcDsJmmKEG5": "Hicathon" + "tz1WC3dUzy19mbkGwz4J3KhuSonE7AQxbZuF": "@KidMograph" + "tz1gqaKjfQBhUMCE6LhbkpuittRiWv5Z6w38": "@jjjjjjjjjjohn" + "tz1UBZUkXpKGhYsP5KtzDNqLLchwF4uHrGjw": "@hicetnunc2000" + + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + + "KT1ChNsEFxwyCbJyWGSL3KdjeXE28AY1Kaog": "TCF Baker Registry" + "KT1GfAzvH7aUtVPbqRw6WbYMbd77dFPErQUg": "StakerDAO Manager" + "KT1EctCuorV2NfVb1XTQgvzJ88MQtWP8cMMv": "StakerDAO Token (Legacy)" + "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9": "USDtz Token" + "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn": "tzBTC" + "KT1Jr5t9UvGiqkvvsuUbPJHaYx24NzdUwNW9": "Harbinger Storage: Coinbase Pro" + "KT1AdbYiPYb5hDuEuVrfxmFehtnBCXv4Np7r": "Harbinger Normalizer: Coinbase Pro" + "KT1Mx5sFU4BZqnAaJRpMzqaPbd2qMCFmcqea": "Harbinger Storage: Binance" + "KT1SpD9Xh3PcmBGwbZPhVmHUM8shTwYhQFBa": "Harbinger Normalizer: Binance" + "KT1Jud6STRGZs6hSfgZsaeztbkzfwC3JswJP": "Harbinger Storage: Gemini" + "KT1JywdJbaVW5HtsYh4XNNuHcVL2vE6sYh7W": "Harbinger Normalizer: Gemini" + "KT1G3UMEkhxso5cdx2fvoJRJu5nUjBWKMrET": "Harbinger Storage: OKEx" + "KT1J623FNZ6an8NHkWFbtvm5bKXgFzhBc5Zf": "Harbinger Normalizer: OKEx" + "KT1DrJV8vhkdLEj76h1H9Q4irZDqAkMPo1Qf": "Compromised Dexter tzBTC Pool" + "KT1Puc9St8wdNoGtLiD2WXaHbWU7styaxYhD": "Compromised Dexter USDtz Pool" + "KT19kgnqC5VWoxktLRdRUERbyUPku9YioE8W": "Kaiko Price Oracle" + "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8": "ETHtz Token" + "KT19c8n5mWrqpxMcR3J687yssHxotj88nGhZ": "Compromised Dexter ETHtz Pool" + "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH": "wXTZ Token" + "KT1V4Vp7zhynCNuaBjWMpNU535Xm2sgqkz6M": "wXTZ Core" + "KT1FMSwqX2W2p1CCJeJNy2rvYEYEYjRiUza3": "Tezex Swap Contract" + "KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU": "Dexter ETHtz Pool" + "KT1Tr2eG3eVmPRbymrbU2UppUmKjFPXomGG9": "Dexter USDtz Pool" + "KT1BGQR7t4izzKZ7eRodKWTodAsM23P38v7N": "Dexter tzBTC Pool" + "KT1D56HQfMmwdopmFLTwNHFJSs6Dsg2didFo": "Dexter wXTZ Pool" + "KT1H28iie4mW9LmmJeYLjH6zkC8wwSmfHf5P": "TzButton Round 2" + "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV": "Kolibri Token" + "KT1AbYeDbjjcAnV1QK7EZUUdqku77CdkTuv6": "Dexter kUSD Pool" + "KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9": "hic et nunc Art House" + "KT1HbQepzV1nVGg8QVznG7z4RcHseD5kwqBn": "hic et nunc Art House v2" + "KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton": "hic et nunc NFT" + "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW": "hic et nunc hDAO" + "KT1CpeSQKdkhWi4pinYcseCFKmDhs5M74BkU": "tzcolors Auction House" + "KT1FyaDqiMQWg7Exo7VUiXAgZbd2kCzo3d4s": "tzcolors NFT" + "KT1VG2WtYdSWz5E7chTeAdDPZNy2MpP8pTfL": "Atomex" + "KT1VgXHLXRgh6J5iGw4zkk7vUfjLoPhRnt9L": "RAMP DeFi rStake Manager" + "KT1MEouXPpCx9eFJYnxfAWpFA7NxhW3rDgUN": "BLND Token" + "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea": "Staker Governance Token (STKR)" + "KT1JdufSdfg3WyxWJcCRNsBFV9V3x9TQBkJ2": "Kolibri Oven Proxy" + "KT1Ty2uAmF5JxWyeGrVpk17MEyzVB8cXs8aJ": "Kolibri Minter" + "KT1Ldn1XWQmk7J4pYgGFjjwV57Ew8NYvcNtJ": "Kolibri Oven Registry" + "KT1TybhR7XraG75JFYKSrh7KnxukMBT5dor6": "OBJKT-hDAO Curation" + "KT1Mgy95DVzqVBNYhsW93cyHuB57Q94UFhrh": "Kolibri Oven Factory" + "KT1AxaBxkFLCUi3f8rdDAAxBKHfzY8LfKDRA": "kUSD Liquidation Pool" + "KT1EH8yKXkRoxNkULRB1dSuwhkKyi5LJH82o": "Tezos Mandala" + "KT1QZt5o2eU2ymEpUW8EFhybaLpd9cWfqfUL": "Kalamint IPFS Registry" + "KT1EpGgjQs73QfFJs9z7m1Mxm5MTnpC2tqse": "Kalamint Art House" + "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT": "KALAM Token" + "KT1HvpCCHvC9c4iNzAa6rx4MqNsmPRJf6CEw": "Alchememist Auction" + "KT1BwxoxUJEnGcrWtfz2CiCZ19KN1xiN7dNF": "Project Uanon Rewards Distributor" + "KT1AUaGsGAkiYgH5wXvQ2tR8JV5dTkenM8XN": "Project Uanon NFT Distributor" + "KT1VJsKdNFYueffX6xcfe6Gg9eJA6RUnFpYr": "Project Uanon Puzzle Oracle" + "KT1EpQVwqLGSH7vMCWKJnq6Uxi851sEDbhWL": "Atomex FA1.2" + "KT1NmoofGosSaWFKgAbt7AMTqnV1xfqeAhLT": "RAMP DeFi rStake Creator" + "KT1UmxSSUQ5716tRa2RLNSAkiSG6TWbzZ7GL": "tezostaco.shop" + "KT1JBThDEqyqrEHimhxoUBCSnsKAqFcuHMkP": "NFTz.fun NFT" + "KT1MWxucqexguPjhqEyk4XndE1M5tHnhNhH7": "QuipuSwap 1.0 USDtz Pool" + "KT1CiSKXR68qYSxnbzjwvfeMCRburaSDonT2": "QuipuSwap 1.0 kUSD Pool" + "KT1NABnnQ4pUTJHUwFLiVM2uuEu1RXihAVmB": "QuipuSwap 1.0 wXTZ Pool" + "KT1N1wwNPqT5jGhM91GQ2ae5uY8UzFaXHMJS": "QuipuSwap 1.0 tzBTC Pool" + "KT1DX1kpCEfEg5nG3pXSSwvtkjTr6ZNYuxP4": "QuipuSwap 1.0 ETHtz Pool" + "KT1R5Fp415CJxSxxXToUj6QvxP1LHaYXaxV6": "QuipuSwap 1.0 STKR Pool" + "KT1V41fGzkdTJki4d11T1Rp9yPkCmDhB7jph": "QuipuSwap 1.0 hDAO Pool" + "KT1T4wNjJtNqZ9XCKSZqR5BXsuGczTxhV9Vu": "QuipuSwap 1.0 USDS Pool" + "KT1WxgZ1ZSfMgmsSDDcUn8Xn577HwnQ7e1Lb": "QuipuSwap 1.1 USDtz Pool" + "KT1K4EwTpbvYN9agJdjpyJm4ZZdhpUNKB3F6": "QuipuSwap 1.1 kUSD Pool" + "KT1W3VGRUjvS869r4ror8kdaxqJAZUbPyjMT": "QuipuSwap 1.1 wXTZ Pool" + "KT1WBLrLE2vG8SedBqiSJFm4VVAZZBytJYHc": "QuipuSwap 1.1 tzBTC Pool" + "KT1Evsp2yA19Whm24khvFPcwimK6UaAJu8Zo": "QuipuSwap 1.1 ETHtz Pool" + "KT1BMEEPX7MWzwwadW3NCSZe9XGmFJ7rs7Dr": "QuipuSwap 1.1 STKR Pool" + "KT1Qm3urGqkRsWsovGzNb2R81c3dSfxpteHG": "QuipuSwap 1.1 hDAO Pool" + "KT1H4NVBGeHXRh1voDv5PPC1Xb6M7xJFQcW5": "QuipuSwap 1.1 USDS Pool" + "KT1QxLqukyfohPV5kPkw97Rs6cw1DDDvYgbB": "QuipuSwap 1.2 hDAO Pool" + "KT1KFszq8UFCcWxnXuhZPUyHT9FK3gjmSKm6": "QuipuSwap 1.2 USDS Pool" + "KT1PrRTVNgxkRgyqqNQvwTiVhd55dqyxXJ6n": "QuipuSwap sDAO Pool" + "KT1WDe2vJCDqz5euKupppQsioPcakUd45Tfo": "QuipuSwap rSAL Pool" + "KT1DssMzoSr8fnUUq1WxeSuHfLG4gzS7pgge": "QuipuSwap bDAO Pool" + "KT1WYQj3HEt3sxdsV4dMLA8RKzUnYAzXgguS": "QuipuSwap GUTS Pool" + "KT1WtFb1mTsFRd1n1nAYMdrE2Ud9XREz5hjK": "QuipuSwap QLkUSD Pool" + "KT1BgezWwHBxA9NrczwK9x3zfgFnUkc7JJ4b": "QuipuSwap Hedgehoge Pool" + "KT1Lpysr4nzcFegC9ci9kjoqVidwoanEmJWt": "QuipuSwap wLINK Pool" + "KT1GsTjbWkTgtsWenM6oWuTuft3Qb46p2x4c": "Quipuswap wHT Pool" + "KT1UMAE2PBskeQayP5f2ZbGiVYF7h8bZ2gyp": "Quipuswap wBUSD Pool" + "KT1MpRQvn2VRR26VJFPYUGcB8qqxBbXgk5xe": "Quipuswap wLEO Pool" + "KT1AN7BBmeSUN5eDDQLEhWmXv1gn4exc5k8R": "Quipuswap wHUSD Pool" + "KT1Lvtxpg4MiT2Bs38XGxwh3LGi5MkCENp4v": "Quipuswap wAAVE Pool" + "KT1SzCtZYesqXt57qHymr3Hj37zPQT47JN6x": "Quipuswap wFTT Pool" + "KT1GSjkSg6MFmEMnTJSk6uyYpWXaEYFahrS4": "Quipuswap wCRO Pool" + "KT1DA8NH6UqCiSZhEg5KboxosMqLghwwvmTe": "Quipuswap wCOMP Pool" + "KT1PQ8TMzGMfViRq4tCMFKD2QF5zwJnY67Xn": "Quipuswap wDAI Pool" + "KT1DksKXvCBJN7Mw6frGj6y6F3CbABWZVpj1": "Quipuswap wWBTC Pool" + "KT1FG63hhFtMEEEtmBSX2vuFmP87t9E7Ab4t": "Quipuswap WRAP Pool" + "KT1X1LgNkQShpF9nRLYw3Dgdy4qp38MX617z": "Quipuswap PLENTY Pool" + "KT1NXdxJkCiPkhwPvaT9CytFowuUoNcwGM1p": "Quipuswap SOIL Pool" + "KT1J3wTYb4xk5BsSBkg6ML55bX1xq7desS34": "Quipuswap KALAM Pool" + "KT1RRgK6eXvCWCiEGWhRZCSVGzhDzwXEEjS4": "Quipuswap CRUNCHY Pool" + "KT1DuYujxrmgepwSDHtADthhKBje9BosUs1w": "Quipuswap wWETH Pool" + "KT1Q93ftAUzvfMGPwC78nX8eouL1VzmHPd4d": "Quipuswap FLAME Pool" + "KT1U2hs5eNdeCpHouAvQXGMzGFGJowbhjqmo": "Quipuswap wUSDC Pool" + "KT1T4pfr6NL8dUiz8ibesjEvH2Ne3k6AuXgn": "Quipuswap wUSDT Pool" + "KT1RsfuBee5o7GtYrdB7bzQ1M6oVgyBnxY4S": "Quipuswap wMATIC Pool" + "KT1Ti3nJT85vNn81Dy5VyNzgufkAorUoZ96q": "Quipuswap wUNI Pool" + "KT1Ca5FGSeFLH3ugstc5p56gJDMPeraBcDqE": "Quipuswap wPAX Pool" + "KT1X3zxdTzPB9DgVzA3ad6dgZe9JEamoaeRy": "QuipuSwap QUIPU AMM" + "KT1K8A8DLUTVuHaDBCZiG6AJdvKJbtH8dqmN": "QuipuSwap PAUL AMM" + "KT1Gdix8LoDoQng7YqdPNhdP5V7JRX8FqWvM": "QuipuSwap SMAK AMM" + "KT1FHiJmJUgZMPtv5F8M4ZEa6cb1D9Lf758T": "QuipuSwap crDAO AMM" + "KT1EtjRRCBC2exyCRXz8UfV7jz7svnkqi7di": "QuipuSwap uUSD AMM" + "KT1PL1YciLdwMbydt21Ax85iZXXyGSrKT2BE": "QuipuSwap YOU AMM" + "KT1NEa7CmaLaWgHNi6LkRi5Z1f4oHfdzRdGA": "QuipuSwap kDAO AMM" + "KT1JyPE1BWdYoRGBvvKhEPbcVRd3C9NCCwQC": "QuipuSwap GOT AMM" + "KT1Wa8yqRBpFCusJWgcQyjhRz7hUQAmFxW7j": "FLAME Token" + "KT1KPoyzkj82Sbnafm6pfesZKEhyCpXwQfMc": "fDAO" + "KT1Ph8ptSU4rf7PPg2YBMR6LTpr6rc4MMyrq": "Catz Token" + "KT1K7whn5yHucGXMN7ymfKiX5r534QeaJM29": "QuipuSwap 1.0 FA1.2 AMM Factory" + "KT1MMLb2FVrrE9Do74J3FH1RNNc4QhDuVCNX": "QuipuSwap 1.0 FA2 AMM Factory" + "KT1Lw8hCoaBrHeTeMXbqHPG4sS4K1xn7yKcD": "QuipuSwap 1.1 FA1.2 AMM Factory" + "KT1SwH9P1Tx8a58Mm6qBExQFTcy2rwZyZiXS": "Quipuswap 1.1 FA2 AMM Factory" + "KT1PvEyN1xCFCgorN92QCfYjw3axS6jawCiJ": "Quipuswap 1.2 FA2 AMM Factory" + "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf": "Stably USD" + "KT1J5dqegz1qYaYc7X3KjynYL9St1wcZ8ZyV": "Maelstrom Mixer" + "KT19ovJhcsUn4YU8Q5L3BGovKSixfbWcecEA": "Salsa" + "KT1DLif2x9BtK6pUq9ZfFVVyW5wN2kau9rkW": "WRAP Quorum" + "KT1GUNKmkrgtMQjJp3XxcmCj6HZBhkUmMbge": "Bazaar DAO" + "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd": "WRAP Token" + "KT1G1cCRNBgQ48mVDjopHjEmTN5Sbtar8nn9": "Hedgehoge Token" + "KT1BHCumksALJQJ8q8to2EPigPW6qpyTr7Ng": "Crunchy.network Token" + "KT1XPFjZqCULSnqfKaaYy8hJjeY63UNSGwXg": "crDAO" + "KT1GBZmSxmnKJXGMdMLbugPfLyUPmuLSMwKS": "Tezos Domains Registry" + "KT1CaSP4dn8wasbMsfdtGiCPgYFW7bvnPRRT": "Tezos Domains Auction" + "KT1P8n2qzJjwMPbHJfi4o8xu6Pe3gaU3u2A3": "Tezos Domains Committer", + "KT191reDVKrLxU9rjTSxg53wRqj6zh8pnHgr": "Tezos Domains Sales", + "KT1TnTr6b2YxSx2xUQ8Vz3MoWy771ta66yGx": "Tezos Domains Claim Reverse Record", + "KT1J9VpjiH5cmcsskNb8gEXpBtjD4zrAx4Vo": "Tezos Domains Update Reverse Record", + "KT1CozhoKRtWSoEvyk7mXrPNFxawMcmXvZtM": "Hicathon Token" + "KT1Nbc9cmx19qFrYYFpkiDoojVYL8UZJYVcj": "GUTS Gaming Token" + "KT1TtaMcoSx5cZrvaVBWsFoeZ1L15cxo5AEy": "SOIL Token" + "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b": "Plenty Token" + "KT1UDe1YP963CQSb5xN7cQ1X8NJ2pUyjGw5T": "Plenty 1.0 Token Pool" + "KT1J7v85udA8GnaBupacgY9mMvrb8zQdYb3E": "Plenty 1.0 ETHtz Pool" + "KT1Vs8gqh7YskPnUQMfmjogZh3A5ZLpqQGcg": "Plenty 1.0 hDAO Pool" + "KT1JCkdS3x5hTWdrTQdzK6vEkeAdQzsm2wzf": "Plenty 1.0 wLINK Pool" + "KT1TNzH1KiVsWh9kpFrWACrDNnfK4ihvGAZs": "Plenty 1.0 wMATIC Pool" + "KT1K5cgrw1A8WTiizZ5b6TxNdFnBq9AtyQ7X": "Plenty 1.0 USDtz Pool" + "KT1BfQLAsQNX8BjSBzgjTLx3GTd3qhwLoWNz": "Plenty 1.0 QuipuSwap Liquidity Farm" + "KT1JQAZqShNMakSNXc2cgTzdAWZFemGcU6n1": "Plenty 1.1 QuipuSwap Liquidity Farm" + "KT1QqjR4Fj9YegB37PQEqXUPHmFbhz6VJtwE": "Plenty 1.1 Token Pool" + "KT19asUVzBNidHgTHp8MP31YSphooMb3piWR": "Plenty 1.1 ETHtz Pool" + "KT1Ga15wxGR5oWK1vBG2GXbjYM6WqPgpfRSP": "Plenty 1.1 hDAO Pool" + "KT1MBqc3GHpApBXaBZyvY63LF6eoFyTWtySn": "Plenty 1.1 USDtz Pool" + "KT1KyxPitU1xNbTriondmAFtPEcFhjSLV1hz": "Plenty 1.1 wLINK Pool" + "KT1XherecVvrE6X4PV5RTwdEKNzA294ZE9T9": "Plenty 1.1 wMATIC Pool" + "KT1KJhxkCpZNwAFQURDoJ79hGqQgSC9UaWpG": "Plenty wBUSD LP Farm" + "KT1VCrmywPNf8ZHH95HKHvYA4bBQJPa8g2sr": "Plenty USDtz LP Farm" + "KT1M82a7arHVwcwaswnNUUuCnQ45xjjGKNd1": "Plenty wWBTC LP Farm" + "KT1La1qZiJtDRcd9ek8w5KYD47i9MQqAQHmP": "Plenty wWBTC LP Token" + "KT1UqnQ6b1EwQgYiKss4mDL7aktAHnkdctTQ": "Plenty wLINK LP Farm" + "KT1UP9XHQigWMqNXYp9YXaCS1hV9jJkCF4h4": "Plenty wMATIC LP Farm" + "KT1PuPNtDFLR6U7e7vDuxunDoKasVT6kMSkz": "Plenty wUSDC AMM" + "KT1Kp3KVT4nHFmSuL8bvETkgQzseUYP3LDBy": "Plenty wUSDC LP Token" + "KT1D36ZG99YuhoCRZXLL86tQYAbv36bCq9XM": "Plenty USDtz AMM" + "KT18qSo4Ch2Mfq4jP3eME7SWHB8B8EDTtVBu": "Plenty USDtz LP Token" + "KT1XXAavg3tTj12W1ADvd3EEnm1pu6XTmiEF": "Plenty wBUSD AMM" + "KT1UC3vcVZ4K9b39uQxaMNA2N1RuJXKLCnoA": "PLENTY wBUSD LP Token" + "KT19Dskaofi6ZTkrw3Tq4pK7fUqHqCz4pTZ3": "Plenty wWBTC AMM" + "KT1XVrXmWY9AdVri6KpxKo4CWxizKajmgzMt": "Plenty wLINK Swap" + "KT1VeNQa4mucRj36qAJ9rTzm4DTJKfemVaZT": "Plenty wMATIC AMM" + "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ": "Wrap Token Family" + "KT1KENVgwsrAnXZHkm5MptHWhMYiXeG5hwa3": "Wrap wLink Farm" + "KT1LXQT3b39wLSiFQ1rHatzALzeKsRGmd8gr": "Wrap wAAVE Farm" + "KT1Stv6ATejBZ2uD9eMm5HyQ3nrNrC32zpRL": "Wrap wBUSD Farm" + "KT1FQBbU7uNkHSq4oLyiTyBFTZ7KfTWGLpcv": "Wrap wCEL Farm" + "KT1NSKpB8ppqABLAEDozUmcLv3QUceN5uHQi": "Wrap wCOMP Farm" + "KT1HLJ9E4nd8a6DnKdrZNXiEHihk5nyJJDoR": "Wrap wCRO Farm" + "KT1UfeNuqT3F6ntYwucDGPHwHdYa1pQbWfST": "Wrap wDAI Farm" + "KT1KY55T9jVZwFaCpRcj62LQNwoVYgtRHG6F": "Wrap wFTT Farm" + "KT1U9pATbqyDL3ZXzTQnPN2LnaGN78UnpzUw": "Wrap wHT Farm" + "KT1BKu6MnA86QF7JDUPj8anAEPDJNDsUYs3v": "Wrap wHUSD Farm" + "KT1N7RC3hLLsKgmKhjnYBiVxY2jfYcohZzwR": "Wrap wLEO Farm" + "KT1GCNfU4RQ85VgQF3fsj69Lgw8Ucz7RGoph": "Wrap wMATIC Farm" + "KT19ohHrCtSv5u4RzU3SySZJPKGhcovkf9sS": "Wrap wMKR Farm" + "KT1K5oY3YC16AgcxPYBDty96xyzVPa89X3yh": "Wrap wOKB Farm" + "KT1UxnT4id9zKz1tgK1UxwpigFi5ny7vTCu9": "Wrap wPAX Farm" + "KT1Ls37uwiU2vD7sSBRmUV7ccdNuvgRTxtCQ": "Wrap wSUSHI Farm" + "KT1UeEeeSfSd7uDWpbxBTBkBBpVeDrcqcUr7": "Wrap wUNI Farm" + "KT1HVrGpv4GUoSR6qCmkxmHzAFtwfKxzfcop": "Wrap wUSDC Farm" + "KT1DQg57yTJ7QKxzk6AkPtDGvZYTM5pX4GYE": "Wrap wUSDT Farm" + "KT1SZVLvLDQvqx6qMbF8oXZe2tfP7bJMASy2": "Wrap wWBTC Farm" + "KT1J82G1XVAA4oqjC44qskihdWerrneNVHnn": "Wrap wWETH Farm" + "KT1AnsHEdYKEdM62QCNpZGc5PfpXhftcdu22": "Wrap Token Farm" + "KT1QY4siBbWg9qpj52fEzrWdWfkbFcwwjfoA": "Wrap LP Farm" + "KT1T9zQKY259fbCt6tKHFnrMHEePgmsWAJYW": "Wrap wLINK LP Farm" + "KT1AxiZu1CtCMg5g5YiPL145cDx9axdwAexX": "Wrap wWBTC LP Farm" + "KT1BN1Si6u8ndd46RbbES5cNGojyRK6T8Md8": "Wrap wWETH LP Farm" + "KT1NvQJYeMCdEtzF45bs3UNpMmjfY97u2qW2": "Wrap wAAVE LP Farm" + "KT19hzFPbMW9cYgUhLNghytkWEymMKsPrdfX": "PixelPotus v1" + "KT1WGDVRnff4rmGzJUbdCRAJBmYt12BrPzdD": "PixelPotus v2" + "KT1KY2x1XrWykYd2dbBNXfE6tVUU3eYNB4wo": "PixelPotus Market" + "KT1My1wDZHDGweCrJnQJi3wcFaS67iksirvj": "hic et nunc SUBJKT" + "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X": "SMAK Token" + "KT1VHd7ysjnvxEzwtjBAmYAmasvVCfPpSkiG": "Green Salsa Token" + "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb": "QuipuSwap DAO Token" + "KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3": "Crunchy Farms v1" + "KT1FvqJwEDWb1Gwc55Jd1jjTHRVWbYKUUpyq": "objkt.com Market" + "KT1XjcRq5MLAzMKQ3UHsrue2SeU2NbxUrzmU": "objkt.com English Auction" + "KT1DdxmJujm3u2ZNkYwV24qLBJ6iR7sc58B9": "Tezzardz Crowdsale" + "KT1LHHLso8zQWQWg1HUukajdxxbkGfNoHjh6": "Tezzardz NFT" + "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6": "PAUL Token" + "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL": "YOU Governance Token" + "KT1Lz5S39TMHEA7izhQn8Z1mQoddm6v1jTwH": "Youves Reward Pool" + "KT1FFE2LC5JpVakVjHm5mM36QVp2p3ZzH4hH": "Youves Vault Originator" + "KT1RkQaK5X84deBAT6sXJ2VLs7zN4pM7Y3si": "Youves uUSD Options" + "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW": "uUSD Token" + "KT1RC22chBZGJtWv82e5pSeyqyBLEyDRqobz": "Ubinetic uUSD Price Oracle" + "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5": "Granada tzBTC AMM" + "KT1BijKznvGCkU4iFEgdfSaEQgnbRViMh97f": "Flame Poker" + "KT1GioMCKwRyWoQpdrwxvsPVEsFJkkLyquVZ": "GOT Token" + "KT1Cq3pyv6QEXugsAC2iyXr7ecFqN7fJVTnA": "Tezotopia Resources" + "KT1PSUKkif8KZzSeWdPewWMkx61QBR8VuXsm": "Tezotopia Market" + "KT1HGL8vx7DP4xETVikL4LUYvFxSV19DxdFN": "aka NFT Market" + "KT19JYndHaesXpvUfiwgg8BtE41HKkjjGMRC": "Rocket Tokens" + "KT1H5KJDxuM9DURSfttepebb6Cn7GbvAAT45": "MAG Token" + "KT1FVbyctinHvVJNyMWeueCzXFFX2MCqsYDj": "tzPunks NFT" + "KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE": "fxhash GENTK" + "KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9": "fxhash Market" + "KT1LjmAdYQCLBjwv4S2oFkEzyHVkomAf5MrW": "Versum Items" + "tz1dtzgLYUHMhP6sWeFtFsHkHqyPezBBPLsZ": "fxhash Treasury" + "KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr": "fxhash Minter" + "KT1GyRAJNdizF1nojQz62uGYkx8WFRUJm9X5": "Versum Market" + "tz1TWrPXuG3T3rR9NR5EqsBegJMwiMcobjkt": "objkt Treasury" + "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF": "Unobtanium Token" + "KT1GA6KaLWpURnjvmnxB4wToErzM2EXHqrMo": "Gap Threads Asset Manager" + "KT1JWnPVJfRrQCqA2ntLZf6zgVphJ1NJCaYi": "Gap Threads Minter" + "KT1ViVwoVfGSCsDaxjwoovejm1aYSGz7s2TZ": "Teztopia NFT Registry" + "KT1Aq4wWmVanpQhq4TTfjZXB5AjFpx15iQMM": "objkt.com minter" + "KT1Mqx5meQbhufngJnUAGEGpa4ZRxhPSiCgB": "Tezos Domains TLDRegistrar" + "KT1PnUZCp3u2KzWr93pn4DD7HAJnm3rWVrgn": "WTZ Token" + "KT1PwoZxyv4XkPEGnTqWYvjA1UYiPTgAGyqL": "SpicySwap Router" + "KT18pVpRXKPY2c4U2yFEGSH3ZnhB2kL8kwXS": "Rarible NFT" + "KT1KRvNVubq64ttPbQarxec5XdS6ZQU4DVD2": "Materia Token" + "KT1NUrzs7tiT4VbNPqeTxgAFa4SXeV1f3xe9": "Versum Identity" + "KT1SjXiUX63QvdNMcM2m492f7kuf8JxXRLp4": "Ctez Token" + "KT198mqFKkiWerXLmMCw69YB1i6yzYtmGVrC": "Rarible Exchange v2" + "tz1MtU1ZH9cLSRjyrZXstEGxJcbRfvX4E9Ga": "Smartlink Treasury" + "KT1Xphnv7A1sUgRwZsecmAGFWm7WNxJz76ax": "Tez Dozen NFT" + "KT1D2fZiUNo6RPj3zKofH8DqDDgoV7KoyEbb": "Rarible Fill Storage" + "KT1M81KrJr6TxYLkZkVqcpSTNKGoya8XytWT": "ECoin Network" + "KT1JherLR5WrarWLPxg1e2frRhULkrsscf7i": "Tezotopia Ticket Lottery" + "KT1D9PA7tvuCe9XnDskd2F67XwdrT4ueqjGe": "QuipuSwap ECN AMM" + "KT1AFq5XorPduoYyWxs5gEyrFK6fVjJVbtCj": "akaSwap NFT" + "KT1HZVd9Cjc2CMe3sQvXgbxhpJkdena21pih": "Randomly Common Skeles NFT" + "tz1U7xSdkqfv2Q4WHp9x6e1kv8FoE31kgimv": "Gap Threads Treasury" + "KT1TR4qabnDU6aAUym6nauSGaRwJpoKU3efP": "SMAK Staking" + } + } + fee: { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + counter: { + visible: true + } + gas_limit: { + visible: true + display-name: "Gas Limit" + } + storage_limit: { + visible: true + display-name: "Storage Limit" + } + public_key: { + data-type: "hash" + visible: true + } + amount: { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + destination: { + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + value-map: { + "tz1ck2Dg17CaAT592JQhCDrsMzbvfEzr4urZ": "Taco Klepto" + "tz1aPzpnmcXpp4ukou11pDgEuNHAsMT2hUUv": "Taco Hoarder" + "tz1VwmmesDxud2BJEyDKUTV5T5VEP8tGBKGD": "Mainnet Faucet" + "tz1Z9MxKUBcbA6SKyKu9VLif8PeiQ5fkpCeo": "@tezosnoob" + "tz1RaGb8tWxUh194btmAiXT9Tkk6pGBMZVL8": "USDtz Mother" + "tz1djRgXXWWJiY1rpMECCxr5d9ZBqWewuiU1": "Galleon Support" + "tz1cPGs7kKJ4NmAB5XTB1dubK4cfDoFffHq5": "STKR AirDrop" + "tz1SiPXX4MYGNJNDsRc7n8hkvUqFzg8xqF9m": "Binance A" + "tz1eogbwM5NdoojKEvvSnjYGcJapZgADRK3m": "Binance B" + "tz1ch7nvDDAchbAPfTio3yBsdvN1SZJZj1wY": "Binance C" + "tz1Q3jvYU9knekDYJfyvj3GjUy6898MNjvb2": "Binance D" + "tz1d6qqVYwPLLvzZ8X37ATHr4Hi2TcBXQmSZ": "Binance E" + "tz1XTQWJZnDFpYPh13LyZcWSSuxEmWRjNxWn": "Binance F" + "tz1c5wM9826YcUNQ8a17z9eUYpKQ3oW3zfmJ": "Kaiko Price Oracle Updater A" + "tz1QSbd179w1Xp9WTaCwcBt4xxvBpZEtxbxJ": "Harbinger Coinbase Pro Oracle Updater A" + "tz2L9474hvA2EXyNLi4u3YnqrKVf3GzeZ8tb": "Harbinger Coinbase Pro Oracle Updater B" + "tz1cYfMsbsGhxPqDovmaQHDByTeqiRTygEpc": "Upbit A" + "tz1MRssJTFokjJ4WHAY63wFTufQ8qpxZJtvU": "Upbit B" + "tz1bDXD6nNSrebqmAnnKKwnX1QdePSMCj4MX": "Kraken A" + "tz1YpWsMwc4gSyjtxEF3JbmN6YrGiDidaSmg": "Kraken B" + "tz1NH4A2kRyFQUYhyi9aL8jrrySQUrCgNsX9": "Kraken C" + "tz1cgJLxcS8ZTgq5dXPtojJJR7Bp8fKDyxPK": "Kraken D" + "tz1e9ZH87proooFwLidjvE8fhusWfeDf3bgk": "Kraken E" + "tz1ejivVeR6WxqzphH31EJPm87jyYu6HVXXw": "worldartday2021" + "tz1bkMZKrPYUWvVmP4yw4EHv6PTAA76b6pcJ": "Smartlink ICO" + "tz1dMYz5pcXYXnfH5gjr652iSDq9zc2SrqRi": "Tezos India Covid Charity" + "tz1ecr3NoPwvbJQSQXFJrk1cYGcDsJmmKEG5": "Hicathon" + "tz1WC3dUzy19mbkGwz4J3KhuSonE7AQxbZuF": "@KidMograph" + "tz1gqaKjfQBhUMCE6LhbkpuittRiWv5Z6w38": "@jjjjjjjjjjohn" + "tz1UBZUkXpKGhYsP5KtzDNqLLchwF4uHrGjw": "@hicetnunc2000" + + "KT1ChNsEFxwyCbJyWGSL3KdjeXE28AY1Kaog": "TCF Baker Registry" + "KT1GfAzvH7aUtVPbqRw6WbYMbd77dFPErQUg": "StakerDAO Manager" + "KT1EctCuorV2NfVb1XTQgvzJ88MQtWP8cMMv": "StakerDAO Token (Legacy)" + "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9": "USDtz Token" + "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn": "tzBTC" + "KT1Jr5t9UvGiqkvvsuUbPJHaYx24NzdUwNW9": "Harbinger Storage: Coinbase Pro" + "KT1AdbYiPYb5hDuEuVrfxmFehtnBCXv4Np7r": "Harbinger Normalizer: Coinbase Pro" + "KT1Mx5sFU4BZqnAaJRpMzqaPbd2qMCFmcqea": "Harbinger Storage: Binance" + "KT1SpD9Xh3PcmBGwbZPhVmHUM8shTwYhQFBa": "Harbinger Normalizer: Binance" + "KT1Jud6STRGZs6hSfgZsaeztbkzfwC3JswJP": "Harbinger Storage: Gemini" + "KT1JywdJbaVW5HtsYh4XNNuHcVL2vE6sYh7W": "Harbinger Normalizer: Gemini" + "KT1G3UMEkhxso5cdx2fvoJRJu5nUjBWKMrET": "Harbinger Storage: OKEx" + "KT1J623FNZ6an8NHkWFbtvm5bKXgFzhBc5Zf": "Harbinger Normalizer: OKEx" + "KT1DrJV8vhkdLEj76h1H9Q4irZDqAkMPo1Qf": "Compromised Dexter tzBTC Pool" + "KT1Puc9St8wdNoGtLiD2WXaHbWU7styaxYhD": "Compromised Dexter USDtz Pool" + "KT19kgnqC5VWoxktLRdRUERbyUPku9YioE8W": "Kaiko Price Oracle" + "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8": "ETHtz Token" + "KT19c8n5mWrqpxMcR3J687yssHxotj88nGhZ": "Compromised Dexter ETHtz Pool" + "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH": "wXTZ Token" + "KT1V4Vp7zhynCNuaBjWMpNU535Xm2sgqkz6M": "wXTZ Core" + "KT1FMSwqX2W2p1CCJeJNy2rvYEYEYjRiUza3": "Tezex Swap Contract" + "KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU": "Dexter ETHtz Pool" + "KT1Tr2eG3eVmPRbymrbU2UppUmKjFPXomGG9": "Dexter USDtz Pool" + "KT1BGQR7t4izzKZ7eRodKWTodAsM23P38v7N": "Dexter tzBTC Pool" + "KT1D56HQfMmwdopmFLTwNHFJSs6Dsg2didFo": "Dexter wXTZ Pool" + "KT1H28iie4mW9LmmJeYLjH6zkC8wwSmfHf5P": "TzButton Round 2" + "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV": "Kolibri Token" + "KT1AbYeDbjjcAnV1QK7EZUUdqku77CdkTuv6": "Dexter kUSD Pool" + "KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9": "hic et nunc Art House" + "KT1HbQepzV1nVGg8QVznG7z4RcHseD5kwqBn": "hic et nunc Art House v2" + "KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton": "hic et nunc NFT" + "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW": "hic et nunc hDAO" + "KT1CpeSQKdkhWi4pinYcseCFKmDhs5M74BkU": "tzcolors Auction House" + "KT1FyaDqiMQWg7Exo7VUiXAgZbd2kCzo3d4s": "tzcolors NFT" + "KT1VG2WtYdSWz5E7chTeAdDPZNy2MpP8pTfL": "Atomex" + "KT1VgXHLXRgh6J5iGw4zkk7vUfjLoPhRnt9L": "RAMP DeFi rStake Manager" + "KT1MEouXPpCx9eFJYnxfAWpFA7NxhW3rDgUN": "BLND Token" + "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea": "Staker Governance Token (STKR)" + "KT1JdufSdfg3WyxWJcCRNsBFV9V3x9TQBkJ2": "Kolibri Oven Proxy" + "KT1Ty2uAmF5JxWyeGrVpk17MEyzVB8cXs8aJ": "Kolibri Minter" + "KT1Ldn1XWQmk7J4pYgGFjjwV57Ew8NYvcNtJ": "Kolibri Oven Registry" + "KT1TybhR7XraG75JFYKSrh7KnxukMBT5dor6": "OBJKT-hDAO Curation" + "KT1Mgy95DVzqVBNYhsW93cyHuB57Q94UFhrh": "Kolibri Oven Factory" + "KT1AxaBxkFLCUi3f8rdDAAxBKHfzY8LfKDRA": "kUSD Liquidation Pool" + "KT1EH8yKXkRoxNkULRB1dSuwhkKyi5LJH82o": "Tezos Mandala" + "KT1QZt5o2eU2ymEpUW8EFhybaLpd9cWfqfUL": "Kalamint IPFS Registry" + "KT1EpGgjQs73QfFJs9z7m1Mxm5MTnpC2tqse": "Kalamint Art House" + "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT": "KALAM Token" + "KT1HvpCCHvC9c4iNzAa6rx4MqNsmPRJf6CEw": "Alchememist Auction" + "KT1BwxoxUJEnGcrWtfz2CiCZ19KN1xiN7dNF": "Project Uanon Rewards Distributor" + "KT1AUaGsGAkiYgH5wXvQ2tR8JV5dTkenM8XN": "Project Uanon NFT Distributor" + "KT1VJsKdNFYueffX6xcfe6Gg9eJA6RUnFpYr": "Project Uanon Puzzle Oracle" + "KT1EpQVwqLGSH7vMCWKJnq6Uxi851sEDbhWL": "Atomex FA1.2" + "KT1NmoofGosSaWFKgAbt7AMTqnV1xfqeAhLT": "RAMP DeFi rStake Creator" + "KT1UmxSSUQ5716tRa2RLNSAkiSG6TWbzZ7GL": "tezostaco.shop" + "KT1JBThDEqyqrEHimhxoUBCSnsKAqFcuHMkP": "NFTz.fun NFT" + "KT1MWxucqexguPjhqEyk4XndE1M5tHnhNhH7": "QuipuSwap 1.0 USDtz Pool" + "KT1CiSKXR68qYSxnbzjwvfeMCRburaSDonT2": "QuipuSwap 1.0 kUSD Pool" + "KT1NABnnQ4pUTJHUwFLiVM2uuEu1RXihAVmB": "QuipuSwap 1.0 wXTZ Pool" + "KT1N1wwNPqT5jGhM91GQ2ae5uY8UzFaXHMJS": "QuipuSwap 1.0 tzBTC Pool" + "KT1DX1kpCEfEg5nG3pXSSwvtkjTr6ZNYuxP4": "QuipuSwap 1.0 ETHtz Pool" + "KT1R5Fp415CJxSxxXToUj6QvxP1LHaYXaxV6": "QuipuSwap 1.0 STKR Pool" + "KT1V41fGzkdTJki4d11T1Rp9yPkCmDhB7jph": "QuipuSwap 1.0 hDAO Pool" + "KT1T4wNjJtNqZ9XCKSZqR5BXsuGczTxhV9Vu": "QuipuSwap 1.0 USDS Pool" + "KT1WxgZ1ZSfMgmsSDDcUn8Xn577HwnQ7e1Lb": "QuipuSwap 1.1 USDtz Pool" + "KT1K4EwTpbvYN9agJdjpyJm4ZZdhpUNKB3F6": "QuipuSwap 1.1 kUSD Pool" + "KT1W3VGRUjvS869r4ror8kdaxqJAZUbPyjMT": "QuipuSwap 1.1 wXTZ Pool" + "KT1WBLrLE2vG8SedBqiSJFm4VVAZZBytJYHc": "QuipuSwap 1.1 tzBTC Pool" + "KT1Evsp2yA19Whm24khvFPcwimK6UaAJu8Zo": "QuipuSwap 1.1 ETHtz Pool" + "KT1BMEEPX7MWzwwadW3NCSZe9XGmFJ7rs7Dr": "QuipuSwap 1.1 STKR Pool" + "KT1Qm3urGqkRsWsovGzNb2R81c3dSfxpteHG": "QuipuSwap 1.1 hDAO Pool" + "KT1H4NVBGeHXRh1voDv5PPC1Xb6M7xJFQcW5": "QuipuSwap 1.1 USDS Pool" + "KT1QxLqukyfohPV5kPkw97Rs6cw1DDDvYgbB": "QuipuSwap 1.2 hDAO Pool" + "KT1KFszq8UFCcWxnXuhZPUyHT9FK3gjmSKm6": "QuipuSwap 1.2 USDS Pool" + "KT1PrRTVNgxkRgyqqNQvwTiVhd55dqyxXJ6n": "QuipuSwap sDAO Pool" + "KT1WDe2vJCDqz5euKupppQsioPcakUd45Tfo": "QuipuSwap rSAL Pool" + "KT1DssMzoSr8fnUUq1WxeSuHfLG4gzS7pgge": "QuipuSwap bDAO Pool" + "KT1WYQj3HEt3sxdsV4dMLA8RKzUnYAzXgguS": "QuipuSwap GUTS Pool" + "KT1WtFb1mTsFRd1n1nAYMdrE2Ud9XREz5hjK": "QuipuSwap QLkUSD Pool" + "KT1BgezWwHBxA9NrczwK9x3zfgFnUkc7JJ4b": "QuipuSwap Hedgehoge Pool" + "KT1Lpysr4nzcFegC9ci9kjoqVidwoanEmJWt": "QuipuSwap wLINK Pool" + "KT1GsTjbWkTgtsWenM6oWuTuft3Qb46p2x4c": "Quipuswap wHT Pool" + "KT1UMAE2PBskeQayP5f2ZbGiVYF7h8bZ2gyp": "Quipuswap wBUSD Pool" + "KT1MpRQvn2VRR26VJFPYUGcB8qqxBbXgk5xe": "Quipuswap wLEO Pool" + "KT1AN7BBmeSUN5eDDQLEhWmXv1gn4exc5k8R": "Quipuswap wHUSD Pool" + "KT1Lvtxpg4MiT2Bs38XGxwh3LGi5MkCENp4v": "Quipuswap wAAVE Pool" + "KT1SzCtZYesqXt57qHymr3Hj37zPQT47JN6x": "Quipuswap wFTT Pool" + "KT1GSjkSg6MFmEMnTJSk6uyYpWXaEYFahrS4": "Quipuswap wCRO Pool" + "KT1DA8NH6UqCiSZhEg5KboxosMqLghwwvmTe": "Quipuswap wCOMP Pool" + "KT1PQ8TMzGMfViRq4tCMFKD2QF5zwJnY67Xn": "Quipuswap wDAI Pool" + "KT1DksKXvCBJN7Mw6frGj6y6F3CbABWZVpj1": "Quipuswap wWBTC Pool" + "KT1FG63hhFtMEEEtmBSX2vuFmP87t9E7Ab4t": "Quipuswap WRAP Pool" + "KT1X1LgNkQShpF9nRLYw3Dgdy4qp38MX617z": "Quipuswap PLENTY Pool" + "KT1NXdxJkCiPkhwPvaT9CytFowuUoNcwGM1p": "Quipuswap SOIL Pool" + "KT1J3wTYb4xk5BsSBkg6ML55bX1xq7desS34": "Quipuswap KALAM Pool" + "KT1RRgK6eXvCWCiEGWhRZCSVGzhDzwXEEjS4": "Quipuswap CRUNCHY Pool" + "KT1DuYujxrmgepwSDHtADthhKBje9BosUs1w": "Quipuswap wWETH Pool" + "KT1Q93ftAUzvfMGPwC78nX8eouL1VzmHPd4d": "Quipuswap FLAME Pool" + "KT1U2hs5eNdeCpHouAvQXGMzGFGJowbhjqmo": "Quipuswap wUSDC Pool" + "KT1T4pfr6NL8dUiz8ibesjEvH2Ne3k6AuXgn": "Quipuswap wUSDT Pool" + "KT1RsfuBee5o7GtYrdB7bzQ1M6oVgyBnxY4S": "Quipuswap wMATIC Pool" + "KT1Ti3nJT85vNn81Dy5VyNzgufkAorUoZ96q": "Quipuswap wUNI Pool" + "KT1Ca5FGSeFLH3ugstc5p56gJDMPeraBcDqE": "Quipuswap wPAX AMM" + "KT1X3zxdTzPB9DgVzA3ad6dgZe9JEamoaeRy": "QuipuSwap QUIPU AMM" + "KT1K8A8DLUTVuHaDBCZiG6AJdvKJbtH8dqmN": "QuipuSwap PAUL AMM" + "KT1Gdix8LoDoQng7YqdPNhdP5V7JRX8FqWvM": "QuipuSwap SMAK AMM" + "KT1FHiJmJUgZMPtv5F8M4ZEa6cb1D9Lf758T": "QuipuSwap crDAO AMM" + "KT1EtjRRCBC2exyCRXz8UfV7jz7svnkqi7di": "QuipuSwap uUSD AMM" + "KT1PL1YciLdwMbydt21Ax85iZXXyGSrKT2BE": "QuipuSwap YOU AMM" + "KT1NEa7CmaLaWgHNi6LkRi5Z1f4oHfdzRdGA": "QuipuSwap kDAO AMM" + "KT1JyPE1BWdYoRGBvvKhEPbcVRd3C9NCCwQC": "QuipuSwap GOT AMM" + "KT1Wa8yqRBpFCusJWgcQyjhRz7hUQAmFxW7j": "FLAME Token" + "KT1KPoyzkj82Sbnafm6pfesZKEhyCpXwQfMc": "fDAO" + "KT1Ph8ptSU4rf7PPg2YBMR6LTpr6rc4MMyrq": "Catz Token" + "KT1K7whn5yHucGXMN7ymfKiX5r534QeaJM29": "QuipuSwap 1.0 FA1.2 Pool Factory" + "KT1MMLb2FVrrE9Do74J3FH1RNNc4QhDuVCNX": "QuipuSwap 1.0 FA2 Pool Factory" + "KT1Lw8hCoaBrHeTeMXbqHPG4sS4K1xn7yKcD": "QuipuSwap 1.1 FA1.2 Pool Factory" + "KT1SwH9P1Tx8a58Mm6qBExQFTcy2rwZyZiXS": "Quipuswap 1.1 FA2 Pool Factory" + "KT1PvEyN1xCFCgorN92QCfYjw3axS6jawCiJ": "Quipuswap 1.2 FA2 AMM Factory" + "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf": "Stably USD" + "KT1J5dqegz1qYaYc7X3KjynYL9St1wcZ8ZyV": "Maelstrom Mixer" + "KT19ovJhcsUn4YU8Q5L3BGovKSixfbWcecEA": "Salsa" + "KT1DLif2x9BtK6pUq9ZfFVVyW5wN2kau9rkW": "WRAP Quorum" + "KT1GUNKmkrgtMQjJp3XxcmCj6HZBhkUmMbge": "Bazaar DAO" + "KT1WtCq6FuL2kYTK1x7AkmpPjb8wEJZTUwvX": "Wrapped Taco Token" + "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd": "WRAP Token" + "KT1G1cCRNBgQ48mVDjopHjEmTN5Sbtar8nn9": "Hedgehoge Token" + "KT1BHCumksALJQJ8q8to2EPigPW6qpyTr7Ng": "Crunchy.network Token" + "KT1XPFjZqCULSnqfKaaYy8hJjeY63UNSGwXg": "crDAO" + "KT1GBZmSxmnKJXGMdMLbugPfLyUPmuLSMwKS": "Tezos Domains Registry" + "KT1CaSP4dn8wasbMsfdtGiCPgYFW7bvnPRRT": "Tezos Domains Auction" + "KT1P8n2qzJjwMPbHJfi4o8xu6Pe3gaU3u2A3": "Tezos Domains Committer", + "KT191reDVKrLxU9rjTSxg53wRqj6zh8pnHgr": "Tezos Domains Sales", + "KT1TnTr6b2YxSx2xUQ8Vz3MoWy771ta66yGx": "Tezos Domains Claim Reverse Record", + "KT1J9VpjiH5cmcsskNb8gEXpBtjD4zrAx4Vo": "Tezos Domains Update Reverse Record", + "KT1CozhoKRtWSoEvyk7mXrPNFxawMcmXvZtM": "Hicathon Token" + "KT1Nbc9cmx19qFrYYFpkiDoojVYL8UZJYVcj": "GUTS Gaming Token" + "KT1TtaMcoSx5cZrvaVBWsFoeZ1L15cxo5AEy": "SOIL Token" + "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b": "Plenty Token" + "KT1UDe1YP963CQSb5xN7cQ1X8NJ2pUyjGw5T": "Plenty 1.0 Token Pool" + "KT1J7v85udA8GnaBupacgY9mMvrb8zQdYb3E": "Plenty 1.0 ETHtz Pool" + "KT1Vs8gqh7YskPnUQMfmjogZh3A5ZLpqQGcg": "Plenty 1.0 hDAO Pool" + "KT1JCkdS3x5hTWdrTQdzK6vEkeAdQzsm2wzf": "Plenty 1.0 wLINK Pool" + "KT1TNzH1KiVsWh9kpFrWACrDNnfK4ihvGAZs": "Plenty 1.0 wMATIC Pool" + "KT1K5cgrw1A8WTiizZ5b6TxNdFnBq9AtyQ7X": "Plenty 1.0 USDtz Pool" + "KT1BfQLAsQNX8BjSBzgjTLx3GTd3qhwLoWNz": "Plenty 1.0 QuipuSwap Liquidity Farm" + "KT1JQAZqShNMakSNXc2cgTzdAWZFemGcU6n1": "Plenty 1.1 QuipuSwap Liquidity Farm" + "KT1QqjR4Fj9YegB37PQEqXUPHmFbhz6VJtwE": "Plenty 1.1 Token Pool" + "KT19asUVzBNidHgTHp8MP31YSphooMb3piWR": "Plenty 1.1 ETHtz Pool" + "KT1Ga15wxGR5oWK1vBG2GXbjYM6WqPgpfRSP": "Plenty 1.1 hDAO Pool" + "KT1MBqc3GHpApBXaBZyvY63LF6eoFyTWtySn": "Plenty 1.1 USDtz Pool" + "KT1KyxPitU1xNbTriondmAFtPEcFhjSLV1hz": "Plenty 1.1 wLINK Pool" + "KT1XherecVvrE6X4PV5RTwdEKNzA294ZE9T9": "Plenty 1.1 wMATIC Pool" + "KT1KJhxkCpZNwAFQURDoJ79hGqQgSC9UaWpG": "Plenty wBUSD LP Farm" + "KT1VCrmywPNf8ZHH95HKHvYA4bBQJPa8g2sr": "Plenty USDtz LP Farm" + "KT1M82a7arHVwcwaswnNUUuCnQ45xjjGKNd1": "Plenty wWBTC LP Farm" + "KT1La1qZiJtDRcd9ek8w5KYD47i9MQqAQHmP": "Plenty wWBTC LP Token" + "KT1UqnQ6b1EwQgYiKss4mDL7aktAHnkdctTQ": "Plenty wLINK LP Farm" + "KT1UP9XHQigWMqNXYp9YXaCS1hV9jJkCF4h4": "Plenty wMATIC LP Farm" + "KT1PuPNtDFLR6U7e7vDuxunDoKasVT6kMSkz": "Plenty wUSDC AMM" + "KT1Gz1mx1jm7JHqU7GuMVWF6soB9RjsfLN3o": "Plenty wUSDC LP Token" + "KT1D36ZG99YuhoCRZXLL86tQYAbv36bCq9XM": "Plenty USDtz AMM" + "KT18qSo4Ch2Mfq4jP3eME7SWHB8B8EDTtVBu": "Plenty USDtz LP Token" + "KT1XXAavg3tTj12W1ADvd3EEnm1pu6XTmiEF": "Plenty wBUSD AMM" + "KT1UC3vcVZ4K9b39uQxaMNA2N1RuJXKLCnoA": "PLENTY wBUSD LP Token" + "KT19Dskaofi6ZTkrw3Tq4pK7fUqHqCz4pTZ3": "Plenty wWBTC AMM" + "KT1XVrXmWY9AdVri6KpxKo4CWxizKajmgzMt": "Plenty wLINK Swap" + "KT1VeNQa4mucRj36qAJ9rTzm4DTJKfemVaZT": "Plenty wMATIC AMM" + "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ": "Wrap Token Family" + "KT1KENVgwsrAnXZHkm5MptHWhMYiXeG5hwa3": "Wrap wLink Farm" + "KT1LXQT3b39wLSiFQ1rHatzALzeKsRGmd8gr": "Wrap wAAVE Farm" + "KT1Stv6ATejBZ2uD9eMm5HyQ3nrNrC32zpRL": "Wrap wBUSD Farm" + "KT1FQBbU7uNkHSq4oLyiTyBFTZ7KfTWGLpcv": "Wrap wCEL Farm" + "KT1NSKpB8ppqABLAEDozUmcLv3QUceN5uHQi": "Wrap wCOMP Farm" + "KT1HLJ9E4nd8a6DnKdrZNXiEHihk5nyJJDoR": "Wrap wCRO Farm" + "KT1UfeNuqT3F6ntYwucDGPHwHdYa1pQbWfST": "Wrap wDAI Farm" + "KT1KY55T9jVZwFaCpRcj62LQNwoVYgtRHG6F": "Wrap wFTT Farm" + "KT1U9pATbqyDL3ZXzTQnPN2LnaGN78UnpzUw": "Wrap wHT Farm" + "KT1BKu6MnA86QF7JDUPj8anAEPDJNDsUYs3v": "Wrap wHUSD Farm" + "KT1N7RC3hLLsKgmKhjnYBiVxY2jfYcohZzwR": "Wrap wLEO Farm" + "KT1GCNfU4RQ85VgQF3fsj69Lgw8Ucz7RGoph": "Wrap wMATIC Farm" + "KT19ohHrCtSv5u4RzU3SySZJPKGhcovkf9sS": "Wrap wMKR Farm" + "KT1K5oY3YC16AgcxPYBDty96xyzVPa89X3yh": "Wrap wOKB Farm" + "KT1UxnT4id9zKz1tgK1UxwpigFi5ny7vTCu9": "Wrap wPAX Farm" + "KT1Ls37uwiU2vD7sSBRmUV7ccdNuvgRTxtCQ": "Wrap wSUSHI Farm" + "KT1UeEeeSfSd7uDWpbxBTBkBBpVeDrcqcUr7": "Wrap wUNI Farm" + "KT1HVrGpv4GUoSR6qCmkxmHzAFtwfKxzfcop": "Wrap wUSDC Farm" + "KT1DQg57yTJ7QKxzk6AkPtDGvZYTM5pX4GYE": "Wrap wUSDT Farm" + "KT1SZVLvLDQvqx6qMbF8oXZe2tfP7bJMASy2": "Wrap wWBTC Farm" + "KT1J82G1XVAA4oqjC44qskihdWerrneNVHnn": "Wrap wWETH Farm" + "KT1AnsHEdYKEdM62QCNpZGc5PfpXhftcdu22": "Wrap Token Farm" + "KT1QY4siBbWg9qpj52fEzrWdWfkbFcwwjfoA": "Wrap LP Farm" + "KT1T9zQKY259fbCt6tKHFnrMHEePgmsWAJYW": "Wrap wLINK LP Farm" + "KT1AxiZu1CtCMg5g5YiPL145cDx9axdwAexX": "Wrap wWBTC LP Farm" + "KT1BN1Si6u8ndd46RbbES5cNGojyRK6T8Md8": "Wrap wWETH LP Farm" + "KT1NvQJYeMCdEtzF45bs3UNpMmjfY97u2qW2": "Wrap wAAVE LP Farm" + "KT19hzFPbMW9cYgUhLNghytkWEymMKsPrdfX": "PixelPotus v1" + "KT1WGDVRnff4rmGzJUbdCRAJBmYt12BrPzdD": "PixelPotus v2" + "KT1KY2x1XrWykYd2dbBNXfE6tVUU3eYNB4wo": "PixelPotus Market" + "KT1My1wDZHDGweCrJnQJi3wcFaS67iksirvj": "hic et nunc SUBJKT" + "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X": "SMAK Token" + "KT1VHd7ysjnvxEzwtjBAmYAmasvVCfPpSkiG": "Green Salsa Token" + "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb": "QuipuSwap DAO Token" + "KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3": "Crunchy Farms v1" + "KT1FvqJwEDWb1Gwc55Jd1jjTHRVWbYKUUpyq": "objkt.com Market" + "KT1XjcRq5MLAzMKQ3UHsrue2SeU2NbxUrzmU": "objkt.com English Auction" + "KT1DdxmJujm3u2ZNkYwV24qLBJ6iR7sc58B9": "Tezzardz Crowdsale" + "KT1LHHLso8zQWQWg1HUukajdxxbkGfNoHjh6": "Tezzardz NFT" + "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6": "PAUL Token" + "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL": "YOU Governance Token" + "KT1Lz5S39TMHEA7izhQn8Z1mQoddm6v1jTwH": "Youves Reward Pool" + "KT1FFE2LC5JpVakVjHm5mM36QVp2p3ZzH4hH": "Youves Vault Originator" + "KT1RkQaK5X84deBAT6sXJ2VLs7zN4pM7Y3si": "Youves uUSD Options" + "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW": "uUSD Token" + "KT1RC22chBZGJtWv82e5pSeyqyBLEyDRqobz": "Ubinetic uUSD Price Oracle" + "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5": "Granada tzBTC AMM" + "KT1BijKznvGCkU4iFEgdfSaEQgnbRViMh97f": "Flame Poker" + "KT1GioMCKwRyWoQpdrwxvsPVEsFJkkLyquVZ": "GOT Token" + "KT1Cq3pyv6QEXugsAC2iyXr7ecFqN7fJVTnA": "Tezotopia Resources" + "KT1PSUKkif8KZzSeWdPewWMkx61QBR8VuXsm": "Tezotopia Market" + "KT1HGL8vx7DP4xETVikL4LUYvFxSV19DxdFN": "aka NFT Market" + "KT19JYndHaesXpvUfiwgg8BtE41HKkjjGMRC": "Rocket Tokens" + "KT1H5KJDxuM9DURSfttepebb6Cn7GbvAAT45": "MAG Token" + "KT1FVbyctinHvVJNyMWeueCzXFFX2MCqsYDj": "tzPunks NFT" + "KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE": "fxhash GENTK" + "KT1Xo5B7PNBAeynZPmca4bRh6LQow4og1Zb9": "fxhash Market" + "KT1LjmAdYQCLBjwv4S2oFkEzyHVkomAf5MrW": "Versum Items" + "tz1dtzgLYUHMhP6sWeFtFsHkHqyPezBBPLsZ": "fxhash Treasury" + "KT1XCoGnfupWk7Sp8536EfrxcP73LmT68Nyr": "fxhash Minter" + "KT1GyRAJNdizF1nojQz62uGYkx8WFRUJm9X5": "Versum Market" + "tz1TWrPXuG3T3rR9NR5EqsBegJMwiMcobjkt": "objkt Treasury" + "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF": "Unobtanium Token" + "KT1GA6KaLWpURnjvmnxB4wToErzM2EXHqrMo": "Gap Threads Asset Manager" + "KT1JWnPVJfRrQCqA2ntLZf6zgVphJ1NJCaYi": "Gap Threads Minter" + "KT1ViVwoVfGSCsDaxjwoovejm1aYSGz7s2TZ": "Teztopia NFT Registry" + "KT1Aq4wWmVanpQhq4TTfjZXB5AjFpx15iQMM": "objkt.com minter" + "KT1Mqx5meQbhufngJnUAGEGpa4ZRxhPSiCgB": "Tezos Domains TLDRegistrar" + "KT1PnUZCp3u2KzWr93pn4DD7HAJnm3rWVrgn": "WTZ Token" + "KT1PwoZxyv4XkPEGnTqWYvjA1UYiPTgAGyqL": "SpicySwap Router" + "KT18pVpRXKPY2c4U2yFEGSH3ZnhB2kL8kwXS": "Rarible NFT" + "KT1KRvNVubq64ttPbQarxec5XdS6ZQU4DVD2": "Materia Token" + "KT1NUrzs7tiT4VbNPqeTxgAFa4SXeV1f3xe9": "Versum Identity" + "KT1SjXiUX63QvdNMcM2m492f7kuf8JxXRLp4": "Ctez Token" + "KT198mqFKkiWerXLmMCw69YB1i6yzYtmGVrC": "Rarible Exchange v2" + "tz1MtU1ZH9cLSRjyrZXstEGxJcbRfvX4E9Ga": "Smartlink Treasury" + "KT1Xphnv7A1sUgRwZsecmAGFWm7WNxJz76ax": "Tez Dozen NFT" + "KT1D2fZiUNo6RPj3zKofH8DqDDgoV7KoyEbb": "Rarible Fill Storage" + "KT1M81KrJr6TxYLkZkVqcpSTNKGoya8XytWT": "ECoin Network" + "KT1JherLR5WrarWLPxg1e2frRhULkrsscf7i": "Tezotopia Ticket Lottery" + "KT1D9PA7tvuCe9XnDskd2F67XwdrT4ueqjGe": "QuipuSwap ECN AMM" + "KT1AFq5XorPduoYyWxs5gEyrFK6fVjJVbtCj": "akaSwap NFT" + "KT1HZVd9Cjc2CMe3sQvXgbxhpJkdena21pih": "Randomly Common Skeles NFT" + "tz1U7xSdkqfv2Q4WHp9x6e1kv8FoE31kgimv": "Gap Threads Treasury" + "KT1TR4qabnDU6aAUym6nauSGaRwJpoKU3efP": "SMAK Staking" + } + } + parameters: { + visible: true + } + parameters_micheline: { + visible: true + } + parameters_entrypoints: { + visible: true + } + manager_pubkey: { + visible: true + } + balance: { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + spendable: { + visible: true + } + delegatable: { + visible: true + } + script: { + visible: true + } + storage: { + visible: true + } + status: { + visible: true + cache-config { + cached: true, + min-match-length: 1, + max-result-size: 100 + } + } + consumed_gas: { + visible: true + display-name: "Consumed Gas" + } + block_hash: { + display-name: "Block Hash" + data-type: "hash" + visible: true + reference: { + entity: "blocks" + key: "hash" + } + } + block_level: { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + timestamp: { + visible: true + data-format: "YYYY MMM DD, HH:mm" + } + internal { + visible: true + cache-config { + cached: true + } + } + originated_contracts { + visible: true + display-name: "Originated Account" + data-type: "accountAddress" + reference { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + } + storage_size { + display-name: "Storage Size" + visible: true + } + paid_storage_size_diff { + visible: true + } + ballot: { + visible: true + display-name: "Vote" + } + ballot_period: { + data-type: "int" + visible: true + } + number_of_slots: { + visible: true + display-name: "Slots" + } + branch: { + data-type: "hash" + visible: true + } + proposal: { + data-type: "hash" + visible: true + value-map: { + "Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A": "Ithaca 2.0" + "PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP": "Ithaca" + "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx": "Hangzhou Actual" + "PsCUKj6wydGtDNGPRdxasZDs4esZcVD9tf44MMiVy46FkD9q1h9": "Hanghouz-USDtz-LB" + "PtHangzHogokSuiMHemCuowEavgYTP8J5qQ9fQS793MHYFpCY3r": "Hangzhou" + "PtGRENLBgC4kALRCjYwBAgDNSvK9ZDCst7cRQ1aNP9Ke1cZDwnY": "Grenada LB-removed" + "PsmarYW3qFVZUNYwJaYvPEYG96N3awx5SpYs3PxiAWmCzRBAhY8": "Grenada LB-disabled" + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV": "Grenada" + "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i": "Florence no-BA" + "PsFLorBArSaXjuy9oP76Qv1v2FRYnUs7TFtteK5GkRBC24JvbdE": "Florence BA" + "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA": "Edo Actual" + "PtEdoTezd3RHSC31mpxxo1npxFjoWWcFgQtxapi51Z8TLu6v6Uq": "Edo" + "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo": "Delphi" + "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb": "Carthage 2.0" + "PtCarthavAMoXqbjBPVgDCRd5LgT7qqKWUPXnYii3xCaHRBMfHH": "Carthage" + "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS": "Babylon 2.1" + "PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU": "Babylon 2.0" + "PsBABY5nk4JhdEv1N1pZbt6m6ccB9BfNqa23iKZcHBh23jmRS9f": "Babylon" + "PtdRxBHvc91c2ea2evV6wkoqnzW7TadTg9aqS9jAn2GbcPGtumD": "Brest A" + "Psd1ynUBhMZAeajwcZJAeq5NrxorM6UCU4GJqxZ7Bx2e9vUWB6z": "Athens B" + "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd": "Athens A" + } + } + period: { + visible: true + } + errors: { + visible: true + } + utc_year: { + visible: true + } + utc_month: { + visible: true + } + utc_day: { + visible: true + } + utc_time: { + visible: true + } + operation_order: { + visible: true + } + } + } + bakers { + display-name-plural: "Bakers" + display-name: "Baker" + visible: true + attributes { + pkh { + display-name: "Address" + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + value-map: { + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + block_id { + display-name: "Block Hash" + data-type: "hash" + visible: true + reference: { + entity: "blocks" + key: "hash" + } + } + balance { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + frozen_balance { + display-name: "Frozen Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + staking_balance { + display-name: "Staking Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + delegated_balance { + display-name: "Delegated Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + rolls { + visible: true + } + deactivated { + visible: true + } + grace_period { + visible: true + } + block_level { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + cycle { + visible: true + } + period { + visible: true + } + } + } + bakers_history { + display-name-plural: "Bakers history" + display-name: "Baker history" + temporal-partition: "pkh" + visible: true + attributes { + pkh { + display-name: "Address" + visible: true + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + cache-config { + cached: true, + min-match-length: 4, + max-result-size: 100 + } + value-map: { + "tz1gk3TDbU7cJuiBRMhwQXVvgDnjsxuWhcEA": "Airfoil" + "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ": "AirGap" + "tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC": "At James" + "tz1ei4WtWEMEJekSv8qDnu9PExG6Q8HgRGr3": "Bake Tz" + "tz1NortRftucvAkD1J58L32EhSVrQEWJCEnB": "Bake'n'Rolls" + "tz1S8MNvuFEUsWgjHvi3AxibRBf388NhT1q2": "Binance Baker" + "tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d": "Bitfinex" + "tz1SYq214SCBy9naR6cvycQsYcUGpBqQAE8d": "Coinone Baker" + "tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8": "Chorus One" + "tz1MXFrtZoaXckE41bjUCSjAjAap3AFDSr3N": "Everstake (Legacy)" + "tz1TzaNn7wSQSP5gYPXCnNzBCpyMiidCq1PX": "Flippin' tacos" + "tz3RDC3Jdn4j15J7bBHZd29EUee9gVB1CxD9": "Foundation Baker 1" + "tz3bvNMQ95vfAYtG8193ymshqjSvmxiCUuR5": "Foundation Baker 2" + "tz3RB4aoyjov4KEVRbuhvQ1CKJgBJMWhaeB8": "Foundation Baker 3" + "tz3bTdwZinP8U1JmSweNzVKhmwafqWmFWRfk": "Foundation Baker 4" + "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV": "Foundation Baker 5" + "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r": "Foundation Baker 6" + "tz3WMqdzXqRWXwyvj5Hp2H7QEepaUuS7vd9K": "Foundation Baker 7" + "tz3VEZ4k6a4Wx42iyev6i2aVAptTRLEAivNN": "Foundation Baker 8" + "tz1NpWrAyDL9k2Lmnyxcgr9xuJakbBxdq7FB": "Gate.io" + "tz1WCd2jm4uSt4vntk4vSuUWoZQGhLcDuR9q": "Happy Tezos" + "tz1gfArv665EUkSg2ojMBzcbfwuPxAvqPvjo": "Kraken" + "tz1X1fpAZtwQk94QXUgZwfgsvkQgyc2KHp9d": "ownBLOCK (Legacy)" + "tz1hTFcQk2KJRPzZyHkCwbj7E1zY1xBkiHsk": "ownBLOCK" + "tz1dkP8pW6UzamUysFx3WqHZGQMNCZsEaeH6": "ownBLOCK Payouts" + "tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb": "P2P Validator" + "tz1KtvGSYU5hdKD288a1koTBURWYuADJGrLE": "\u00D8 Crypto Pool (Legacy)" + "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt": "Polychain Labs 1" + "tz2TSvNTh2epDMhZHrw73nV9piBX7kLZ9K9m": "Polychain Labs 2" + "tz1Y42aKCk53vMbaJNpf1hBg1rznGdBxHJ5C": "Tezos Berlin" + "tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke": "POS Bakerz" + "tz1b7YSEeNRqgmjuX4d4aiai2sQTF4A7WBZf": "Tezos Japan (Legacy)" + "tz1ijdEfmUoQXJfSiKCLRioeCfSrKP3sVsff": "Tezos Japan (Legacy B)" + "tz1aDiEJf9ztRrAJEXZfcG3CKimoKsGhwVAi": "Tezos Japan" + "tz1PPUo28B8BroqmVCMMNDudG4ShA2bzicrU": "Tezos Korea" + "tz1b3SaPHFSw51r92ARcV5mGyYbSSsdFd5Gz": "Tezos MX" + "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY": "Tezos Seoul" + "tz1RAzdkp1x5ZDqms4ZUrSdfJuUYGH9JTPK2": "Tezos Spanish" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "Tezos Spanish (Legacy)" + "tz1hAYfexyzPGG6RhZZMpDvAHifubsbb6kgn": "Tezos Suisse" + "tz1VYQpZvjVhv1CdcENuCNWJQXu1TWBJ8KTD": "Tezos Tokyo" + "tz1R6Ej25VSerE3MkSoEEeBjKHCDTFbpKuSX": "TezosSEAsia" + "tz1Lh9jeLSWDHYy8AshvG2dpNQseDaHg7cms": "TezosSpanish" + "tz1PesW5khQNhy4revu2ETvMtWPtuVyH2XkZ": "Tz Dutch" + "tz1Pwgj6j55akKCyvTwwr9X4np1RskSXpQY4": "Validators.com" + "tz1g8vkmcde6sWKaG2NN9WKzCkDM6Rziq194": "StakeNow" + "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8": "TezosHODL" + "tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93": "stakefish" + "tz3QCNyySViKHmeSr45kzDxzchys7NiXCWoa": "Proofofbake.com" + "tz1abmz7jiCV2GH2u81LRrGgAFFgvQgiDiaf": "Tessellated Geometry" + "tz1TDSmoZXwVevLTEvKCTHWpomG76oC9S2fJ": "Tezos Capital Legacy" + "tz1UdeKoMJivgqRgRUNzroMwRJYmJY8BtaWe": "alphaTezos" + "tz1RSWMYKGAykpizFteowByYMueCYv9TMn1L": "Tezos Alliance" + "tz1Zhv3RkfU2pHrmaiDyxp7kFZpZrUCu1CiF": "TzBake" + "tz1Vd1rXpV8hTHbFXCXN3c3qzCsgcU5BZw1e": "TzNode" + "tz1fZ767VDbqx4DeKiFswPSHh513f51mKEUZ": "Tezos Bakery" + "tz1TqUDvdck5UrPSgdjJu8RPHafet5vyWQFk": "Tezos Bakery Payouts" + "tz1aKxnrzx5PXZJe7unufEswVRCMU9yafmfb": "Tezos Canada" + "tz1WGpyzJ1WdZQyKgFN1MY1d7KExGzipFmPJ": "Tezos Canada Payouts" + "tz1S5WxdZR5f9NzsPXhr7L9L1vrEb5spZFur": "Baking Benjamins" + "tz1V3yg82mcrPJbegqVCPn6bC8w1CSTRp3f8": "Staking Shop" + "tz1hxtCEcD7idQJEDiJEq37vBkoRcwF6KC2X": "Staking Shop Payouts" + "tz1cYufsxHXJcvANhvS55h3aY32a9BAFB494": "Bakery IL" + "tz1iVCqjMRG7MfBoFnVjbLQyeLAeJQfLxXze": "Bakery IL Payouts" + "tz1WBfwbT66FC6BTLexc2BoyCCBM9LG7pnVW": "888XTZ" + "tz1U638Z3xWRiXDDKx2S125MCCaAeGDdA896": "Tezos France" + "tz1Zrqm4TkJwqTxm5TiyVFh6taXG4Wrq7tko": "Bake'n'Rolls Payouts" + "tz1aRoaRhSpRYvFdyvgWLL6TGyRoGF51wDjM": "Everstake" + "tz1W1en9UpMCH4ZJL8wQCh8JDKCZARyVx2co": "Everstake Payouts" + "tz1XXayQohB8XRXN7kMoHbf2NFwNiH3oMRQQ": "Bit Cat" + "tz1Wy5Ph1FkD1ypUjpFpsHLXLEXDAeCRkZce": "Bit Cat Payouts" + "tz1cZfFQpcYhwDp7y1njZXDsZqCrn2NqmVof": "Tezos Rio" + "tz1Y2bfsQAYHrWZpM1AwomYMw2KEtaJ5VMfU": "Tezos Rio Payouts" + "tz3bEQoFCZEEfZMskefZ8q8e4eiHH1pssRax": "Ceibo XTZ" + "tz1ceiboANJ72iqG1g9Xig8vW74JJijv4mb8": "Ceibo XTZ Payouts" + "tz1PFeoTuFen8jAMRHajBySNyCwLmY5RqF9M": "Paradigm Bakery" + "tz1fb7c66UwePkkfDXz4ajFaBP9hVNLdS7JJ": "Tezos NU" + "tz1VfoA5qPksECBkvr2EUuT6u5VgLCi3vTPV": "Tezos NU Payouts" + "tz1fUjvVhJrHLZCbhPNvDRckxApqbkievJHN": "Tezzieland" + "tz1WntXgznbivRjyhE7Y5jEzoebAhMPB2iJa": "Tezzieland Payouts" + "tz1VceyYUpq1gk5dtp6jXQRtCtY8hm5DKt72": "TeZetetic" + "tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h": "Tezos Mars" + "tz1bRaSjKZrSrSeQHBDiCqjKXqtZYZM1t8FW": "Imma Baker" + "tz1bLwpPfr3xqy1gWBF4sGvv8bLJyPHR11kx": "Tezos Hot Bakery" + "tz1ZcTRk5uxD86EFEn1vvNffWWqJy7q5eVhc": "ATEZA" + "tz1UJvHTgpVzcKWhTazGxVcn5wsHru5Gietg": "Tezry" + "tz1MQJPGNMijnXnVoBENFz9rUhaPt3S7rWoz": "Tezmania" + "tz1eCzNtidHvVgeRzQ38C81FPcYnxMsCEL6Z": "TezLoom" + "tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc": "YieldWallet" + "tz1LnWa4AiFCjMezTgSNa65QFoo7DQGEWgEU": "Tezeract" + "tz1NEKxGEHsFufk87CVZcrqWu8o22qh46GK6": "Money Every 3 Days" + "tz1NkFRjmkqqcGkAhqe78fdgemDNKXvL7Bod": "BakeMyStake" + "tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV": "Hayek Lab" + "tz1d6Fx42mYgVFnHUW8T8A7WBfJ6nD9pVok8": "MyTezosBaking" + "tz1fJHFn6sWEd3NnBPngACuw2dggTv6nQZ7g": "Baking Team" + "tz1iJ4qgGTzyhaYEzd1RnC6duEkLBd1nzexh": "Tz Envoy" + "tz1UsFcWtY6BxchK1L9619oXBzy3C2JCrRut": "Baking Tezos 4U" + "tz1QXrzaHrGACVn15UiCg33aLCJ6npWdQb3J": "Moku" + "tz1QGtMpkbdSM8Y1eHTru3WY51sXhFikbaAC": "TezosNigeria_001" + "tz1Vc9XAD7iphycJoRwE1Nxx5krB9C7XyBu5": "\u00D8 Crypto Pool" + "tz1irJKkXS2DBWkU1NnmFQx1c1L7pbGg4yhk": "Coinbase Custody" + "tz1VQnqCCqX4K5sP3FNkVSNKTdCAMJDd3E1n": "PosDog" + "tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv": "Staked" + "tz1KfEsrtDaA1sX7vdM4qmEPWuSytuqCDp5j": "XTZ Master" + "tz1isXamBXpTUgbByQ6gXgZQg4GWNW7r6rKE": "Tez Whale" + "tz1Ldzz6k1BHdhuKvAtMRX7h5kJSMHESMHLC": "PayTezos" + "tz1UvkANVPWppVgMkLnvN7BwYZsCP7vm6NVd": "Neokta Labs" + "tz1YhNsiRRU8aHNGg7NK3uuP6UDAyacJernB": "Tez Baguette" + "tz3adcvQaKXTCg12zbninqo3q8ptKKtDFTLv": "Tezzigator" + "tz1RV1MBbZMR68tacosb7Mwj6LkbPSUS1er1": "Baking Tacos" + "tz1W5VkdB5s7ENMESVBtwyt9kyvLqPcUczRT": "Tezgate" + "tz1PWCDnz783NNGGQjEFFsHtrcK5yBW4E2rm": "Melange" + "tz1V2FYediKBAEaTpXXJBSjuQpjkyCzrTSiE": "Stake House" + "tz1Scdr2HsZiQjc7bHMeBbmDRXYVvdhjJbBh": "Figment" + "tz1VmiY38m3y95HqQLjMwqnMS7sdMfGomzKi": "Lucid Mining" + "tz1WctSwL49BZtdWAQ75NY6vr4xsAx6oKdah": "Tezos Wake n' Bake" + "tz1PeZx7FXy7QRuMREGXGxeipb24RsMMzUNe": "Tezos Panda" + "tz1bHzftcTKZMTZgLLtnrXydCm6UEqf4ivca": "Tezos Vote" + "tz1S8e9GgdZG78XJRB3NqabfWeM37GnhZMWQ": "0xb1 PlusMinus" + "tz1LmaFsWRkjr7QMCx5PtV6xTUz3AmEpKQiF": "Blockpower Staking" + "tz1RjoHc98dBoqaH2jawF62XNKh7YsHwbkEv": "OKEx Baker" + "tz1cX93Q3KsiTADpCC4f12TBvAmS5tw7CW19": "Tz Bakery" + "tz1VHFxUuBhwopxC9YC9gm5s2MHBHLyCtvN1": "HyperBlocks" + "tz1aiYKXmSRckyJ9EybKmpVry373rfyngJU8": "View Nodes" + "tz1STeamwbp68THcny9zk3LsbG3H36DMvbRK": "StakingTeam" + "tz1hUSVvSq4YbZcREBqKHf6eXM1yvXuGYUNZ": "Metablock Baker" + "tz1Tnjaxk6tbAeC2TmMApPh8UsrEVQvhHvx5": "Crypto Delegate" + "tz1LBEKXaxQbd5Gtzbc1ATCwc3pppu81aWGc": "Tez-Baking" + "tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK": "Coinhouse" + "tz1dRKU4FQ9QRRQPdaH4zCR6gmCmXfcvcgtB": "Spice" + "tz1Z2jXfEXL7dXhs6bsLmyLFLfmAkXBzA9WE": "Tezos Boutique" + "tz1dNVDWPf3Q59SdJqnjdnu277iyvReiRS9M": "Steak and Bake" + "tz1Zcxkfa5jKrRbBThG765GP29bUCU3C4ok5": "Tezz City" + "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6": "Tez Baker" + "tz1XhnCdVENzgko5x1MMswLHSoQbJ5NPwLZ6": "Anonstake" + "tz1WpeqFaBG9Jm73Dmgqamy8eF8NWLz9JCoY": "Staking Facilities" + "tz1iZEKy4LaAjnTmn2RuGDf2iqdAQKnRi8kY": "Tezzigator (Legacy)" + "tz1MkjfzHNF3kk7PMUDVsaTrF8iRD6fpHftR": "LuxBaker" + "tz1hWB6QV5GBQKdEJN8EowHhLJyCMPhH18sA": "Tezos Cameroun" + } + } + block_id { + display-name: "Block Hash" + data-type: "hash" + visible: true + reference: { + entity: "blocks" + key: "hash" + } + } + balance { + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + frozen_balance { + display-name: "Frozen Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + staking_balance { + display-name: "Staking Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + delegated_balance { + display-name: "Delegated Balance" + visible: true + scale: 6, + data-type: "currency" + currency-symbol-code: 42793 + } + rolls { + visible: true + } + deactivated { + visible: true + } + grace_period { + visible: true + } + block_level { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + temporal-column: true + } + cycle { + visible: true + } + period { + visible: true + } + asof { + visible: true + data-format: "YYYY MMM DD, HH:mm" + temporal-column: true + } + } + } + accounts_checkpoint { + visible: false + } + bakers_checkpoint { + visible: false + } + baking_rights { + visible: true + attributes { + block_hash { + visible: true + display-name: "Block Hash" + visible: true + data-type: "hash" + reference: { + entity: "blocks" + key: "hash" + } + } + governance_period { + display-name: "Period" + visible: true + } + cycle { + display-name: "Cycle" + visible: true + } + block_level { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + delegate { + visible: true + display-name: "Baker" + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + } + priority { + visible: true + } + estimated_time { + visible: true + data-format: "YYYY MMM DD, HH:mm" + } + } + } + endorsing_rights { + visible: true + attributes { + block_hash { + display-name: "Block Hash" + visible: true + data-type: "hash" + reference: { + entity: "blocks" + key: "hash" + } + } + governance_period { + display-name: "Period" + visible: true + } + cycle { + display-name: "Cycle" + visible: true + } + block_level { + visible: true + display-name: "Block Level" + data-type: "int" + reference: { + entity: "blocks" + key: "level" + } + } + delegate { + visible: true + display-name: "Baker" + data-type: "accountAddress" + reference: { + entity: "accounts" + key: "account_id" + } + } + slot { + visible: true + } + estimated_time { + visible: true + data-format: "YYYY MMM DD, HH:mm" + } + endorsed_block { + data-type: "int" + visible: true + } + } + } + registered_tokens { + visible: true + attributes { + id { + display-name: "Id" + visible: true + } + name { + display-name: "Name" + visible: true + } + contract_type { + display-name: "Standard" + visible: true + } + account_id { + visible: true + display-name: "Address" + data-type: "accountAddress" + } + scale { + visible: true + } + } + } + governance { + visible: true + attributes { + voting_period { + display_name: "Voting period" + visible: true + } + voting_period_kind { + display_name: "Voting period kind" + visible: true + cache-config { + cached: true + } + } + cycle { + display_name: "Cycle" + visible: true + } + level { + display_name: "Level" + data-type: "int" + visible: true + } + block_hash { + display_name: "Block Hash" + data-type: "hash" + reference: { + entity: "blocks" + key: "hash" + } + visible: true + } + proposal_hash { + display_name: "Proposal" + data-type: "hash" + visible: true + value-map: { + "Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A": "Ithaca 2.0" + "PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP": "Ithaca" + "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx": "Hangzhou Actual" + "PsCUKj6wydGtDNGPRdxasZDs4esZcVD9tf44MMiVy46FkD9q1h9": "Hanghouz-USDtz-LB" + "PtHangzHogokSuiMHemCuowEavgYTP8J5qQ9fQS793MHYFpCY3r": "Hangzhou" + "PtGRENLBgC4kALRCjYwBAgDNSvK9ZDCst7cRQ1aNP9Ke1cZDwnY": "Grenada LB-removed" + "PsmarYW3qFVZUNYwJaYvPEYG96N3awx5SpYs3PxiAWmCzRBAhY8": "Grenada LB-disabled" + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV": "Grenada" + "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i": "Florence no-BA" + "PsFLorBArSaXjuy9oP76Qv1v2FRYnUs7TFtteK5GkRBC24JvbdE": "Florence BA" + "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA": "Edo 2.0" + "PtEdoTezd3RHSC31mpxxo1npxFjoWWcFgQtxapi51Z8TLu6v6Uq": "Edo" + "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo": "Delphi" + "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb": "Carthage 2.0" + "PtCarthavAMoXqbjBPVgDCRd5LgT7qqKWUPXnYii3xCaHRBMfHH": "Carthage" + "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS": "Babylon 2.1" + "PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU": "Babylon 2.0" + "PsBABY5nk4JhdEv1N1pZbt6m6ccB9BfNqa23iKZcHBh23jmRS9f": "Babylon" + "PtdRxBHvc91c2ea2evV6wkoqnzW7TadTg9aqS9jAn2GbcPGtumD": "Brest A" + "Psd1ynUBhMZAeajwcZJAeq5NrxorM6UCU4GJqxZ7Bx2e9vUWB6z": "Athens B" + "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd": "Athens A" + } + } + yay_count { + display_name: "Yay Votes" + visible: true + } + nay_count { + display_name: "Nay Votes" + visible: true + } + pass_count { + display_name: "Pass Votes" + visible: true + } + yay_rolls { + display_name: "Yay Rolls" + visible: true + } + nay_rolls { + display_name: "Nay Rolls" + visible: true + } + pass_rolls { + display_name: "Pass Rolls" + visible: true + } + total_rolls { + display_name: "Total Rolls" + visible: true + } + block_yay_count { + display_name: "Block Yay Votes" + visible: true + } + block_nay_count { + display_name: "Block Nay Votes" + visible: true + } + block_pass_count { + display_name: "Block Pass Votes" + visible: true + } + block_yay_rolls { + display_name: "Block Yay Rolls" + visible: true + } + block_nay_rolls { + display_name: "Block Nay Rolls" + visible: true + } + block_pass_rolls { + display_name: "Block Pass Rolls" + visible: true + } + } + } + known_addresses { + visible: true + attributes { + address { + display-name: "Address" + data-type: "accountAddress" + visible: true + } + alias { + display-name: "Alias" + visible: true + } + } + } + baker_registry { + visible: true + attributes { + name { + display-name: "Name" + visible: true + } + is_accepting_delegation { + display-name: "Is accepting delegation" + visible: true + } + external_data_url { + display-name: "External data URL" + visible: true + } + split { + display-name: "Split" + visible: true + } + payment_accounts { + display-name: "Payment accounts" + visible: true + } + minimum_delegation { + display-name: "Minimum delegation" + visible: true + } + payout_delay { + display-name: "Payout delay" + visible: true + } + payout_frequency { + display-name: "Payout frequency" + visible: true + } + minimum_payout { + display-name: "Minimum payout" + visible: true + } + is_cheap { + display-name: "Is cheap" + visible: true + } + pay_for_own_blocks { + display-name: "Pay for own blocks" + visible: true + } + pay_for_endorsements { + display-name: "Pay for endorsements" + visible: true + } + pay_gained_fees { + display-name: "Pay gained fees" + visible: true + } + pay_for_accusation_gains { + display-name: "Pay for accusation gains" + visible: true + } + subtract_lost_deposits_when_accused { + display-name: "Subtract lost deposits when accused" + visible: true + } + subtract_lost_rewards_when_accused { + display-name: "Subtract lost rewards when accused" + visible: true + } + subtract_lost_fees_when_accused { + display-name: "Subtract lost fees when accused" + visible: true + } + pay_for_revelation { + display-name: "Pay for revelation" + visible: true + } + subtract_lost_rewards_when_miss_revelation { + display-name: "Subtract lost rewards when miss revelation" + visible: true + } + subtract_lost_fees_when_miss_revelation { + display-name: "Subtract lost fees when miss revelation" + visible: true + } + compensate_missed_blocks { + display-name: "Compensate missed blocks" + visible: true + } + pay_for_stolen_blocks { + display-name: "Pay for stolen blocks" + visible: true + } + compensate_missed_endorsements { + display-name: "Compensate missed endorsements" + visible: true + } + compensate_low_priority_endorsement_loss { + display-name: "Compensate low priority endorsement loss" + visible: true + } + overdelegation_threshold { + display-name: "Overdelegation threshold" + visible: true + } + subtract_rewards_from_uninvited_delegation { + display-name: "Subtract rewards from uninvited delegation" + visible: true + } + record_manager { + display-name: "Record manager" + visible: true + } + timestamp { + display-name: "Timestamp" + data-format: "YYYY MMM DD, HH:mm" + visible: true + } + } + } + } +} diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosIndexer.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosIndexer.scala index 22bd8be3f..3ffbceb98 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosIndexer.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosIndexer.scala @@ -132,7 +132,7 @@ class TezosIndexer private ( _ <- feeOperations .processTezosAverageFees(lorreConf.feesAverageTimeWindow) .whenA(iteration % lorreConf.feeUpdateInterval == 0) - _ <- rightsProcessor.updateRights() + _ <- if (featureFlags.futureRightsFetchingIsOn) rightsProcessor.updateRights() else Future.successful(()) } yield Some(unhandled) /* Won't stop Lorre on failure from processing the chain, unless overridden by the environment to halt. diff --git a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/JsonDecodersTestFixtures.scala b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/JsonDecodersTestFixtures.scala index f2aaf0996..91350548b 100644 --- a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/JsonDecodersTestFixtures.scala +++ b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/JsonDecodersTestFixtures.scala @@ -488,7 +488,7 @@ trait OperationsJsonData { level = 182308, metadata = EndorsementMetadata( slot = None, - slots = List(29, 27, 20, 17), + slots = Some(List(29, 27, 20, 17)), delegate = PublicKeyHash("tz1fyvFH2pd3V9UEq5psqVokVBYkt7rHTKio"), balance_updates = List( BalanceUpdate( diff --git a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversionsTestFixtures.scala b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversionsTestFixtures.scala index a13146e5b..bbfdf89bf 100644 --- a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversionsTestFixtures.scala +++ b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversionsTestFixtures.scala @@ -24,7 +24,7 @@ trait TezosDatabaseConversionsTestFixtures { level = 182308, metadata = EndorsementMetadata( slot = None, - slots = List(29, 27, 20, 17), + slots = Some(List(29, 27, 20, 17)), delegate = PublicKeyHash("tz1fyvFH2pd3V9UEq5psqVokVBYkt7rHTKio"), balance_updates = List( BalanceUpdate( diff --git a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala index 546c853fe..556013c76 100644 --- a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala +++ b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala @@ -407,7 +407,7 @@ trait TezosDatabaseOperationsTestFixtures extends RandomGenerationKit { level = 182308, metadata = EndorsementMetadata( slot = None, - slots = List(29, 27, 20, 17), + slots = Some(List(29, 27, 20, 17)), delegate = PublicKeyHash("tz1fyvFH2pd3V9UEq5psqVokVBYkt7rHTKio"), balance_updates = List( BalanceUpdate( From 15aef48e8493282b60a665d70b3792800f6e15a8 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Thu, 3 Feb 2022 13:00:57 +0100 Subject: [PATCH 3/6] fix for metadata.conf --- conseil-api/src/main/resources/metadata.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conseil-api/src/main/resources/metadata.conf b/conseil-api/src/main/resources/metadata.conf index 1b3a8136b..f19f6fbeb 100644 --- a/conseil-api/src/main/resources/metadata.conf +++ b/conseil-api/src/main/resources/metadata.conf @@ -59,7 +59,7 @@ metadata-configuration { include "metadata/tezos.hangzhounet.conf" visible: true } - hangzhounet { + ithacanet { include "metadata/tezos.ithacanet.conf" visible: true } From 1c8515108fe7ba8b77799ac8f813a4db1aa1ce17 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Thu, 10 Feb 2022 17:58:36 +0100 Subject: [PATCH 4/6] small style changes --- .../cryptonomic/conseil/api/ConseilApi.scala | 6 +- .../common/generic/chain/DataTypes.scala | 4 +- .../conseil/common/tezos/Tables.scala | 2749 +++++++++++++++-- .../conseil/common/tezos/TezosTypes.scala | 6 +- .../tezos/bigmaps/BigMapsConversions.scala | 4 +- .../forks/BacktracingForkProcessor.scala | 2 +- 6 files changed, 2504 insertions(+), 267 deletions(-) diff --git a/conseil-api/src/main/scala/tech/cryptonomic/conseil/api/ConseilApi.scala b/conseil-api/src/main/scala/tech/cryptonomic/conseil/api/ConseilApi.scala index 511ae8f6d..8dab85ef7 100644 --- a/conseil-api/src/main/scala/tech/cryptonomic/conseil/api/ConseilApi.scala +++ b/conseil-api/src/main/scala/tech/cryptonomic/conseil/api/ConseilApi.scala @@ -17,7 +17,11 @@ import tech.cryptonomic.conseil.api.routes.Docs import tech.cryptonomic.conseil.api.routes.info.AppInfo import tech.cryptonomic.conseil.api.routes.platform.data.ApiDataRoutes import tech.cryptonomic.conseil.api.routes.platform.data.bitcoin.{BitcoinDataOperations, BitcoinDataRoutes} -import tech.cryptonomic.conseil.api.routes.platform.data.ethereum.{EthereumDataOperations, EthereumDataRoutes, QuorumDataRoutes} +import tech.cryptonomic.conseil.api.routes.platform.data.ethereum.{ + EthereumDataOperations, + EthereumDataRoutes, + QuorumDataRoutes +} import tech.cryptonomic.conseil.api.routes.platform.data.tezos.{TezosDataOperations, TezosDataRoutes} import tech.cryptonomic.conseil.api.routes.platform.discovery.{GenericPlatformDiscoveryOperations, PlatformDiscovery} import tech.cryptonomic.conseil.api.security.Security diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/generic/chain/DataTypes.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/generic/chain/DataTypes.scala index f1bf1b474..50fdd11f2 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/generic/chain/DataTypes.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/generic/chain/DataTypes.scala @@ -252,15 +252,13 @@ object DataTypes { def camel2Snake(s: String): String = separatees.replaceAllIn(s, _.group(0) + '_').toLowerCase } - /** Enumeration of aggregation functions */ object AggregationType extends Enumeration { - /** Helper method for extracting prefixes needed for SQL */ def prefixes: List[String] = values.toList.map(x => StringHelper.camel2Snake(x.toString) + "_") type AggregationType = Value - val countDistinct, sum, count, max, min, avg = Value + val countDistinct, sum, count, max, min, avg = Value } /** Enumeration of aggregation functions */ diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/Tables.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/Tables.scala index 60eb53ccc..0d89f042d 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/Tables.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/Tables.scala @@ -16,7 +16,35 @@ trait Tables { import slick.jdbc.{GetResult => GR} /** DDL for all tables. Call .create to execute. */ - lazy val schema: profile.SchemaDescription = Array(Accounts.schema, AccountsCheckpoint.schema, AccountsHistory.schema, BakerRegistry.schema, Bakers.schema, BakersCheckpoint.schema, BakersHistory.schema, BakingRights.schema, BalanceUpdates.schema, BigMapContents.schema, BigMapContentsHistory.schema, BigMaps.schema, Blocks.schema, EndorsingRights.schema, Fees.schema, Forks.schema, Governance.schema, KnownAddresses.schema, Metadata.schema, Nfts.schema, OperationGroups.schema, Operations.schema, OriginatedAccountMaps.schema, ProcessedChainEvents.schema, RegisteredTokens.schema, TezosNames.schema, TokenBalances.schema).reduceLeft(_ ++ _) + lazy val schema: profile.SchemaDescription = Array( + Accounts.schema, + AccountsCheckpoint.schema, + AccountsHistory.schema, + BakerRegistry.schema, + Bakers.schema, + BakersCheckpoint.schema, + BakersHistory.schema, + BakingRights.schema, + BalanceUpdates.schema, + BigMapContents.schema, + BigMapContentsHistory.schema, + BigMaps.schema, + Blocks.schema, + EndorsingRights.schema, + Fees.schema, + Forks.schema, + Governance.schema, + KnownAddresses.schema, + Metadata.schema, + Nfts.schema, + OperationGroups.schema, + Operations.schema, + OriginatedAccountMaps.schema, + ProcessedChainEvents.schema, + RegisteredTokens.schema, + TezosNames.schema, + TokenBalances.schema + ).reduceLeft(_ ++ _) @deprecated("Use .schema instead of .ddl", "3.0") def ddl = schema @@ -36,49 +64,160 @@ trait Tables { * @param isActivated Database column is_activated SqlType(bool), Default(false) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) * @param forkId Database column fork_id SqlType(varchar) - * @param scriptHash Database column script_hash SqlType(varchar), Default(None) */ - case class AccountsRow(accountId: String, blockId: String, counter: Option[Int] = None, script: Option[String] = None, storage: Option[String] = None, balance: scala.math.BigDecimal, blockLevel: Long = -1L, manager: Option[String] = None, spendable: Option[Boolean] = None, delegateSetable: Option[Boolean] = None, delegateValue: Option[String] = None, isBaker: Boolean = false, isActivated: Boolean = false, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String, scriptHash: Option[String] = None) + * @param scriptHash Database column script_hash SqlType(varchar), Default(None) + */ + case class AccountsRow( + accountId: String, + blockId: String, + counter: Option[Int] = None, + script: Option[String] = None, + storage: Option[String] = None, + balance: scala.math.BigDecimal, + blockLevel: Long = -1L, + manager: Option[String] = None, + spendable: Option[Boolean] = None, + delegateSetable: Option[Boolean] = None, + delegateValue: Option[String] = None, + isBaker: Boolean = false, + isActivated: Boolean = false, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String, + scriptHash: Option[String] = None + ) + /** GetResult implicit for fetching AccountsRow objects using plain SQL queries */ - implicit def GetResultAccountsRow(implicit e0: GR[String], e1: GR[Option[Int]], e2: GR[Option[String]], e3: GR[scala.math.BigDecimal], e4: GR[Long], e5: GR[Option[Boolean]], e6: GR[Boolean], e7: GR[Option[java.sql.Timestamp]]): GR[AccountsRow] = GR{ - prs => import prs._ - AccountsRow.tupled((<<[String], <<[String], < + import prs._ + AccountsRow.tupled( + ( + <<[String], + <<[String], + < (AccountsRow.tupled, AccountsRow.unapply) + def * = ( + accountId, + blockId, + counter, + script, + storage, + balance, + blockLevel, + manager, + spendable, + delegateSetable, + delegateValue, + isBaker, + isActivated, + invalidatedAsof, + forkId, + scriptHash + ) <> (AccountsRow.tupled, AccountsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(accountId), Rep.Some(blockId), counter, script, storage, Rep.Some(balance), Rep.Some(blockLevel), manager, spendable, delegateSetable, delegateValue, Rep.Some(isBaker), Rep.Some(isActivated), invalidatedAsof, Rep.Some(forkId), scriptHash)).shaped.<>({r=>import r._; _1.map(_=> AccountsRow.tupled((_1.get, _2.get, _3, _4, _5, _6.get, _7.get, _8, _9, _10, _11, _12.get, _13.get, _14, _15.get, _16)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(accountId), + Rep.Some(blockId), + counter, + script, + storage, + Rep.Some(balance), + Rep.Some(blockLevel), + manager, + spendable, + delegateSetable, + delegateValue, + Rep.Some(isBaker), + Rep.Some(isActivated), + invalidatedAsof, + Rep.Some(forkId), + scriptHash + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + AccountsRow.tupled( + (_1.get, _2.get, _3, _4, _5, _6.get, _7.get, _8, _9, _10, _11, _12.get, _13.get, _14, _15.get, _16) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column account_id SqlType(varchar) */ val accountId: Rep[String] = column[String]("account_id") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column counter SqlType(int4), Default(None) */ val counter: Rep[Option[Int]] = column[Option[Int]]("counter", O.Default(None)) + /** Database column script SqlType(varchar), Default(None) */ val script: Rep[Option[String]] = column[Option[String]]("script", O.Default(None)) + /** Database column storage SqlType(varchar), Default(None) */ val storage: Rep[Option[String]] = column[Option[String]]("storage", O.Default(None)) + /** Database column balance SqlType(numeric) */ val balance: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("balance") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column manager SqlType(varchar), Default(None) */ val manager: Rep[Option[String]] = column[Option[String]]("manager", O.Default(None)) + /** Database column spendable SqlType(bool), Default(None) */ val spendable: Rep[Option[Boolean]] = column[Option[Boolean]]("spendable", O.Default(None)) + /** Database column delegate_setable SqlType(bool), Default(None) */ val delegateSetable: Rep[Option[Boolean]] = column[Option[Boolean]]("delegate_setable", O.Default(None)) + /** Database column delegate_value SqlType(varchar), Default(None) */ val delegateValue: Rep[Option[String]] = column[Option[String]]("delegate_value", O.Default(None)) + /** Database column is_baker SqlType(bool), Default(false) */ val isBaker: Rep[Boolean] = column[Boolean]("is_baker", O.Default(false)) + /** Database column is_activated SqlType(bool), Default(false) */ val isActivated: Rep[Boolean] = column[Boolean]("is_activated", O.Default(false)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column script_hash SqlType(varchar), Default(None) */ val scriptHash: Rep[Option[String]] = column[Option[String]]("script_hash", O.Default(None)) @@ -86,17 +225,25 @@ trait Tables { val pk = primaryKey("accounts_pkey", (accountId, forkId)) /** Foreign key referencing Blocks (database name accounts_block_id_fkey) */ - lazy val blocksFk = foreignKey("accounts_block_id_fkey", (blockId, forkId), Blocks)(r => (r.hash, r.forkId), onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("accounts_block_id_fkey", (blockId, forkId), Blocks)( + r => (r.hash, r.forkId), + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) /** Index over (blockId) (database name ix_accounts_block_id) */ val index1 = index("ix_accounts_block_id", blockId) + /** Index over (blockLevel) (database name ix_accounts_block_level) */ val index2 = index("ix_accounts_block_level", blockLevel) + /** Index over (isActivated) (database name ix_accounts_is_activated) */ val index3 = index("ix_accounts_is_activated", isActivated) + /** Index over (manager) (database name ix_accounts_manager) */ val index4 = index("ix_accounts_manager", manager) } + /** Collection-like TableQuery object for table Accounts */ lazy val Accounts = new TableQuery(tag => new Accounts(tag)) @@ -105,35 +252,61 @@ trait Tables { * @param blockId Database column block_id SqlType(varchar) * @param blockLevel Database column block_level SqlType(int8), Default(-1) * @param asof Database column asof SqlType(timestamptz) - * @param cycle Database column cycle SqlType(int4), Default(None) */ - case class AccountsCheckpointRow(accountId: String, blockId: String, blockLevel: Long = -1L, asof: java.sql.Timestamp, cycle: Option[Int] = None) + * @param cycle Database column cycle SqlType(int4), Default(None) + */ + case class AccountsCheckpointRow( + accountId: String, + blockId: String, + blockLevel: Long = -1L, + asof: java.sql.Timestamp, + cycle: Option[Int] = None + ) + /** GetResult implicit for fetching AccountsCheckpointRow objects using plain SQL queries */ - implicit def GetResultAccountsCheckpointRow(implicit e0: GR[String], e1: GR[Long], e2: GR[java.sql.Timestamp], e3: GR[Option[Int]]): GR[AccountsCheckpointRow] = GR{ - prs => import prs._ - AccountsCheckpointRow.tupled((<<[String], <<[String], <<[Long], <<[java.sql.Timestamp], < + import prs._ + AccountsCheckpointRow.tupled((<<[String], <<[String], <<[Long], <<[java.sql.Timestamp], < (AccountsCheckpointRow.tupled, AccountsCheckpointRow.unapply) + class AccountsCheckpoint(_tableTag: Tag) + extends profile.api.Table[AccountsCheckpointRow](_tableTag, Some("tezos"), "accounts_checkpoint") { + def * = + (accountId, blockId, blockLevel, asof, cycle) <> (AccountsCheckpointRow.tupled, AccountsCheckpointRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(accountId), Rep.Some(blockId), Rep.Some(blockLevel), Rep.Some(asof), cycle)).shaped.<>({r=>import r._; _1.map(_=> AccountsCheckpointRow.tupled((_1.get, _2.get, _3.get, _4.get, _5)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(accountId), Rep.Some(blockId), Rep.Some(blockLevel), Rep.Some(asof), cycle)).shaped.<>( + { r => import r._; _1.map(_ => AccountsCheckpointRow.tupled((_1.get, _2.get, _3.get, _4.get, _5))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column account_id SqlType(varchar) */ val accountId: Rep[String] = column[String]("account_id") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column asof SqlType(timestamptz) */ val asof: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("asof") + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) /** Index over (accountId) (database name ix_accounts_checkpoint_account_id) */ val index1 = index("ix_accounts_checkpoint_account_id", accountId) + /** Index over (blockLevel) (database name ix_accounts_checkpoint_block_level) */ val index2 = index("ix_accounts_checkpoint_block_level", blockLevel) } + /** Collection-like TableQuery object for table AccountsCheckpoint */ lazy val AccountsCheckpoint = new TableQuery(tag => new AccountsCheckpoint(tag)) @@ -152,55 +325,165 @@ trait Tables { * @param isActiveBaker Database column is_active_baker SqlType(bool), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) * @param forkId Database column fork_id SqlType(varchar) - * @param scriptHash Database column script_hash SqlType(varchar), Default(None) */ - case class AccountsHistoryRow(accountId: String, blockId: String, counter: Option[Int] = None, storage: Option[String] = None, balance: scala.math.BigDecimal, blockLevel: Long = -1L, delegateValue: Option[String] = None, asof: java.sql.Timestamp, isBaker: Boolean = false, cycle: Option[Int] = None, isActivated: Boolean = false, isActiveBaker: Option[Boolean] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String, scriptHash: Option[String] = None) + * @param scriptHash Database column script_hash SqlType(varchar), Default(None) + */ + case class AccountsHistoryRow( + accountId: String, + blockId: String, + counter: Option[Int] = None, + storage: Option[String] = None, + balance: scala.math.BigDecimal, + blockLevel: Long = -1L, + delegateValue: Option[String] = None, + asof: java.sql.Timestamp, + isBaker: Boolean = false, + cycle: Option[Int] = None, + isActivated: Boolean = false, + isActiveBaker: Option[Boolean] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String, + scriptHash: Option[String] = None + ) + /** GetResult implicit for fetching AccountsHistoryRow objects using plain SQL queries */ - implicit def GetResultAccountsHistoryRow(implicit e0: GR[String], e1: GR[Option[Int]], e2: GR[Option[String]], e3: GR[scala.math.BigDecimal], e4: GR[Long], e5: GR[java.sql.Timestamp], e6: GR[Boolean], e7: GR[Option[Boolean]], e8: GR[Option[java.sql.Timestamp]]): GR[AccountsHistoryRow] = GR{ - prs => import prs._ - AccountsHistoryRow.tupled((<<[String], <<[String], < + import prs._ + AccountsHistoryRow.tupled( + ( + <<[String], + <<[String], + < (AccountsHistoryRow.tupled, AccountsHistoryRow.unapply) + class AccountsHistory(_tableTag: Tag) + extends profile.api.Table[AccountsHistoryRow](_tableTag, Some("tezos"), "accounts_history") { + def * = ( + accountId, + blockId, + counter, + storage, + balance, + blockLevel, + delegateValue, + asof, + isBaker, + cycle, + isActivated, + isActiveBaker, + invalidatedAsof, + forkId, + scriptHash + ) <> (AccountsHistoryRow.tupled, AccountsHistoryRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(accountId), Rep.Some(blockId), counter, storage, Rep.Some(balance), Rep.Some(blockLevel), delegateValue, Rep.Some(asof), Rep.Some(isBaker), cycle, Rep.Some(isActivated), isActiveBaker, invalidatedAsof, Rep.Some(forkId), scriptHash)).shaped.<>({r=>import r._; _1.map(_=> AccountsHistoryRow.tupled((_1.get, _2.get, _3, _4, _5.get, _6.get, _7, _8.get, _9.get, _10, _11.get, _12, _13, _14.get, _15)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(accountId), + Rep.Some(blockId), + counter, + storage, + Rep.Some(balance), + Rep.Some(blockLevel), + delegateValue, + Rep.Some(asof), + Rep.Some(isBaker), + cycle, + Rep.Some(isActivated), + isActiveBaker, + invalidatedAsof, + Rep.Some(forkId), + scriptHash + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + AccountsHistoryRow.tupled( + (_1.get, _2.get, _3, _4, _5.get, _6.get, _7, _8.get, _9.get, _10, _11.get, _12, _13, _14.get, _15) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column account_id SqlType(varchar) */ val accountId: Rep[String] = column[String]("account_id") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column counter SqlType(int4), Default(None) */ val counter: Rep[Option[Int]] = column[Option[Int]]("counter", O.Default(None)) + /** Database column storage SqlType(varchar), Default(None) */ val storage: Rep[Option[String]] = column[Option[String]]("storage", O.Default(None)) + /** Database column balance SqlType(numeric) */ val balance: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("balance") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column delegate_value SqlType(varchar), Default(None) */ val delegateValue: Rep[Option[String]] = column[Option[String]]("delegate_value", O.Default(None)) + /** Database column asof SqlType(timestamp) */ val asof: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("asof") + /** Database column is_baker SqlType(bool), Default(false) */ val isBaker: Rep[Boolean] = column[Boolean]("is_baker", O.Default(false)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column is_activated SqlType(bool), Default(false) */ val isActivated: Rep[Boolean] = column[Boolean]("is_activated", O.Default(false)) + /** Database column is_active_baker SqlType(bool), Default(None) */ val isActiveBaker: Rep[Option[Boolean]] = column[Option[Boolean]]("is_active_baker", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column script_hash SqlType(varchar), Default(None) */ val scriptHash: Rep[Option[String]] = column[Option[String]]("script_hash", O.Default(None)) /** Index over (accountId) (database name ix_account_id) */ val index1 = index("ix_account_id", accountId) + /** Index over (blockId) (database name ix_accounts_history_block_id) */ val index2 = index("ix_accounts_history_block_id", blockId) } + /** Collection-like TableQuery object for table AccountsHistory */ lazy val AccountsHistory = new TableQuery(tag => new AccountsHistory(tag)) @@ -232,76 +515,223 @@ trait Tables { * @param overdelegationThreshold Database column overdelegation_threshold SqlType(int4), Default(None) * @param subtractRewardsFromUninvitedDelegation Database column subtract_rewards_from_uninvited_delegation SqlType(bool), Default(None) * @param recordManager Database column record_manager SqlType(varchar), Default(None) - * @param timestamp Database column timestamp SqlType(timestamp) */ - case class BakerRegistryRow(name: String, isAcceptingDelegation: Option[Boolean] = None, externalDataUrl: Option[String] = None, split: Option[scala.math.BigDecimal] = None, paymentAccounts: Option[String] = None, minimumDelegation: Option[Int] = None, payoutDelay: Option[Int] = None, payoutFrequency: Option[Int] = None, minimumPayout: Option[Int] = None, isCheap: Option[Boolean] = None, payForOwnBlocks: Option[Boolean] = None, payForEndorsements: Option[Boolean] = None, payGainedFees: Option[Boolean] = None, payForAccusationGains: Option[Boolean] = None, subtractLostDepositsWhenAccused: Option[Boolean] = None, subtractLostRewardsWhenAccused: Option[Boolean] = None, subtractLostFeesWhenAccused: Option[Boolean] = None, payForRevelation: Option[Boolean] = None, subtractLostRewardsWhenMissRevelation: Option[Boolean] = None, subtractLostFeesWhenMissRevelation: Option[Boolean] = None, compensateMissedBlocks: Option[Boolean] = None, payForStolenBlocks: Option[Boolean] = None, compensateMissedEndorsements: Option[Boolean] = None, compensateLowPriorityEndorsementLoss: Option[Boolean] = None, overdelegationThreshold: Option[Int] = None, subtractRewardsFromUninvitedDelegation: Option[Boolean] = None, recordManager: Option[String] = None, timestamp: java.sql.Timestamp) + * @param timestamp Database column timestamp SqlType(timestamp) + */ + case class BakerRegistryRow( + name: String, + isAcceptingDelegation: Option[Boolean] = None, + externalDataUrl: Option[String] = None, + split: Option[scala.math.BigDecimal] = None, + paymentAccounts: Option[String] = None, + minimumDelegation: Option[Int] = None, + payoutDelay: Option[Int] = None, + payoutFrequency: Option[Int] = None, + minimumPayout: Option[Int] = None, + isCheap: Option[Boolean] = None, + payForOwnBlocks: Option[Boolean] = None, + payForEndorsements: Option[Boolean] = None, + payGainedFees: Option[Boolean] = None, + payForAccusationGains: Option[Boolean] = None, + subtractLostDepositsWhenAccused: Option[Boolean] = None, + subtractLostRewardsWhenAccused: Option[Boolean] = None, + subtractLostFeesWhenAccused: Option[Boolean] = None, + payForRevelation: Option[Boolean] = None, + subtractLostRewardsWhenMissRevelation: Option[Boolean] = None, + subtractLostFeesWhenMissRevelation: Option[Boolean] = None, + compensateMissedBlocks: Option[Boolean] = None, + payForStolenBlocks: Option[Boolean] = None, + compensateMissedEndorsements: Option[Boolean] = None, + compensateLowPriorityEndorsementLoss: Option[Boolean] = None, + overdelegationThreshold: Option[Int] = None, + subtractRewardsFromUninvitedDelegation: Option[Boolean] = None, + recordManager: Option[String] = None, + timestamp: java.sql.Timestamp + ) + /** GetResult implicit for fetching BakerRegistryRow objects using plain SQL queries */ - implicit def GetResultBakerRegistryRow(implicit e0: GR[String], e1: GR[Option[Boolean]], e2: GR[Option[String]], e3: GR[Option[scala.math.BigDecimal]], e4: GR[Option[Int]], e5: GR[java.sql.Timestamp]): GR[BakerRegistryRow] = GR{ - prs => import prs._ - BakerRegistryRow(<<[String], < + import prs._ + BakerRegistryRow( + <<[String], + <(r => BakerRegistryRow(r(0).asInstanceOf[Option[String]].get, r(1).asInstanceOf[Option[Boolean]], r(2).asInstanceOf[Option[String]], r(3).asInstanceOf[Option[scala.math.BigDecimal]], r(4).asInstanceOf[Option[String]], r(5).asInstanceOf[Option[Int]], r(6).asInstanceOf[Option[Int]], r(7).asInstanceOf[Option[Int]], r(8).asInstanceOf[Option[Int]], r(9).asInstanceOf[Option[Boolean]], r(10).asInstanceOf[Option[Boolean]], r(11).asInstanceOf[Option[Boolean]], r(12).asInstanceOf[Option[Boolean]], r(13).asInstanceOf[Option[Boolean]], r(14).asInstanceOf[Option[Boolean]], r(15).asInstanceOf[Option[Boolean]], r(16).asInstanceOf[Option[Boolean]], r(17).asInstanceOf[Option[Boolean]], r(18).asInstanceOf[Option[Boolean]], r(19).asInstanceOf[Option[Boolean]], r(20).asInstanceOf[Option[Boolean]], r(21).asInstanceOf[Option[Boolean]], r(22).asInstanceOf[Option[Boolean]], r(23).asInstanceOf[Option[Boolean]], r(24).asInstanceOf[Option[Int]], r(25).asInstanceOf[Option[Boolean]], r(26).asInstanceOf[Option[String]], r(27).asInstanceOf[Option[java.sql.Timestamp]].get), (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = (Rep.Some( + name + ) :: isAcceptingDelegation :: externalDataUrl :: split :: paymentAccounts :: minimumDelegation :: payoutDelay :: payoutFrequency :: minimumPayout :: isCheap :: payForOwnBlocks :: payForEndorsements :: payGainedFees :: payForAccusationGains :: subtractLostDepositsWhenAccused :: subtractLostRewardsWhenAccused :: subtractLostFeesWhenAccused :: payForRevelation :: subtractLostRewardsWhenMissRevelation :: subtractLostFeesWhenMissRevelation :: compensateMissedBlocks :: payForStolenBlocks :: compensateMissedEndorsements :: compensateLowPriorityEndorsementLoss :: overdelegationThreshold :: subtractRewardsFromUninvitedDelegation :: recordManager :: Rep + .Some(timestamp) :: HNil).shaped.<>( + r => + BakerRegistryRow( + r(0).asInstanceOf[Option[String]].get, + r(1).asInstanceOf[Option[Boolean]], + r(2).asInstanceOf[Option[String]], + r(3).asInstanceOf[Option[scala.math.BigDecimal]], + r(4).asInstanceOf[Option[String]], + r(5).asInstanceOf[Option[Int]], + r(6).asInstanceOf[Option[Int]], + r(7).asInstanceOf[Option[Int]], + r(8).asInstanceOf[Option[Int]], + r(9).asInstanceOf[Option[Boolean]], + r(10).asInstanceOf[Option[Boolean]], + r(11).asInstanceOf[Option[Boolean]], + r(12).asInstanceOf[Option[Boolean]], + r(13).asInstanceOf[Option[Boolean]], + r(14).asInstanceOf[Option[Boolean]], + r(15).asInstanceOf[Option[Boolean]], + r(16).asInstanceOf[Option[Boolean]], + r(17).asInstanceOf[Option[Boolean]], + r(18).asInstanceOf[Option[Boolean]], + r(19).asInstanceOf[Option[Boolean]], + r(20).asInstanceOf[Option[Boolean]], + r(21).asInstanceOf[Option[Boolean]], + r(22).asInstanceOf[Option[Boolean]], + r(23).asInstanceOf[Option[Boolean]], + r(24).asInstanceOf[Option[Int]], + r(25).asInstanceOf[Option[Boolean]], + r(26).asInstanceOf[Option[String]], + r(27).asInstanceOf[Option[java.sql.Timestamp]].get + ), + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column name SqlType(varchar) */ val name: Rep[String] = column[String]("name") + /** Database column is_accepting_delegation SqlType(bool), Default(None) */ - val isAcceptingDelegation: Rep[Option[Boolean]] = column[Option[Boolean]]("is_accepting_delegation", O.Default(None)) + val isAcceptingDelegation: Rep[Option[Boolean]] = + column[Option[Boolean]]("is_accepting_delegation", O.Default(None)) + /** Database column external_data_url SqlType(varchar), Default(None) */ val externalDataUrl: Rep[Option[String]] = column[Option[String]]("external_data_url", O.Default(None)) + /** Database column split SqlType(numeric), Default(None) */ val split: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("split", O.Default(None)) + /** Database column payment_accounts SqlType(varchar), Default(None) */ val paymentAccounts: Rep[Option[String]] = column[Option[String]]("payment_accounts", O.Default(None)) + /** Database column minimum_delegation SqlType(int4), Default(None) */ val minimumDelegation: Rep[Option[Int]] = column[Option[Int]]("minimum_delegation", O.Default(None)) + /** Database column payout_delay SqlType(int4), Default(None) */ val payoutDelay: Rep[Option[Int]] = column[Option[Int]]("payout_delay", O.Default(None)) + /** Database column payout_frequency SqlType(int4), Default(None) */ val payoutFrequency: Rep[Option[Int]] = column[Option[Int]]("payout_frequency", O.Default(None)) + /** Database column minimum_payout SqlType(int4), Default(None) */ val minimumPayout: Rep[Option[Int]] = column[Option[Int]]("minimum_payout", O.Default(None)) + /** Database column is_cheap SqlType(bool), Default(None) */ val isCheap: Rep[Option[Boolean]] = column[Option[Boolean]]("is_cheap", O.Default(None)) + /** Database column pay_for_own_blocks SqlType(bool), Default(None) */ val payForOwnBlocks: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_for_own_blocks", O.Default(None)) + /** Database column pay_for_endorsements SqlType(bool), Default(None) */ val payForEndorsements: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_for_endorsements", O.Default(None)) + /** Database column pay_gained_fees SqlType(bool), Default(None) */ val payGainedFees: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_gained_fees", O.Default(None)) + /** Database column pay_for_accusation_gains SqlType(bool), Default(None) */ - val payForAccusationGains: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_for_accusation_gains", O.Default(None)) + val payForAccusationGains: Rep[Option[Boolean]] = + column[Option[Boolean]]("pay_for_accusation_gains", O.Default(None)) + /** Database column subtract_lost_deposits_when_accused SqlType(bool), Default(None) */ - val subtractLostDepositsWhenAccused: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_lost_deposits_when_accused", O.Default(None)) + val subtractLostDepositsWhenAccused: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_lost_deposits_when_accused", O.Default(None)) + /** Database column subtract_lost_rewards_when_accused SqlType(bool), Default(None) */ - val subtractLostRewardsWhenAccused: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_lost_rewards_when_accused", O.Default(None)) + val subtractLostRewardsWhenAccused: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_lost_rewards_when_accused", O.Default(None)) + /** Database column subtract_lost_fees_when_accused SqlType(bool), Default(None) */ - val subtractLostFeesWhenAccused: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_lost_fees_when_accused", O.Default(None)) + val subtractLostFeesWhenAccused: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_lost_fees_when_accused", O.Default(None)) + /** Database column pay_for_revelation SqlType(bool), Default(None) */ val payForRevelation: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_for_revelation", O.Default(None)) + /** Database column subtract_lost_rewards_when_miss_revelation SqlType(bool), Default(None) */ - val subtractLostRewardsWhenMissRevelation: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_lost_rewards_when_miss_revelation", O.Default(None)) + val subtractLostRewardsWhenMissRevelation: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_lost_rewards_when_miss_revelation", O.Default(None)) + /** Database column subtract_lost_fees_when_miss_revelation SqlType(bool), Default(None) */ - val subtractLostFeesWhenMissRevelation: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_lost_fees_when_miss_revelation", O.Default(None)) + val subtractLostFeesWhenMissRevelation: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_lost_fees_when_miss_revelation", O.Default(None)) + /** Database column compensate_missed_blocks SqlType(bool), Default(None) */ - val compensateMissedBlocks: Rep[Option[Boolean]] = column[Option[Boolean]]("compensate_missed_blocks", O.Default(None)) + val compensateMissedBlocks: Rep[Option[Boolean]] = + column[Option[Boolean]]("compensate_missed_blocks", O.Default(None)) + /** Database column pay_for_stolen_blocks SqlType(bool), Default(None) */ val payForStolenBlocks: Rep[Option[Boolean]] = column[Option[Boolean]]("pay_for_stolen_blocks", O.Default(None)) + /** Database column compensate_missed_endorsements SqlType(bool), Default(None) */ - val compensateMissedEndorsements: Rep[Option[Boolean]] = column[Option[Boolean]]("compensate_missed_endorsements", O.Default(None)) + val compensateMissedEndorsements: Rep[Option[Boolean]] = + column[Option[Boolean]]("compensate_missed_endorsements", O.Default(None)) + /** Database column compensate_low_priority_endorsement_loss SqlType(bool), Default(None) */ - val compensateLowPriorityEndorsementLoss: Rep[Option[Boolean]] = column[Option[Boolean]]("compensate_low_priority_endorsement_loss", O.Default(None)) + val compensateLowPriorityEndorsementLoss: Rep[Option[Boolean]] = + column[Option[Boolean]]("compensate_low_priority_endorsement_loss", O.Default(None)) + /** Database column overdelegation_threshold SqlType(int4), Default(None) */ val overdelegationThreshold: Rep[Option[Int]] = column[Option[Int]]("overdelegation_threshold", O.Default(None)) + /** Database column subtract_rewards_from_uninvited_delegation SqlType(bool), Default(None) */ - val subtractRewardsFromUninvitedDelegation: Rep[Option[Boolean]] = column[Option[Boolean]]("subtract_rewards_from_uninvited_delegation", O.Default(None)) + val subtractRewardsFromUninvitedDelegation: Rep[Option[Boolean]] = + column[Option[Boolean]]("subtract_rewards_from_uninvited_delegation", O.Default(None)) + /** Database column record_manager SqlType(varchar), Default(None) */ val recordManager: Rep[Option[String]] = column[Option[String]]("record_manager", O.Default(None)) + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") } + /** Collection-like TableQuery object for table BakerRegistry */ lazy val BakerRegistry = new TableQuery(tag => new BakerRegistry(tag)) @@ -319,45 +749,146 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param period Database column period SqlType(int4), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class BakersRow(pkh: String, blockId: String, balance: Option[scala.math.BigDecimal] = None, frozenBalance: Option[scala.math.BigDecimal] = None, stakingBalance: Option[scala.math.BigDecimal] = None, delegatedBalance: Option[scala.math.BigDecimal] = None, rolls: Int = 0, deactivated: Boolean, gracePeriod: Int, blockLevel: Long = -1L, cycle: Option[Int] = None, period: Option[Int] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class BakersRow( + pkh: String, + blockId: String, + balance: Option[scala.math.BigDecimal] = None, + frozenBalance: Option[scala.math.BigDecimal] = None, + stakingBalance: Option[scala.math.BigDecimal] = None, + delegatedBalance: Option[scala.math.BigDecimal] = None, + rolls: Int = 0, + deactivated: Boolean, + gracePeriod: Int, + blockLevel: Long = -1L, + cycle: Option[Int] = None, + period: Option[Int] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching BakersRow objects using plain SQL queries */ - implicit def GetResultBakersRow(implicit e0: GR[String], e1: GR[Option[scala.math.BigDecimal]], e2: GR[Int], e3: GR[Boolean], e4: GR[Long], e5: GR[Option[Int]], e6: GR[Option[java.sql.Timestamp]]): GR[BakersRow] = GR{ - prs => import prs._ - BakersRow.tupled((<<[String], <<[String], < + import prs._ + BakersRow.tupled( + ( + <<[String], + <<[String], + < (BakersRow.tupled, BakersRow.unapply) + def * = ( + pkh, + blockId, + balance, + frozenBalance, + stakingBalance, + delegatedBalance, + rolls, + deactivated, + gracePeriod, + blockLevel, + cycle, + period, + invalidatedAsof, + forkId + ) <> (BakersRow.tupled, BakersRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(pkh), Rep.Some(blockId), balance, frozenBalance, stakingBalance, delegatedBalance, Rep.Some(rolls), Rep.Some(deactivated), Rep.Some(gracePeriod), Rep.Some(blockLevel), cycle, period, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> BakersRow.tupled((_1.get, _2.get, _3, _4, _5, _6, _7.get, _8.get, _9.get, _10.get, _11, _12, _13, _14.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(pkh), + Rep.Some(blockId), + balance, + frozenBalance, + stakingBalance, + delegatedBalance, + Rep.Some(rolls), + Rep.Some(deactivated), + Rep.Some(gracePeriod), + Rep.Some(blockLevel), + cycle, + period, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + BakersRow.tupled((_1.get, _2.get, _3, _4, _5, _6, _7.get, _8.get, _9.get, _10.get, _11, _12, _13, _14.get)) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column pkh SqlType(varchar) */ val pkh: Rep[String] = column[String]("pkh") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column balance SqlType(numeric), Default(None) */ val balance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("balance", O.Default(None)) + /** Database column frozen_balance SqlType(numeric), Default(None) */ - val frozenBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("frozen_balance", O.Default(None)) + val frozenBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("frozen_balance", O.Default(None)) + /** Database column staking_balance SqlType(numeric), Default(None) */ - val stakingBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("staking_balance", O.Default(None)) + val stakingBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("staking_balance", O.Default(None)) + /** Database column delegated_balance SqlType(numeric), Default(None) */ - val delegatedBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("delegated_balance", O.Default(None)) + val delegatedBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("delegated_balance", O.Default(None)) + /** Database column rolls SqlType(int4), Default(0) */ val rolls: Rep[Int] = column[Int]("rolls", O.Default(0)) + /** Database column deactivated SqlType(bool) */ val deactivated: Rep[Boolean] = column[Boolean]("deactivated") + /** Database column grace_period SqlType(int4) */ val gracePeriod: Rep[Int] = column[Int]("grace_period") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -365,8 +896,13 @@ trait Tables { val pk = primaryKey("bakers_pkey", (pkh, forkId)) /** Foreign key referencing Blocks (database name bakers_block_id_fkey) */ - lazy val blocksFk = foreignKey("bakers_block_id_fkey", (blockId, forkId), Blocks)(r => (r.hash, r.forkId), onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("bakers_block_id_fkey", (blockId, forkId), Blocks)( + r => (r.hash, r.forkId), + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) } + /** Collection-like TableQuery object for table Bakers */ lazy val Bakers = new TableQuery(tag => new Bakers(tag)) @@ -375,33 +911,57 @@ trait Tables { * @param blockId Database column block_id SqlType(varchar) * @param blockLevel Database column block_level SqlType(int8), Default(-1) * @param cycle Database column cycle SqlType(int4), Default(None) - * @param period Database column period SqlType(int4), Default(None) */ - case class BakersCheckpointRow(delegatePkh: String, blockId: String, blockLevel: Long = -1L, cycle: Option[Int] = None, period: Option[Int] = None) + * @param period Database column period SqlType(int4), Default(None) + */ + case class BakersCheckpointRow( + delegatePkh: String, + blockId: String, + blockLevel: Long = -1L, + cycle: Option[Int] = None, + period: Option[Int] = None + ) + /** GetResult implicit for fetching BakersCheckpointRow objects using plain SQL queries */ - implicit def GetResultBakersCheckpointRow(implicit e0: GR[String], e1: GR[Long], e2: GR[Option[Int]]): GR[BakersCheckpointRow] = GR{ - prs => import prs._ - BakersCheckpointRow.tupled((<<[String], <<[String], <<[Long], < + import prs._ + BakersCheckpointRow.tupled((<<[String], <<[String], <<[Long], < (BakersCheckpointRow.tupled, BakersCheckpointRow.unapply) + class BakersCheckpoint(_tableTag: Tag) + extends profile.api.Table[BakersCheckpointRow](_tableTag, Some("tezos"), "bakers_checkpoint") { + def * = + (delegatePkh, blockId, blockLevel, cycle, period) <> (BakersCheckpointRow.tupled, BakersCheckpointRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(delegatePkh), Rep.Some(blockId), Rep.Some(blockLevel), cycle, period)).shaped.<>({r=>import r._; _1.map(_=> BakersCheckpointRow.tupled((_1.get, _2.get, _3.get, _4, _5)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(delegatePkh), Rep.Some(blockId), Rep.Some(blockLevel), cycle, period)).shaped.<>( + { r => import r._; _1.map(_ => BakersCheckpointRow.tupled((_1.get, _2.get, _3.get, _4, _5))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column delegate_pkh SqlType(varchar) */ val delegatePkh: Rep[String] = column[String]("delegate_pkh") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) /** Index over (blockLevel) (database name ix_bakers_checkpoint_block_level) */ val index1 = index("ix_bakers_checkpoint_block_level", blockLevel) } + /** Collection-like TableQuery object for table BakersCheckpoint */ lazy val BakersCheckpoint = new TableQuery(tag => new BakersCheckpoint(tag)) @@ -420,50 +980,161 @@ trait Tables { * @param period Database column period SqlType(int4), Default(None) * @param asof Database column asof SqlType(timestamp) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class BakersHistoryRow(pkh: String, blockId: String, balance: Option[scala.math.BigDecimal] = None, frozenBalance: Option[scala.math.BigDecimal] = None, stakingBalance: Option[scala.math.BigDecimal] = None, delegatedBalance: Option[scala.math.BigDecimal] = None, rolls: Int = 0, deactivated: Boolean, gracePeriod: Int, blockLevel: Long = -1L, cycle: Option[Int] = None, period: Option[Int] = None, asof: java.sql.Timestamp, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class BakersHistoryRow( + pkh: String, + blockId: String, + balance: Option[scala.math.BigDecimal] = None, + frozenBalance: Option[scala.math.BigDecimal] = None, + stakingBalance: Option[scala.math.BigDecimal] = None, + delegatedBalance: Option[scala.math.BigDecimal] = None, + rolls: Int = 0, + deactivated: Boolean, + gracePeriod: Int, + blockLevel: Long = -1L, + cycle: Option[Int] = None, + period: Option[Int] = None, + asof: java.sql.Timestamp, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching BakersHistoryRow objects using plain SQL queries */ - implicit def GetResultBakersHistoryRow(implicit e0: GR[String], e1: GR[Option[scala.math.BigDecimal]], e2: GR[Int], e3: GR[Boolean], e4: GR[Long], e5: GR[Option[Int]], e6: GR[java.sql.Timestamp], e7: GR[Option[java.sql.Timestamp]]): GR[BakersHistoryRow] = GR{ - prs => import prs._ - BakersHistoryRow.tupled((<<[String], <<[String], < + import prs._ + BakersHistoryRow.tupled( + ( + <<[String], + <<[String], + < (BakersHistoryRow.tupled, BakersHistoryRow.unapply) + class BakersHistory(_tableTag: Tag) + extends profile.api.Table[BakersHistoryRow](_tableTag, Some("tezos"), "bakers_history") { + def * = ( + pkh, + blockId, + balance, + frozenBalance, + stakingBalance, + delegatedBalance, + rolls, + deactivated, + gracePeriod, + blockLevel, + cycle, + period, + asof, + invalidatedAsof, + forkId + ) <> (BakersHistoryRow.tupled, BakersHistoryRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(pkh), Rep.Some(blockId), balance, frozenBalance, stakingBalance, delegatedBalance, Rep.Some(rolls), Rep.Some(deactivated), Rep.Some(gracePeriod), Rep.Some(blockLevel), cycle, period, Rep.Some(asof), invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> BakersHistoryRow.tupled((_1.get, _2.get, _3, _4, _5, _6, _7.get, _8.get, _9.get, _10.get, _11, _12, _13.get, _14, _15.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(pkh), + Rep.Some(blockId), + balance, + frozenBalance, + stakingBalance, + delegatedBalance, + Rep.Some(rolls), + Rep.Some(deactivated), + Rep.Some(gracePeriod), + Rep.Some(blockLevel), + cycle, + period, + Rep.Some(asof), + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + BakersHistoryRow.tupled( + (_1.get, _2.get, _3, _4, _5, _6, _7.get, _8.get, _9.get, _10.get, _11, _12, _13.get, _14, _15.get) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column pkh SqlType(varchar) */ val pkh: Rep[String] = column[String]("pkh") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column balance SqlType(numeric), Default(None) */ val balance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("balance", O.Default(None)) + /** Database column frozen_balance SqlType(numeric), Default(None) */ - val frozenBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("frozen_balance", O.Default(None)) + val frozenBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("frozen_balance", O.Default(None)) + /** Database column staking_balance SqlType(numeric), Default(None) */ - val stakingBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("staking_balance", O.Default(None)) + val stakingBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("staking_balance", O.Default(None)) + /** Database column delegated_balance SqlType(numeric), Default(None) */ - val delegatedBalance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("delegated_balance", O.Default(None)) + val delegatedBalance: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("delegated_balance", O.Default(None)) + /** Database column rolls SqlType(int4), Default(0) */ val rolls: Rep[Int] = column[Int]("rolls", O.Default(0)) + /** Database column deactivated SqlType(bool) */ val deactivated: Rep[Boolean] = column[Boolean]("deactivated") + /** Database column grace_period SqlType(int4) */ val gracePeriod: Rep[Int] = column[Int]("grace_period") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column asof SqlType(timestamp) */ val asof: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("asof") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") } + /** Collection-like TableQuery object for table BakersHistory */ lazy val BakersHistory = new TableQuery(tag => new BakersHistory(tag)) @@ -476,35 +1147,104 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param governancePeriod Database column governance_period SqlType(int4), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class BakingRightsRow(blockHash: Option[String] = None, blockLevel: Long, delegate: String, priority: Int, estimatedTime: Option[java.sql.Timestamp] = None, cycle: Option[Int] = None, governancePeriod: Option[Int] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class BakingRightsRow( + blockHash: Option[String] = None, + blockLevel: Long, + delegate: String, + priority: Int, + estimatedTime: Option[java.sql.Timestamp] = None, + cycle: Option[Int] = None, + governancePeriod: Option[Int] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching BakingRightsRow objects using plain SQL queries */ - implicit def GetResultBakingRightsRow(implicit e0: GR[Option[String]], e1: GR[Long], e2: GR[String], e3: GR[Int], e4: GR[Option[java.sql.Timestamp]], e5: GR[Option[Int]]): GR[BakingRightsRow] = GR{ - prs => import prs._ - BakingRightsRow.tupled((< + import prs._ + BakingRightsRow.tupled( + ( + < (BakingRightsRow.tupled, BakingRightsRow.unapply) + class BakingRights(_tableTag: Tag) + extends profile.api.Table[BakingRightsRow](_tableTag, Some("tezos"), "baking_rights") { + def * = ( + blockHash, + blockLevel, + delegate, + priority, + estimatedTime, + cycle, + governancePeriod, + invalidatedAsof, + forkId + ) <> (BakingRightsRow.tupled, BakingRightsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((blockHash, Rep.Some(blockLevel), Rep.Some(delegate), Rep.Some(priority), estimatedTime, cycle, governancePeriod, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _2.map(_=> BakingRightsRow.tupled((_1, _2.get, _3.get, _4.get, _5, _6, _7, _8, _9.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + blockHash, + Rep.Some(blockLevel), + Rep.Some(delegate), + Rep.Some(priority), + estimatedTime, + cycle, + governancePeriod, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => import r._; _2.map(_ => BakingRightsRow.tupled((_1, _2.get, _3.get, _4.get, _5, _6, _7, _8, _9.get))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column block_hash SqlType(varchar), Default(None) */ val blockHash: Rep[Option[String]] = column[Option[String]]("block_hash", O.Default(None)) + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column delegate SqlType(varchar) */ val delegate: Rep[String] = column[String]("delegate") + /** Database column priority SqlType(int4) */ val priority: Rep[Int] = column[Int]("priority") + /** Database column estimated_time SqlType(timestamp), Default(None) */ - val estimatedTime: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("estimated_time", O.Default(None)) + val estimatedTime: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("estimated_time", O.Default(None)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column governance_period SqlType(int4), Default(None) */ val governancePeriod: Rep[Option[Int]] = column[Option[Int]]("governance_period", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -512,21 +1252,31 @@ trait Tables { val pk = primaryKey("baking_rights_pkey", (blockLevel, delegate, forkId)) /** Foreign key referencing Blocks (database name bake_rights_block_fkey) */ - lazy val blocksFk = foreignKey("bake_rights_block_fkey", (blockHash, forkId), Blocks)(r => (Rep.Some(r.hash), r.forkId), onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("bake_rights_block_fkey", (blockHash, forkId), Blocks)( + r => (Rep.Some(r.hash), r.forkId), + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) /** Index over (delegate) (database name baking_rights_delegate_idx) */ val index1 = index("baking_rights_delegate_idx", delegate) + /** Index over (blockLevel) (database name baking_rights_level_idx) */ val index2 = index("baking_rights_level_idx", blockLevel) + /** Index over (blockHash) (database name fki_fk_block_hash) */ val index3 = index("fki_fk_block_hash", blockHash) + /** Index over (cycle) (database name ix_cycle) */ val index4 = index("ix_cycle", cycle) + /** Index over (delegate,priority) (database name ix_delegate_priority) */ val index5 = index("ix_delegate_priority", (delegate, priority)) + /** Index over (delegate,priority,cycle) (database name ix_delegate_priority_cycle) */ val index6 = index("ix_delegate_priority_cycle", (delegate, priority, cycle)) } + /** Collection-like TableQuery object for table BakingRights */ lazy val BakingRights = new TableQuery(tag => new BakingRights(tag)) @@ -546,49 +1296,161 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param period Database column period SqlType(int4), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class BalanceUpdatesRow(id: Int, source: String, sourceId: Option[Int] = None, sourceHash: Option[String] = None, kind: String, accountId: String, change: scala.math.BigDecimal, level: Option[Long] = None, category: Option[String] = None, operationGroupHash: Option[String] = None, blockId: String, blockLevel: Long, cycle: Option[Int] = None, period: Option[Int] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class BalanceUpdatesRow( + id: Int, + source: String, + sourceId: Option[Int] = None, + sourceHash: Option[String] = None, + kind: String, + accountId: String, + change: scala.math.BigDecimal, + level: Option[Long] = None, + category: Option[String] = None, + operationGroupHash: Option[String] = None, + blockId: String, + blockLevel: Long, + cycle: Option[Int] = None, + period: Option[Int] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching BalanceUpdatesRow objects using plain SQL queries */ - implicit def GetResultBalanceUpdatesRow(implicit e0: GR[Int], e1: GR[String], e2: GR[Option[Int]], e3: GR[Option[String]], e4: GR[scala.math.BigDecimal], e5: GR[Option[Long]], e6: GR[Long], e7: GR[Option[java.sql.Timestamp]]): GR[BalanceUpdatesRow] = GR{ - prs => import prs._ - BalanceUpdatesRow.tupled((<<[Int], <<[String], < + import prs._ + BalanceUpdatesRow.tupled( + ( + <<[Int], + <<[String], + < (BalanceUpdatesRow.tupled, BalanceUpdatesRow.unapply) + class BalanceUpdates(_tableTag: Tag) + extends profile.api.Table[BalanceUpdatesRow](_tableTag, Some("tezos"), "balance_updates") { + def * = ( + id, + source, + sourceId, + sourceHash, + kind, + accountId, + change, + level, + category, + operationGroupHash, + blockId, + blockLevel, + cycle, + period, + invalidatedAsof, + forkId + ) <> (BalanceUpdatesRow.tupled, BalanceUpdatesRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(id), Rep.Some(source), sourceId, sourceHash, Rep.Some(kind), Rep.Some(accountId), Rep.Some(change), level, category, operationGroupHash, Rep.Some(blockId), Rep.Some(blockLevel), cycle, period, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> BalanceUpdatesRow.tupled((_1.get, _2.get, _3, _4, _5.get, _6.get, _7.get, _8, _9, _10, _11.get, _12.get, _13, _14, _15, _16.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(id), + Rep.Some(source), + sourceId, + sourceHash, + Rep.Some(kind), + Rep.Some(accountId), + Rep.Some(change), + level, + category, + operationGroupHash, + Rep.Some(blockId), + Rep.Some(blockLevel), + cycle, + period, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + BalanceUpdatesRow.tupled( + (_1.get, _2.get, _3, _4, _5.get, _6.get, _7.get, _8, _9, _10, _11.get, _12.get, _13, _14, _15, _16.get) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column id SqlType(serial), AutoInc */ val id: Rep[Int] = column[Int]("id", O.AutoInc) + /** Database column source SqlType(varchar) */ val source: Rep[String] = column[String]("source") + /** Database column source_id SqlType(int4), Default(None) */ val sourceId: Rep[Option[Int]] = column[Option[Int]]("source_id", O.Default(None)) + /** Database column source_hash SqlType(varchar), Default(None) */ val sourceHash: Rep[Option[String]] = column[Option[String]]("source_hash", O.Default(None)) + /** Database column kind SqlType(varchar) */ val kind: Rep[String] = column[String]("kind") + /** Database column account_id SqlType(varchar) */ val accountId: Rep[String] = column[String]("account_id") + /** Database column change SqlType(numeric) */ val change: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("change") + /** Database column level SqlType(int8), Default(None) */ val level: Rep[Option[Long]] = column[Option[Long]]("level", O.Default(None)) + /** Database column category SqlType(varchar), Default(None) */ val category: Rep[Option[String]] = column[Option[String]]("category", O.Default(None)) + /** Database column operation_group_hash SqlType(varchar), Default(None) */ val operationGroupHash: Rep[Option[String]] = column[Option[String]]("operation_group_hash", O.Default(None)) + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -597,11 +1459,14 @@ trait Tables { /** Index over (accountId) (database name ix_balance_updates_account_id) */ val index1 = index("ix_balance_updates_account_id", accountId) + /** Index over (blockLevel) (database name ix_balance_updates_block_level) */ val index2 = index("ix_balance_updates_block_level", blockLevel) + /** Index over (operationGroupHash) (database name ix_balance_updates_op_group_hash) */ val index3 = index("ix_balance_updates_op_group_hash", operationGroupHash) } + /** Collection-like TableQuery object for table BalanceUpdates */ lazy val BalanceUpdates = new TableQuery(tag => new BalanceUpdates(tag)) @@ -617,54 +1482,143 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param period Database column period SqlType(int4), Default(None) * @param forkId Database column fork_id SqlType(varchar) - * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) */ - case class BigMapContentsRow(bigMapId: scala.math.BigDecimal, key: String, keyHash: String, operationGroupId: Option[String] = None, value: Option[String] = None, valueMicheline: Option[String] = None, blockLevel: Option[Long] = None, timestamp: Option[java.sql.Timestamp] = None, cycle: Option[Int] = None, period: Option[Int] = None, forkId: String, invalidatedAsof: Option[java.sql.Timestamp] = None) + * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) + */ + case class BigMapContentsRow( + bigMapId: scala.math.BigDecimal, + key: String, + keyHash: String, + operationGroupId: Option[String] = None, + value: Option[String] = None, + valueMicheline: Option[String] = None, + blockLevel: Option[Long] = None, + timestamp: Option[java.sql.Timestamp] = None, + cycle: Option[Int] = None, + period: Option[Int] = None, + forkId: String, + invalidatedAsof: Option[java.sql.Timestamp] = None + ) + /** GetResult implicit for fetching BigMapContentsRow objects using plain SQL queries */ - implicit def GetResultBigMapContentsRow(implicit e0: GR[scala.math.BigDecimal], e1: GR[String], e2: GR[Option[String]], e3: GR[Option[Long]], e4: GR[Option[java.sql.Timestamp]], e5: GR[Option[Int]]): GR[BigMapContentsRow] = GR{ - prs => import prs._ - BigMapContentsRow.tupled((<<[scala.math.BigDecimal], <<[String], <<[String], < + import prs._ + BigMapContentsRow.tupled( + ( + <<[scala.math.BigDecimal], + <<[String], + <<[String], + < (BigMapContentsRow.tupled, BigMapContentsRow.unapply) + class BigMapContents(_tableTag: Tag) + extends profile.api.Table[BigMapContentsRow](_tableTag, Some("tezos"), "big_map_contents") { + def * = ( + bigMapId, + key, + keyHash, + operationGroupId, + value, + valueMicheline, + blockLevel, + timestamp, + cycle, + period, + forkId, + invalidatedAsof + ) <> (BigMapContentsRow.tupled, BigMapContentsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(bigMapId), Rep.Some(key), Rep.Some(keyHash), operationGroupId, value, valueMicheline, blockLevel, timestamp, cycle, period, Rep.Some(forkId), invalidatedAsof)).shaped.<>({r=>import r._; _1.map(_=> BigMapContentsRow.tupled((_1.get, _2.get, _3.get, _4, _5, _6, _7, _8, _9, _10, _11.get, _12)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(bigMapId), + Rep.Some(key), + Rep.Some(keyHash), + operationGroupId, + value, + valueMicheline, + blockLevel, + timestamp, + cycle, + period, + Rep.Some(forkId), + invalidatedAsof + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => BigMapContentsRow.tupled((_1.get, _2.get, _3.get, _4, _5, _6, _7, _8, _9, _10, _11.get, _12))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column big_map_id SqlType(numeric) */ val bigMapId: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("big_map_id") + /** Database column key SqlType(varchar) */ val key: Rep[String] = column[String]("key") + /** Database column key_hash SqlType(varchar) */ val keyHash: Rep[String] = column[String]("key_hash") + /** Database column operation_group_id SqlType(varchar), Default(None) */ val operationGroupId: Rep[Option[String]] = column[Option[String]]("operation_group_id", O.Default(None)) + /** Database column value SqlType(varchar), Default(None) */ val value: Rep[Option[String]] = column[Option[String]]("value", O.Default(None)) + /** Database column value_micheline SqlType(varchar), Default(None) */ val valueMicheline: Rep[Option[String]] = column[Option[String]]("value_micheline", O.Default(None)) + /** Database column block_level SqlType(int8), Default(None) */ val blockLevel: Rep[Option[Long]] = column[Option[Long]]("block_level", O.Default(None)) + /** Database column timestamp SqlType(timestamp), Default(None) */ val timestamp: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("timestamp", O.Default(None)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) /** Primary key of BigMapContents (database name big_map_contents_pkey) */ val pk = primaryKey("big_map_contents_pkey", (bigMapId, keyHash, forkId)) /** Index over (bigMapId) (database name big_map_id_idx) */ val index1 = index("big_map_id_idx", bigMapId) + /** Index over (bigMapId,operationGroupId) (database name combined_big_map_operation_group_ids_idx) */ val index2 = index("combined_big_map_operation_group_ids_idx", (bigMapId, operationGroupId)) + /** Index over (operationGroupId) (database name operation_group_id_idx) */ val index3 = index("operation_group_id_idx", operationGroupId) } + /** Collection-like TableQuery object for table BigMapContents */ lazy val BigMapContents = new TableQuery(tag => new BigMapContents(tag)) @@ -679,42 +1633,124 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param period Database column period SqlType(int4), Default(None) * @param forkId Database column fork_id SqlType(varchar) - * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) */ - case class BigMapContentsHistoryRow(bigMapId: scala.math.BigDecimal, key: String, keyHash: Option[String] = None, operationGroupId: Option[String] = None, value: Option[String] = None, blockLevel: Option[Long] = None, timestamp: Option[java.sql.Timestamp] = None, cycle: Option[Int] = None, period: Option[Int] = None, forkId: String, invalidatedAsof: Option[java.sql.Timestamp] = None) + * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) + */ + case class BigMapContentsHistoryRow( + bigMapId: scala.math.BigDecimal, + key: String, + keyHash: Option[String] = None, + operationGroupId: Option[String] = None, + value: Option[String] = None, + blockLevel: Option[Long] = None, + timestamp: Option[java.sql.Timestamp] = None, + cycle: Option[Int] = None, + period: Option[Int] = None, + forkId: String, + invalidatedAsof: Option[java.sql.Timestamp] = None + ) + /** GetResult implicit for fetching BigMapContentsHistoryRow objects using plain SQL queries */ - implicit def GetResultBigMapContentsHistoryRow(implicit e0: GR[scala.math.BigDecimal], e1: GR[String], e2: GR[Option[String]], e3: GR[Option[Long]], e4: GR[Option[java.sql.Timestamp]], e5: GR[Option[Int]]): GR[BigMapContentsHistoryRow] = GR{ - prs => import prs._ - BigMapContentsHistoryRow.tupled((<<[scala.math.BigDecimal], <<[String], < + import prs._ + BigMapContentsHistoryRow.tupled( + ( + <<[scala.math.BigDecimal], + <<[String], + < (BigMapContentsHistoryRow.tupled, BigMapContentsHistoryRow.unapply) + class BigMapContentsHistory(_tableTag: Tag) + extends profile.api.Table[BigMapContentsHistoryRow](_tableTag, Some("tezos"), "big_map_contents_history") { + def * = ( + bigMapId, + key, + keyHash, + operationGroupId, + value, + blockLevel, + timestamp, + cycle, + period, + forkId, + invalidatedAsof + ) <> (BigMapContentsHistoryRow.tupled, BigMapContentsHistoryRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(bigMapId), Rep.Some(key), keyHash, operationGroupId, value, blockLevel, timestamp, cycle, period, Rep.Some(forkId), invalidatedAsof)).shaped.<>({r=>import r._; _1.map(_=> BigMapContentsHistoryRow.tupled((_1.get, _2.get, _3, _4, _5, _6, _7, _8, _9, _10.get, _11)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(bigMapId), + Rep.Some(key), + keyHash, + operationGroupId, + value, + blockLevel, + timestamp, + cycle, + period, + Rep.Some(forkId), + invalidatedAsof + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => BigMapContentsHistoryRow.tupled((_1.get, _2.get, _3, _4, _5, _6, _7, _8, _9, _10.get, _11))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column big_map_id SqlType(numeric) */ val bigMapId: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("big_map_id") + /** Database column key SqlType(varchar) */ val key: Rep[String] = column[String]("key") + /** Database column key_hash SqlType(varchar), Default(None) */ val keyHash: Rep[Option[String]] = column[Option[String]]("key_hash", O.Default(None)) + /** Database column operation_group_id SqlType(varchar), Default(None) */ val operationGroupId: Rep[Option[String]] = column[Option[String]]("operation_group_id", O.Default(None)) + /** Database column value SqlType(varchar), Default(None) */ val value: Rep[Option[String]] = column[Option[String]]("value", O.Default(None)) + /** Database column block_level SqlType(int8), Default(None) */ val blockLevel: Rep[Option[Long]] = column[Option[Long]]("block_level", O.Default(None)) + /** Database column timestamp SqlType(timestamp), Default(None) */ val timestamp: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("timestamp", O.Default(None)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) } + /** Collection-like TableQuery object for table BigMapContentsHistory */ lazy val BigMapContentsHistory = new TableQuery(tag => new BigMapContentsHistory(tag)) @@ -724,35 +1760,65 @@ trait Tables { * @param valueType Database column value_type SqlType(varchar), Default(None) * @param forkId Database column fork_id SqlType(varchar) * @param blockLevel Database column block_level SqlType(int8), Default(None) - * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) */ - case class BigMapsRow(bigMapId: scala.math.BigDecimal, keyType: Option[String] = None, valueType: Option[String] = None, forkId: String, blockLevel: Option[Long] = None, invalidatedAsof: Option[java.sql.Timestamp] = None) + * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) + */ + case class BigMapsRow( + bigMapId: scala.math.BigDecimal, + keyType: Option[String] = None, + valueType: Option[String] = None, + forkId: String, + blockLevel: Option[Long] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None + ) + /** GetResult implicit for fetching BigMapsRow objects using plain SQL queries */ - implicit def GetResultBigMapsRow(implicit e0: GR[scala.math.BigDecimal], e1: GR[Option[String]], e2: GR[String], e3: GR[Option[Long]], e4: GR[Option[java.sql.Timestamp]]): GR[BigMapsRow] = GR{ - prs => import prs._ - BigMapsRow.tupled((<<[scala.math.BigDecimal], < + import prs._ + BigMapsRow.tupled( + (<<[scala.math.BigDecimal], < (BigMapsRow.tupled, BigMapsRow.unapply) + def * = + (bigMapId, keyType, valueType, forkId, blockLevel, invalidatedAsof) <> (BigMapsRow.tupled, BigMapsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(bigMapId), keyType, valueType, Rep.Some(forkId), blockLevel, invalidatedAsof)).shaped.<>({r=>import r._; _1.map(_=> BigMapsRow.tupled((_1.get, _2, _3, _4.get, _5, _6)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(bigMapId), keyType, valueType, Rep.Some(forkId), blockLevel, invalidatedAsof)).shaped.<>( + { r => import r._; _1.map(_ => BigMapsRow.tupled((_1.get, _2, _3, _4.get, _5, _6))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column big_map_id SqlType(numeric) */ val bigMapId: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("big_map_id") + /** Database column key_type SqlType(varchar), Default(None) */ val keyType: Rep[Option[String]] = column[Option[String]]("key_type", O.Default(None)) + /** Database column value_type SqlType(varchar), Default(None) */ val valueType: Rep[Option[String]] = column[Option[String]]("value_type", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column block_level SqlType(int8), Default(None) */ val blockLevel: Rep[Option[Long]] = column[Option[Long]]("block_level", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) /** Primary key of BigMaps (database name big_maps_pkey) */ val pk = primaryKey("big_maps_pkey", (bigMapId, forkId)) } + /** Collection-like TableQuery object for table BigMaps */ lazy val BigMaps = new TableQuery(tag => new BigMaps(tag)) @@ -785,83 +1851,232 @@ trait Tables { * @param utcDay Database column utc_day SqlType(int4) * @param utcTime Database column utc_time SqlType(varchar) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class BlocksRow(level: Long, proto: Int, predecessor: String, timestamp: java.sql.Timestamp, fitness: String, context: Option[String] = None, signature: Option[String] = None, protocol: String, chainId: Option[String] = None, hash: String, operationsHash: Option[String] = None, periodKind: Option[String] = None, currentExpectedQuorum: Option[Int] = None, activeProposal: Option[String] = None, baker: Option[String] = None, consumedGas: Option[scala.math.BigDecimal] = None, metaLevel: Option[Long] = None, metaLevelPosition: Option[Int] = None, metaCycle: Option[Int] = None, metaCyclePosition: Option[Int] = None, metaVotingPeriod: Option[Int] = None, metaVotingPeriodPosition: Option[Int] = None, priority: Option[Int] = None, utcYear: Int, utcMonth: Int, utcDay: Int, utcTime: String, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class BlocksRow( + level: Long, + proto: Int, + predecessor: String, + timestamp: java.sql.Timestamp, + fitness: String, + context: Option[String] = None, + signature: Option[String] = None, + protocol: String, + chainId: Option[String] = None, + hash: String, + operationsHash: Option[String] = None, + periodKind: Option[String] = None, + currentExpectedQuorum: Option[Int] = None, + activeProposal: Option[String] = None, + baker: Option[String] = None, + consumedGas: Option[scala.math.BigDecimal] = None, + metaLevel: Option[Long] = None, + metaLevelPosition: Option[Int] = None, + metaCycle: Option[Int] = None, + metaCyclePosition: Option[Int] = None, + metaVotingPeriod: Option[Int] = None, + metaVotingPeriodPosition: Option[Int] = None, + priority: Option[Int] = None, + utcYear: Int, + utcMonth: Int, + utcDay: Int, + utcTime: String, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching BlocksRow objects using plain SQL queries */ - implicit def GetResultBlocksRow(implicit e0: GR[Long], e1: GR[Int], e2: GR[String], e3: GR[java.sql.Timestamp], e4: GR[Option[String]], e5: GR[Option[Int]], e6: GR[Option[scala.math.BigDecimal]], e7: GR[Option[Long]], e8: GR[Option[java.sql.Timestamp]]): GR[BlocksRow] = GR{ - prs => import prs._ - BlocksRow(<<[Long], <<[Int], <<[String], <<[java.sql.Timestamp], <<[String], < + import prs._ + BlocksRow( + <<[Long], + <<[Int], + <<[String], + <<[java.sql.Timestamp], + <<[String], + <(r => BlocksRow(r(0).asInstanceOf[Option[Long]].get, r(1).asInstanceOf[Option[Int]].get, r(2).asInstanceOf[Option[String]].get, r(3).asInstanceOf[Option[java.sql.Timestamp]].get, r(4).asInstanceOf[Option[String]].get, r(5).asInstanceOf[Option[String]], r(6).asInstanceOf[Option[String]], r(7).asInstanceOf[Option[String]].get, r(8).asInstanceOf[Option[String]], r(9).asInstanceOf[Option[String]].get, r(10).asInstanceOf[Option[String]], r(11).asInstanceOf[Option[String]], r(12).asInstanceOf[Option[Int]], r(13).asInstanceOf[Option[String]], r(14).asInstanceOf[Option[String]], r(15).asInstanceOf[Option[scala.math.BigDecimal]], r(16).asInstanceOf[Option[Long]], r(17).asInstanceOf[Option[Int]], r(18).asInstanceOf[Option[Int]], r(19).asInstanceOf[Option[Int]], r(20).asInstanceOf[Option[Int]], r(21).asInstanceOf[Option[Int]], r(22).asInstanceOf[Option[Int]], r(23).asInstanceOf[Option[Int]].get, r(24).asInstanceOf[Option[Int]].get, r(25).asInstanceOf[Option[Int]].get, r(26).asInstanceOf[Option[String]].get, r(27).asInstanceOf[Option[java.sql.Timestamp]], r(28).asInstanceOf[Option[String]].get), (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = (Rep.Some(level) :: Rep.Some(proto) :: Rep.Some(predecessor) :: Rep.Some(timestamp) :: Rep.Some( + fitness + ) :: context :: signature :: Rep.Some(protocol) :: chainId :: Rep.Some( + hash + ) :: operationsHash :: periodKind :: currentExpectedQuorum :: activeProposal :: baker :: consumedGas :: metaLevel :: metaLevelPosition :: metaCycle :: metaCyclePosition :: metaVotingPeriod :: metaVotingPeriodPosition :: priority :: Rep + .Some(utcYear) :: Rep.Some(utcMonth) :: Rep.Some(utcDay) :: Rep.Some(utcTime) :: invalidatedAsof :: Rep.Some( + forkId + ) :: HNil).shaped.<>( + r => + BlocksRow( + r(0).asInstanceOf[Option[Long]].get, + r(1).asInstanceOf[Option[Int]].get, + r(2).asInstanceOf[Option[String]].get, + r(3).asInstanceOf[Option[java.sql.Timestamp]].get, + r(4).asInstanceOf[Option[String]].get, + r(5).asInstanceOf[Option[String]], + r(6).asInstanceOf[Option[String]], + r(7).asInstanceOf[Option[String]].get, + r(8).asInstanceOf[Option[String]], + r(9).asInstanceOf[Option[String]].get, + r(10).asInstanceOf[Option[String]], + r(11).asInstanceOf[Option[String]], + r(12).asInstanceOf[Option[Int]], + r(13).asInstanceOf[Option[String]], + r(14).asInstanceOf[Option[String]], + r(15).asInstanceOf[Option[scala.math.BigDecimal]], + r(16).asInstanceOf[Option[Long]], + r(17).asInstanceOf[Option[Int]], + r(18).asInstanceOf[Option[Int]], + r(19).asInstanceOf[Option[Int]], + r(20).asInstanceOf[Option[Int]], + r(21).asInstanceOf[Option[Int]], + r(22).asInstanceOf[Option[Int]], + r(23).asInstanceOf[Option[Int]].get, + r(24).asInstanceOf[Option[Int]].get, + r(25).asInstanceOf[Option[Int]].get, + r(26).asInstanceOf[Option[String]].get, + r(27).asInstanceOf[Option[java.sql.Timestamp]], + r(28).asInstanceOf[Option[String]].get + ), + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column level SqlType(int8) */ val level: Rep[Long] = column[Long]("level") + /** Database column proto SqlType(int4) */ val proto: Rep[Int] = column[Int]("proto") + /** Database column predecessor SqlType(varchar) */ val predecessor: Rep[String] = column[String]("predecessor") + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") + /** Database column fitness SqlType(varchar) */ val fitness: Rep[String] = column[String]("fitness") + /** Database column context SqlType(varchar), Default(None) */ val context: Rep[Option[String]] = column[Option[String]]("context", O.Default(None)) + /** Database column signature SqlType(varchar), Default(None) */ val signature: Rep[Option[String]] = column[Option[String]]("signature", O.Default(None)) + /** Database column protocol SqlType(varchar) */ val protocol: Rep[String] = column[String]("protocol") + /** Database column chain_id SqlType(varchar), Default(None) */ val chainId: Rep[Option[String]] = column[Option[String]]("chain_id", O.Default(None)) + /** Database column hash SqlType(varchar) */ val hash: Rep[String] = column[String]("hash") + /** Database column operations_hash SqlType(varchar), Default(None) */ val operationsHash: Rep[Option[String]] = column[Option[String]]("operations_hash", O.Default(None)) + /** Database column period_kind SqlType(varchar), Default(None) */ val periodKind: Rep[Option[String]] = column[Option[String]]("period_kind", O.Default(None)) + /** Database column current_expected_quorum SqlType(int4), Default(None) */ val currentExpectedQuorum: Rep[Option[Int]] = column[Option[Int]]("current_expected_quorum", O.Default(None)) + /** Database column active_proposal SqlType(varchar), Default(None) */ val activeProposal: Rep[Option[String]] = column[Option[String]]("active_proposal", O.Default(None)) + /** Database column baker SqlType(varchar), Default(None) */ val baker: Rep[Option[String]] = column[Option[String]]("baker", O.Default(None)) + /** Database column consumed_gas SqlType(numeric), Default(None) */ - val consumedGas: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("consumed_gas", O.Default(None)) + val consumedGas: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("consumed_gas", O.Default(None)) + /** Database column meta_level SqlType(int8), Default(None) */ val metaLevel: Rep[Option[Long]] = column[Option[Long]]("meta_level", O.Default(None)) + /** Database column meta_level_position SqlType(int4), Default(None) */ val metaLevelPosition: Rep[Option[Int]] = column[Option[Int]]("meta_level_position", O.Default(None)) + /** Database column meta_cycle SqlType(int4), Default(None) */ val metaCycle: Rep[Option[Int]] = column[Option[Int]]("meta_cycle", O.Default(None)) + /** Database column meta_cycle_position SqlType(int4), Default(None) */ val metaCyclePosition: Rep[Option[Int]] = column[Option[Int]]("meta_cycle_position", O.Default(None)) + /** Database column meta_voting_period SqlType(int4), Default(None) */ val metaVotingPeriod: Rep[Option[Int]] = column[Option[Int]]("meta_voting_period", O.Default(None)) + /** Database column meta_voting_period_position SqlType(int4), Default(None) */ val metaVotingPeriodPosition: Rep[Option[Int]] = column[Option[Int]]("meta_voting_period_position", O.Default(None)) + /** Database column priority SqlType(int4), Default(None) */ val priority: Rep[Option[Int]] = column[Option[Int]]("priority", O.Default(None)) + /** Database column utc_year SqlType(int4) */ val utcYear: Rep[Int] = column[Int]("utc_year") + /** Database column utc_month SqlType(int4) */ val utcMonth: Rep[Int] = column[Int]("utc_month") + /** Database column utc_day SqlType(int4) */ val utcDay: Rep[Int] = column[Int]("utc_day") + /** Database column utc_time SqlType(varchar) */ val utcTime: Rep[String] = column[String]("utc_time") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") /** Uniqueness Index over (hash,forkId) (database name blocks_hash_fork_id_key) */ - val index1 = index("blocks_hash_fork_id_key", hash :: forkId :: HNil, unique=true) + val index1 = index("blocks_hash_fork_id_key", hash :: forkId :: HNil, unique = true) + /** Index over (level) (database name ix_blocks_level) */ val index2 = index("ix_blocks_level", level :: HNil) } + /** Collection-like TableQuery object for table Blocks */ lazy val Blocks = new TableQuery(tag => new Blocks(tag)) @@ -875,37 +2090,114 @@ trait Tables { * @param governancePeriod Database column governance_period SqlType(int4), Default(None) * @param endorsedBlock Database column endorsed_block SqlType(int8), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class EndorsingRightsRow(blockHash: Option[String] = None, blockLevel: Long, delegate: String, slot: Int, estimatedTime: Option[java.sql.Timestamp] = None, cycle: Option[Int] = None, governancePeriod: Option[Int] = None, endorsedBlock: Option[Long] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class EndorsingRightsRow( + blockHash: Option[String] = None, + blockLevel: Long, + delegate: String, + slot: Int, + estimatedTime: Option[java.sql.Timestamp] = None, + cycle: Option[Int] = None, + governancePeriod: Option[Int] = None, + endorsedBlock: Option[Long] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching EndorsingRightsRow objects using plain SQL queries */ - implicit def GetResultEndorsingRightsRow(implicit e0: GR[Option[String]], e1: GR[Long], e2: GR[String], e3: GR[Int], e4: GR[Option[java.sql.Timestamp]], e5: GR[Option[Int]], e6: GR[Option[Long]]): GR[EndorsingRightsRow] = GR{ - prs => import prs._ - EndorsingRightsRow.tupled((< + import prs._ + EndorsingRightsRow.tupled( + ( + < (EndorsingRightsRow.tupled, EndorsingRightsRow.unapply) + class EndorsingRights(_tableTag: Tag) + extends profile.api.Table[EndorsingRightsRow](_tableTag, Some("tezos"), "endorsing_rights") { + def * = ( + blockHash, + blockLevel, + delegate, + slot, + estimatedTime, + cycle, + governancePeriod, + endorsedBlock, + invalidatedAsof, + forkId + ) <> (EndorsingRightsRow.tupled, EndorsingRightsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((blockHash, Rep.Some(blockLevel), Rep.Some(delegate), Rep.Some(slot), estimatedTime, cycle, governancePeriod, endorsedBlock, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _2.map(_=> EndorsingRightsRow.tupled((_1, _2.get, _3.get, _4.get, _5, _6, _7, _8, _9, _10.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + blockHash, + Rep.Some(blockLevel), + Rep.Some(delegate), + Rep.Some(slot), + estimatedTime, + cycle, + governancePeriod, + endorsedBlock, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; _2.map(_ => EndorsingRightsRow.tupled((_1, _2.get, _3.get, _4.get, _5, _6, _7, _8, _9, _10.get))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column block_hash SqlType(varchar), Default(None) */ val blockHash: Rep[Option[String]] = column[Option[String]]("block_hash", O.Default(None)) + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column delegate SqlType(varchar) */ val delegate: Rep[String] = column[String]("delegate") + /** Database column slot SqlType(int4) */ val slot: Rep[Int] = column[Int]("slot") + /** Database column estimated_time SqlType(timestamp), Default(None) */ - val estimatedTime: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("estimated_time", O.Default(None)) + val estimatedTime: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("estimated_time", O.Default(None)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column governance_period SqlType(int4), Default(None) */ val governancePeriod: Rep[Option[Int]] = column[Option[Int]]("governance_period", O.Default(None)) + /** Database column endorsed_block SqlType(int8), Default(None) */ val endorsedBlock: Rep[Option[Long]] = column[Option[Long]]("endorsed_block", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -913,19 +2205,28 @@ trait Tables { val pk = primaryKey("endorsing_rights_pkey", (blockLevel, delegate, slot, forkId)) /** Foreign key referencing Blocks (database name endorse_rights_block_fkey) */ - lazy val blocksFk = foreignKey("endorse_rights_block_fkey", (blockHash, forkId), Blocks)(r => (Rep.Some(r.hash), r.forkId), onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("endorse_rights_block_fkey", (blockHash, forkId), Blocks)( + r => (Rep.Some(r.hash), r.forkId), + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) /** Index over (delegate) (database name endorsing_rights_delegate_idx) */ val index1 = index("endorsing_rights_delegate_idx", delegate) + /** Index over (blockLevel) (database name endorsing_rights_level_idx) */ val index2 = index("endorsing_rights_level_idx", blockLevel) + /** Index over (blockHash) (database name fki_fk_block_hash2) */ val index3 = index("fki_fk_block_hash2", blockHash) + /** Index over (delegate,blockLevel) (database name ix_delegate_block_level) */ val index4 = index("ix_delegate_block_level", (delegate, blockLevel)) + /** Index over (delegate,slot) (database name ix_delegate_slot) */ val index5 = index("ix_delegate_slot", (delegate, slot)) } + /** Collection-like TableQuery object for table EndorsingRights */ lazy val EndorsingRights = new TableQuery(tag => new EndorsingRights(tag)) @@ -938,38 +2239,97 @@ trait Tables { * @param cycle Database column cycle SqlType(int4), Default(None) * @param level Database column level SqlType(int8), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class FeesRow(low: Int, medium: Int, high: Int, timestamp: java.sql.Timestamp, kind: String, cycle: Option[Int] = None, level: Option[Long] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class FeesRow( + low: Int, + medium: Int, + high: Int, + timestamp: java.sql.Timestamp, + kind: String, + cycle: Option[Int] = None, + level: Option[Long] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching FeesRow objects using plain SQL queries */ - implicit def GetResultFeesRow(implicit e0: GR[Int], e1: GR[java.sql.Timestamp], e2: GR[String], e3: GR[Option[Int]], e4: GR[Option[Long]], e5: GR[Option[java.sql.Timestamp]]): GR[FeesRow] = GR{ - prs => import prs._ - FeesRow.tupled((<<[Int], <<[Int], <<[Int], <<[java.sql.Timestamp], <<[String], < + import prs._ + FeesRow.tupled( + ( + <<[Int], + <<[Int], + <<[Int], + <<[java.sql.Timestamp], + <<[String], + < (FeesRow.tupled, FeesRow.unapply) + def * = + (low, medium, high, timestamp, kind, cycle, level, invalidatedAsof, forkId) <> (FeesRow.tupled, FeesRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(low), Rep.Some(medium), Rep.Some(high), Rep.Some(timestamp), Rep.Some(kind), cycle, level, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> FeesRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6, _7, _8, _9.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(low), + Rep.Some(medium), + Rep.Some(high), + Rep.Some(timestamp), + Rep.Some(kind), + cycle, + level, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => import r._; _1.map(_ => FeesRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6, _7, _8, _9.get))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column low SqlType(int4) */ val low: Rep[Int] = column[Int]("low") + /** Database column medium SqlType(int4) */ val medium: Rep[Int] = column[Int]("medium") + /** Database column high SqlType(int4) */ val high: Rep[Int] = column[Int]("high") + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") + /** Database column kind SqlType(varchar) */ val kind: Rep[String] = column[String]("kind") + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column level SqlType(int8), Default(None) */ val level: Rep[Option[Long]] = column[Option[Long]]("level", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") } + /** Collection-like TableQuery object for table Fees */ lazy val Fees = new TableQuery(tag => new Fees(tag)) @@ -978,30 +2338,44 @@ trait Tables { * @param forkLevel Database column fork_level SqlType(int8) * @param forkHash Database column fork_hash SqlType(varchar) * @param headLevel Database column head_level SqlType(int8) - * @param timestamp Database column timestamp SqlType(timestamp) */ + * @param timestamp Database column timestamp SqlType(timestamp) + */ case class ForksRow(forkId: String, forkLevel: Long, forkHash: String, headLevel: Long, timestamp: java.sql.Timestamp) + /** GetResult implicit for fetching ForksRow objects using plain SQL queries */ - implicit def GetResultForksRow(implicit e0: GR[String], e1: GR[Long], e2: GR[java.sql.Timestamp]): GR[ForksRow] = GR{ - prs => import prs._ - ForksRow.tupled((<<[String], <<[Long], <<[String], <<[Long], <<[java.sql.Timestamp])) + implicit + def GetResultForksRow(implicit e0: GR[String], e1: GR[Long], e2: GR[java.sql.Timestamp]): GR[ForksRow] = GR { prs => + import prs._ + ForksRow.tupled((<<[String], <<[Long], <<[String], <<[Long], <<[java.sql.Timestamp])) } + /** Table description of table forks. Objects of this class serve as prototypes for rows in queries. */ class Forks(_tableTag: Tag) extends profile.api.Table[ForksRow](_tableTag, Some("tezos"), "forks") { def * = (forkId, forkLevel, forkHash, headLevel, timestamp) <> (ForksRow.tupled, ForksRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(forkId), Rep.Some(forkLevel), Rep.Some(forkHash), Rep.Some(headLevel), Rep.Some(timestamp))).shaped.<>({r=>import r._; _1.map(_=> ForksRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = + ((Rep.Some(forkId), Rep.Some(forkLevel), Rep.Some(forkHash), Rep.Some(headLevel), Rep.Some(timestamp))).shaped.<>( + { r => import r._; _1.map(_ => ForksRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column fork_id SqlType(varchar), PrimaryKey */ val forkId: Rep[String] = column[String]("fork_id", O.PrimaryKey) + /** Database column fork_level SqlType(int8) */ val forkLevel: Rep[Long] = column[Long]("fork_level") + /** Database column fork_hash SqlType(varchar) */ val forkHash: Rep[String] = column[String]("fork_hash") + /** Database column head_level SqlType(int8) */ val headLevel: Rep[Long] = column[Long]("head_level") + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") } + /** Collection-like TableQuery object for table Forks */ lazy val Forks = new TableQuery(tag => new Forks(tag)) @@ -1026,59 +2400,222 @@ trait Tables { * @param blockNayRolls Database column block_nay_rolls SqlType(numeric), Default(None) * @param blockPassRolls Database column block_pass_rolls SqlType(numeric), Default(None) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class GovernanceRow(votingPeriod: Int, votingPeriodKind: String, cycle: Option[Int] = None, level: Option[Long] = None, blockHash: String, proposalHash: String, yayCount: Option[Int] = None, nayCount: Option[Int] = None, passCount: Option[Int] = None, yayRolls: Option[scala.math.BigDecimal] = None, nayRolls: Option[scala.math.BigDecimal] = None, passRolls: Option[scala.math.BigDecimal] = None, totalRolls: Option[scala.math.BigDecimal] = None, blockYayCount: Option[Int] = None, blockNayCount: Option[Int] = None, blockPassCount: Option[Int] = None, blockYayRolls: Option[scala.math.BigDecimal] = None, blockNayRolls: Option[scala.math.BigDecimal] = None, blockPassRolls: Option[scala.math.BigDecimal] = None, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class GovernanceRow( + votingPeriod: Int, + votingPeriodKind: String, + cycle: Option[Int] = None, + level: Option[Long] = None, + blockHash: String, + proposalHash: String, + yayCount: Option[Int] = None, + nayCount: Option[Int] = None, + passCount: Option[Int] = None, + yayRolls: Option[scala.math.BigDecimal] = None, + nayRolls: Option[scala.math.BigDecimal] = None, + passRolls: Option[scala.math.BigDecimal] = None, + totalRolls: Option[scala.math.BigDecimal] = None, + blockYayCount: Option[Int] = None, + blockNayCount: Option[Int] = None, + blockPassCount: Option[Int] = None, + blockYayRolls: Option[scala.math.BigDecimal] = None, + blockNayRolls: Option[scala.math.BigDecimal] = None, + blockPassRolls: Option[scala.math.BigDecimal] = None, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching GovernanceRow objects using plain SQL queries */ - implicit def GetResultGovernanceRow(implicit e0: GR[Int], e1: GR[String], e2: GR[Option[Int]], e3: GR[Option[Long]], e4: GR[Option[scala.math.BigDecimal]], e5: GR[Option[java.sql.Timestamp]]): GR[GovernanceRow] = GR{ - prs => import prs._ - GovernanceRow.tupled((<<[Int], <<[String], < + import prs._ + GovernanceRow.tupled( + ( + <<[Int], + <<[String], + < (GovernanceRow.tupled, GovernanceRow.unapply) + def * = ( + votingPeriod, + votingPeriodKind, + cycle, + level, + blockHash, + proposalHash, + yayCount, + nayCount, + passCount, + yayRolls, + nayRolls, + passRolls, + totalRolls, + blockYayCount, + blockNayCount, + blockPassCount, + blockYayRolls, + blockNayRolls, + blockPassRolls, + invalidatedAsof, + forkId + ) <> (GovernanceRow.tupled, GovernanceRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(votingPeriod), Rep.Some(votingPeriodKind), cycle, level, Rep.Some(blockHash), Rep.Some(proposalHash), yayCount, nayCount, passCount, yayRolls, nayRolls, passRolls, totalRolls, blockYayCount, blockNayCount, blockPassCount, blockYayRolls, blockNayRolls, blockPassRolls, invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> GovernanceRow.tupled((_1.get, _2.get, _3, _4, _5.get, _6.get, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(votingPeriod), + Rep.Some(votingPeriodKind), + cycle, + level, + Rep.Some(blockHash), + Rep.Some(proposalHash), + yayCount, + nayCount, + passCount, + yayRolls, + nayRolls, + passRolls, + totalRolls, + blockYayCount, + blockNayCount, + blockPassCount, + blockYayRolls, + blockNayRolls, + blockPassRolls, + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + GovernanceRow.tupled( + ( + _1.get, + _2.get, + _3, + _4, + _5.get, + _6.get, + _7, + _8, + _9, + _10, + _11, + _12, + _13, + _14, + _15, + _16, + _17, + _18, + _19, + _20, + _21.get + ) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column voting_period SqlType(int4) */ val votingPeriod: Rep[Int] = column[Int]("voting_period") + /** Database column voting_period_kind SqlType(varchar) */ val votingPeriodKind: Rep[String] = column[String]("voting_period_kind") + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column level SqlType(int8), Default(None) */ val level: Rep[Option[Long]] = column[Option[Long]]("level", O.Default(None)) + /** Database column block_hash SqlType(varchar) */ val blockHash: Rep[String] = column[String]("block_hash") + /** Database column proposal_hash SqlType(varchar) */ val proposalHash: Rep[String] = column[String]("proposal_hash") + /** Database column yay_count SqlType(int4), Default(None) */ val yayCount: Rep[Option[Int]] = column[Option[Int]]("yay_count", O.Default(None)) + /** Database column nay_count SqlType(int4), Default(None) */ val nayCount: Rep[Option[Int]] = column[Option[Int]]("nay_count", O.Default(None)) + /** Database column pass_count SqlType(int4), Default(None) */ val passCount: Rep[Option[Int]] = column[Option[Int]]("pass_count", O.Default(None)) + /** Database column yay_rolls SqlType(numeric), Default(None) */ - val yayRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("yay_rolls", O.Default(None)) + val yayRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("yay_rolls", O.Default(None)) + /** Database column nay_rolls SqlType(numeric), Default(None) */ - val nayRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("nay_rolls", O.Default(None)) + val nayRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("nay_rolls", O.Default(None)) + /** Database column pass_rolls SqlType(numeric), Default(None) */ - val passRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("pass_rolls", O.Default(None)) + val passRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("pass_rolls", O.Default(None)) + /** Database column total_rolls SqlType(numeric), Default(None) */ - val totalRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("total_rolls", O.Default(None)) + val totalRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("total_rolls", O.Default(None)) + /** Database column block_yay_count SqlType(int4), Default(None) */ val blockYayCount: Rep[Option[Int]] = column[Option[Int]]("block_yay_count", O.Default(None)) + /** Database column block_nay_count SqlType(int4), Default(None) */ val blockNayCount: Rep[Option[Int]] = column[Option[Int]]("block_nay_count", O.Default(None)) + /** Database column block_pass_count SqlType(int4), Default(None) */ val blockPassCount: Rep[Option[Int]] = column[Option[Int]]("block_pass_count", O.Default(None)) + /** Database column block_yay_rolls SqlType(numeric), Default(None) */ - val blockYayRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("block_yay_rolls", O.Default(None)) + val blockYayRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("block_yay_rolls", O.Default(None)) + /** Database column block_nay_rolls SqlType(numeric), Default(None) */ - val blockNayRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("block_nay_rolls", O.Default(None)) + val blockNayRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("block_nay_rolls", O.Default(None)) + /** Database column block_pass_rolls SqlType(numeric), Default(None) */ - val blockPassRolls: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("block_pass_rolls", O.Default(None)) + val blockPassRolls: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("block_pass_rolls", O.Default(None)) + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -1087,32 +2624,44 @@ trait Tables { /** Index over (blockHash) (database name governance_block_hash_idx) */ val index1 = index("governance_block_hash_idx", blockHash) + /** Index over (proposalHash) (database name governance_proposal_hash_idx) */ val index2 = index("governance_proposal_hash_idx", proposalHash) } + /** Collection-like TableQuery object for table Governance */ lazy val Governance = new TableQuery(tag => new Governance(tag)) /** Entity class storing rows of table KnownAddresses * @param address Database column address SqlType(varchar) - * @param alias Database column alias SqlType(varchar) */ + * @param alias Database column alias SqlType(varchar) + */ case class KnownAddressesRow(address: String, alias: String) + /** GetResult implicit for fetching KnownAddressesRow objects using plain SQL queries */ - implicit def GetResultKnownAddressesRow(implicit e0: GR[String]): GR[KnownAddressesRow] = GR{ - prs => import prs._ - KnownAddressesRow.tupled((<<[String], <<[String])) + implicit def GetResultKnownAddressesRow(implicit e0: GR[String]): GR[KnownAddressesRow] = GR { prs => + import prs._ + KnownAddressesRow.tupled((<<[String], <<[String])) } + /** Table description of table known_addresses. Objects of this class serve as prototypes for rows in queries. */ - class KnownAddresses(_tableTag: Tag) extends profile.api.Table[KnownAddressesRow](_tableTag, Some("tezos"), "known_addresses") { + class KnownAddresses(_tableTag: Tag) + extends profile.api.Table[KnownAddressesRow](_tableTag, Some("tezos"), "known_addresses") { def * = (address, alias) <> (KnownAddressesRow.tupled, KnownAddressesRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(address), Rep.Some(alias))).shaped.<>({r=>import r._; _1.map(_=> KnownAddressesRow.tupled((_1.get, _2.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(address), Rep.Some(alias))).shaped.<>( + { r => import r._; _1.map(_ => KnownAddressesRow.tupled((_1.get, _2.get))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column address SqlType(varchar) */ val address: Rep[String] = column[String]("address") + /** Database column alias SqlType(varchar) */ val alias: Rep[String] = column[String]("alias") } + /** Collection-like TableQuery object for table KnownAddresses */ lazy val KnownAddresses = new TableQuery(tag => new KnownAddresses(tag)) @@ -1121,33 +2670,56 @@ trait Tables { * @param rawMetadata Database column raw_metadata SqlType(text) * @param name Database column name SqlType(text) * @param description Database column description SqlType(text), Default(None) - * @param lastUpdated Database column last_updated SqlType(timestamp), Default(None) */ - case class MetadataRow(address: String, rawMetadata: String, name: String, description: Option[String] = None, lastUpdated: Option[java.sql.Timestamp] = None) + * @param lastUpdated Database column last_updated SqlType(timestamp), Default(None) + */ + case class MetadataRow( + address: String, + rawMetadata: String, + name: String, + description: Option[String] = None, + lastUpdated: Option[java.sql.Timestamp] = None + ) + /** GetResult implicit for fetching MetadataRow objects using plain SQL queries */ - implicit def GetResultMetadataRow(implicit e0: GR[String], e1: GR[Option[String]], e2: GR[Option[java.sql.Timestamp]]): GR[MetadataRow] = GR{ - prs => import prs._ - MetadataRow.tupled((<<[String], <<[String], <<[String], < + import prs._ + MetadataRow.tupled((<<[String], <<[String], <<[String], < (MetadataRow.tupled, MetadataRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(address), Rep.Some(rawMetadata), Rep.Some(name), description, lastUpdated)).shaped.<>({r=>import r._; _1.map(_=> MetadataRow.tupled((_1.get, _2.get, _3.get, _4, _5)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(address), Rep.Some(rawMetadata), Rep.Some(name), description, lastUpdated)).shaped.<>( + { r => import r._; _1.map(_ => MetadataRow.tupled((_1.get, _2.get, _3.get, _4, _5))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column address SqlType(text) */ val address: Rep[String] = column[String]("address") + /** Database column raw_metadata SqlType(text) */ val rawMetadata: Rep[String] = column[String]("raw_metadata") + /** Database column name SqlType(text) */ val name: Rep[String] = column[String]("name") + /** Database column description SqlType(text), Default(None) */ val description: Rep[Option[String]] = column[Option[String]]("description", O.Default(None)) + /** Database column last_updated SqlType(timestamp), Default(None) */ - val lastUpdated: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("last_updated", O.Default(None)) + val lastUpdated: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("last_updated", O.Default(None)) /** Primary key of Metadata (database name metadata_pkey) */ val pk = primaryKey("metadata_pkey", (address, name)) } + /** Collection-like TableQuery object for table Metadata */ lazy val Metadata = new TableQuery(tag => new Metadata(tag)) @@ -1159,36 +2731,85 @@ trait Tables { * @param contractName Database column contract_name SqlType(text) * @param assetType Database column asset_type SqlType(text) * @param assetLocation Database column asset_location SqlType(text) - * @param rawMetadata Database column raw_metadata SqlType(text) */ - case class NftsRow(contractAddress: String, opGroupHash: String, blockLevel: Long, timestamp: java.sql.Timestamp, contractName: String, assetType: String, assetLocation: String, rawMetadata: String) + * @param rawMetadata Database column raw_metadata SqlType(text) + */ + case class NftsRow( + contractAddress: String, + opGroupHash: String, + blockLevel: Long, + timestamp: java.sql.Timestamp, + contractName: String, + assetType: String, + assetLocation: String, + rawMetadata: String + ) + /** GetResult implicit for fetching NftsRow objects using plain SQL queries */ - implicit def GetResultNftsRow(implicit e0: GR[String], e1: GR[Long], e2: GR[java.sql.Timestamp]): GR[NftsRow] = GR{ - prs => import prs._ - NftsRow.tupled((<<[String], <<[String], <<[Long], <<[java.sql.Timestamp], <<[String], <<[String], <<[String], <<[String])) + implicit + def GetResultNftsRow(implicit e0: GR[String], e1: GR[Long], e2: GR[java.sql.Timestamp]): GR[NftsRow] = GR { prs => + import prs._ + NftsRow.tupled( + (<<[String], <<[String], <<[Long], <<[java.sql.Timestamp], <<[String], <<[String], <<[String], <<[String]) + ) } + /** Table description of table nfts. Objects of this class serve as prototypes for rows in queries. */ class Nfts(_tableTag: Tag) extends profile.api.Table[NftsRow](_tableTag, Some("tezos"), "nfts") { - def * = (contractAddress, opGroupHash, blockLevel, timestamp, contractName, assetType, assetLocation, rawMetadata) <> (NftsRow.tupled, NftsRow.unapply) + def * = ( + contractAddress, + opGroupHash, + blockLevel, + timestamp, + contractName, + assetType, + assetLocation, + rawMetadata + ) <> (NftsRow.tupled, NftsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(contractAddress), Rep.Some(opGroupHash), Rep.Some(blockLevel), Rep.Some(timestamp), Rep.Some(contractName), Rep.Some(assetType), Rep.Some(assetLocation), Rep.Some(rawMetadata))).shaped.<>({r=>import r._; _1.map(_=> NftsRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6.get, _7.get, _8.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(contractAddress), + Rep.Some(opGroupHash), + Rep.Some(blockLevel), + Rep.Some(timestamp), + Rep.Some(contractName), + Rep.Some(assetType), + Rep.Some(assetLocation), + Rep.Some(rawMetadata) + ) + ).shaped.<>( + { r => + import r._; _1.map(_ => NftsRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6.get, _7.get, _8.get))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column contract_address SqlType(text) */ val contractAddress: Rep[String] = column[String]("contract_address") + /** Database column op_group_hash SqlType(text) */ val opGroupHash: Rep[String] = column[String]("op_group_hash") + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") + /** Database column contract_name SqlType(text) */ val contractName: Rep[String] = column[String]("contract_name") + /** Database column asset_type SqlType(text) */ val assetType: Rep[String] = column[String]("asset_type") + /** Database column asset_location SqlType(text) */ val assetLocation: Rep[String] = column[String]("asset_location") + /** Database column raw_metadata SqlType(text) */ val rawMetadata: Rep[String] = column[String]("raw_metadata") } + /** Collection-like TableQuery object for table Nfts */ lazy val Nfts = new TableQuery(tag => new Nfts(tag)) @@ -1201,35 +2822,103 @@ trait Tables { * @param blockId Database column block_id SqlType(varchar) * @param blockLevel Database column block_level SqlType(int8) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class OperationGroupsRow(protocol: String, chainId: Option[String] = None, hash: String, branch: String, signature: Option[String] = None, blockId: String, blockLevel: Long, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class OperationGroupsRow( + protocol: String, + chainId: Option[String] = None, + hash: String, + branch: String, + signature: Option[String] = None, + blockId: String, + blockLevel: Long, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching OperationGroupsRow objects using plain SQL queries */ - implicit def GetResultOperationGroupsRow(implicit e0: GR[String], e1: GR[Option[String]], e2: GR[Long], e3: GR[Option[java.sql.Timestamp]]): GR[OperationGroupsRow] = GR{ - prs => import prs._ - OperationGroupsRow.tupled((<<[String], < + import prs._ + OperationGroupsRow.tupled( + ( + <<[String], + < (OperationGroupsRow.tupled, OperationGroupsRow.unapply) + class OperationGroups(_tableTag: Tag) + extends profile.api.Table[OperationGroupsRow](_tableTag, Some("tezos"), "operation_groups") { + def * = ( + protocol, + chainId, + hash, + branch, + signature, + blockId, + blockLevel, + invalidatedAsof, + forkId + ) <> (OperationGroupsRow.tupled, OperationGroupsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(protocol), chainId, Rep.Some(hash), Rep.Some(branch), signature, Rep.Some(blockId), Rep.Some(blockLevel), invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> OperationGroupsRow.tupled((_1.get, _2, _3.get, _4.get, _5, _6.get, _7.get, _8, _9.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(protocol), + chainId, + Rep.Some(hash), + Rep.Some(branch), + signature, + Rep.Some(blockId), + Rep.Some(blockLevel), + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; _1.map(_ => OperationGroupsRow.tupled((_1.get, _2, _3.get, _4.get, _5, _6.get, _7.get, _8, _9.get))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column protocol SqlType(varchar) */ val protocol: Rep[String] = column[String]("protocol") + /** Database column chain_id SqlType(varchar), Default(None) */ val chainId: Rep[Option[String]] = column[Option[String]]("chain_id", O.Default(None)) + /** Database column hash SqlType(varchar) */ val hash: Rep[String] = column[String]("hash") + /** Database column branch SqlType(varchar) */ val branch: Rep[String] = column[String]("branch") + /** Database column signature SqlType(varchar), Default(None) */ val signature: Rep[Option[String]] = column[Option[String]]("signature", O.Default(None)) + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -1237,13 +2926,19 @@ trait Tables { val pk = primaryKey("operation_groups_pkey", (blockId, hash, forkId)) /** Foreign key referencing Blocks (database name block) */ - lazy val blocksFk = foreignKey("block", (blockId, forkId), Blocks)(r => (r.hash, r.forkId), onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("block", (blockId, forkId), Blocks)( + r => (r.hash, r.forkId), + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) /** Index over (blockId) (database name fki_block) */ val index1 = index("fki_block", blockId) + /** Index over (blockLevel) (database name ix_operation_groups_block_level) */ val index2 = index("ix_operation_groups_block_level", blockLevel) } + /** Collection-like TableQuery object for table OperationGroups */ lazy val OperationGroups = new TableQuery(tag => new OperationGroups(tag)) @@ -1298,119 +2993,359 @@ trait Tables { * @param utcDay Database column utc_day SqlType(int4) * @param utcTime Database column utc_time SqlType(varchar) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class OperationsRow(branch: Option[String] = None, numberOfSlots: Option[Int] = None, cycle: Option[Int] = None, operationId: Int, operationGroupHash: String, kind: String, level: Option[Long] = None, delegate: Option[String] = None, slots: Option[String] = None, nonce: Option[String] = None, operationOrder: Option[Int] = None, pkh: Option[String] = None, secret: Option[String] = None, source: Option[String] = None, fee: Option[scala.math.BigDecimal] = None, counter: Option[scala.math.BigDecimal] = None, gasLimit: Option[scala.math.BigDecimal] = None, storageLimit: Option[scala.math.BigDecimal] = None, publicKey: Option[String] = None, amount: Option[scala.math.BigDecimal] = None, destination: Option[String] = None, parameters: Option[String] = None, parametersEntrypoints: Option[String] = None, parametersMicheline: Option[String] = None, managerPubkey: Option[String] = None, balance: Option[scala.math.BigDecimal] = None, proposal: Option[String] = None, spendable: Option[Boolean] = None, delegatable: Option[Boolean] = None, script: Option[String] = None, storage: Option[String] = None, storageMicheline: Option[String] = None, status: Option[String] = None, consumedGas: Option[scala.math.BigDecimal] = None, storageSize: Option[scala.math.BigDecimal] = None, paidStorageSizeDiff: Option[scala.math.BigDecimal] = None, originatedContracts: Option[String] = None, blockHash: String, blockLevel: Long, ballot: Option[String] = None, internal: Boolean, period: Option[Int] = None, ballotPeriod: Option[Int] = None, timestamp: java.sql.Timestamp, errors: Option[String] = None, utcYear: Int, utcMonth: Int, utcDay: Int, utcTime: String, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class OperationsRow( + branch: Option[String] = None, + numberOfSlots: Option[Int] = None, + cycle: Option[Int] = None, + operationId: Int, + operationGroupHash: String, + kind: String, + level: Option[Long] = None, + delegate: Option[String] = None, + slots: Option[String] = None, + nonce: Option[String] = None, + operationOrder: Option[Int] = None, + pkh: Option[String] = None, + secret: Option[String] = None, + source: Option[String] = None, + fee: Option[scala.math.BigDecimal] = None, + counter: Option[scala.math.BigDecimal] = None, + gasLimit: Option[scala.math.BigDecimal] = None, + storageLimit: Option[scala.math.BigDecimal] = None, + publicKey: Option[String] = None, + amount: Option[scala.math.BigDecimal] = None, + destination: Option[String] = None, + parameters: Option[String] = None, + parametersEntrypoints: Option[String] = None, + parametersMicheline: Option[String] = None, + managerPubkey: Option[String] = None, + balance: Option[scala.math.BigDecimal] = None, + proposal: Option[String] = None, + spendable: Option[Boolean] = None, + delegatable: Option[Boolean] = None, + script: Option[String] = None, + storage: Option[String] = None, + storageMicheline: Option[String] = None, + status: Option[String] = None, + consumedGas: Option[scala.math.BigDecimal] = None, + storageSize: Option[scala.math.BigDecimal] = None, + paidStorageSizeDiff: Option[scala.math.BigDecimal] = None, + originatedContracts: Option[String] = None, + blockHash: String, + blockLevel: Long, + ballot: Option[String] = None, + internal: Boolean, + period: Option[Int] = None, + ballotPeriod: Option[Int] = None, + timestamp: java.sql.Timestamp, + errors: Option[String] = None, + utcYear: Int, + utcMonth: Int, + utcDay: Int, + utcTime: String, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching OperationsRow objects using plain SQL queries */ - implicit def GetResultOperationsRow(implicit e0: GR[Option[String]], e1: GR[Option[Int]], e2: GR[Int], e3: GR[String], e4: GR[Option[Long]], e5: GR[Option[scala.math.BigDecimal]], e6: GR[Option[Boolean]], e7: GR[Long], e8: GR[Boolean], e9: GR[java.sql.Timestamp], e10: GR[Option[java.sql.Timestamp]]): GR[OperationsRow] = GR{ - prs => import prs._ - OperationsRow(< + import prs._ + OperationsRow( + <(r => OperationsRow(r(0).asInstanceOf[Option[String]], r(1).asInstanceOf[Option[Int]], r(2).asInstanceOf[Option[Int]], r(3).asInstanceOf[Option[Int]].get, r(4).asInstanceOf[Option[String]].get, r(5).asInstanceOf[Option[String]].get, r(6).asInstanceOf[Option[Long]], r(7).asInstanceOf[Option[String]], r(8).asInstanceOf[Option[String]], r(9).asInstanceOf[Option[String]], r(10).asInstanceOf[Option[Int]], r(11).asInstanceOf[Option[String]], r(12).asInstanceOf[Option[String]], r(13).asInstanceOf[Option[String]], r(14).asInstanceOf[Option[scala.math.BigDecimal]], r(15).asInstanceOf[Option[scala.math.BigDecimal]], r(16).asInstanceOf[Option[scala.math.BigDecimal]], r(17).asInstanceOf[Option[scala.math.BigDecimal]], r(18).asInstanceOf[Option[String]], r(19).asInstanceOf[Option[scala.math.BigDecimal]], r(20).asInstanceOf[Option[String]], r(21).asInstanceOf[Option[String]], r(22).asInstanceOf[Option[String]], r(23).asInstanceOf[Option[String]], r(24).asInstanceOf[Option[String]], r(25).asInstanceOf[Option[scala.math.BigDecimal]], r(26).asInstanceOf[Option[String]], r(27).asInstanceOf[Option[Boolean]], r(28).asInstanceOf[Option[Boolean]], r(29).asInstanceOf[Option[String]], r(30).asInstanceOf[Option[String]], r(31).asInstanceOf[Option[String]], r(32).asInstanceOf[Option[String]], r(33).asInstanceOf[Option[scala.math.BigDecimal]], r(34).asInstanceOf[Option[scala.math.BigDecimal]], r(35).asInstanceOf[Option[scala.math.BigDecimal]], r(36).asInstanceOf[Option[String]], r(37).asInstanceOf[Option[String]].get, r(38).asInstanceOf[Option[Long]].get, r(39).asInstanceOf[Option[String]], r(40).asInstanceOf[Option[Boolean]].get, r(41).asInstanceOf[Option[Int]], r(42).asInstanceOf[Option[Int]], r(43).asInstanceOf[Option[java.sql.Timestamp]].get, r(44).asInstanceOf[Option[String]], r(45).asInstanceOf[Option[Int]].get, r(46).asInstanceOf[Option[Int]].get, r(47).asInstanceOf[Option[Int]].get, r(48).asInstanceOf[Option[String]].get, r(49).asInstanceOf[Option[java.sql.Timestamp]], r(50).asInstanceOf[Option[String]].get), (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = (branch :: numberOfSlots :: cycle :: Rep.Some(operationId) :: Rep.Some(operationGroupHash) :: Rep.Some( + kind + ) :: level :: delegate :: slots :: nonce :: operationOrder :: pkh :: secret :: source :: fee :: counter :: gasLimit :: storageLimit :: publicKey :: amount :: destination :: parameters :: parametersEntrypoints :: parametersMicheline :: managerPubkey :: balance :: proposal :: spendable :: delegatable :: script :: storage :: storageMicheline :: status :: consumedGas :: storageSize :: paidStorageSizeDiff :: originatedContracts :: Rep + .Some(blockHash) :: Rep.Some(blockLevel) :: ballot :: Rep + .Some(internal) :: period :: ballotPeriod :: Rep.Some(timestamp) :: errors :: Rep.Some(utcYear) :: Rep.Some( + utcMonth + ) :: Rep.Some(utcDay) :: Rep.Some(utcTime) :: invalidatedAsof :: Rep.Some(forkId) :: HNil).shaped.<>( + r => + OperationsRow( + r(0).asInstanceOf[Option[String]], + r(1).asInstanceOf[Option[Int]], + r(2).asInstanceOf[Option[Int]], + r(3).asInstanceOf[Option[Int]].get, + r(4).asInstanceOf[Option[String]].get, + r(5).asInstanceOf[Option[String]].get, + r(6).asInstanceOf[Option[Long]], + r(7).asInstanceOf[Option[String]], + r(8).asInstanceOf[Option[String]], + r(9).asInstanceOf[Option[String]], + r(10).asInstanceOf[Option[Int]], + r(11).asInstanceOf[Option[String]], + r(12).asInstanceOf[Option[String]], + r(13).asInstanceOf[Option[String]], + r(14).asInstanceOf[Option[scala.math.BigDecimal]], + r(15).asInstanceOf[Option[scala.math.BigDecimal]], + r(16).asInstanceOf[Option[scala.math.BigDecimal]], + r(17).asInstanceOf[Option[scala.math.BigDecimal]], + r(18).asInstanceOf[Option[String]], + r(19).asInstanceOf[Option[scala.math.BigDecimal]], + r(20).asInstanceOf[Option[String]], + r(21).asInstanceOf[Option[String]], + r(22).asInstanceOf[Option[String]], + r(23).asInstanceOf[Option[String]], + r(24).asInstanceOf[Option[String]], + r(25).asInstanceOf[Option[scala.math.BigDecimal]], + r(26).asInstanceOf[Option[String]], + r(27).asInstanceOf[Option[Boolean]], + r(28).asInstanceOf[Option[Boolean]], + r(29).asInstanceOf[Option[String]], + r(30).asInstanceOf[Option[String]], + r(31).asInstanceOf[Option[String]], + r(32).asInstanceOf[Option[String]], + r(33).asInstanceOf[Option[scala.math.BigDecimal]], + r(34).asInstanceOf[Option[scala.math.BigDecimal]], + r(35).asInstanceOf[Option[scala.math.BigDecimal]], + r(36).asInstanceOf[Option[String]], + r(37).asInstanceOf[Option[String]].get, + r(38).asInstanceOf[Option[Long]].get, + r(39).asInstanceOf[Option[String]], + r(40).asInstanceOf[Option[Boolean]].get, + r(41).asInstanceOf[Option[Int]], + r(42).asInstanceOf[Option[Int]], + r(43).asInstanceOf[Option[java.sql.Timestamp]].get, + r(44).asInstanceOf[Option[String]], + r(45).asInstanceOf[Option[Int]].get, + r(46).asInstanceOf[Option[Int]].get, + r(47).asInstanceOf[Option[Int]].get, + r(48).asInstanceOf[Option[String]].get, + r(49).asInstanceOf[Option[java.sql.Timestamp]], + r(50).asInstanceOf[Option[String]].get + ), + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column branch SqlType(varchar), Default(None) */ val branch: Rep[Option[String]] = column[Option[String]]("branch", O.Default(None)) + /** Database column number_of_slots SqlType(int4), Default(None) */ val numberOfSlots: Rep[Option[Int]] = column[Option[Int]]("number_of_slots", O.Default(None)) + /** Database column cycle SqlType(int4), Default(None) */ val cycle: Rep[Option[Int]] = column[Option[Int]]("cycle", O.Default(None)) + /** Database column operation_id SqlType(serial), AutoInc */ val operationId: Rep[Int] = column[Int]("operation_id", O.AutoInc) + /** Database column operation_group_hash SqlType(varchar) */ val operationGroupHash: Rep[String] = column[String]("operation_group_hash") + /** Database column kind SqlType(varchar) */ val kind: Rep[String] = column[String]("kind") + /** Database column level SqlType(int8), Default(None) */ val level: Rep[Option[Long]] = column[Option[Long]]("level", O.Default(None)) + /** Database column delegate SqlType(varchar), Default(None) */ val delegate: Rep[Option[String]] = column[Option[String]]("delegate", O.Default(None)) + /** Database column slots SqlType(varchar), Default(None) */ val slots: Rep[Option[String]] = column[Option[String]]("slots", O.Default(None)) + /** Database column nonce SqlType(varchar), Default(None) */ val nonce: Rep[Option[String]] = column[Option[String]]("nonce", O.Default(None)) + /** Database column operation_order SqlType(int4), Default(None) */ val operationOrder: Rep[Option[Int]] = column[Option[Int]]("operation_order", O.Default(None)) + /** Database column pkh SqlType(varchar), Default(None) */ val pkh: Rep[Option[String]] = column[Option[String]]("pkh", O.Default(None)) + /** Database column secret SqlType(varchar), Default(None) */ val secret: Rep[Option[String]] = column[Option[String]]("secret", O.Default(None)) + /** Database column source SqlType(varchar), Default(None) */ val source: Rep[Option[String]] = column[Option[String]]("source", O.Default(None)) + /** Database column fee SqlType(numeric), Default(None) */ val fee: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("fee", O.Default(None)) + /** Database column counter SqlType(numeric), Default(None) */ val counter: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("counter", O.Default(None)) + /** Database column gas_limit SqlType(numeric), Default(None) */ - val gasLimit: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("gas_limit", O.Default(None)) + val gasLimit: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("gas_limit", O.Default(None)) + /** Database column storage_limit SqlType(numeric), Default(None) */ - val storageLimit: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("storage_limit", O.Default(None)) + val storageLimit: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("storage_limit", O.Default(None)) + /** Database column public_key SqlType(varchar), Default(None) */ val publicKey: Rep[Option[String]] = column[Option[String]]("public_key", O.Default(None)) + /** Database column amount SqlType(numeric), Default(None) */ val amount: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("amount", O.Default(None)) + /** Database column destination SqlType(varchar), Default(None) */ val destination: Rep[Option[String]] = column[Option[String]]("destination", O.Default(None)) + /** Database column parameters SqlType(varchar), Default(None) */ val parameters: Rep[Option[String]] = column[Option[String]]("parameters", O.Default(None)) + /** Database column parameters_entrypoints SqlType(varchar), Default(None) */ val parametersEntrypoints: Rep[Option[String]] = column[Option[String]]("parameters_entrypoints", O.Default(None)) + /** Database column parameters_micheline SqlType(varchar), Default(None) */ val parametersMicheline: Rep[Option[String]] = column[Option[String]]("parameters_micheline", O.Default(None)) + /** Database column manager_pubkey SqlType(varchar), Default(None) */ val managerPubkey: Rep[Option[String]] = column[Option[String]]("manager_pubkey", O.Default(None)) + /** Database column balance SqlType(numeric), Default(None) */ val balance: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("balance", O.Default(None)) + /** Database column proposal SqlType(varchar), Default(None) */ val proposal: Rep[Option[String]] = column[Option[String]]("proposal", O.Default(None)) + /** Database column spendable SqlType(bool), Default(None) */ val spendable: Rep[Option[Boolean]] = column[Option[Boolean]]("spendable", O.Default(None)) + /** Database column delegatable SqlType(bool), Default(None) */ val delegatable: Rep[Option[Boolean]] = column[Option[Boolean]]("delegatable", O.Default(None)) + /** Database column script SqlType(varchar), Default(None) */ val script: Rep[Option[String]] = column[Option[String]]("script", O.Default(None)) + /** Database column storage SqlType(varchar), Default(None) */ val storage: Rep[Option[String]] = column[Option[String]]("storage", O.Default(None)) + /** Database column storage_micheline SqlType(varchar), Default(None) */ val storageMicheline: Rep[Option[String]] = column[Option[String]]("storage_micheline", O.Default(None)) + /** Database column status SqlType(varchar), Default(None) */ val status: Rep[Option[String]] = column[Option[String]]("status", O.Default(None)) + /** Database column consumed_gas SqlType(numeric), Default(None) */ - val consumedGas: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("consumed_gas", O.Default(None)) + val consumedGas: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("consumed_gas", O.Default(None)) + /** Database column storage_size SqlType(numeric), Default(None) */ - val storageSize: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("storage_size", O.Default(None)) + val storageSize: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("storage_size", O.Default(None)) + /** Database column paid_storage_size_diff SqlType(numeric), Default(None) */ - val paidStorageSizeDiff: Rep[Option[scala.math.BigDecimal]] = column[Option[scala.math.BigDecimal]]("paid_storage_size_diff", O.Default(None)) + val paidStorageSizeDiff: Rep[Option[scala.math.BigDecimal]] = + column[Option[scala.math.BigDecimal]]("paid_storage_size_diff", O.Default(None)) + /** Database column originated_contracts SqlType(varchar), Default(None) */ val originatedContracts: Rep[Option[String]] = column[Option[String]]("originated_contracts", O.Default(None)) + /** Database column block_hash SqlType(varchar) */ val blockHash: Rep[String] = column[String]("block_hash") + /** Database column block_level SqlType(int8) */ val blockLevel: Rep[Long] = column[Long]("block_level") + /** Database column ballot SqlType(varchar), Default(None) */ val ballot: Rep[Option[String]] = column[Option[String]]("ballot", O.Default(None)) + /** Database column internal SqlType(bool) */ val internal: Rep[Boolean] = column[Boolean]("internal") + /** Database column period SqlType(int4), Default(None) */ val period: Rep[Option[Int]] = column[Option[Int]]("period", O.Default(None)) + /** Database column ballot_period SqlType(int4), Default(None) */ val ballotPeriod: Rep[Option[Int]] = column[Option[Int]]("ballot_period", O.Default(None)) + /** Database column timestamp SqlType(timestamp) */ val timestamp: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("timestamp") + /** Database column errors SqlType(varchar), Default(None) */ val errors: Rep[Option[String]] = column[Option[String]]("errors", O.Default(None)) + /** Database column utc_year SqlType(int4) */ val utcYear: Rep[Int] = column[Int]("utc_year") + /** Database column utc_month SqlType(int4) */ val utcMonth: Rep[Int] = column[Int]("utc_month") + /** Database column utc_day SqlType(int4) */ val utcDay: Rep[Int] = column[Int]("utc_day") + /** Database column utc_time SqlType(varchar) */ val utcTime: Rep[String] = column[String]("utc_time") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") @@ -1418,35 +3353,57 @@ trait Tables { val pk = primaryKey("operations_pkey", operationId :: forkId :: HNil) /** Foreign key referencing Blocks (database name fk_blockhashes) */ - lazy val blocksFk = foreignKey("fk_blockhashes", blockHash :: forkId :: HNil, Blocks)(r => r.hash :: r.forkId :: HNil, onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val blocksFk = foreignKey("fk_blockhashes", blockHash :: forkId :: HNil, Blocks)( + r => r.hash :: r.forkId :: HNil, + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) + /** Foreign key referencing OperationGroups (database name fk_opgroups) */ - lazy val operationGroupsFk = foreignKey("fk_opgroups", operationGroupHash :: blockHash :: forkId :: HNil, OperationGroups)(r => r.hash :: r.blockId :: r.forkId :: HNil, onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction) + lazy val operationGroupsFk = + foreignKey("fk_opgroups", operationGroupHash :: blockHash :: forkId :: HNil, OperationGroups)( + r => r.hash :: r.blockId :: r.forkId :: HNil, + onUpdate = ForeignKeyAction.NoAction, + onDelete = ForeignKeyAction.NoAction + ) /** Index over (blockHash) (database name fki_fk_blockhashes) */ val index1 = index("fki_fk_blockhashes", blockHash :: HNil) + /** Index over (managerPubkey) (database name ix_manager_pubkey) */ val index2 = index("ix_manager_pubkey", managerPubkey :: HNil) + /** Index over (operationGroupHash) (database name ix_operation_group_hash) */ val index3 = index("ix_operation_group_hash", operationGroupHash :: HNil) + /** Index over (blockLevel) (database name ix_operations_block_level) */ val index4 = index("ix_operations_block_level", blockLevel :: HNil) + /** Index over (level,delegate) (database name ix_operations_block_level_delegate) */ val index5 = index("ix_operations_block_level_delegate", level :: delegate :: HNil) + /** Index over (cycle) (database name ix_operations_cycle) */ val index6 = index("ix_operations_cycle", cycle :: HNil) + /** Index over (delegate) (database name ix_operations_delegate) */ val index7 = index("ix_operations_delegate", delegate :: HNil) + /** Index over (destination) (database name ix_operations_destination) */ val index8 = index("ix_operations_destination", destination :: HNil) + /** Index over (kind) (database name ix_operations_kind) */ val index9 = index("ix_operations_kind", kind :: HNil) + /** Index over (source) (database name ix_operations_source) */ val index10 = index("ix_operations_source", source :: HNil) + /** Index over (timestamp) (database name ix_operations_timestamp) */ val index11 = index("ix_operations_timestamp", timestamp :: HNil) + /** Index over (originatedContracts) (database name ix_originated_contracts) */ val index12 = index("ix_originated_contracts", originatedContracts :: HNil) } + /** Collection-like TableQuery object for table Operations */ lazy val Operations = new TableQuery(tag => new Operations(tag)) @@ -1455,29 +3412,61 @@ trait Tables { * @param accountId Database column account_id SqlType(varchar) * @param blockLevel Database column block_level SqlType(int8), Default(None) * @param forkId Database column fork_id SqlType(varchar) - * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) */ - case class OriginatedAccountMapsRow(bigMapId: scala.math.BigDecimal, accountId: String, blockLevel: Option[Long] = None, forkId: String, invalidatedAsof: Option[java.sql.Timestamp] = None) + * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) + */ + case class OriginatedAccountMapsRow( + bigMapId: scala.math.BigDecimal, + accountId: String, + blockLevel: Option[Long] = None, + forkId: String, + invalidatedAsof: Option[java.sql.Timestamp] = None + ) + /** GetResult implicit for fetching OriginatedAccountMapsRow objects using plain SQL queries */ - implicit def GetResultOriginatedAccountMapsRow(implicit e0: GR[scala.math.BigDecimal], e1: GR[String], e2: GR[Option[Long]], e3: GR[Option[java.sql.Timestamp]]): GR[OriginatedAccountMapsRow] = GR{ - prs => import prs._ - OriginatedAccountMapsRow.tupled((<<[scala.math.BigDecimal], <<[String], < + import prs._ + OriginatedAccountMapsRow.tupled( + (<<[scala.math.BigDecimal], <<[String], < (OriginatedAccountMapsRow.tupled, OriginatedAccountMapsRow.unapply) + class OriginatedAccountMaps(_tableTag: Tag) + extends profile.api.Table[OriginatedAccountMapsRow](_tableTag, Some("tezos"), "originated_account_maps") { + def * = ( + bigMapId, + accountId, + blockLevel, + forkId, + invalidatedAsof + ) <> (OriginatedAccountMapsRow.tupled, OriginatedAccountMapsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(bigMapId), Rep.Some(accountId), blockLevel, Rep.Some(forkId), invalidatedAsof)).shaped.<>({r=>import r._; _1.map(_=> OriginatedAccountMapsRow.tupled((_1.get, _2.get, _3, _4.get, _5)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(bigMapId), Rep.Some(accountId), blockLevel, Rep.Some(forkId), invalidatedAsof)).shaped.<>( + { r => import r._; _1.map(_ => OriginatedAccountMapsRow.tupled((_1.get, _2.get, _3, _4.get, _5))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column big_map_id SqlType(numeric) */ val bigMapId: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("big_map_id") + /** Database column account_id SqlType(varchar) */ val accountId: Rep[String] = column[String]("account_id") + /** Database column block_level SqlType(int8), Default(None) */ val blockLevel: Rep[Option[Long]] = column[Option[Long]]("block_level", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) /** Primary key of OriginatedAccountMaps (database name originated_account_maps_pkey) */ val pk = primaryKey("originated_account_maps_pkey", (bigMapId, accountId, forkId)) @@ -1485,32 +3474,44 @@ trait Tables { /** Index over (accountId) (database name accounts_maps_idx) */ val index1 = index("accounts_maps_idx", accountId) } + /** Collection-like TableQuery object for table OriginatedAccountMaps */ lazy val OriginatedAccountMaps = new TableQuery(tag => new OriginatedAccountMaps(tag)) /** Entity class storing rows of table ProcessedChainEvents * @param eventLevel Database column event_level SqlType(int8) - * @param eventType Database column event_type SqlType(varchar) */ + * @param eventType Database column event_type SqlType(varchar) + */ case class ProcessedChainEventsRow(eventLevel: Long, eventType: String) + /** GetResult implicit for fetching ProcessedChainEventsRow objects using plain SQL queries */ - implicit def GetResultProcessedChainEventsRow(implicit e0: GR[Long], e1: GR[String]): GR[ProcessedChainEventsRow] = GR{ - prs => import prs._ + implicit def GetResultProcessedChainEventsRow(implicit e0: GR[Long], e1: GR[String]): GR[ProcessedChainEventsRow] = + GR { prs => + import prs._ ProcessedChainEventsRow.tupled((<<[Long], <<[String])) - } + } + /** Table description of table processed_chain_events. Objects of this class serve as prototypes for rows in queries. */ - class ProcessedChainEvents(_tableTag: Tag) extends profile.api.Table[ProcessedChainEventsRow](_tableTag, Some("tezos"), "processed_chain_events") { + class ProcessedChainEvents(_tableTag: Tag) + extends profile.api.Table[ProcessedChainEventsRow](_tableTag, Some("tezos"), "processed_chain_events") { def * = (eventLevel, eventType) <> (ProcessedChainEventsRow.tupled, ProcessedChainEventsRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(eventLevel), Rep.Some(eventType))).shaped.<>({r=>import r._; _1.map(_=> ProcessedChainEventsRow.tupled((_1.get, _2.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(eventLevel), Rep.Some(eventType))).shaped.<>( + { r => import r._; _1.map(_ => ProcessedChainEventsRow.tupled((_1.get, _2.get))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column event_level SqlType(int8) */ val eventLevel: Rep[Long] = column[Long]("event_level") + /** Database column event_type SqlType(varchar) */ val eventType: Rep[String] = column[String]("event_type") /** Primary key of ProcessedChainEvents (database name processed_chain_events_pkey) */ val pk = primaryKey("processed_chain_events_pkey", (eventLevel, eventType)) } + /** Collection-like TableQuery object for table ProcessedChainEvents */ lazy val ProcessedChainEvents = new TableQuery(tag => new ProcessedChainEvents(tag)) @@ -1531,54 +3532,186 @@ trait Tables { * @param metadataType Database column metadata_type SqlType(text), Default(None) * @param metadataBigMapId Database column metadata_big_map_id SqlType(int4), Default(None) * @param metadataBigMapType Database column metadata_big_map_type SqlType(text), Default(None) - * @param metadataPath Database column metadata_path SqlType(text), Default(None) */ - case class RegisteredTokensRow(name: String, symbol: String, decimals: Int, interfaces: String, address: String, tokenIndex: Option[Int] = None, balanceMap: Int, balanceKeyType: String, balancePath: String, markets: String, farms: String, isTzip16: Boolean, isNft: Boolean, metadataType: Option[String] = None, metadataBigMapId: Option[Int] = None, metadataBigMapType: Option[String] = None, metadataPath: Option[String] = None) + * @param metadataPath Database column metadata_path SqlType(text), Default(None) + */ + case class RegisteredTokensRow( + name: String, + symbol: String, + decimals: Int, + interfaces: String, + address: String, + tokenIndex: Option[Int] = None, + balanceMap: Int, + balanceKeyType: String, + balancePath: String, + markets: String, + farms: String, + isTzip16: Boolean, + isNft: Boolean, + metadataType: Option[String] = None, + metadataBigMapId: Option[Int] = None, + metadataBigMapType: Option[String] = None, + metadataPath: Option[String] = None + ) + /** GetResult implicit for fetching RegisteredTokensRow objects using plain SQL queries */ - implicit def GetResultRegisteredTokensRow(implicit e0: GR[String], e1: GR[Int], e2: GR[Option[Int]], e3: GR[Boolean], e4: GR[Option[String]]): GR[RegisteredTokensRow] = GR{ - prs => import prs._ - RegisteredTokensRow.tupled((<<[String], <<[String], <<[Int], <<[String], <<[String], < + import prs._ + RegisteredTokensRow.tupled( + ( + <<[String], + <<[String], + <<[Int], + <<[String], + <<[String], + < (RegisteredTokensRow.tupled, RegisteredTokensRow.unapply) + class RegisteredTokens(_tableTag: Tag) + extends profile.api.Table[RegisteredTokensRow](_tableTag, Some("tezos"), "registered_tokens") { + def * = ( + name, + symbol, + decimals, + interfaces, + address, + tokenIndex, + balanceMap, + balanceKeyType, + balancePath, + markets, + farms, + isTzip16, + isNft, + metadataType, + metadataBigMapId, + metadataBigMapType, + metadataPath + ) <> (RegisteredTokensRow.tupled, RegisteredTokensRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(name), Rep.Some(symbol), Rep.Some(decimals), Rep.Some(interfaces), Rep.Some(address), tokenIndex, Rep.Some(balanceMap), Rep.Some(balanceKeyType), Rep.Some(balancePath), Rep.Some(markets), Rep.Some(farms), Rep.Some(isTzip16), Rep.Some(isNft), metadataType, metadataBigMapId, metadataBigMapType, metadataPath)).shaped.<>({r=>import r._; _1.map(_=> RegisteredTokensRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6, _7.get, _8.get, _9.get, _10.get, _11.get, _12.get, _13.get, _14, _15, _16, _17)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(name), + Rep.Some(symbol), + Rep.Some(decimals), + Rep.Some(interfaces), + Rep.Some(address), + tokenIndex, + Rep.Some(balanceMap), + Rep.Some(balanceKeyType), + Rep.Some(balancePath), + Rep.Some(markets), + Rep.Some(farms), + Rep.Some(isTzip16), + Rep.Some(isNft), + metadataType, + metadataBigMapId, + metadataBigMapType, + metadataPath + ) + ).shaped.<>( + { r => + import r._; + _1.map(_ => + RegisteredTokensRow.tupled( + ( + _1.get, + _2.get, + _3.get, + _4.get, + _5.get, + _6, + _7.get, + _8.get, + _9.get, + _10.get, + _11.get, + _12.get, + _13.get, + _14, + _15, + _16, + _17 + ) + ) + ) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column name SqlType(text) */ val name: Rep[String] = column[String]("name") + /** Database column symbol SqlType(text) */ val symbol: Rep[String] = column[String]("symbol") + /** Database column decimals SqlType(int4) */ val decimals: Rep[Int] = column[Int]("decimals") + /** Database column interfaces SqlType(text) */ val interfaces: Rep[String] = column[String]("interfaces") + /** Database column address SqlType(text) */ val address: Rep[String] = column[String]("address") + /** Database column token_index SqlType(int4), Default(None) */ val tokenIndex: Rep[Option[Int]] = column[Option[Int]]("token_index", O.Default(None)) + /** Database column balance_map SqlType(int4) */ val balanceMap: Rep[Int] = column[Int]("balance_map") + /** Database column balance_key_type SqlType(text) */ val balanceKeyType: Rep[String] = column[String]("balance_key_type") + /** Database column balance_path SqlType(text) */ val balancePath: Rep[String] = column[String]("balance_path") + /** Database column markets SqlType(text) */ val markets: Rep[String] = column[String]("markets") + /** Database column farms SqlType(text) */ val farms: Rep[String] = column[String]("farms") + /** Database column is_tzip16 SqlType(bool) */ val isTzip16: Rep[Boolean] = column[Boolean]("is_tzip16") + /** Database column is_nft SqlType(bool) */ val isNft: Rep[Boolean] = column[Boolean]("is_nft") + /** Database column metadata_type SqlType(text), Default(None) */ val metadataType: Rep[Option[String]] = column[Option[String]]("metadata_type", O.Default(None)) + /** Database column metadata_big_map_id SqlType(int4), Default(None) */ val metadataBigMapId: Rep[Option[Int]] = column[Option[Int]]("metadata_big_map_id", O.Default(None)) + /** Database column metadata_big_map_type SqlType(text), Default(None) */ val metadataBigMapType: Rep[Option[String]] = column[Option[String]]("metadata_big_map_type", O.Default(None)) + /** Database column metadata_path SqlType(text), Default(None) */ val metadataPath: Rep[Option[String]] = column[Option[String]]("metadata_path", O.Default(None)) } + /** Collection-like TableQuery object for table RegisteredTokens */ lazy val RegisteredTokens = new TableQuery(tag => new RegisteredTokens(tag)) @@ -1588,37 +3721,72 @@ trait Tables { * @param resolver Database column resolver SqlType(varchar), Default(None) * @param registeredAt Database column registered_at SqlType(timestamp), Default(None) * @param registrationPeriod Database column registration_period SqlType(int4), Default(None) - * @param modified Database column modified SqlType(bool), Default(None) */ - case class TezosNamesRow(name: String, owner: Option[String] = None, resolver: Option[String] = None, registeredAt: Option[java.sql.Timestamp] = None, registrationPeriod: Option[Int] = None, modified: Option[Boolean] = None) + * @param modified Database column modified SqlType(bool), Default(None) + */ + case class TezosNamesRow( + name: String, + owner: Option[String] = None, + resolver: Option[String] = None, + registeredAt: Option[java.sql.Timestamp] = None, + registrationPeriod: Option[Int] = None, + modified: Option[Boolean] = None + ) + /** GetResult implicit for fetching TezosNamesRow objects using plain SQL queries */ - implicit def GetResultTezosNamesRow(implicit e0: GR[String], e1: GR[Option[String]], e2: GR[Option[java.sql.Timestamp]], e3: GR[Option[Int]], e4: GR[Option[Boolean]]): GR[TezosNamesRow] = GR{ - prs => import prs._ - TezosNamesRow.tupled((<<[String], < + import prs._ + TezosNamesRow.tupled((<<[String], < (TezosNamesRow.tupled, TezosNamesRow.unapply) + def * = ( + name, + owner, + resolver, + registeredAt, + registrationPeriod, + modified + ) <> (TezosNamesRow.tupled, TezosNamesRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(name), owner, resolver, registeredAt, registrationPeriod, modified)).shaped.<>({r=>import r._; _1.map(_=> TezosNamesRow.tupled((_1.get, _2, _3, _4, _5, _6)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ((Rep.Some(name), owner, resolver, registeredAt, registrationPeriod, modified)).shaped.<>( + { r => import r._; _1.map(_ => TezosNamesRow.tupled((_1.get, _2, _3, _4, _5, _6))) }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column name SqlType(varchar), PrimaryKey */ val name: Rep[String] = column[String]("name", O.PrimaryKey) + /** Database column owner SqlType(varchar), Default(None) */ val owner: Rep[Option[String]] = column[Option[String]]("owner", O.Default(None)) + /** Database column resolver SqlType(varchar), Default(None) */ val resolver: Rep[Option[String]] = column[Option[String]]("resolver", O.Default(None)) + /** Database column registered_at SqlType(timestamp), Default(None) */ - val registeredAt: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("registered_at", O.Default(None)) + val registeredAt: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("registered_at", O.Default(None)) + /** Database column registration_period SqlType(int4), Default(None) */ val registrationPeriod: Rep[Option[Int]] = column[Option[Int]]("registration_period", O.Default(None)) + /** Database column modified SqlType(bool), Default(None) */ val modified: Rep[Option[Boolean]] = column[Option[Boolean]]("modified", O.Default(None)) /** Index over (owner) (database name tezos_names_owner_idx) */ val index1 = index("tezos_names_owner_idx", owner) + /** Index over (resolver) (database name tezos_names_resolver_idx) */ val index2 = index("tezos_names_resolver_idx", resolver) } + /** Collection-like TableQuery object for table TezosNames */ lazy val TezosNames = new TableQuery(tag => new TezosNames(tag)) @@ -1630,39 +3798,104 @@ trait Tables { * @param blockLevel Database column block_level SqlType(int8), Default(-1) * @param asof Database column asof SqlType(timestamp) * @param invalidatedAsof Database column invalidated_asof SqlType(timestamp), Default(None) - * @param forkId Database column fork_id SqlType(varchar) */ - case class TokenBalancesRow(tokenAddress: String, address: String, balance: scala.math.BigDecimal, blockId: String, blockLevel: Long = -1L, asof: java.sql.Timestamp, invalidatedAsof: Option[java.sql.Timestamp] = None, forkId: String) + * @param forkId Database column fork_id SqlType(varchar) + */ + case class TokenBalancesRow( + tokenAddress: String, + address: String, + balance: scala.math.BigDecimal, + blockId: String, + blockLevel: Long = -1L, + asof: java.sql.Timestamp, + invalidatedAsof: Option[java.sql.Timestamp] = None, + forkId: String + ) + /** GetResult implicit for fetching TokenBalancesRow objects using plain SQL queries */ - implicit def GetResultTokenBalancesRow(implicit e0: GR[String], e1: GR[scala.math.BigDecimal], e2: GR[Long], e3: GR[java.sql.Timestamp], e4: GR[Option[java.sql.Timestamp]]): GR[TokenBalancesRow] = GR{ - prs => import prs._ - TokenBalancesRow.tupled((<<[String], <<[String], <<[scala.math.BigDecimal], <<[String], <<[Long], <<[java.sql.Timestamp], < + import prs._ + TokenBalancesRow.tupled( + ( + <<[String], + <<[String], + <<[scala.math.BigDecimal], + <<[String], + <<[Long], + <<[java.sql.Timestamp], + < (TokenBalancesRow.tupled, TokenBalancesRow.unapply) + class TokenBalances(_tableTag: Tag) + extends profile.api.Table[TokenBalancesRow](_tableTag, Some("tezos"), "token_balances") { + def * = ( + tokenAddress, + address, + balance, + blockId, + blockLevel, + asof, + invalidatedAsof, + forkId + ) <> (TokenBalancesRow.tupled, TokenBalancesRow.unapply) + /** Maps whole row to an option. Useful for outer joins. */ - def ? = ((Rep.Some(tokenAddress), Rep.Some(address), Rep.Some(balance), Rep.Some(blockId), Rep.Some(blockLevel), Rep.Some(asof), invalidatedAsof, Rep.Some(forkId))).shaped.<>({r=>import r._; _1.map(_=> TokenBalancesRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6.get, _7, _8.get)))}, (_:Any) => throw new Exception("Inserting into ? projection not supported.")) + def ? = ( + ( + Rep.Some(tokenAddress), + Rep.Some(address), + Rep.Some(balance), + Rep.Some(blockId), + Rep.Some(blockLevel), + Rep.Some(asof), + invalidatedAsof, + Rep.Some(forkId) + ) + ).shaped.<>( + { r => + import r._; _1.map(_ => TokenBalancesRow.tupled((_1.get, _2.get, _3.get, _4.get, _5.get, _6.get, _7, _8.get))) + }, + (_: Any) => throw new Exception("Inserting into ? projection not supported.") + ) /** Database column token_address SqlType(text) */ val tokenAddress: Rep[String] = column[String]("token_address") + /** Database column address SqlType(text) */ val address: Rep[String] = column[String]("address") + /** Database column balance SqlType(numeric) */ val balance: Rep[scala.math.BigDecimal] = column[scala.math.BigDecimal]("balance") + /** Database column block_id SqlType(varchar) */ val blockId: Rep[String] = column[String]("block_id") + /** Database column block_level SqlType(int8), Default(-1) */ val blockLevel: Rep[Long] = column[Long]("block_level", O.Default(-1L)) + /** Database column asof SqlType(timestamp) */ val asof: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("asof") + /** Database column invalidated_asof SqlType(timestamp), Default(None) */ - val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + val invalidatedAsof: Rep[Option[java.sql.Timestamp]] = + column[Option[java.sql.Timestamp]]("invalidated_asof", O.Default(None)) + /** Database column fork_id SqlType(varchar) */ val forkId: Rep[String] = column[String]("fork_id") /** Primary key of TokenBalances (database name token_balances_pkey) */ val pk = primaryKey("token_balances_pkey", (tokenAddress, address, blockLevel, forkId)) } + /** Collection-like TableQuery object for table TokenBalances */ lazy val TokenBalances = new TableQuery(tag => new TokenBalances(tag)) } diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala index 99560ece0..986d5adf6 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala @@ -248,9 +248,9 @@ object TezosTypes { ) extends Operation final case class Preendorsement( - level: BlockLevel, - metadata: PreendorsementMetadata, - blockOrder: Option[Int] = None + level: BlockLevel, + metadata: PreendorsementMetadata, + blockOrder: Option[Int] = None ) extends Operation final case class SeedNonceRevelation( diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/bigmaps/BigMapsConversions.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/bigmaps/BigMapsConversions.scala index 495b66161..69e7d74f5 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/bigmaps/BigMapsConversions.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/bigmaps/BigMapsConversions.scala @@ -82,7 +82,9 @@ object BigMapsConversions extends ConseilLogSupport { Some( Tables.BigMapContentsRow( bigMapId = id, - key = toMichelsonScript[MichelsonInstruction](key.expression), //we're using instructions to represent data values + key = toMichelsonScript[MichelsonInstruction]( + key.expression + ), //we're using instructions to represent data values keyHash = keyHash.value, operationGroupId = opGroupHash.map(_.value), value = value.map(it => diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/forks/BacktracingForkProcessor.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/forks/BacktracingForkProcessor.scala index 81275e84d..563139908 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/forks/BacktracingForkProcessor.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/forks/BacktracingForkProcessor.scala @@ -29,7 +29,7 @@ class BacktracingForkProcessor( tezosIndexedDataOperations: TezosIndexedDataOperations, indexerSearch: SearchBlockId[Future, TezosBlockHash], amender: ForkAmender[Future, TezosBlockHash], - batchConf: BatchFetchConfiguration, + batchConf: BatchFetchConfiguration )(ec: ExecutionContext) extends TezosBlocksDataFetchers with ConseilLogSupport { From 05e12710bb4d4c8fafb3d45a94d5b418d7875e81 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Fri, 11 Feb 2022 13:12:01 +0100 Subject: [PATCH 5/6] fixed baking rights and added double preendorsement evidence op --- .../cryptonomic/conseil/common/tezos/TezosOptics.scala | 3 +++ .../cryptonomic/conseil/common/tezos/TezosTypes.scala | 9 +++++++-- .../conseil/indexer/tezos/TezosDatabaseConversions.scala | 3 ++- .../tezos/TezosDatabaseOperationsTestFixtures.scala | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala index 7601a7bf3..cc6b319f2 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosOptics.scala @@ -190,6 +190,9 @@ object TezosOptics { case x: DoubleEndorsementEvidence => index += 1 x.copy(blockOrder = Some(index)) + case x: DoublePreendorsementEvidence => + index += 1 + x.copy(blockOrder = Some(index)) case x: DoubleBakingEvidence => index += 1 x.copy(blockOrder = Some(index)) diff --git a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala index 986d5adf6..d84cc6c2e 100644 --- a/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala +++ b/conseil-common/src/main/scala/tech/cryptonomic/conseil/common/tezos/TezosTypes.scala @@ -223,7 +223,9 @@ object TezosTypes { "endorsement", "proposals", "ballot", - "endorsement_with_slot" + "endorsement_with_slot", + "preendorsement", + "double_preendorsement_evidence" ) final case class Operations( @@ -325,6 +327,8 @@ object TezosTypes { ) extends Operation final case class DoubleEndorsementEvidence(blockOrder: Option[Int] = None) extends Operation + final case class DoublePreendorsementEvidence(blockOrder: Option[Int] = None) extends Operation + final case class DoubleBakingEvidence(blockOrder: Option[Int] = None) extends Operation final case class Proposals( source: Option[ContractId], @@ -738,7 +742,8 @@ object TezosTypes { final case class BakingRights( level: BlockLevel, delegate: String, - priority: Int, + priority: Option[Int], + round: Option[Int], estimated_time: Option[ZonedDateTime], cycle: Option[Int], governancePeriod: Option[Int] diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala index 92982015f..a6ccd6c88 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala @@ -646,6 +646,7 @@ private[tezos] object TezosDatabaseConversions { ] = { case (block, groupHash, op) => val kind = op match { case DoubleEndorsementEvidence(_) => "double_endorsement_evidence" + case DoublePreendorsementEvidence(_) => "double_preendorsement_evidence" case DoubleBakingEvidence(_) => "double_baking_evidence" case _ => "" } @@ -904,7 +905,7 @@ private[tezos] object TezosDatabaseConversions { blockHash = Some(fetchKey.blockHash.value), blockLevel = bakingRights.level, delegate = bakingRights.delegate, - priority = bakingRights.priority, + priority = bakingRights.priority.orElse(bakingRights.round).get, estimatedTime = bakingRights.estimated_time.map(toSql), cycle = fetchKey.cycle, governancePeriod = fetchKey.governancePeriod, diff --git a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala index 556013c76..217af7aa9 100644 --- a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala +++ b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala @@ -686,7 +686,7 @@ trait TezosDatabaseOperationsTestFixtures extends RandomGenerationKit { val sampleOperations: List[Operation] = sampleEndorsement :: sampleNonceRevelation :: sampleAccountActivation :: sampleReveal :: sampleTransaction :: sampleOrigination :: sampleDelegation :: - DoubleEndorsementEvidence() :: DoubleBakingEvidence() :: sampleProposals :: sampleBallot :: Nil + DoubleEndorsementEvidence() :: DoublePreendorsementEvidence() :: DoubleBakingEvidence() :: sampleProposals :: sampleBallot :: Nil /** Converts operations in a list by selectively adding * BigMapAlloc within it's results. From a67201c22993ecc8d77df7348a125ad512350407 Mon Sep 17 00:00:00 2001 From: piotrkosecki Date: Fri, 11 Feb 2022 14:56:47 +0100 Subject: [PATCH 6/6] fixed few errors --- .../conseil/indexer/tezos/TezosDatabaseConversions.scala | 2 +- .../indexer/tezos/TezosDatabaseOperationsTestFixtures.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala index a6ccd6c88..7b2ce2121 100644 --- a/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala +++ b/conseil-lorre/src/main/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseConversions.scala @@ -941,7 +941,7 @@ private[tezos] object TezosDatabaseConversions { blockHash = None, blockLevel = from.level, delegate = from.delegate, - priority = from.priority, + priority = from.priority.orElse(from.round).get, estimatedTime = from.estimated_time.map(toSql), cycle = from.cycle, governancePeriod = from.governancePeriod, diff --git a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala index 217af7aa9..556013c76 100644 --- a/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala +++ b/conseil-lorre/src/test/scala/tech/cryptonomic/conseil/indexer/tezos/TezosDatabaseOperationsTestFixtures.scala @@ -686,7 +686,7 @@ trait TezosDatabaseOperationsTestFixtures extends RandomGenerationKit { val sampleOperations: List[Operation] = sampleEndorsement :: sampleNonceRevelation :: sampleAccountActivation :: sampleReveal :: sampleTransaction :: sampleOrigination :: sampleDelegation :: - DoubleEndorsementEvidence() :: DoublePreendorsementEvidence() :: DoubleBakingEvidence() :: sampleProposals :: sampleBallot :: Nil + DoubleEndorsementEvidence() :: DoubleBakingEvidence() :: sampleProposals :: sampleBallot :: Nil /** Converts operations in a list by selectively adding * BigMapAlloc within it's results.