AcalaNetwork / Acala

Acala - cross-chain DeFi hub and stablecoin based on Substrate for Polkadot and Kusama.
https://acala.network
GNU General Public License v3.0
741 stars 502 forks source link

Release Checklist: 1.2.2 #1256

Closed xlc closed 3 years ago

xlc commented 3 years ago

New Release Details:

Summary generated with srtool v0.9.16 using the docker image paritytech/srtool:1.53.0:
 Package     : karura-runtime v1.2.2
 GIT commit  : bc8a777698878d6a5f78eda8f54b745aea678755
 GIT tag     : 1.2.1
 GIT branch  : release-karura-1.2.2
 Rustc       : rustc 1.53.0 (53cb7b09b 2021-06-17)
 Time        : 2021-07-28T10:24:26Z

== Compact
 Version     : karura-1005 (karura-0.tx1.au1)
 Metadata    : V13
 Size        : 2.80 MB (2933060 bytes)
 Proposal    : 0x29ddbf926c20d4a3d5283d13a4273874790dd6dfd8879c3f46fcb48d1fd4ce7f
 IPFS        : QmU9jtTYAFm8xYVUQsQGKLbAte8keDsHU16VL9ZpuwNHja
 BLAKE2_256  : 0x8251e0cbd3e7dbe1269a0a10a98e670b53cbc6327d8e687b789bed21324258af
 Wasm        : runtime/karura/target/srtool/release/wbuild/karura-runtime/karura_runtime.compact.wasm

== Compressed
 Version     : karura-1005 (karura-0.tx1.au1)
 Metadata    : V13
 Size        : 785.06 KB (803899 bytes)
 Compression : 72.6%
 Proposal    : 0xf48246f385b319957f82523438fbe70e22037196b753a40e2c6204ec7e0027bd
 IPFS        : QmQ3gsfRMfwVTsdUzoovdEQH5zt9XKanznmMzuUeQJ7D8C
 BLAKE2_256  : 0xf27e20fb38b928032141e8c0ab41df566903fee578760c0d9aa68fdccff3a438
 Wasm        : runtime/karura/target/srtool/release/wbuild/karura-runtime/karura_runtime.compact.compressed.wasm
🏋️  Runtime size:       0.767 MB (803,899 bytes)
🗜  Compressed:          Yes, 72.59%
✨ Reserved meta:        OK - [6D, 65, 74, 61]
🎁 Metadata version:     V13
🔥 Core version:     karura-1005 (karura-0.tx1.au1)
🗳️  system.setCode hash:        0xf48246f385b319957f82523438fbe70e22037196b753a40e2c6204ec7e0027bd
🗳️  authorizeUpgrade hash:  0x24220f67182748e9502a94884351c23d36b893dc576f62c11fdd204fa0440eb1
#️⃣  Blake2-256 hash:       0xf27e20fb38b928032141e8c0ab41df566903fee578760c0d9aa68fdccff3a438
📦 IPFS hash:            QmQ3gsfRMfwVTsdUzoovdEQH5zt9XKanznmMzuUeQJ7D8C (https://www.ipfs.io/ipfs/QmQ3gsfRMfwVTsdUzoovdEQH5zt9XKanznmMzuUeQJ7D8C)

Runtime Release

All Releases

Post Release

Compatibility Checklist

SDK & Tools

dApps & Wallets

Other

xlc commented 3 years ago

Pre upgrade:

Post upgrade:

wangjj9219 commented 3 years ago

@qwer951123 https://github.com/AcalaNetwork/Acala/pull/1251 this pr changes the parameters of extrinsic. We try to avoid modifying the index order and parameter types of extrinsic and event, but if it occurs, acala.js need to add the historical version of metadata like polkadot.js.

xlc commented 3 years ago
Running subwasm v0.13.2
  🅰️  Chain(OnchainBlock { endpoint: WebSocket("wss://karura-rpc-2.aca-api.network/ws"), block_ref: None })
  🅱️  File("karura-1005.wasm")
  🅰️  0.753 MB (789,307 bytes)
  🅱️  0.767 MB (803,899 bytes)
Checking metadata versions:
  ✅ Both metadata versions are identical: V13
Checking core versions:
  ❌ The 2 core versions are different:
  🅰️  karura-1004 (karura-0.tx1.au1)
  🅱️  karura-1005 (karura-0.tx1.au1)
Checking runtime metadata:
  ❌  The metadata are different
Comparing V13 with V13
🛠  modules.0.constants.4.value.                       "186B6172757261186B617275726101000000EC0300000000000034DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1502000000F78B278BE53F454C02000000DD718D5CC53262D401000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A8010000006EF953004BA30E5901000000F485C9145D3F0AAD01000000E3DF3F2AA8A5CC5701000000EA93E3F16F3D69620100000001000000" --> "186B6172757261186B617275726101000000ED0300000000000034DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1503000000F78B278BE53F454C02000000DD718D5CC53262D401000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A8010000006EF953004BA30E5901000000F485C9145D3F0AAD01000000E3DF3F2AA8A5CC5701000000EA93E3F16F3D69620100000001000000"
🛠  modules.10.calls.0.arguments.0.name.                        "fee_token" --> "fee_swap_path"
🛠  modules.10.calls.0.arguments.0.ty.                 "Option<CurrencyId>" --> "Option<Vec<CurrencyId>>"
🛠  modules.10.calls.0.name.                           "set_default_fee_token" --> "set_alternative_fee_swap_path"
🛠  modules.10.constants.0.name.                       "AllNonNativeCurrencyIds" --> "NativeCurrencyId"
🛠  modules.10.constants.0.ty.                            "Vec<CurrencyId>" --> "CurrencyId"
🛠  modules.10.constants.0.value.                          "0C008100820083" --> "0080"
🛠  modules.10.constants.1.name.                         "NativeCurrencyId" --> "DefaultFeeSwapPathList"
🛠  modules.10.constants.1.ty.                                 "CurrencyId" --> "Vec<Vec<CurrencyId>>"
🛠  modules.10.constants.1.value.                                    "0080" --> "0C080081008008008200800800830080"
🛠  modules.10.constants.2.name.                         "StableCurrencyId" --> "TransactionByteFee"
🛠  modules.10.constants.2.ty.                                 "CurrencyId" --> "PalletBalanceOf<T>"
🛠  modules.10.constants.2.value.                                    "0081" --> "80969800000000000000000000000000"
🛠  modules.10.constants.3.name.                       "TransactionByteFee" --> "MaxSlippageSwapWithDEX"
🛠  modules.10.constants.3.ty.                         "PalletBalanceOf<T>" --> "Ratio"
🛠  modules.10.constants.3.value.                      "80969800000000000000000000000000" --> "0000C16FF28623000000000000000000"
🛠  modules.10.constants.4.name.                       "MaxSlippageSwapWithDEX" --> "TradingPathLimit"
🛠  modules.10.constants.4.ty.                                      "Ratio" --> "u32"
🛠  modules.10.constants.4.value.                      "00004F8C34E814020000000000000000" --> "03000000"
🛠  modules.10.errors.                                                   "" --> [{"documentation":[" The swap path is invalid"],"name":"InvalidSwapPath"}]
🛠  modules.12.constants.6.value.                                "00400000" --> "00200000"
🛠  modules.13.constants.4.value.                                "00400000" --> "00200000"
🛠  modules.17.constants.4.name.                       "CollatorKickThreshold" --> "KickPenaltySessionLength"
🛠  modules.17.constants.4.ty.                                    "Permill" --> "u32"
🛠  modules.17.constants.4.value.                                "E0930400" --> "08000000"
🛠  modules.17.errors.2.name.                                     "Unknown" --> "StillLocked"
🛠  modules.17.errors.3.name.                                  "Permission" --> "Unknown"
🛠  modules.17.errors.4.name.                            "AlreadyCandidate" --> "Permission"
🛠  modules.17.errors.5.name.                                "NotCandidate" --> "AlreadyCandidate"
🛠  modules.17.errors.6.name.                           "RequireSessionKey" --> "NotCandidate"
🛠  modules.17.errors.7.name.                          "AlreadyInvulnerable" --> "NotNonCandidate"
🛠  modules.17.errors.8.name.                                "InvalidProof" --> "NothingToWithdraw"
🛠  modules.17.errors.9.name.                          "MaxInvulnerablesExceeded" --> "RequireSessionKey"
🛠  modules.21.calls.                                                    "" --> [{"arguments":[{"name":"start_session","ty":"SessionIndex"},{"name":"duration","ty":"T::BlockNumber"}],"documentation":[" Schedule a new session duration in the specified session index.",""," - `start_session`: the session index that the new change become effective."," - `duration`:  new session duration."],"name":"schedule_session_duration"}]
🛠  modules.21.errors.0.name.                                "FailedToSend" --> "InvalidSession"
🛠  modules.21.errors.1.name.                                "BadXcmOrigin" --> "InvalidDuration"
🛠  modules.21.errors.2.name.                                      "BadXcm" --> "EstimateNextSessionFailed"
🛠  modules.21.event.0.arguments.0.                          "Option<Hash>" --> "BlockNumber"
🛠  modules.21.event.0.name.                                      "Success" --> "ScheduledSessionDuration"
🗑  modules.21.event.1.                                {"arguments":["Option<Hash>","XcmError"],"documentation":[" Some XCM failed."],"name":"Fail"}
🗑  modules.21.event.2.                                {"arguments":["Option<Hash>"],"documentation":[" Bad XCM version used."],"name":"BadVersion"}
🗑  modules.21.event.3.                                {"arguments":["Option<Hash>"],"documentation":[" Bad XCM format used."],"name":"BadFormat"}
🗑  modules.21.event.4.                                {"arguments":["Option<Hash>"],"documentation":[" An upward message was sent to the relay chain."],"name":"UpwardMessageSent"}
🗑  modules.21.event.5.                                {"arguments":["Option<Hash>"],"documentation":[" An HRMP message was sent to a sibling parachain."],"name":"XcmpMessageSent"}
🛠  modules.21.index.                                                    50 --> 45
🛠  modules.21.name.                                            "XcmpQueue" --> "SessionManager"
🛠  modules.21.storage.entries.0.default.                              "00" --> "00000000"
🛠  modules.21.storage.entries.0.name.                  "InboundXcmpStatus" --> "SessionDuration"
🛠  modules.21.storage.entries.0.ty.Plain.             "Vec<(ParaId, InboundStatus, Vec<(RelayBlockNumber, XcmpMessageFormat)>,)\n>" --> "T::BlockNumber"
🛠  modules.21.storage.entries.1.default.                              "00" --> "00000000"
🛠  modules.21.storage.entries.1.name.                 "InboundXcmpMessages" --> "DurationOffset"
🗑  modules.21.storage.entries.1.ty.DoubleMap.         {"hasher":"Blake2_128Concat","key1":"ParaId","key2":"RelayBlockNumber","key2_hasher":"Twox64Concat","value":"Vec<u8>"}
🛠  modules.21.storage.entries.2.default.                              "00" --> "0000000000000000"
🛠  modules.21.storage.entries.2.name.                 "OutboundXcmpStatus" --> "SessionDurationChanges"
🗑  modules.21.storage.entries.2.ty.Plain.             "Vec<(ParaId, OutboundStatus, bool, u16, u16)>"
🗑  modules.21.storage.entries.3.                      {"default":"00","documentation":[" The messages outbound in a given XCMP channel."],"modifier":"Default","name":"OutboundXcmpMessages","ty":{"DoubleMap":{"hasher":"Blake2_128Concat","key1":"ParaId","key2":"u16","key2_hasher":"Twox64Concat","value":"Vec<u8>"}}}
🗑  modules.21.storage.entries.4.                      {"default":"00","documentation":[" Any signal messages waiting to be sent."],"modifier":"Default","name":"SignalMessages","ty":{"Map":{"hasher":"Blake2_128Concat","key":"ParaId","unused":false,"value":"Vec<u8>"}}}
🗑  modules.21.storage.entries.5.                      {"default":"020000000500000001000000A0860100000000000200000000000000","documentation":[" The configuration which controls the dynamics of the outbound queue."],"modifier":"Default","name":"QueueConfig","ty":{"Plain":"QueueConfigData"}}
🛠  modules.21.storage.prefix.                                  "XcmpQueue" --> "SessionManager"
🛠  modules.22.calls.                                  [{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"message","ty":"Xcm<()>"}],"documentation":"","name":"send"},{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"beneficiary","ty":"MultiLocation"},{"name":"assets","ty":"Vec<MultiAsset>"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Teleport some assets from the local chain to some destination chain.",""," - `origin`: Must be capable of withdrawing the `assets` and executing XCM."," - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send","   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."," - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be","   an `AccountId32` value."," - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the","   `dest` side."," - `dest_weight`: Equal to the total weight on `dest` of the XCM message","   `Teleport { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."],"name":"teleport_assets"},{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"beneficiary","ty":"MultiLocation"},{"name":"assets","ty":"Vec<MultiAsset>"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Transfer some assets from the local chain to the sovereign account of a destination chain and forward"," a notification XCM.",""," - `origin`: Must be capable of withdrawing the `assets` and executing XCM."," - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send","   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."," - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be","   an `AccountId32` value."," - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the","   `dest` side."," - `dest_weight`: Equal to the total weight on `dest` of the XCM message","   `ReserveAssetDeposit { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."],"name":"reserve_transfer_assets"},{"arguments":[{"name":"message","ty":"Box<Xcm<T::Call>>"},{"name":"max_weight","ty":"Weight"}],"documentation":[" Execute an XCM message from a local, signed, origin.",""," An event is deposited indicating whether `msg` could be executed completely or only"," partially.",""," No more than `max_weight` will be used in its attempted execution. If this is less than the"," maximum amount of weight that the message could take to be executed, then no execution"," attempt will be made.",""," NOTE: A successful return to this does *not* imply that the `msg` was executed successfully"," to completion; only that *some* of it was executed."],"name":"execute"}] --> ""
🛠  modules.22.errors.0.name.                                 "Unreachable" --> "FailedToSend"
🛠  modules.22.errors.1.name.                                 "SendFailure" --> "BadXcmOrigin"
🛠  modules.22.errors.2.name.                                    "Filtered" --> "BadXcm"
🗑  modules.22.errors.3.                               {"documentation":[" The message's weight could not be determined."],"name":"UnweighableMessage"}
🛠  modules.22.event.0.arguments.0.                      "xcm::v0::Outcome" --> "Option<Hash>"
🛠  modules.22.event.0.name.                                    "Attempted" --> "Success"
🛠  modules.22.event.1.arguments.0.                         "MultiLocation" --> "Option<Hash>"
🛠  modules.22.event.1.arguments.1.                         "MultiLocation" --> "XcmError"
🗑  modules.22.event.1.arguments.2.                               "Xcm<()>"
🛠  modules.22.event.1.name.                                         "Sent" --> "Fail"
🛠  modules.22.index.                                                    51 --> 50
🛠  modules.22.name.                                          "PolkadotXcm" --> "XcmpQueue"
🛠  modules.22.storage.                                                null --> {"entries":[{"default":"00","documentation":[" Status of the inbound XCMP channels."],"modifier":"Default","name":"InboundXcmpStatus","ty":{"Plain":"Vec<(ParaId, InboundStatus, Vec<(RelayBlockNumber, XcmpMessageFormat)>,)\n>"}},{"default":"00","documentation":[" Inbound aggregate XCMP messages. It can only be one per ParaId/block."],"modifier":"Default","name":"InboundXcmpMessages","ty":{"DoubleMap":{"hasher":"Blake2_128Concat","key1":"ParaId","key2":"RelayBlockNumber","key2_hasher":"Twox64Concat","value":"Vec<u8>"}}},{"default":"00","documentation":[" The non-empty XCMP channels in order of becoming non-empty, and the index of the first"," and last outbound message. If the two indices are equal, then it indicates an empty"," queue and there must be a non-`Ok` `OutboundStatus`. We assume queues grow no greater"," than 65535 items. Queue indices for normal messages begin at one; zero is reserved in"," case of the need to send a high-priority signal message this block."," The bool is true if there is a signal message waiting to be sent."],"modifier":"Default","name":"OutboundXcmpStatus","ty":{"Plain":"Vec<(ParaId, OutboundStatus, bool, u16, u16)>"}},{"default":"00","documentation":[" The messages outbound in a given XCMP channel."],"modifier":"Default","name":"OutboundXcmpMessages","ty":{"DoubleMap":{"hasher":"Blake2_128Concat","key1":"ParaId","key2":"u16","key2_hasher":"Twox64Concat","value":"Vec<u8>"}}},{"default":"00","documentation":[" Any signal messages waiting to be sent."],"modifier":"Default","name":"SignalMessages","ty":{"Map":{"hasher":"Blake2_128Concat","key":"ParaId","unused":false,"value":"Vec<u8>"}}},{"default":"020000000500000001000000A0860100000000000200000000000000","documentation":[" The configuration which controls the dynamics of the outbound queue."],"modifier":"Default","name":"QueueConfig","ty":{"Plain":"QueueConfigData"}}],"prefix":"XcmpQueue"}
🛠  modules.23.calls.                                                  null --> [{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"message","ty":"Xcm<()>"}],"documentation":"","name":"send"},{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"beneficiary","ty":"MultiLocation"},{"name":"assets","ty":"Vec<MultiAsset>"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Teleport some assets from the local chain to some destination chain.",""," - `origin`: Must be capable of withdrawing the `assets` and executing XCM."," - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send","   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."," - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be","   an `AccountId32` value."," - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the","   `dest` side."," - `dest_weight`: Equal to the total weight on `dest` of the XCM message","   `Teleport { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."],"name":"teleport_assets"},{"arguments":[{"name":"dest","ty":"MultiLocation"},{"name":"beneficiary","ty":"MultiLocation"},{"name":"assets","ty":"Vec<MultiAsset>"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Transfer some assets from the local chain to the sovereign account of a destination chain and forward"," a notification XCM.",""," - `origin`: Must be capable of withdrawing the `assets` and executing XCM."," - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send","   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain."," - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be","   an `AccountId32` value."," - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the","   `dest` side."," - `dest_weight`: Equal to the total weight on `dest` of the XCM message","   `ReserveAssetDeposit { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."],"name":"reserve_transfer_assets"},{"arguments":[{"name":"message","ty":"Box<Xcm<T::Call>>"},{"name":"max_weight","ty":"Weight"}],"documentation":[" Execute an XCM message from a local, signed, origin.",""," An event is deposited indicating whether `msg` could be executed completely or only"," partially.",""," No more than `max_weight` will be used in its attempted execution. If this is less than the"," maximum amount of weight that the message could take to be executed, then no execution"," attempt will be made.",""," NOTE: A successful return to this does *not* imply that the `msg` was executed successfully"," to completion; only that *some* of it was executed."],"name":"execute"}]
🛠  modules.23.errors.                                                   "" --> [{"documentation":"","name":"Unreachable"},{"documentation":"","name":"SendFailure"},{"documentation":[" The message execution fails the filter."],"name":"Filtered"},{"documentation":[" The message's weight could not be determined."],"name":"UnweighableMessage"}]
🛠  modules.23.event.0.arguments.0.                               "[u8; 8]" --> "xcm::v0::Outcome"
🛠  modules.23.event.0.name.                                "InvalidFormat" --> "Attempted"
🛠  modules.23.event.1.arguments.0.                               "[u8; 8]" --> "MultiLocation"
🛠  modules.23.event.1.name.                           "UnsupportedVersion" --> "Sent"
🗑  modules.23.event.2.                                {"arguments":["[u8; 8]","Outcome"],"documentation":[" Downward message executed with the given outcome."," \\[ id, outcome \\]"],"name":"ExecutedDownward"}
🛠  modules.23.index.                                                    52 --> 51
🛠  modules.23.name.                                           "CumulusXcm" --> "PolkadotXcm"
🛠  modules.24.calls.                                  [{"arguments":[{"name":"index","ty":"OverweightIndex"},{"name":"weight_limit","ty":"Weight"}],"documentation":[" Service a single overweight message.",""," - `origin`: Must pass `ExecuteOverweightOrigin`."," - `index`: The index of the overweight message to service."," - `weight_limit`: The amount of weight that message execution may take.",""," Errors:"," - `Unknown`: Message of `index` is unknown."," - `OverLimit`: Message execution may use greater than `weight_limit`.",""," Events:"," - `OverweightServiced`: On success."],"name":"service_overweight"}] --> null
🛠  modules.24.errors.                                 [{"documentation":[" The message index given is unknown."],"name":"Unknown"},{"documentation":[" The amount of weight given is possibly not enough for executing the message."],"name":"OverLimit"}] --> ""
🛠  modules.24.event.0.arguments.0.                             "MessageId" --> "[u8; 8]"
🛠  modules.24.event.1.arguments.0.                             "MessageId" --> "[u8; 8]"
🛠  modules.24.event.2.arguments.0.                             "MessageId" --> "[u8; 8]"
🗑  modules.24.event.3.                                {"arguments":["MessageId","Weight","Weight"],"documentation":[" The weight limit for handling downward messages was reached."," \\[ id, remaining, required \\]"],"name":"WeightExhausted"}
🗑  modules.24.event.4.                                {"arguments":["MessageId","OverweightIndex","Weight"],"documentation":[" Downward message is overweight and was placed in the overweight queue."," \\[ id, index, required \\]"],"name":"OverweightEnqueued"}
🗑  modules.24.event.5.                                {"arguments":["OverweightIndex","Weight"],"documentation":[" Downward message from the overweight queue was executed."," \\[ index, used \\]"],"name":"OverweightServiced"}
🛠  modules.24.index.                                                    53 --> 52
🛠  modules.24.name.                                             "DmpQueue" --> "CumulusXcm"
🛠  modules.24.storage.                                {"entries":[{"default":"00E40B5402000000","documentation":[" The configuration."],"modifier":"Default","name":"Configuration","ty":{"Plain":"ConfigData"}},{"default":"00000000000000000000000000000000","documentation":[" The page index."],"modifier":"Default","name":"PageIndex","ty":{"Plain":"PageIndexData"}},{"default":"00","documentation":[" The queue pages."],"modifier":"Default","name":"Pages","ty":{"Map":{"hasher":"Blake2_128Concat","key":"PageCounter","unused":false,"value":"Vec<(RelayBlockNumber, Vec<u8>)>"}}},{"default":"00","documentation":[" The overweight messages."],"modifier":"Optional","name":"Overweight","ty":{"Map":{"hasher":"Blake2_128Concat","key":"OverweightIndex","unused":false,"value":"(RelayBlockNumber, Vec<u8>)"}}}],"prefix":"DmpQueue"} --> null
🛠  modules.25.calls.0.arguments.0.name.                      "currency_id" --> "index"
🛠  modules.25.calls.0.arguments.0.ty.                      "T::CurrencyId" --> "OverweightIndex"
🛠  modules.25.calls.0.arguments.1.name.                           "amount" --> "weight_limit"
🛠  modules.25.calls.0.arguments.1.ty.                         "T::Balance" --> "Weight"
🗑  modules.25.calls.0.arguments.2.                    {"name":"dest","ty":"MultiLocation"}
🗑  modules.25.calls.0.arguments.3.                    {"name":"dest_weight","ty":"Weight"}
🛠  modules.25.calls.0.name.                                     "transfer" --> "service_overweight"
🗑  modules.25.calls.1.                                {"arguments":[{"name":"asset","ty":"MultiAsset"},{"name":"dest","ty":"MultiLocation"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Transfer `MultiAsset`."],"name":"transfer_multiasset"}
🛠  modules.25.constants.                              [{"documentation":[" Self chain location."],"name":"SelfLocation","ty":"MultiLocation","value":"0200019101"},{"documentation":[" Base XCM weight.",""," The actually weight for an XCM message is `T::BaseXcmWeight +"," T::Weigher::weight(&msg)`."],"name":"BaseXcmWeight","ty":"Weight","value":"00E1F50500000000"}] --> ""
🛠  modules.25.errors.0.name.                           "AssetHasNoReserve" --> "Unknown"
🛠  modules.25.errors.1.name.                          "NotCrossChainTransfer" --> "OverLimit"
🗑  modules.25.errors.2.                               {"documentation":[" Invalid transfer destination."],"name":"InvalidDest"}
🗑  modules.25.errors.3.                               {"documentation":[" Currency is not cross-chain transferable."],"name":"NotCrossChainTransferableCurrency"}
🗑  modules.25.errors.4.                               {"documentation":[" The message's weight could not be determined."],"name":"UnweighableMessage"}
🛠  modules.25.event.0.arguments.0.                             "AccountId" --> "MessageId"
🗑  modules.25.event.0.arguments.1.                            "CurrencyId"
🗑  modules.25.event.0.arguments.2.                               "Balance"
🗑  modules.25.event.0.arguments.3.                         "MultiLocation"
🛠  modules.25.event.0.name.                                  "Transferred" --> "InvalidFormat"
🛠  modules.25.event.1.arguments.0.                             "AccountId" --> "MessageId"
🗑  modules.25.event.1.arguments.1.                            "CurrencyId"
🗑  modules.25.event.1.arguments.2.                               "Balance"
🗑  modules.25.event.1.arguments.3.                         "MultiLocation"
🗑  modules.25.event.1.arguments.4.                              "XcmError"
🛠  modules.25.event.1.name.                               "TransferFailed" --> "UnsupportedVersion"
🛠  modules.25.event.2.arguments.0.                             "AccountId" --> "MessageId"
🛠  modules.25.event.2.arguments.1.                            "MultiAsset" --> "Outcome"
🗑  modules.25.event.2.arguments.2.                         "MultiLocation"
🛠  modules.25.event.2.name.                           "TransferredMultiAsset" --> "ExecutedDownward"
🛠  modules.25.event.3.arguments.0.                             "AccountId" --> "MessageId"
🛠  modules.25.event.3.arguments.1.                            "MultiAsset" --> "Weight"
🛠  modules.25.event.3.arguments.2.                         "MultiLocation" --> "Weight"
🗑  modules.25.event.3.arguments.3.                              "XcmError"
🛠  modules.25.event.3.name.                           "TransferredMultiAssetFailed" --> "WeightExhausted"
🛠  modules.25.index.                                                    54 --> 53
🛠  modules.25.name.                                              "XTokens" --> "DmpQueue"
🛠  modules.25.storage.entries.                                          "" --> [{"default":"00E40B5402000000","documentation":[" The configuration."],"modifier":"Default","name":"Configuration","ty":{"Plain":"ConfigData"}},{"default":"00000000000000000000000000000000","documentation":[" The page index."],"modifier":"Default","name":"PageIndex","ty":{"Plain":"PageIndexData"}},{"default":"00","documentation":[" The queue pages."],"modifier":"Default","name":"Pages","ty":{"Map":{"hasher":"Blake2_128Concat","key":"PageCounter","unused":false,"value":"Vec<(RelayBlockNumber, Vec<u8>)>"}}},{"default":"00","documentation":[" The overweight messages."],"modifier":"Optional","name":"Overweight","ty":{"Map":{"hasher":"Blake2_128Concat","key":"OverweightIndex","unused":false,"value":"(RelayBlockNumber, Vec<u8>)"}}}]
🛠  modules.25.storage.prefix.                                    "XTokens" --> "DmpQueue"
🛠  modules.26.calls.                                                  null --> [{"arguments":[{"name":"currency_id","ty":"T::CurrencyId"},{"name":"amount","ty":"T::Balance"},{"name":"dest","ty":"MultiLocation"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Transfer native currencies.",""," `dest_weight` is the weight for XCM execution on the dest chain, and"," it would be charged from the transferred assets. If set below"," requirements, the execution may fail and assets wouldn't be"," received.",""," It's a no-op if any error on local XCM execution or message sending."," Note sending assets out per se doesn't guarantee they would be"," received. Receiving depends on if the XCM message could be delivered"," by the network, and if the receiving chain would handle"," messages correctly."],"name":"transfer"},{"arguments":[{"name":"asset","ty":"MultiAsset"},{"name":"dest","ty":"MultiLocation"},{"name":"dest_weight","ty":"Weight"}],"documentation":[" Transfer `MultiAsset`.",""," `dest_weight` is the weight for XCM execution on the dest chain, and"," it would be charged from the transferred assets. If set below"," requirements, the execution may fail and assets wouldn't be"," received.",""," It's a no-op if any error on local XCM execution or message sending."," Note sending assets out per se doesn't guarantee they would be"," received. Receiving depends on if the XCM message could be delivered"," by the network, and if the receiving chain would handle"," messages correctly."],"name":"transfer_multiasset"}]
🛠  modules.26.constants.                                                "" --> [{"documentation":[" Self chain location."],"name":"SelfLocation","ty":"MultiLocation","value":"0200019101"},{"documentation":[" Base XCM weight.",""," The actually weight for an XCM message is `T::BaseXcmWeight +"," T::Weigher::weight(&msg)`."],"name":"BaseXcmWeight","ty":"Weight","value":"00E1F50500000000"}]
🛠  modules.26.errors.0.name.                               "BalanceTooLow" --> "AssetHasNoReserve"
🛠  modules.26.errors.1.name.                             "BalanceOverflow" --> "NotCrossChainTransfer"
🛠  modules.26.errors.2.name.                              "UnhandledAsset" --> "InvalidDest"
🛠  modules.26.event.0.arguments.0.                            "MultiAsset" --> "AccountId"
🛠  modules.26.event.0.arguments.1.                         "MultiLocation" --> "CurrencyId"
🛠  modules.26.event.0.name.                                    "Deposited" --> "Transferred"
🛠  modules.26.event.1.arguments.0.                            "MultiAsset" --> "AccountId"
🛠  modules.26.event.1.arguments.1.                         "MultiLocation" --> "CurrencyId"
🛠  modules.26.event.1.name.                                    "Withdrawn" --> "TransferFailed"
🛠  modules.26.index.                                                    55 --> 54
🛠  modules.26.name.                                        "UnknownTokens" --> "XTokens"
🛠  modules.26.storage.entries.                        [{"default":"00000000000000000000000000000000","documentation":[" Concrete fungible balances under a given location and a concrete"," fungible id.",""," double_map: who, asset_id => u128"],"modifier":"Default","name":"ConcreteFungibleBalances","ty":{"DoubleMap":{"hasher":"Blake2_128Concat","key1":"MultiLocation","key2":"MultiLocation","key2_hasher":"Blake2_128Concat","value":"u128"}}},{"default":"00000000000000000000000000000000","documentation":[" Abstract fungible balances under a given location and a abstract"," fungible id.",""," double_map: who, asset_id => u128"],"modifier":"Default","name":"AbstractFungibleBalances","ty":{"DoubleMap":{"hasher":"Blake2_128Concat","key1":"MultiLocation","key2":"Vec<u8>","key2_hasher":"Blake2_128Concat","value":"u128"}}}] --> ""
🛠  modules.26.storage.prefix.                              "UnknownTokens" --> "XTokens"
🛠  modules.27.calls.                                  [{"arguments":[{"name":"as_origin","ty":"T::AsOriginId"},{"name":"call","ty":"Box<CallOf<T>>"}],"documentation":[" Dispatch a dispatchable on behalf of other origin"],"name":"dispatch_as"},{"arguments":[{"name":"when","ty":"DispatchTime<T::BlockNumber>"},{"name":"priority","ty":"Priority"},{"name":"with_delayed_origin","ty":"bool"},{"name":"call","ty":"Box<CallOf<T>>"}],"documentation":[" Schedule a dispatchable to be dispatched at later block."," This is the only way to dispatch a call with `DelayedOrigin`."],"name":"schedule_dispatch"},{"arguments":[{"name":"initial_origin","ty":"T::PalletsOrigin"},{"name":"task_id","ty":"ScheduleTaskIndex"},{"name":"when","ty":"DispatchTime<T::BlockNumber>"}],"documentation":[" Fast track a scheduled dispatchable."],"name":"fast_track_scheduled_dispatch"},{"arguments":[{"name":"initial_origin","ty":"T::PalletsOrigin"},{"name":"task_id","ty":"ScheduleTaskIndex"},{"name":"additional_delay","ty":"T::BlockNumber"}],"documentation":[" Delay a scheduled dispatchable."],"name":"delay_scheduled_dispatch"},{"arguments":[{"name":"initial_origin","ty":"T::PalletsOrigin"},{"name":"task_id","ty":"ScheduleTaskIndex"}],"documentation":[" Cancel a scheduled dispatchable."],"name":"cancel_scheduled_dispatch"}] --> null
🛠  modules.27.errors.0.name.                            "FailedToSchedule" --> "BalanceTooLow"
🛠  modules.27.errors.1.name.                              "FailedToCancel" --> "BalanceOverflow"
🛠  modules.27.errors.2.name.                           "FailedToFastTrack" --> "UnhandledAsset"
🗑  modules.27.errors.3.                               {"documentation":[" Failed to delay a task."],"name":"FailedToDelay"}
🛠  modules.27.event.0.arguments.0.                        "DispatchResult" --> "MultiAsset"
🛠  modules.27.event.0.name.                                   "Dispatched" --> "Deposited"
🛠  modules.27.event.1.arguments.0.                      "T::PalletsOrigin" --> "MultiAsset"
🛠  modules.27.event.1.arguments.1.                     "ScheduleTaskIndex" --> "MultiLocation"
🛠  modules.27.event.1.name.                                    "Scheduled" --> "Withdrawn"
🗑  modules.27.event.2.                                {"arguments":["T::PalletsOrigin","ScheduleTaskIndex","T::BlockNumber"],"documentation":[" A scheduled call is fast tracked. [origin, index, when]"],"name":"FastTracked"}
🗑  modules.27.event.3.                                {"arguments":["T::PalletsOrigin","ScheduleTaskIndex","T::BlockNumber"],"documentation":[" A scheduled call is delayed. [origin, index, when]"],"name":"Delayed"}
🗑  modules.27.event.4.                                {"arguments":["T::PalletsOrigin","ScheduleTaskIndex"],"documentation":[" A scheduled call is cancelled. [origin, index]"],"name":"Cancelled"}
🛠  modules.27.index.                                                    60 --> 55
🛠  modules.27.name.                                            "Authority" --> "UnknownTokens"
🛠  modules.27.storage.entries.0.default.                        "00000000" --> "00000000000000000000000000000000"
🛠  modules.27.storage.entries.0.name.                      "NextTaskIndex" --> "ConcreteFungibleBalances"
🗑  modules.27.storage.entries.0.ty.Plain.              "ScheduleTaskIndex"
🛠  modules.27.storage.prefix.                                  "Authority" --> "UnknownTokens"
🛠  modules.28.calls.0.arguments.0.name.                      "new_members" --> "dest"
🛠  modules.28.calls.0.arguments.0.ty.                  "Vec<T::AccountId>" --> "MultiLocation"
🛠  modules.28.calls.0.arguments.1.name.                            "prime" --> "message"
🛠  modules.28.calls.0.arguments.1.ty.                 "Option<T::AccountId>" --> "Xcm<()>"
🗑  modules.28.calls.0.arguments.2.                    {"name":"old_count","ty":"MemberCount"}
🛠  modules.28.calls.0.name.                                  "set_members" --> "send_as_sovereign"
🗑  modules.28.calls.1.                                {"arguments":[{"name":"proposal","ty":"Box<<T as Config<I>>::Proposal>"},{"name":"length_bound","ty":"Compact<u32>"}],"documentation":[" Dispatch a proposal from a member using the `Member` origin.",""," Origin must be a member of the collective.",""," # <weight>"," ## Weight"," - `O(M + P)` where `M` members-count (code-bounded) and `P` complexity of dispatching `proposal`"," - DB: 1 read (codec `O(M)`) + DB access of `proposal`"," - 1 event"," # </weight>"],"name":"execute"}
🗑  modules.28.calls.2.                                {"arguments":[{"name":"threshold","ty":"Compact<MemberCount>"},{"name":"proposal","ty":"Box<<T as Config<I>>::Proposal>"},{"name":"length_bound","ty":"Compact<u32>"}],"documentation":[" Add a new proposal to either be voted on or executed directly.",""," Requires the sender to be member.",""," `threshold` determines whether `proposal` is executed directly (`threshold < 2`)"," or put up for voting.",""," # <weight>"," ## Weight"," - `O(B + M + P1)` or `O(B + M + P2)` where:","   - `B` is `proposal` size in bytes (length-fee-bounded)","   - `M` is members-count (code- and governance-bounded)","   - branching is influenced by `threshold` where:","     - `P1` is proposal execution complexity (`threshold < 2`)","     - `P2` is proposals-count (code-bounded) (`threshold >= 2`)"," - DB:","   - 1 storage read `is_member` (codec `O(M)`)","   - 1 storage read `ProposalOf::contains_key` (codec `O(1)`)","   - DB accesses influenced by `threshold`:","     - EITHER storage accesses done by `proposal` (`threshold < 2`)","     - OR proposal insertion (`threshold <= 2`)","       - 1 storage mutation `Proposals` (codec `O(P2)`)","       - 1 storage mutation `ProposalCount` (codec `O(1)`)","       - 1 storage write `ProposalOf` (codec `O(B)`)","       - 1 storage write `Voting` (codec `O(M)`)","   - 1 event"," # </weight>"],"name":"propose"}
🗑  modules.28.calls.3.                                {"arguments":[{"name":"proposal","ty":"T::Hash"},{"name":"index","ty":"Compact<ProposalIndex>"},{"name":"approve","ty":"bool"}],"documentation":[" Add an aye or nay vote for the sender to the given proposal.",""," Requires the sender to be a member.",""," Transaction fees will be waived if the member is voting on any particular proposal"," for the first time and the call is successful. Subsequent vote changes will charge a fee."," # <weight>"," ## Weight"," - `O(M)` where `M` is members-count (code- and governance-bounded)"," - DB:","   - 1 storage read `Members` (codec `O(M)`)","   - 1 storage mutation `Voting` (codec `O(M)`)"," - 1 event"," # </weight>"],"name":"vote"}
🗑  modules.28.calls.4.                                {"arguments":[{"name":"proposal_hash","ty":"T::Hash"},{"name":"index","ty":"Compact<ProposalIndex>"},{"name":"proposal_weight_bound","ty":"Compact<Weight>"},{"name":"length_bound","ty":"Compact<u32>"}],"documentation":[" Close a vote that is either approved, disapproved or whose voting period has ended.",""," May be called by any signed account in order to finish voting and close the proposal.",""," If called before the end of the voting period it will only close the vote if it is"," has enough votes to be approved or disapproved.",""," If called after the end of the voting period abstentions are counted as rejections"," unless there is a prime member set and the prime member cast an approval.",""," If the close operation completes successfully with disapproval, the transaction fee will"," be waived. Otherwise execution of the approved operation will be charged to the caller.",""," + `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed proposal."," + `length_bound`: The upper bound for the length of the proposal in storage. Checked via","                   `storage::read` so it is `size_of::<u32>() == 4` larger than the pure length.",""," # <weight>"," ## Weight"," - `O(B + M + P1 + P2)` where:","   - `B` is `proposal` size in bytes (length-fee-bounded)","   - `M` is members-count (code- and governance-bounded)","   - `P1` is the complexity of `proposal` preimage.","   - `P2` is proposal-count (code-bounded)"," - DB:","  - 2 storage reads (`Members`: codec `O(M)`, `Prime`: codec `O(1)`)","  - 3 mutations (`Voting`: codec `O(M)`, `ProposalOf`: codec `O(B)`, `Proposals`: codec `O(P2)`)","  - any mutations done while executing `proposal` (`P1`)"," - up to 3 events"," # </weight>"],"name":"close"}
🗑  modules.28.calls.5.                                {"arguments":[{"name":"proposal_hash","ty":"T::Hash"}],"documentation":[" Disapprove a proposal, close, and remove it from the system, regardless of its current state.",""," Must be called by the Root origin.",""," Parameters:"," * `proposal_hash`: The hash of the proposal that should be disapproved.",""," # <weight>"," Complexity: O(P) where P is the number of max proposals"," DB Weight:"," * Reads: Proposals"," * Writes: Voting, Proposals, ProposalOf"," # </weight>"],"name":"disapprove_proposal"}
🛠  modules.28.errors.0.name.                                   "NotMember" --> "Unreachable"
🛠  modules.28.errors.1.name.                           "DuplicateProposal" --> "SendFailure"
🗑  modules.28.errors.2.                               {"documentation":[" Proposal must exist"],"name":"ProposalMissing"}
🗑  modules.28.errors.3.                               {"documentation":[" Mismatched index"],"name":"WrongIndex"}
🗑  modules.28.errors.4.                               {"documentation":[" Duplicate vote ignored"],"name":"DuplicateVote"}
🗑  modules.28.errors.5.                               {"documentation":[" Members are already initialized!"],"name":"AlreadyInitialized"}
🗑  modules.28.errors.6.                               {"documentation":[" The close call was made too early, before the end of the voting."],"name":"TooEarly"}
🗑  modules.28.errors.7.                               {"documentation":[" There can only be a maximum of `MaxProposals` active proposals."],"name":"TooManyProposals"}
🗑  modules.28.errors.8.                               {"documentation":[" The given weight bound for the proposal was too low."],"name":"WrongProposalWeight"}
🗑  modules.28.errors.9.                               {"documentation":[" The given length bound for the proposal was too low."],"name":"WrongProposalLength"}
🛠  modules.28.event.0.arguments.0.                             "AccountId" --> "MultiLocation"
🛠  modules.28.event.0.arguments.1.                         "ProposalIndex" --> "MultiLocation"
🛠  modules.28.event.0.arguments.2.                                  "Hash" --> "Xcm<()>"
🗑  modules.28.event.0.arguments.3.                           "MemberCount"
🛠  modules.28.event.0.name.                                     "Proposed" --> "Sent"
🗑  modules.28.event.1.                                {"arguments":["AccountId","Hash","bool","MemberCount","MemberCount"],"documentation":[" A motion (given hash) has been voted on by given account, leaving"," a tally (yes votes and no votes given respectively as `MemberCount`)."," \\[account, proposal_hash, voted, yes, no\\]"],"name":"Voted"}
🗑  modules.28.event.2.                                {"arguments":["Hash"],"documentation":[" A motion was approved by the required threshold."," \\[proposal_hash\\]"],"name":"Approved"}
🗑  modules.28.event.3.                                {"arguments":["Hash"],"documentation":[" A motion was not approved by the required threshold."," \\[proposal_hash\\]"],"name":"Disapproved"}
🗑  modules.28.event.4.                                {"arguments":["Hash","DispatchResult"],"documentation":[" A motion was executed; result will be `Ok` if it returned without error."," \\[proposal_hash, result\\]"],"name":"Executed"}
🗑  modules.28.event.5.                                {"arguments":["Hash","DispatchResult"],"documentation":[" A single member did some action; result will be `Ok` if it returned without error."," \\[proposal_hash, result\\]"],"name":"MemberExecuted"}
🗑  modules.28.event.6.                                {"arguments":["Hash","MemberCount","MemberCount"],"documentation":[" A proposal was closed because its threshold was reached or after its duration was up."," \\[proposal_hash, yes, no\\]"],"name":"Closed"}
🛠  modules.28.index.                                                    61 --> 56
🛠  modules.28.name.                                       "GeneralCouncil" --> "OrmlXcm"
🛠  modules.28.storage.                                {"entries":[{"default":"00","documentation":[" The hashes of the active proposals."],"modifier":"Default","name":"Proposals","ty":{"Plain":"BoundedVec<T::Hash, T::MaxProposals>"}},{"default":"00","documentation":[" Actual proposal for a given hash, if it's current."],"modifier":"Optional","name":"ProposalOf","ty":{"Map":{"hasher":"Identity","key":"T::Hash","unused":false,"value":"<T as Config<I>>::Proposal"}}},{"default":"00","documentation":[" Votes on a given proposal, if it is ongoing."],"modifier":"Optional","name":"Voting","ty":{"Map":{"hasher":"Identity","key":"T::Hash","unused":false,"value":"Votes<T::AccountId, T::BlockNumber>"}}},{"default":"00000000","documentation":[" Proposals so far."],"modifier":"Default","name":"ProposalCount","ty":{"Plain":"u32"}},{"default":"00","documentation":[" The current members of the collective. This is stored sorted (just by value)."],"modifier":"Default","name":"Members","ty":{"Plain":"Vec<T::AccountId>"}},{"default":"00","documentation":[" The prime member that helps determine the default vote behavior in case of absentations."],"modifier":"Optional","name":"Prime","ty":{"Plain":"T::AccountId"}}],"prefix":"Instance1Collective"} --> null
🛠  modules.29.calls.0.arguments.0.name.                              "who" --> "as_origin"
🛠  modules.29.calls.0.arguments.0.ty.                       "T::AccountId" --> "T::AsOriginId"
🛠  modules.29.calls.0.name.                                   "add_member" --> "dispatch_as"
🛠  modules.29.calls.1.arguments.0.name.                              "who" --> "when"
🛠  modules.29.calls.1.arguments.0.ty.                       "T::AccountId" --> "DispatchTime<T::BlockNumber>"
🛠  modules.29.calls.1.name.                                "remove_member" --> "schedule_dispatch"
🛠  modules.29.calls.2.arguments.0.name.                           "remove" --> "initial_origin"
🛠  modules.29.calls.2.arguments.0.ty.                       "T::AccountId" --> "T::PalletsOrigin"
🛠  modules.29.calls.2.arguments.1.name.                              "add" --> "task_id"
🛠  modules.29.calls.2.arguments.1.ty.                       "T::AccountId" --> "ScheduleTaskIndex"
🛠  modules.29.calls.2.name.                                  "swap_member" --> "fast_track_scheduled_dispatch"
🛠  modules.29.calls.3.arguments.0.name.                          "members" --> "initial_origin"
🛠  modules.29.calls.3.arguments.0.ty.                  "Vec<T::AccountId>" --> "T::PalletsOrigin"
🛠  modules.29.calls.3.name.                                "reset_members" --> "delay_scheduled_dispatch"
🛠  modules.29.calls.4.arguments.0.name.                              "new" --> "initial_origin"
🛠  modules.29.calls.4.arguments.0.ty.                       "T::AccountId" --> "T::PalletsOrigin"
🛠  modules.29.calls.4.name.                                   "change_key" --> "cancel_scheduled_dispatch"
🗑  modules.29.calls.5.                                {"arguments":[{"name":"who","ty":"T::AccountId"}],"documentation":[" Set the prime member. Must be a current member.",""," May only be called from `T::PrimeOrigin`."],"name":"set_prime"}
🗑  modules.29.calls.6.                                {"arguments":"","documentation":[" Remove the prime member if it exists.",""," May only be called from `T::PrimeOrigin`."],"name":"clear_prime"}
🛠  modules.29.errors.0.name.                               "AlreadyMember" --> "FailedToSchedule"
🛠  modules.29.errors.1.name.                                   "NotMember" --> "FailedToCancel"
🛠  modules.29.event.0.arguments.                                        "" --> ["DispatchResult"]
🛠  modules.29.event.0.name.                                  "MemberAdded" --> "Dispatched"
🛠  modules.29.event.1.arguments.                                        "" --> ["T::PalletsOrigin","ScheduleTaskIndex"]
🛠  modules.29.event.1.name.                                "MemberRemoved" --> "Scheduled"
🛠  modules.29.event.2.arguments.                                        "" --> ["T::PalletsOrigin","ScheduleTaskIndex","T::BlockNumber"]
🛠  modules.29.event.2.name.                               "MembersSwapped" --> "FastTracked"
🛠  modules.29.event.3.arguments.                                        "" --> ["T::PalletsOrigin","ScheduleTaskIndex","T::BlockNumber"]
🛠  modules.29.event.3.name.                                 "MembersReset" --> "Delayed"
🛠  modules.29.event.4.arguments.                                        "" --> ["T::PalletsOrigin","ScheduleTaskIndex"]
🛠  modules.29.event.4.name.                                   "KeyChanged" --> "Cancelled"
🗑  modules.29.event.5.                                {"arguments":["sp_std::marker::PhantomData<(AccountId, Event)>"],"documentation":[" Phantom member, never used."],"name":"Dummy"}
🛠  modules.29.index.                                                    62 --> 60
🛠  modules.29.name.                                   "GeneralCouncilMembership" --> "Authority"
🛠  modules.29.storage.entries.0.default.                              "00" --> "00000000"
🛠  modules.29.storage.entries.0.name.                            "Members" --> "NextTaskIndex"
🛠  modules.29.storage.entries.0.ty.Plain.              "Vec<T::AccountId>" --> "ScheduleTaskIndex"
🗑  modules.29.storage.entries.1.                      {"default":"00","documentation":[" The current prime member, if one exists."],"modifier":"Optional","name":"Prime","ty":{"Plain":"T::AccountId"}}
🛠  modules.29.storage.prefix.                         "Instance1Membership" --> "Authority"
🛠  modules.30.index.                                                    63 --> 61
🛠  modules.30.name.                                     "FinancialCouncil" --> "GeneralCouncil"
🛠  modules.30.storage.prefix.                         "Instance2Collective" --> "Instance1Collective"
🛠  modules.31.index.                                                    64 --> 62
🛠  modules.31.name.                                   "FinancialCouncilMembership" --> "GeneralCouncilMembership"
🛠  modules.31.storage.prefix.                         "Instance2Membership" --> "Instance1Membership"
🛠  modules.32.index.                                                    65 --> 63
🛠  modules.32.name.                                          "HomaCouncil" --> "FinancialCouncil"
🛠  modules.32.storage.prefix.                         "Instance3Collective" --> "Instance2Collective"
🛠  modules.33.index.                                                    66 --> 64
🛠  modules.33.name.                                   "HomaCouncilMembership" --> "FinancialCouncilMembership"
🛠  modules.33.storage.prefix.                         "Instance3Membership" --> "Instance2Membership"
🛠  modules.34.index.                                                    67 --> 65
🛠  modules.34.name.                                   "TechnicalCommittee" --> "HomaCouncil"
🛠  modules.34.storage.prefix.                         "Instance4Collective" --> "Instance3Collective"
🛠  modules.35.index.                                                    68 --> 66
🛠  modules.35.name.                                   "TechnicalCommitteeMembership" --> "HomaCouncilMembership"
🛠  modules.35.storage.prefix.                         "Instance4Membership" --> "Instance3Membership"
🛠  modules.36.calls.0.arguments.0.name.                    "proposal_hash" --> "new_members"
🛠  modules.36.calls.0.arguments.0.ty.                            "T::Hash" --> "Vec<T::AccountId>"
🛠  modules.36.calls.0.arguments.1.name.                            "value" --> "prime"
🛠  modules.36.calls.0.arguments.1.ty.                 "Compact<BalanceOf<T>>" --> "Option<T::AccountId>"
🛠  modules.36.calls.0.name.                                      "propose" --> "set_members"
🛠  modules.36.calls.1.arguments.0.ty.                 "Compact<PropIndex>" --> "Box<<T as Config<I>>::Proposal>"
🛠  modules.36.calls.1.arguments.1.name.               "seconds_upper_bound" --> "length_bound"
🛠  modules.36.calls.1.name.                                       "second" --> "execute"
🛠  modules.36.calls.2.arguments.0.name.                        "ref_index" --> "threshold"
🛠  modules.36.calls.2.arguments.0.ty.                 "Compact<ReferendumIndex>" --> "Compact<MemberCount>"
🛠  modules.36.calls.2.arguments.1.name.                             "vote" --> "proposal"
🛠  modules.36.calls.2.arguments.1.ty.                 "AccountVote<BalanceOf<T>>" --> "Box<<T as Config<I>>::Proposal>"
🛠  modules.36.calls.2.name.                                         "vote" --> "propose"
🛠  modules.36.calls.3.arguments.0.name.                        "ref_index" --> "proposal"
🛠  modules.36.calls.3.arguments.0.ty.                    "ReferendumIndex" --> "T::Hash"
🛠  modules.36.calls.3.name.                             "emergency_cancel" --> "vote"
🛠  modules.36.calls.4.name.                             "external_propose" --> "close"
🛠  modules.36.calls.5.name.                           "external_propose_majority" --> "disapprove_proposal"
🗑  modules.36.calls.6.                                {"arguments":[{"name":"proposal_hash","ty":"T::Hash"}],"documentation":[" Schedule a negative-turnout-bias referendum to be tabled next once it is legal to"," schedule an external referendum.",""," The dispatch of this call must be `ExternalDefaultOrigin`.",""," - `proposal_hash`: The preimage hash of the proposal.",""," Unlike `external_propose`, blacklisting has no effect on this and it may replace a"," pre-scheduled `external_propose` call.",""," Weight: `O(1)`"],"name":"external_propose_default"}
🗑  modules.36.calls.7.                                {"arguments":[{"name":"proposal_hash","ty":"T::Hash"},{"name":"voting_period","ty":"T::BlockNumber"},{"name":"delay","ty":"T::BlockNumber"}],"documentation":[" Schedule the currently externally-proposed majority-carries referendum to be tabled"," immediately. If there is no externally-proposed referendum currently, or if there is one"," but it is not a majority-carries referendum then it fails.",""," The dispatch of this call must be `FastTrackOrigin`.",""," - `proposal_hash`: The hash of the current external proposal."," - `voting_period`: The period that is allowed for voting on this proposal. Increased to","   `FastTrackVotingPeriod` if too low."," - `delay`: The number of block after voting has ended in approval and this should be","   enacted. This doesn't have a minimum amount.",""," Emits `Started`.",""," Weight: `O(1)`"],"name":"fast_track"}
🗑  modules.36.calls.8.                                {"arguments":[{"name":"proposal_hash","ty":"T::Hash"}],"documentation":[" Veto and blacklist the external proposal hash.",""," The dispatch origin of this call must be `VetoOrigin`.",""," - `proposal_hash`: The preimage hash of the proposal to veto and blacklist.",""," Emits `Vetoed`.",""," Weight: `O(V + log(V))` where V is number of `existing vetoers`"],"name":"veto_external"}
🗑  modules.36.calls.9.                                {"arguments":[{"name":"ref_index","ty":"Compact<ReferendumIndex>"}],"documentation":[" Remove a referendum.",""," The dispatch origin of this call must be _Root_.",""," - `ref_index`: The index of the referendum to cancel.",""," # Weight: `O(1)`."],"name":"cancel_referendum"}
🗑  modules.36.calls.10.                               {"arguments":[{"name":"which","ty":"ReferendumIndex"}],"documentation":[" Cancel a proposal queued for enactment.",""," The dispatch origin of this call must be _Root_.",""," - `which`: The index of the referendum to cancel.",""," Weight: `O(D)` where `D` is the items in the dispatch queue. Weighted as `D = 10`."],"name":"cancel_queued"}
🗑  modules.36.calls.11.                               {"arguments":[{"name":"to","ty":"T::AccountId"},{"name":"conviction","ty":"Conviction"},{"name":"balance","ty":"BalanceOf<T>"}],"documentation":[" Delegate the voting power (with some given conviction) of the sending account.",""," The balance delegated is locked for as long as it's delegated, and thereafter for the"," time appropriate for the conviction's lock period.",""," The dispatch origin of this call must be _Signed_, and the signing account must either:","   - be delegating already; or","   - have no voting activity (if there is, then it will need to be removed/consolidated","     through `reap_vote` or `unvote`).",""," - `to`: The account whose voting the `target` account's voting power will follow."," - `conviction`: The conviction that will be attached to the delegated votes. When the","   account is undelegated, the funds will be locked for the corresponding period."," - `balance`: The amount of the account's balance to be used in delegating. This must","   not be more than the account's current balance.",""," Emits `Delegated`.",""," Weight: `O(R)` where R is the number of referendums the voter delegating to has","   voted on. Weight is charged as if maximum votes."],"name":"delegate"}
🗑  modules.36.calls.12.                               {"arguments":"","documentation":[" Undelegate the voting power of the sending account.",""," Tokens may be unlocked following once an amount of time consistent with the lock period"," of the conviction with which the delegation was issued.",""," The dispatch origin of this call must be _Signed_ and the signing account must be"," currently delegating.",""," Emits `Undelegated`.",""," Weight: `O(R)` where R is the number of referendums the voter delegating to has","   voted on. Weight is charged as if maximum votes."],"name":"undelegate"}
🗑  modules.36.calls.13.                               {"arguments":"","documentation":[" Clears all public proposals.",""," The dispatch origin of this call must be _Root_.",""," Weight: `O(1)`."],"name":"clear_public_proposals"}
🗑  modules.36.calls.14.                               {"arguments":[{"name":"encoded_proposal","ty":"Vec<u8>"}],"documentation":[" Register the preimage for an upcoming proposal. This doesn't require the proposal to be"," in the dispatch queue but does require a deposit, returned once enacted.",""," The dispatch origin of this call must be _Signed_.",""," - `encoded_proposal`: The preimage of a proposal.",""," Emits `PreimageNoted`.",""," Weight: `O(E)` with E size of `encoded_proposal` (protected by a required deposit)."],"name":"note_preimage"}
🗑  modules.36.calls.15.                               {"arguments":[{"name":"encoded_proposal","ty":"Vec<u8>"}],"documentation":[" Same as `note_preimage` but origin is `OperationalPreimageOrigin`."],"name":"note_preimage_operational"}
🗑  modules.36.calls.16.                               {"arguments":[{"name":"encoded_proposal","ty":"Vec<u8>"}],"documentation":[" Register the preimage for an upcoming proposal. This requires the proposal to be"," in the dispatch queue. No deposit is needed. When this call is successful, i.e."," the preimage has not been uploaded before and matches some imminent proposal,"," no fee is paid.",""," The dispatch origin of this call must be _Signed_.",""," - `encoded_proposal`: The preimage of a proposal.",""," Emits `PreimageNoted`.",""," Weight: `O(E)` with E size of `encoded_proposal` (protected by a required deposit)."],"name":"note_imminent_preimage"}
🗑  modules.36.calls.17.                               {"arguments":[{"name":"encoded_proposal","ty":"Vec<u8>"}],"documentation":[" Same as `note_imminent_preimage` but origin is `OperationalPreimageOrigin`."],"name":"note_imminent_preimage_operational"}
🗑  modules.36.calls.18.                               {"arguments":[{"name":"proposal_hash","ty":"T::Hash"},{"name":"proposal_len_upper_bound","ty":"Compact<u32>"}],"documentation":[" Remove an expired proposal preimage and collect the deposit.",""," The dispatch origin of this call must be _Signed_.",""," - `proposal_hash`: The preimage hash of a proposal."," - `proposal_length_upper_bound`: an upper bound on length of the proposal.","   Extrinsic is weighted according to this value with no refund.",""," This will only work after `VotingPeriod` blocks from the time that the preimage was"," noted, if it's the same account doing it. If it's a different account, then it'll only"," work an additional `EnactmentPeriod` later.",""," Emits `PreimageReaped`.",""," Weight: `O(D)` where D is length of proposal."],"name":"reap_preimage"}
🗑  modules.36.calls.19.                               {"arguments":[{"name":"target","ty":"T::AccountId"}],"documentation":[" Unlock tokens that have an expired lock.",""," The dispatch origin of this call must be _Signed_.",""," - `target`: The account to remove the lock on.",""," Weight: `O(R)` with R number of vote of target."],"name":"unlock"}
🗑  modules.36.calls.20.                               {"arguments":[{"name":"index","ty":"ReferendumIndex"}],"documentation":[" Remove a vote for a referendum.",""," If:"," - the referendum was cancelled, or"," - the referendum is ongoing, or"," - the referendum has ended such that","   - the vote of the account was in opposition to the result; or","   - there was no conviction to the account's vote; or","   - the account made a split vote"," ...then the vote is removed cleanly and a following call to `unlock` may result in more"," funds being available.",""," If, however, the referendum has ended and:"," - it finished corresponding to the vote of the account, and"," - the account made a standard vote with conviction, and"," - the lock period of the conviction is not over"," ...then the lock will be aggregated into the overall account's lock, which may involve"," *overlocking* (where the two locks are combined into a single lock that is the maximum"," of both the amount locked and the time is it locked for).",""," The dispatch origin of this call must be _Signed_, and the signer must have a vote"," registered for referendum `index`.",""," - `index`: The index of referendum of the vote to be removed.",""," Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on.","   Weight is calculated for the maximum number of vote."],"name":"remove_vote"}
🗑  modules.36.calls.21.                               {"arguments":[{"name":"target","ty":"T::AccountId"},{"name":"index","ty":"ReferendumIndex"}],"documentation":[" Remove a vote for a referendum.",""," If the `target` is equal to the signer, then this function is exactly equivalent to"," `remove_vote`. If not equal to the signer, then the vote must have expired,"," either because the referendum was cancelled, because the voter lost the referendum or"," because the conviction period is over.",""," The dispatch origin of this call must be _Signed_.",""," - `target`: The account of the vote to be removed; this account must have voted for","   referendum `index`."," - `index`: The index of referendum of the vote to be removed.",""," Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on.","   Weight is calculated for the maximum number of vote."],"name":"remove_other_vote"}
🗑  modules.36.calls.22.                               {"arguments":[{"name":"proposal_hash","ty":"T::Hash"},{"name":"index","ty":"ReferendumIndex"}],"documentation":[" Enact a proposal from a referendum. For now we just make the weight be the maximum."],"name":"enact_proposal"}
🗑  modules.36.calls.23.                               {"arguments":[{"name":"proposal_hash","ty":"T::Hash"},{"name":"maybe_ref_index","ty":"Option<ReferendumIndex>"}],"documentation":[" Permanently place a proposal into the blacklist. This prevents it from ever being"," proposed again.",""," If called on a queued public or external proposal, then this will result in it being"," removed. If the `ref_index` supplied is an active referendum with the proposal hash,"," then it will be cancelled.",""," The dispatch origin of this call must be `BlacklistOrigin`.",""," - `proposal_hash`: The proposal hash to blacklist permanently."," - `ref_index`: An ongoing referendum whose hash is `proposal_hash`, which will be"," cancelled.",""," Weight: `O(p)` (though as this is an high-privilege dispatch, we assume it has a","   reasonable value)."],"name":"blacklist"}
🗑  modules.36.calls.24.                               {"arguments":[{"name":"prop_index","ty":"Compact<PropIndex>"}],"documentation":[" Remove a proposal.",""," The dispatch origin of this call must be `CancelProposalOrigin`.",""," - `prop_index`: The index of the proposal to cancel.",""," Weight: `O(p)` where `p = PublicProps::<T>::decode_len()`"],"name":"cancel_proposal"}
🛠  modules.36.constants.                              [{"documentation":[" The minimum period of locking and the period between a proposal being approved and enacted.",""," It should generally be a little more than the unstake period to ensure that"," voting stakers have an opportunity to remove themselves from the system in the case where"," they are on the losing side of a vote."],"name":"EnactmentPeriod","ty":"T::BlockNumber","value":"201C0000"},{"documentation":[" How often (in blocks) new public referenda are launched."],"name":"LaunchPeriod","ty":"T::BlockNumber","value":"40380000"},{"documentation":[" How often (in blocks) to check for new votes."],"name":"VotingPeriod","ty":"T::BlockNumber","value":"40380000"},{"documentation":[" The minimum amount to be used as a deposit for a public referendum proposal."],"name":"MinimumDeposit","ty":"BalanceOf<T>","value":"0080C6A47E8D03000000000000000000"},{"documentation":[" Minimum voting period allowed for a fast-track referendum."],"name":"FastTrackVotingPeriod","ty":"T::BlockNumber","value":"84030000"},{"documentation":[" Period in blocks where an external proposal may not be re-submitted after being vetoed."],"name":"CooloffPeriod","ty":"T::BlockNumber","value":"E0C40000"},{"documentation":[" The amount of balance that must be deposited per byte of preimage stored."],"name":"PreimageByteDeposit","ty":"BalanceOf<T>","value":"00E1F505000000000000000000000000"},{"documentation":[" The maximum number of votes for an account.",""," Also used to compute weight, an overly big value can"," lead to extrinsic with very big weight: see `delegate` for instance."],"name":"MaxVotes","ty":"u32","value":"64000000"}] --> ""
🛠  modules.36.errors.0.name.                                    "ValueLow" --> "NotMember"
🛠  modules.36.errors.1.name.                             "ProposalMissing" --> "DuplicateProposal"
🛠  modules.36.errors.2.name.                                    "BadIndex" --> "ProposalMissing"
🛠  modules.36.errors.3.name.                             "AlreadyCanceled" --> "WrongIndex"
🛠  modules.36.errors.4.name.                           "DuplicateProposal" --> "DuplicateVote"
🛠  modules.36.errors.5.name.                          "ProposalBlacklisted" --> "AlreadyInitialized"
🛠  modules.36.errors.6.name.                           "NotSimpleMajority" --> "TooEarly"
🛠  modules.36.errors.7.name.                                 "InvalidHash" --> "TooManyProposals"
🛠  modules.36.errors.8.name.                                  "NoProposal" --> "WrongProposalWeight"
🛠  modules.36.errors.9.name.                               "AlreadyVetoed" --> "WrongProposalLength"
🗑  modules.36.errors.10.                              {"documentation":[" Not delegated"],"name":"NotDelegated"}
🗑  modules.36.errors.11.                              {"documentation":[" Preimage already noted"],"name":"DuplicatePreimage"}
🗑  modules.36.errors.12.                              {"documentation":[" Not imminent"],"name":"NotImminent"}
🗑  modules.36.errors.13.                              {"documentation":[" Too early"],"name":"TooEarly"}
🗑  modules.36.errors.14.                              {"documentation":[" Imminent"],"name":"Imminent"}
🗑  modules.36.errors.15.                              {"documentation":[" Preimage not found"],"name":"PreimageMissing"}
🗑  modules.36.errors.16.                              {"documentation":[" Vote given for invalid referendum"],"name":"ReferendumInvalid"}
🗑  modules.36.errors.17.                              {"documentation":[" Invalid preimage"],"name":"PreimageInvalid"}
🗑  modules.36.errors.18.                              {"documentation":[" No proposals waiting"],"name":"NoneWaiting"}
🗑  modules.36.errors.19.                              {"documentation":[" The target account does not have a lock."],"name":"NotLocked"}
🗑  modules.36.errors.20.                              {"documentation":[" The lock on the account to be unlocked has not yet expired."],"name":"NotExpired"}
🗑  modules.36.errors.21.                              {"documentation":[" The given account did not vote on the referendum."],"name":"NotVoter"}
🗑  modules.36.errors.22.                              {"documentation":[" The actor has no permission to conduct the action."],"name":"NoPermission"}
🗑  modules.36.errors.23.                              {"documentation":[" The account is already delegating."],"name":"AlreadyDelegating"}
🗑  modules.36.errors.24.                              {"documentation":[" Too high a balance was provided that the account cannot afford."],"name":"InsufficientFunds"}
🗑  modules.36.errors.25.                              {"documentation":[" The account is not currently delegating."],"name":"NotDelegating"}
🗑  modules.36.errors.26.                              {"documentation":[" The account currently has votes attached to it and the operation cannot succeed until"," these are removed, either through `unvote` or `reap_vote`."],"name":"VotesExist"}
🗑  modules.36.errors.27.                              {"documentation":[" The instant referendum origin is currently disallowed."],"name":"InstantNotAllowed"}
🗑  modules.36.errors.28.                              {"documentation":[" Delegation to oneself makes no sense."],"name":"Nonsense"}
🗑  modules.36.errors.29.                              {"documentation":[" Invalid upper bound."],"name":"WrongUpperBound"}
🗑  modules.36.errors.30.                              {"documentation":[" Maximum number of votes reached."],"name":"MaxVotesReached"}
🗑  modules.36.errors.31.                              {"documentation":[" The provided witness data is wrong."],"name":"InvalidWitness"}
🗑  modules.36.errors.32.                              {"documentation":[" Maximum number of proposals reached."],"name":"TooManyProposals"}
🛠  modules.36.event.0.arguments.0.                             "PropIndex" --> "AccountId"
🛠  modules.36.event.0.arguments.1.                               "Balance" --> "ProposalIndex"
🛠  modules.36.event.1.arguments.0.                             "PropIndex" --> "AccountId"
🛠  modules.36.event.1.arguments.1.                               "Balance" --> "Hash"
🛠  modules.36.event.1.arguments.2.                        "Vec<AccountId>" --> "bool"
🛠  modules.36.event.1.name.                                       "Tabled" --> "Voted"
🛠  modules.36.event.2.arguments.                                        "" --> ["Hash"]
🛠  modules.36.event.2.name.                               "ExternalTabled" --> "Approved"
🛠  modules.36.event.3.arguments.0.                       "ReferendumIndex" --> "Hash"
🗑  modules.36.event.3.arguments.1.                         "VoteThreshold"
🛠  modules.36.event.3.name.                                      "Started" --> "Disapproved"
🛠  modules.36.event.4.arguments.0.                       "ReferendumIndex" --> "Hash"
🛠  modules.36.event.4.name.                                       "Passed" --> "Executed"
🛠  modules.36.event.5.arguments.0.                       "ReferendumIndex" --> "Hash"
🛠  modules.36.event.5.name.                                    "NotPassed" --> "MemberExecuted"
🛠  modules.36.event.6.arguments.0.                       "ReferendumIndex" --> "Hash"
🛠  modules.36.event.6.name.                                    "Cancelled" --> "Closed"
🗑  modules.36.event.7.                                {"arguments":["ReferendumIndex","bool"],"documentation":[" A proposal has been enacted. \\[ref_index, is_ok\\]"],"name":"Executed"}
🗑  modules.36.event.8.                                {"arguments":["AccountId","AccountId"],"documentation":[" An account has delegated their vote to another account. \\[who, target\\]"],"name":"Delegated"}
🗑  modules.36.event.9.                                {"arguments":["AccountId"],"documentation":[" An \\[account\\] has cancelled a previous delegation operation."],"name":"Undelegated"}
🗑  modules.36.event.10.                               {"arguments":["AccountId","Hash","BlockNumber"],"documentation":[" An external proposal has been vetoed. \\[who, proposal_hash, until\\]"],"name":"Vetoed"}
🗑  modules.36.event.11.                               {"arguments":["Hash","AccountId","Balance"],"documentation":[" A proposal's preimage was noted, and the deposit taken. \\[proposal_hash, who, deposit\\]"],"name":"PreimageNoted"}
🗑  modules.36.event.12.                               {"arguments":["Hash","AccountId","Balance"],"documentation":[" A proposal preimage was removed and used (the deposit was returned)."," \\[proposal_hash, provider, deposit\\]"],"name":"PreimageUsed"}
🗑  modules.36.event.13.                               {"arguments":["Hash","ReferendumIndex"],"documentation":[" A proposal could not be executed because its preimage was invalid."," \\[proposal_hash, ref_index\\]"],"name":"PreimageInvalid"}
🗑  modules.36.event.14.                               {"arguments":["Hash","ReferendumIndex"],"documentation":[" A proposal could not be executed because its preimage was missing."," \\[proposal_hash, ref_index\\]"],"name":"PreimageMissing"}
🗑  modules.36.event.15.                               {"arguments":["Hash","AccountId","Balance","AccountId"],"documentation":[" A registered preimage was removed and the deposit collected by the reaper."," \\[proposal_hash, provider, deposit, reaper\\]"],"name":"PreimageReaped"}
🗑  modules.36.event.16.                               {"arguments":["AccountId"],"documentation":[" An \\[account\\] has been unlocked successfully."],"name":"Unlocked"}
🗑  modules.36.event.17.                               {"arguments":["Hash"],"documentation":[" A proposal \\[hash\\] has been blacklisted permanently."],"name":"Blacklisted"}
🛠  modules.36.index.                                                    69 --> 67
🛠  modules.36.name.                                            "Democracy" --> "TechnicalCommittee"
🛠  modules.36.storage.entries.0.default.                        "00000000" --> "00"
🛠  modules.36.storage.entries.0.name.                    "PublicPropCount" --> "Proposals"
🛠  modules.36.storage.entries.0.ty.Plain.                      "PropIndex" --> "BoundedVec<T::Hash, T::MaxProposals>"
🛠  modules.36.storage.entries.1.modifier.                        "Default" --> "Optional"
🛠  modules.36.storage.entries.1.name.                        "PublicProps" --> "ProposalOf"
🗑  modules.36.storage.entries.1.ty.Plain.             "Vec<(PropIndex, T::Hash, T::AccountId)>"
🛠  modules.36.storage.entries.2.name.                          "DepositOf" --> "Voting"
🛠  modules.36.storage.entries.2.ty.Map.hasher.              "Twox64Concat" --> "Identity"
🛠  modules.36.storage.entries.2.ty.Map.key.                    "PropIndex" --> "T::Hash"
🛠  modules.36.storage.entries.2.ty.Map.value.         "(Vec<T::AccountId>, BalanceOf<T>)" --> "Votes<T::AccountId, T::BlockNumber>"
🛠  modules.36.storage.entries.3.default.                              "00" --> "00000000"
🛠  modules.36.storage.entries.3.modifier.                       "Optional" --> "Default"
🛠  modules.36.storage.entries.3.name.                          "Preimages" --> "ProposalCount"
🗑  modules.36.storage.entries.3.ty.Map.               {"hasher":"Identity","key":"T::Hash","unused":false,"value":"PreimageStatus<T::AccountId, BalanceOf<T>, T::BlockNumber>"}
🛠  modules.36.storage.entries.4.default.                        "00000000" --> "00"
🛠  modules.36.storage.entries.4.name.                    "ReferendumCount" --> "Members"
🛠  modules.36.storage.entries.4.ty.Plain.                "ReferendumIndex" --> "Vec<T::AccountId>"
🛠  modules.36.storage.entries.5.default.                        "00000000" --> "00"
🛠  modules.36.storage.entries.5.modifier.                        "Default" --> "Optional"
🛠  modules.36.storage.entries.5.name.                      "LowestUnbaked" --> "Prime"
🛠  modules.36.storage.entries.5.ty.Plain.                "ReferendumIndex" --> "T::AccountId"
🗑  modules.36.storage.entries.6.                      {"default":"00","documentation":[" Information concerning any given referendum.",""," TWOX-NOTE: SAFE as indexes are not under an attacker’s control."],"modifier":"Optional","name":"ReferendumInfoOf","ty":{"Map":{"hasher":"Twox64Concat","key":"ReferendumIndex","unused":false,"value":"ReferendumInfo<T::BlockNumber, T::Hash, BalanceOf<T>>"}}}
🗑  modules.36.storage.entries.7.                      {"default":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","documentation":[" All votes for a particular voter. We store the balance for the number of votes that we"," have recorded. The second item is the total amount of delegations, that will be added.",""," TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."],"modifier":"Default","name":"VotingOf","ty":{"Map":{"hasher":"Twox64Concat","key":"T::AccountId","unused":false,"value":"Voting<BalanceOf<T>, T::AccountId, T::BlockNumber>"}}}
🗑  modules.36.storage.entries.8.                      {"default":"00","documentation":[" Accounts for which there are locks in action which may be removed at some point in the"," future. The value is the block number at which the lock expires and may be removed.",""," TWOX-NOTE: OK ― `AccountId` is a secure hash."],"modifier":"Optional","name":"Locks","ty":{"Map":{"hasher":"Twox64Concat","key":"T::AccountId","unused":false,"value":"T::BlockNumber"}}}
🗑  modules.36.storage.entries.9.                      {"default":"00","documentation":[" True if the last referendum tabled was submitted externally. False if it was a public"," proposal."],"modifier":"Default","name":"LastTabledWasExternal","ty":{"Plain":"bool"}}
🗑  modules.36.storage.entries.10.                     {"default":"00","documentation":[" The referendum to be tabled whenever it would be valid to table an external proposal."," This happens when a referendum needs to be tabled and one of two conditions are met:"," - `LastTabledWasExternal` is `false`; or"," - `PublicProps` is empty."],"modifier":"Optional","name":"NextExternal","ty":{"Plain":"(T::Hash, VoteThreshold)"}}
🗑  modules.36.storage.entries.11.                     {"default":"00","documentation":[" A record of who vetoed what. Maps proposal hash to a possible existent block number"," (until when it may not be resubmitted) and who vetoed it."],"modifier":"Optional","name":"Blacklist","ty":{"Map":{"hasher":"Identity","key":"T::Hash","unused":false,"value":"(T::BlockNumber, Vec<T::AccountId>)"}}}
🗑  modules.36.storage.entries.12.                     {"default":"00","documentation":[" Record of all proposals that have been subject to emergency cancellation."],"modifier":"Default","name":"Cancellations","ty":{"Map":{"hasher":"Identity","key":"T::Hash","unused":false,"value":"bool"}}}
🗑  modules.36.storage.entries.13.                     {"default":"00","documentation":[" Storage version of the pallet.",""," New networks start with last version."],"modifier":"Optional","name":"StorageVersion","ty":{"Plain":"Releases"}}
🛠  modules.36.storage.prefix.                                  "Democracy" --> "Instance4Collective"
🛠  modules.37.calls.0.arguments.0.name.                           "values" --> "who"
🛠  modules.37.calls.0.arguments.0.ty.                 "Vec<(T::OracleKey, T::OracleValue)>" --> "T::AccountId"
🛠  modules.37.calls.0.name.                                  "feed_values" --> "add_member"
🛠  modules.37.errors.0.name.                                "NoPermission" --> "AlreadyMember"
🛠  modules.37.errors.1.name.                               "AlreadyFeeded" --> "NotMember"
🛠  modules.37.event.0.arguments.                      ["T::AccountId","Vec<(T::OracleKey, T::OracleValue)>"] --> ""
🛠  modules.37.event.0.name.                                  "NewFeedData" --> "MemberAdded"
🛠  modules.37.index.                                                    70 --> 68
🛠  modules.37.name.                                          "AcalaOracle" --> "TechnicalCommitteeMembership"
🛠  modules.37.storage.entries.0.modifier.                       "Optional" --> "Default"
🛠  modules.37.storage.entries.0.name.                          "RawValues" --> "Members"
🗑  modules.37.storage.entries.0.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"T::AccountId","key2":"T::OracleKey","key2_hasher":"Twox64Concat","value":"TimestampedValueOf<T, I>"}
🛠  modules.37.storage.entries.1.modifier.                        "Default" --> "Optional"
🛠  modules.37.storage.entries.1.name.                          "IsUpdated" --> "Prime"
🗑  modules.37.storage.entries.1.ty.Map.               {"hasher":"Twox64Concat","key":"<T as Config<I>>::OracleKey","unused":false,"value":"bool"}
🗑  modules.37.storage.entries.2.                      {"default":"00","documentation":[" Combined value, may not be up to date"],"modifier":"Optional","name":"Values","ty":{"Map":{"hasher":"Twox64Concat","key":"<T as Config<I>>::OracleKey","unused":false,"value":"TimestampedValueOf<T, I>"}}}
🗑  modules.37.storage.entries.3.                      {"default":"00","documentation":[" If an oracle operator has feed a value in this block"],"modifier":"Default","name":"HasDispatched","ty":{"Plain":"OrderedSet<T::AccountId, T::MaxHasDispatchedSize>"}}
🛠  modules.37.storage.prefix.                                "AcalaOracle" --> "Instance4Membership"
🛠  modules.38.calls.0.arguments.0.name.                              "who" --> "proposal_hash"
🛠  modules.38.calls.0.arguments.0.ty.                       "T::AccountId" --> "T::Hash"
🛠  modules.38.calls.0.name.                                   "add_member" --> "propose"
🛠  modules.38.calls.1.arguments.0.name.                              "who" --> "proposal"
🛠  modules.38.calls.1.arguments.0.ty.                       "T::AccountId" --> "Compact<PropIndex>"
🛠  modules.38.calls.1.name.                                "remove_member" --> "second"
🛠  modules.38.calls.2.arguments.0.name.                           "remove" --> "ref_index"
🛠  modules.38.calls.2.arguments.0.ty.                       "T::AccountId" --> "Compact<ReferendumIndex>"
🛠  modules.38.calls.2.arguments.1.name.                              "add" --> "vote"
🛠  modules.38.calls.2.arguments.1.ty.                       "T::AccountId" --> "AccountVote<BalanceOf<T>>"
🛠  modules.38.calls.2.name.                                  "swap_member" --> "vote"
🛠  modules.38.calls.3.arguments.0.name.                          "members" --> "ref_index"
🛠  modules.38.calls.3.arguments.0.ty.                  "Vec<T::AccountId>" --> "ReferendumIndex"
🛠  modules.38.calls.3.name.                                "reset_members" --> "emergency_cancel"
🛠  modules.38.calls.4.arguments.0.name.                              "new" --> "proposal_hash"
🛠  modules.38.calls.4.arguments.0.ty.                       "T::AccountId" --> "T::Hash"
🛠  modules.38.calls.4.name.                                   "change_key" --> "external_propose"
🛠  modules.38.calls.5.arguments.0.name.                              "who" --> "proposal_hash"
🛠  modules.38.calls.5.arguments.0.ty.                       "T::AccountId" --> "T::Hash"
🛠  modules.38.calls.5.name.                                    "set_prime" --> "external_propose_majority"
🛠  modules.38.calls.6.arguments.                                        "" --> [{"name":"proposal_hash","ty":"T::Hash"}]
🛠  modules.38.calls.6.name.                                  "clear_prime" --> "external_propose_default"
🛠  modules.38.constants.                                                "" --> [{"documentation":[" The minimum period of locking and the period between a proposal being approved and enacted.",""," It should generally be a little more than the unstake period to ensure that"," voting stakers have an opportunity to remove themselves from the system in the case where"," they are on the losing side of a vote."],"name":"EnactmentPeriod","ty":"T::BlockNumber","value":"201C0000"},{"documentation":[" How often (in blocks) new public referenda are launched."],"name":"LaunchPeriod","ty":"T::BlockNumber","value":"40380000"},{"documentation":[" How often (in blocks) to check for new votes."],"name":"VotingPeriod","ty":"T::BlockNumber","value":"40380000"},{"documentation":[" The minimum amount to be used as a deposit for a public referendum proposal."],"name":"MinimumDeposit","ty":"BalanceOf<T>","value":"0080C6A47E8D03000000000000000000"},{"documentation":[" Minimum voting period allowed for a fast-track referendum."],"name":"FastTrackVotingPeriod","ty":"T::BlockNumber","value":"84030000"},{"documentation":[" Period in blocks where an external proposal may not be re-submitted after being vetoed."],"name":"CooloffPeriod","ty":"T::BlockNumber","value":"E0C40000"},{"documentation":[" The amount of balance that must be deposited per byte of preimage stored."],"name":"PreimageByteDeposit","ty":"BalanceOf<T>","value":"00E1F505000000000000000000000000"},{"documentation":[" The maximum number of votes for an account.",""," Also used to compute weight, an overly big value can"," lead to extrinsic with very big weight: see `delegate` for instance."],"name":"MaxVotes","ty":"u32","value":"64000000"}]
🛠  modules.38.errors.0.name.                               "AlreadyMember" --> "ValueLow"
🛠  modules.38.errors.1.name.                                   "NotMember" --> "ProposalMissing"
🛠  modules.38.event.0.arguments.                                        "" --> ["PropIndex","Balance"]
🛠  modules.38.event.0.name.                                  "MemberAdded" --> "Proposed"
🛠  modules.38.event.1.arguments.                                        "" --> ["PropIndex","Balance","Vec<AccountId>"]
🛠  modules.38.event.1.name.                                "MemberRemoved" --> "Tabled"
🛠  modules.38.event.2.name.                               "MembersSwapped" --> "ExternalTabled"
🛠  modules.38.event.3.arguments.                                        "" --> ["ReferendumIndex","VoteThreshold"]
🛠  modules.38.event.3.name.                                 "MembersReset" --> "Started"
🛠  modules.38.event.4.arguments.                                        "" --> ["ReferendumIndex"]
🛠  modules.38.event.4.name.                                   "KeyChanged" --> "Passed"
🛠  modules.38.event.5.arguments.0.                    "sp_std::marker::PhantomData<(AccountId, Event)>" --> "ReferendumIndex"
🛠  modules.38.event.5.name.                                        "Dummy" --> "NotPassed"
🛠  modules.38.index.                                                    71 --> 69
🛠  modules.38.name.                                   "OperatorMembershipAcala" --> "Democracy"
🛠  modules.38.storage.entries.0.default.                              "00" --> "00000000"
🛠  modules.38.storage.entries.0.name.                            "Members" --> "PublicPropCount"
🛠  modules.38.storage.entries.0.ty.Plain.              "Vec<T::AccountId>" --> "PropIndex"
🛠  modules.38.storage.entries.1.modifier.                       "Optional" --> "Default"
🛠  modules.38.storage.entries.1.name.                              "Prime" --> "PublicProps"
🛠  modules.38.storage.entries.1.ty.Plain.                   "T::AccountId" --> "Vec<(PropIndex, T::Hash, T::AccountId)>"
🛠  modules.38.storage.prefix.                         "Instance5Membership" --> "Democracy"
🛠  modules.39.calls.0.arguments.0.name.                               "id" --> "values"
🛠  modules.39.calls.0.arguments.0.ty.                       "T::AuctionId" --> "Vec<(T::OracleKey, T::OracleValue)>"
🗑  modules.39.calls.0.arguments.1.                    {"name":"value","ty":"Compact<T::Balance>"}
🛠  modules.39.calls.0.name.                                          "bid" --> "feed_values"
🛠  modules.39.errors.0.name.                             "AuctionNotExist" --> "NoPermission"
🛠  modules.39.errors.1.name.                           "AuctionNotStarted" --> "AlreadyFeeded"
🗑  modules.39.errors.2.                               {"documentation":"","name":"BidNotAccepted"}
🗑  modules.39.errors.3.                               {"documentation":"","name":"InvalidBidPrice"}
🗑  modules.39.errors.4.                               {"documentation":"","name":"NoAvailableAuctionId"}
🛠  modules.39.event.0.arguments.0.                          "T::AuctionId" --> "T::AccountId"
🛠  modules.39.event.0.arguments.1.                          "T::AccountId" --> "Vec<(T::OracleKey, T::OracleValue)>"
🗑  modules.39.event.0.arguments.2.                            "T::Balance"
🛠  modules.39.event.0.name.                                          "Bid" --> "NewFeedData"
🛠  modules.39.index.                                                    80 --> 70
🛠  modules.39.name.                                              "Auction" --> "AcalaOracle"
🛠  modules.39.storage.entries.0.name.                           "Auctions" --> "RawValues"
🗑  modules.39.storage.entries.0.ty.Map.               {"hasher":"Twox64Concat","key":"T::AuctionId","unused":false,"value":"AuctionInfo<T::AccountId, T::Balance, T::BlockNumber>"}
🛠  modules.39.storage.entries.1.default.                        "00000000" --> "00"
🛠  modules.39.storage.entries.1.name.                      "AuctionsIndex" --> "IsUpdated"
🗑  modules.39.storage.entries.1.ty.Plain.                   "T::AuctionId"
🛠  modules.39.storage.entries.2.name.                     "AuctionEndTime" --> "Values"
🗑  modules.39.storage.entries.2.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"T::BlockNumber","key2":"T::AuctionId","key2_hasher":"Blake2_128Concat","value":"()"}
🛠  modules.39.storage.prefix.                                    "Auction" --> "AcalaOracle"
🛠  modules.40.calls.                                                    "" --> [{"arguments":[{"name":"who","ty":"T::AccountId"}],"documentation":[" Add a member `who` to the set.",""," May only be called from `T::AddOrigin`."],"name":"add_member"},{"arguments":[{"name":"who","ty":"T::AccountId"}],"documentation":[" Remove a member `who` from the set.",""," May only be called from `T::RemoveOrigin`."],"name":"remove_member"},{"arguments":[{"name":"remove","ty":"T::AccountId"},{"name":"add","ty":"T::AccountId"}],"documentation":[" Swap out one member `remove` for another `add`.",""," May only be called from `T::SwapOrigin`.",""," Prime membership is *not* passed from `remove` to `add`, if extant."],"name":"swap_member"},{"arguments":[{"name":"members","ty":"Vec<T::AccountId>"}],"documentation":[" Change the membership to a new set, disregarding the existing membership. Be nice and"," pass `members` pre-sorted.",""," May only be called from `T::ResetOrigin`."],"name":"reset_members"},{"arguments":[{"name":"new","ty":"T::AccountId"}],"documentation":[" Swap out the sending member for some other key `new`.",""," May only be called from `Signed` origin of a current member.",""," Prime membership is passed from the origin account to `new`, if extant."],"name":"change_key"},{"arguments":[{"name":"who","ty":"T::AccountId"}],"documentation":[" Set the prime member. Must be a current member.",""," May only be called from `T::PrimeOrigin`."],"name":"set_prime"},{"arguments":"","documentation":[" Remove the prime member if it exists.",""," May only be called from `T::PrimeOrigin`."],"name":"clear_prime"}]
🛠  modules.40.errors.                                                   "" --> [{"documentation":[" Already a member."],"name":"AlreadyMember"},{"documentation":[" Not a member."],"name":"NotMember"}]
🛠  modules.40.event.                                                  null --> [{"arguments":"","documentation":[" The given member was added; see the transaction for who."],"name":"MemberAdded"},{"arguments":"","documentation":[" The given member was removed; see the transaction for who."],"name":"MemberRemoved"},{"arguments":"","documentation":[" Two members were swapped; see the transaction for who."],"name":"MembersSwapped"},{"arguments":"","documentation":[" The membership was reset; see the transaction for who the new set is."],"name":"MembersReset"},{"arguments":"","documentation":[" One of the members' keys changed."],"name":"KeyChanged"},{"arguments":["sp_std::marker::PhantomData<(AccountId, Event)>"],"documentation":[" Phantom member, never used."],"name":"Dummy"}]
🛠  modules.40.index.                                                    81 --> 71
🛠  modules.40.name.                                              "Rewards" --> "OperatorMembershipAcala"
🛠  modules.40.storage.entries.0.default.                          "000000" --> "00"
🛠  modules.40.storage.entries.0.name.                              "Pools" --> "Members"
🗑  modules.40.storage.entries.0.ty.Map.               {"hasher":"Twox64Concat","key":"T::PoolId","unused":false,"value":"PoolInfo<T::Share, T::Balance>"}
🛠  modules.40.storage.entries.1.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00"
🛠  modules.40.storage.entries.1.modifier.                        "Default" --> "Optional"
🛠  modules.40.storage.entries.1.name.                 "ShareAndWithdrawnReward" --> "Prime"
🗑  modules.40.storage.entries.1.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"T::PoolId","key2":"T::AccountId","key2_hasher":"Twox64Concat","value":"(T::Share, T::Balance)"}
🛠  modules.40.storage.prefix.                                    "Rewards" --> "Instance5Membership"
🛠  modules.41.calls.                                                  null --> [{"arguments":[{"name":"id","ty":"T::AuctionId"},{"name":"value","ty":"Compact<T::Balance>"}],"documentation":[" Bid an auction.",""," The dispatch origin for this call must be `Signed` by the"," transactor."],"name":"bid"}]
🛠  modules.41.errors.0.name.                          "NoAvailableClassId" --> "AuctionNotExist"
🛠  modules.41.errors.1.name.                          "NoAvailableTokenId" --> "AuctionNotStarted"
🛠  modules.41.errors.2.name.                               "TokenNotFound" --> "BidNotAccepted"
🛠  modules.41.errors.3.name.                               "ClassNotFound" --> "InvalidBidPrice"
🛠  modules.41.errors.4.name.                                "NoPermission" --> "NoAvailableAuctionId"
🗑  modules.41.errors.5.                               {"documentation":[" Can not destroy class"," Total issuance is not 0"],"name":"CannotDestroyClass"}
🗑  modules.41.errors.6.                               {"documentation":[" Failed because the Maximum amount of metadata was exceeded"],"name":"MaxMetadataExceeded"}
🛠  modules.41.event.                                                  null --> [{"arguments":["T::AuctionId","T::AccountId","T::Balance"],"documentation":[" A bid is placed. [auction_id, bidder, bidding_amount]"],"name":"Bid"}]
🛠  modules.41.index.                                                    82 --> 80
🛠  modules.41.name.                                              "OrmlNFT" --> "Auction"
🛠  modules.41.storage.entries.0.default.                        "00000000" --> "00"
🛠  modules.41.storage.entries.0.modifier.                        "Default" --> "Optional"
🛠  modules.41.storage.entries.0.name.                        "NextClassId" --> "Auctions"
🗑  modules.41.storage.entries.0.ty.Plain.                     "T::ClassId"
🛠  modules.41.storage.entries.1.default.                "0000000000000000" --> "00000000"
🛠  modules.41.storage.entries.1.name.                        "NextTokenId" --> "AuctionsIndex"
🗑  modules.41.storage.entries.1.ty.Map.               {"hasher":"Twox64Concat","key":"T::ClassId","unused":false,"value":"T::TokenId"}
🛠  modules.41.storage.entries.2.name.                            "Classes" --> "AuctionEndTime"
🗑  modules.41.storage.entries.2.ty.Map.               {"hasher":"Twox64Concat","key":"T::ClassId","unused":false,"value":"ClassInfoOf<T>"}
🗑  modules.41.storage.entries.3.                      {"default":"00","documentation":[" Store token info.",""," Returns `None` if token info not set or removed."],"modifier":"Optional","name":"Tokens","ty":{"DoubleMap":{"hasher":"Twox64Concat","key1":"T::ClassId","key2":"T::TokenId","key2_hasher":"Twox64Concat","value":"TokenInfoOf<T>"}}}
🗑  modules.41.storage.entries.4.                      {"default":"","documentation":[" Token existence check by owner and class ID."],"modifier":"Default","name":"TokensByOwner","ty":{"DoubleMap":{"hasher":"Twox64Concat","key1":"T::AccountId","key2":"(T::ClassId, T::TokenId)","key2_hasher":"Twox64Concat","value":"()"}}}
🛠  modules.41.storage.prefix.                                    "OrmlNFT" --> "Auction"
🛠  modules.42.calls.                                  [{"arguments":[{"name":"currency_id","ty":"CurrencyId"}],"documentation":[" Lock the price and feed it to system.",""," The dispatch origin of this call must be `LockOrigin`.",""," - `currency_id`: currency type."],"name":"lock_price"},{"arguments":[{"name":"currency_id","ty":"CurrencyId"}],"documentation":[" Unlock the price and get the price from `PriceProvider` again",""," The dispatch origin of this call must be `LockOrigin`.",""," - `currency_id`: currency type."],"name":"unlock_price"}] --> ""
🛠  modules.42.constants.                              [{"documentation":[" The stable currency id, it should be AUSD in Acala."],"name":"GetStableCurrencyId","ty":"CurrencyId","value":"0081"},{"documentation":[" The fixed prices of stable currency, it should be 1 USD in Acala."],"name":"StableCurrencyFixedPrice","ty":"Price","value":"000064A7B3B6E00D0000000000000000"},{"documentation":[" The staking currency id, it should be DOT in Acala."],"name":"GetStakingCurrencyId","ty":"CurrencyId","value":"0082"},{"documentation":[" The liquid currency id, it should be LDOT in Acala."],"name":"GetLiquidCurrencyId","ty":"CurrencyId","value":"0083"}] --> ""
🛠  modules.42.event.                                  [{"arguments":["CurrencyId","Price"],"documentation":[" Lock price. \\[currency_id, locked_price\\]"],"name":"LockPrice"},{"arguments":["CurrencyId"],"documentation":[" Unlock price. \\[currency_id\\]"],"name":"UnlockPrice"}] --> null
🛠  modules.42.index.                                                    90 --> 81
🛠  modules.42.name.                                               "Prices" --> "Rewards"
🛠  modules.42.storage.entries.0.default.                              "00" --> "000000"
🛠  modules.42.storage.entries.0.modifier.                       "Optional" --> "Default"
🛠  modules.42.storage.entries.0.name.                        "LockedPrice" --> "Pools"
🛠  modules.42.storage.entries.0.ty.Map.key.                   "CurrencyId" --> "T::PoolId"
🛠  modules.42.storage.entries.0.ty.Map.value.                      "Price" --> "PoolInfo<T::Share, T::Balance>"
🛠  modules.42.storage.prefix.                                     "Prices" --> "Rewards"
🛠  modules.43.calls.                                  [{"arguments":[{"name":"path","ty":"Vec<CurrencyId>"},{"name":"supply_amount","ty":"Compact<Balance>"},{"name":"min_target_amount","ty":"Compact<Balance>"}],"documentation":[" Trading with DEX, swap with exact supply amount",""," - `path`: trading path."," - `supply_amount`: exact supply amount."," - `min_target_amount`: acceptable minimum target amount."],"name":"swap_with_exact_supply"},{"arguments":[{"name":"path","ty":"Vec<CurrencyId>"},{"name":"target_amount","ty":"Compact<Balance>"},{"name":"max_supply_amount","ty":"Compact<Balance>"}],"documentation":[" Trading with DEX, swap with exact target amount",""," - `path`: trading path."," - `target_amount`: exact target amount."," - `max_supply_amount`: acceptable maximum supply amount."],"name":"swap_with_exact_target"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"max_amount_a","ty":"Compact<Balance>"},{"name":"max_amount_b","ty":"Compact<Balance>"},{"name":"min_share_increment","ty":"Compact<Balance>"},{"name":"stake_increment_share","ty":"bool"}],"documentation":[" Add liquidity to Enabled trading pair."," - Add provision success will record the provision, issue shares to caller in the initial","   exchange rate when trading pair convert to Enabled.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `max_amount_a`: maximum amount of currency_id_a is allowed to inject to liquidity","   pool."," - `max_amount_b`: maximum amount of currency_id_b is allowed to inject to liquidity","   pool."," - `min_share_increment`: minimum acceptable share amount."," - `stake_increment_share`: indicates whether to stake increased dex share to earn","   incentives"],"name":"add_liquidity"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"amount_a","ty":"Compact<Balance>"},{"name":"amount_b","ty":"Compact<Balance>"}],"documentation":[" Add provision to Provisioning trading pair."," If succecced, will record the provision, but shares issuing will happen after the"," trading pair convert to Enabled status.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `amount_a`: provision amount for currency_id_a."," - `amount_b`: provision amount for currency_id_b."],"name":"add_provision"},{"arguments":[{"name":"owner","ty":"T::AccountId"},{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Claim dex share for founders who have participated in trading pair provision.",""," - `owner`: founder account."," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."],"name":"claim_dex_share"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"remove_share","ty":"Compact<Balance>"},{"name":"min_withdrawn_a","ty":"Compact<Balance>"},{"name":"min_withdrawn_b","ty":"Compact<Balance>"},{"name":"by_unstake","ty":"bool"}],"documentation":[" Remove liquidity from specific liquidity pool in the form of burning"," shares, and withdrawing currencies in trading pairs from liquidity"," pool in proportion, and withdraw liquidity incentive interest.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `remove_share`: liquidity amount to remove."," - `min_withdrawn_a`: minimum acceptable withrawn for currency_id_a."," - `min_withdrawn_b`: minimum acceptable withrawn for currency_id_b."," - `by_unstake`: this flag indicates whether to withdraw share which is on incentives."],"name":"remove_liquidity"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"min_contribution_a","ty":"Balance"},{"name":"min_contribution_b","ty":"Balance"},{"name":"target_provision_a","ty":"Balance"},{"name":"target_provision_b","ty":"Balance"},{"name":"not_before","ty":"T::BlockNumber"}],"documentation":[" List a new provisioning trading pair."],"name":"list_provisioning"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"min_contribution_a","ty":"Balance"},{"name":"min_contribution_b","ty":"Balance"},{"name":"target_provision_a","ty":"Balance"},{"name":"target_provision_b","ty":"Balance"},{"name":"not_before","ty":"T::BlockNumber"}],"documentation":[" List a new trading pair, trading pair will become Enabled status"," after provision process."],"name":"update_provisioning_parameters"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Enable a Provisioning trading pair if meet the condition."],"name":"end_provisioning"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Enable a trading pair"," if the status of trading pair is `Disabled`, or `Provisioning` without any accumulated"," provision, enable it directly."],"name":"enable_trading_pair"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Disable a `Enabled` trading pair."],"name":"disable_trading_pair"}] --> null
🛠  modules.43.constants.                              [{"documentation":[" Trading fee rate"," The first item of the tuple is the numerator of the fee rate, second"," item is the denominator, fee_rate = numerator / denominator,"," use (u32, u32) over `Rate` type to minimize internal division"," operation."],"name":"GetExchangeFee","ty":"(u32, u32)","value":"03000000E8030000"},{"documentation":[" The limit for length of trading path"],"name":"TradingPathLimit","ty":"u32","value":"03000000"},{"documentation":[" The DEX's module id, keep all assets in DEX."],"name":"PalletId","ty":"PalletId","value":"6163612F6465786D"}] --> ""
🛠  modules.43.errors.0.name.                              "AlreadyEnabled" --> "NoAvailableClassId"
🛠  modules.43.errors.1.name.                               "MustBeEnabled" --> "NoAvailableTokenId"
🛠  modules.43.errors.2.name.                          "MustBeProvisioning" --> "TokenNotFound"
🛠  modules.43.errors.3.name.                              "MustBeDisabled" --> "ClassNotFound"
🛠  modules.43.errors.4.name.                              "NotAllowedList" --> "NoPermission"
🛠  modules.43.errors.5.name.                          "InvalidContributionIncrement" --> "CannotDestroyClass"
🛠  modules.43.errors.6.name.                          "InvalidLiquidityIncrement" --> "MaxMetadataExceeded"
🗑  modules.43.errors.7.                               {"documentation":[" Invalid currency id"],"name":"InvalidCurrencyId"}
🗑  modules.43.errors.8.                               {"documentation":[" Invalid trading path length"],"name":"InvalidTradingPathLength"}
🗑  modules.43.errors.9.                               {"documentation":[" Target amount is less to min_target_amount"],"name":"InsufficientTargetAmount"}
🗑  modules.43.errors.10.                              {"documentation":[" Supply amount is more than max_supply_amount"],"name":"ExcessiveSupplyAmount"}
🗑  modules.43.errors.11.                              {"documentation":[" The swap will cause unacceptable price impact"],"name":"ExceedPriceImpactLimit"}
🗑  modules.43.errors.12.                              {"documentation":[" Liquidity is not enough"],"name":"InsufficientLiquidity"}
🗑  modules.43.errors.13.                              {"documentation":[" The supply amount is zero"],"name":"ZeroSupplyAmount"}
🗑  modules.43.errors.14.                              {"documentation":[" The target amount is zero"],"name":"ZeroTargetAmount"}
🗑  modules.43.errors.15.                              {"documentation":[" The share increment is unacceptable"],"name":"UnacceptableShareIncrement"}
🗑  modules.43.errors.16.                              {"documentation":[" The liquidity withdrawn is unacceptable"],"name":"UnacceptableLiquidityWithdrawn"}
🗑  modules.43.errors.17.                              {"documentation":[" The swap dosen't meet the invariant check"],"name":"InvariantCheckFailed"}
🗑  modules.43.errors.18.                              {"documentation":[" The Provision is unqualified to be converted to `Enabled`"],"name":"UnqualifiedProvision"}
🗑  modules.43.errors.19.                              {"documentation":[" Trading pair is still provisioning"],"name":"StillProvisioning"}
🛠  modules.43.event.                                  [{"arguments":["AccountId","CurrencyId","Balance","CurrencyId","Balance"],"documentation":[" add provision success \\[who, currency_id_0, contribution_0,"," currency_id_1, contribution_1\\]"],"name":"AddProvision"},{"arguments":["AccountId","CurrencyId","Balance","CurrencyId","Balance","Balance"],"documentation":[" Add liquidity success. \\[who, currency_id_0, pool_0_increment,"," currency_id_1, pool_1_increment, share_increment\\]"],"name":"AddLiquidity"},{"arguments":["AccountId","CurrencyId","Balance","CurrencyId","Balance","Balance"],"documentation":[" Remove liquidity from the trading pool success. \\[who,"," currency_id_0, pool_0_decrement, currency_id_1, pool_1_decrement,"," share_decrement\\]"],"name":"RemoveLiquidity"},{"arguments":["AccountId","Vec<CurrencyId>","Balance","Balance"],"documentation":[" Use supply currency to swap target currency. \\[trader, trading_path,"," supply_currency_amount, target_currency_amount\\]"],"name":"Swap"},{"arguments":["TradingPair"],"documentation":[" Enable trading pair. \\[trading_pair\\]"],"name":"EnableTradingPair"},{"arguments":["TradingPair"],"documentation":[" List provisioning trading pair. \\[trading_pair\\]"],"name":"ListProvisioning"},{"arguments":["TradingPair"],"documentation":[" Disable trading pair. \\[trading_pair\\]"],"name":"DisableTradingPair"},{"arguments":["TradingPair","Balance","Balance","Balance"],"documentation":[" Provisioning trading pair convert to Enabled. \\[trading_pair,"," pool_0_amount, pool_1_amount, total_share_amount\\]"],"name":"ProvisioningToEnabled"}] --> null
🛠  modules.43.index.                                                    91 --> 82
🛠  modules.43.name.                                                  "Dex" --> "OrmlNFT"
🛠  modules.43.storage.entries.0.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00000000"
🛠  modules.43.storage.entries.0.name.                      "LiquidityPool" --> "NextClassId"
🗑  modules.43.storage.entries.0.ty.Map.               {"hasher":"Twox64Concat","key":"TradingPair","unused":false,"value":"(Balance, Balance)"}
🛠  modules.43.storage.entries.1.default.                              "00" --> "0000000000000000"
🛠  modules.43.storage.entries.1.name.                 "TradingPairStatuses" --> "NextTokenId"
🛠  modules.43.storage.entries.1.ty.Map.key.                  "TradingPair" --> "T::ClassId"
🛠  modules.43.storage.entries.1.ty.Map.value.         "TradingPairStatus<Balance, T::BlockNumber>" --> "T::TokenId"
🛠  modules.43.storage.entries.2.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00"
🛠  modules.43.storage.entries.2.modifier.                        "Default" --> "Optional"
🛠  modules.43.storage.entries.2.name.                   "ProvisioningPool" --> "Classes"
🗑  modules.43.storage.entries.2.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"TradingPair","key2":"T::AccountId","key2_hasher":"Twox64Concat","value":"(Balance, Balance)"}
🛠  modules.43.storage.entries.3.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00"
🛠  modules.43.storage.entries.3.modifier.                        "Default" --> "Optional"
🛠  modules.43.storage.entries.3.name.                 "InitialShareExchangeRates" --> "Tokens"
🗑  modules.43.storage.entries.3.ty.Map.               {"hasher":"Twox64Concat","key":"TradingPair","unused":false,"value":"(ExchangeRate, ExchangeRate)"}
🛠  modules.43.storage.prefix.                                        "Dex" --> "OrmlNFT"
🛠  modules.44.calls.0.arguments.0.name.                               "id" --> "currency_id"
🛠  modules.44.calls.0.arguments.0.ty.                          "AuctionId" --> "CurrencyId"
🛠  modules.44.calls.0.name.                                       "cancel" --> "lock_price"
🛠  modules.44.constants.0.name.                       "MinimumIncrementSize" --> "GetStableCurrencyId"
🛠  modules.44.constants.0.ty.                                       "Rate" --> "CurrencyId"
🛠  modules.44.constants.0.value.                      "000082DFE40D47000000000000000000" --> "0081"
🛠  modules.44.constants.1.name.                       "AuctionTimeToClose" --> "StableCurrencyFixedPrice"
🛠  modules.44.constants.1.ty.                             "T::BlockNumber" --> "Price"
🛠  modules.44.constants.1.value.                                "4B000000" --> "000064A7B3B6E00D0000000000000000"
🛠  modules.44.constants.2.name.                       "AuctionDurationSoftCap" --> "GetStakingCurrencyId"
🛠  modules.44.constants.2.ty.                             "T::BlockNumber" --> "CurrencyId"
🛠  modules.44.constants.2.value.                                "58020000" --> "0082"
🛠  modules.44.constants.3.name.                       "GetStableCurrencyId" --> "GetLiquidCurrencyId"
🛠  modules.44.constants.3.value.                                    "0081" --> "0083"
🗑  modules.44.constants.4.                            {"documentation":[" A configuration for base priority of unsigned transactions.",""," This is exposed so that it can be tuned for particular runtime, when"," multiple modules send unsigned transactions."],"name":"UnsignedPriority","ty":"TransactionPriority","value":"FEFFFFFFFFFFFFFF"}
🛠  modules.44.errors.                                 [{"documentation":[" The auction dose not exist"],"name":"AuctionNotExists"},{"documentation":[" The collateral auction is in reverse stage now"],"name":"InReverseStage"},{"documentation":[" Feed price is invalid"],"name":"InvalidFeedPrice"},{"documentation":[" Must after system shutdown"],"name":"MustAfterShutdown"},{"documentation":[" Bid price is invalid"],"name":"InvalidBidPrice"},{"documentation":[" Invalid input amount"],"name":"InvalidAmount"}] --> ""
🛠  modules.44.event.0.arguments.0.                             "AuctionId" --> "CurrencyId"
🛠  modules.44.event.0.arguments.1.                            "CurrencyId" --> "Price"
🗑  modules.44.event.0.arguments.2.                               "Balance"
🗑  modules.44.event.0.arguments.3.                               "Balance"
🛠  modules.44.event.0.name.                           "NewCollateralAuction" --> "LockPrice"
🛠  modules.44.event.1.arguments.0.                             "AuctionId" --> "CurrencyId"
🛠  modules.44.event.1.name.                                "CancelAuction" --> "UnlockPrice"
🗑  modules.44.event.2.                                {"arguments":["AuctionId","CurrencyId","Balance","AccountId","Balance"],"documentation":[" Collateral auction dealt. \\[auction_id, collateral_type,"," collateral_amount, winner, payment_amount\\]"],"name":"CollateralAuctionDealt"}
🗑  modules.44.event.3.                                {"arguments":["AuctionId","CurrencyId","Balance","Balance"],"documentation":[" Dex take collateral auction. \\[auction_id, collateral_type,"," collateral_amount, turnover\\]"],"name":"DEXTakeCollateralAuction"}
🛠  modules.44.index.                                                   100 --> 90
🛠  modules.44.name.                                       "AuctionManager" --> "Prices"
🛠  modules.44.storage.entries.0.name.                 "CollateralAuctions" --> "LockedPrice"
🛠  modules.44.storage.entries.0.ty.Map.key.                    "AuctionId" --> "CurrencyId"
🛠  modules.44.storage.entries.0.ty.Map.value.         "CollateralAuctionItem<T::AccountId, T::BlockNumber>" --> "Price"
🗑  modules.44.storage.entries.1.                      {"default":"00000000000000000000000000000000","documentation":[" Record of the total collateral amount of all active collateral auctions"," under specific collateral type CollateralType -> TotalAmount",""," TotalCollateralInAuction: map CurrencyId => Balance"],"modifier":"Default","name":"TotalCollateralInAuction","ty":{"Map":{"hasher":"Twox64Concat","key":"CurrencyId","unused":false,"value":"Balance"}}}
🗑  modules.44.storage.entries.2.                      {"default":"00000000000000000000000000000000","documentation":[" Record of total target sales of all active collateral auctions",""," TotalTargetInAuction: Balance"],"modifier":"Default","name":"TotalTargetInAuction","ty":{"Plain":"Balance"}}
🛠  modules.44.storage.prefix.                             "AuctionManager" --> "Prices"
🛠  modules.45.calls.                                                    "" --> [{"arguments":[{"name":"path","ty":"Vec<CurrencyId>"},{"name":"supply_amount","ty":"Compact<Balance>"},{"name":"min_target_amount","ty":"Compact<Balance>"}],"documentation":[" Trading with DEX, swap with exact supply amount",""," - `path`: trading path."," - `supply_amount`: exact supply amount."," - `min_target_amount`: acceptable minimum target amount."],"name":"swap_with_exact_supply"},{"arguments":[{"name":"path","ty":"Vec<CurrencyId>"},{"name":"target_amount","ty":"Compact<Balance>"},{"name":"max_supply_amount","ty":"Compact<Balance>"}],"documentation":[" Trading with DEX, swap with exact target amount",""," - `path`: trading path."," - `target_amount`: exact target amount."," - `max_supply_amount`: acceptable maximum supply amount."],"name":"swap_with_exact_target"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"max_amount_a","ty":"Compact<Balance>"},{"name":"max_amount_b","ty":"Compact<Balance>"},{"name":"min_share_increment","ty":"Compact<Balance>"},{"name":"stake_increment_share","ty":"bool"}],"documentation":[" Add liquidity to Enabled trading pair."," - Add provision success will record the provision, issue shares to caller in the initial","   exchange rate when trading pair convert to Enabled.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `max_amount_a`: maximum amount of currency_id_a is allowed to inject to liquidity","   pool."," - `max_amount_b`: maximum amount of currency_id_b is allowed to inject to liquidity","   pool."," - `min_share_increment`: minimum acceptable share amount."," - `stake_increment_share`: indicates whether to stake increased dex share to earn","   incentives"],"name":"add_liquidity"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"amount_a","ty":"Compact<Balance>"},{"name":"amount_b","ty":"Compact<Balance>"}],"documentation":[" Add provision to Provisioning trading pair."," If succecced, will record the provision, but shares issuing will happen after the"," trading pair convert to Enabled status.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `amount_a`: provision amount for currency_id_a."," - `amount_b`: provision amount for currency_id_b."],"name":"add_provision"},{"arguments":[{"name":"owner","ty":"T::AccountId"},{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Claim dex share for founders who have participated in trading pair provision.",""," - `owner`: founder account."," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."],"name":"claim_dex_share"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"remove_share","ty":"Compact<Balance>"},{"name":"min_withdrawn_a","ty":"Compact<Balance>"},{"name":"min_withdrawn_b","ty":"Compact<Balance>"},{"name":"by_unstake","ty":"bool"}],"documentation":[" Remove liquidity from specific liquidity pool in the form of burning"," shares, and withdrawing currencies in trading pairs from liquidity"," pool in proportion, and withdraw liquidity incentive interest.",""," - `currency_id_a`: currency id A."," - `currency_id_b`: currency id B."," - `remove_share`: liquidity amount to remove."," - `min_withdrawn_a`: minimum acceptable withrawn for currency_id_a."," - `min_withdrawn_b`: minimum acceptable withrawn for currency_id_b."," - `by_unstake`: this flag indicates whether to withdraw share which is on incentives."],"name":"remove_liquidity"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"min_contribution_a","ty":"Balance"},{"name":"min_contribution_b","ty":"Balance"},{"name":"target_provision_a","ty":"Balance"},{"name":"target_provision_b","ty":"Balance"},{"name":"not_before","ty":"T::BlockNumber"}],"documentation":[" List a new provisioning trading pair."],"name":"list_provisioning"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"},{"name":"min_contribution_a","ty":"Balance"},{"name":"min_contribution_b","ty":"Balance"},{"name":"target_provision_a","ty":"Balance"},{"name":"target_provision_b","ty":"Balance"},{"name":"not_before","ty":"T::BlockNumber"}],"documentation":[" List a new trading pair, trading pair will become Enabled status"," after provision process."],"name":"update_provisioning_parameters"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Enable a Provisioning trading pair if meet the condition."],"name":"end_provisioning"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Enable a trading pair"," if the status of trading pair is `Disabled`, or `Provisioning` without any accumulated"," provision, enable it directly."],"name":"enable_trading_pair"},{"arguments":[{"name":"currency_id_a","ty":"CurrencyId"},{"name":"currency_id_b","ty":"CurrencyId"}],"documentation":[" Disable a `Enabled` trading pair."],"name":"disable_trading_pair"}]
🛠  modules.45.constants.0.name.                                 "PalletId" --> "GetExchangeFee"
🛠  modules.45.constants.0.ty.                                   "PalletId" --> "(u32, u32)"
🛠  modules.45.constants.0.value.                        "6163612F6C6F616E" --> "03000000E8030000"
🛠  modules.45.errors.0.name.                          "AmountConvertFailed" --> "AlreadyEnabled"
🛠  modules.45.event.0.arguments.2.                                "Amount" --> "Balance"
🛠  modules.45.event.0.arguments.3.                                "Amount" --> "CurrencyId"
🛠  modules.45.event.0.name.                              "PositionUpdated" --> "AddProvision"
🛠  modules.45.event.1.arguments.3.                               "Balance" --> "CurrencyId"
🛠  modules.45.event.1.name.                           "ConfiscateCollateralAndDebit" --> "AddLiquidity"
🛠  modules.45.event.2.arguments.1.                             "AccountId" --> "CurrencyId"
🛠  modules.45.event.2.arguments.2.                            "CurrencyId" --> "Balance"
🛠  modules.45.event.2.name.                                 "TransferLoan" --> "RemoveLiquidity"
🛠  modules.45.index.                                                   101 --> 91
🛠  modules.45.name.                                                "Loans" --> "Dex"
🛠  modules.45.storage.entries.0.name.                          "Positions" --> "LiquidityPool"
🗑  modules.45.storage.entries.0.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"CurrencyId","key2":"T::AccountId","key2_hasher":"Twox64Concat","value":"Position"}
🛠  modules.45.storage.entries.1.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00"
🛠  modules.45.storage.entries.1.name.                     "TotalPositions" --> "TradingPairStatuses"
🛠  modules.45.storage.entries.1.ty.Map.key.                   "CurrencyId" --> "TradingPair"
🛠  modules.45.storage.entries.1.ty.Map.value.                   "Position" --> "TradingPairStatus<Balance, T::BlockNumber>"
🛠  modules.45.storage.prefix.                                      "Loans" --> "Dex"
🛠  modules.46.calls.0.arguments.0.name.                      "currency_id" --> "id"
🛠  modules.46.calls.0.arguments.0.ty.                         "CurrencyId" --> "AuctionId"
🗑  modules.46.calls.0.arguments.1.                    {"name":"collateral_adjustment","ty":"Amount"}
🗑  modules.46.calls.0.arguments.2.                    {"name":"debit_adjustment","ty":"Amount"}
🛠  modules.46.calls.0.name.                                  "adjust_loan" --> "cancel"
🗑  modules.46.calls.1.                                {"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"maybe_path","ty":"Option<Vec<CurrencyId>>"}],"documentation":"","name":"close_loan_has_debit_by_dex"}
🗑  modules.46.calls.2.                                {"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"from","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Transfer the whole CDP of `from` under `currency_id` to caller's CDP"," under the same `currency_id`, caller must have the authorization of"," `from` for the specific collateral type",""," - `currency_id`: collateral currency id."," - `from`: authorizer account"],"name":"transfer_loan_from"}
🗑  modules.46.calls.3.                                {"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"to","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Authorize `to` to manipulate the loan under `currency_id`",""," - `currency_id`: collateral currency id."," - `to`: authorizee account"],"name":"authorize"}
🗑  modules.46.calls.4.                                {"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"to","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Cancel the authorization for `to` under `currency_id`",""," - `currency_id`: collateral currency id."," - `to`: authorizee account"],"name":"unauthorize"}
🗑  modules.46.calls.5.                                {"arguments":"","documentation":[" Cancel all authorization of caller"],"name":"unauthorize_all"}
🛠  modules.46.constants.0.name.                       "DepositPerAuthorization" --> "MinimumIncrementSize"
🛠  modules.46.constants.0.ty.                                    "Balance" --> "Rate"
🛠  modules.46.constants.0.value.                      "0060C226D30100000000000000000000" --> "000082DFE40D47000000000000000000"
🛠  modules.46.errors.0.name.                                "NoPermission" --> "AuctionNotExists"
🛠  modules.46.errors.1.name.                             "AlreadyShutdown" --> "InReverseStage"
🛠  modules.46.errors.2.name.                          "AuthorizationNotExists" --> "InvalidFeedPrice"
🛠  modules.46.errors.3.name.                           "AlreadyAuthorized" --> "MustAfterShutdown"
🛠  modules.46.event.0.arguments.0.                             "AccountId" --> "AuctionId"
🛠  modules.46.event.0.arguments.1.                             "AccountId" --> "CurrencyId"
🛠  modules.46.event.0.arguments.2.                            "CurrencyId" --> "Balance"
🛠  modules.46.event.0.name.                                "Authorization" --> "NewCollateralAuction"
🛠  modules.46.event.1.arguments.0.                             "AccountId" --> "AuctionId"
🗑  modules.46.event.1.arguments.1.                             "AccountId"
🗑  modules.46.event.1.arguments.2.                            "CurrencyId"
🛠  modules.46.event.1.name.                              "UnAuthorization" --> "CancelAuction"
🛠  modules.46.event.2.arguments.0.                             "AccountId" --> "AuctionId"
🛠  modules.46.event.2.name.                           "UnAuthorizationAll" --> "CollateralAuctionDealt"
🛠  modules.46.index.                                                   102 --> 100
🛠  modules.46.name.                                               "Honzon" --> "AuctionManager"
🛠  modules.46.storage.entries.0.name.                      "Authorization" --> "CollateralAuctions"
🗑  modules.46.storage.entries.0.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"T::AccountId","key2":"(CurrencyId, T::AccountId)","key2_hasher":"Blake2_128Concat","value":"Balance"}
🛠  modules.46.storage.prefix.                                     "Honzon" --> "AuctionManager"
🛠  modules.47.calls.                                  [{"arguments":[{"name":"amount","ty":"Balance"}],"documentation":"","name":"extract_surplus_to_treasury"},{"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"amount","ty":"Balance"},{"name":"target","ty":"Balance"},{"name":"splited","ty":"bool"}],"documentation":"","name":"auction_collateral"},{"arguments":[{"name":"currency_id","ty":"CurrencyId"},{"name":"size","ty":"Balance"}],"documentation":[" Update parameters related to collateral auction under specific"," collateral type",""," The dispatch origin of this call must be `UpdateOrigin`.",""," - `currency_id`: collateral type"," - `amount`: expected size of per lot collateral auction"],"name":"set_expected_collateral_auction_size"}] --> ""
🛠  modules.47.constants.0.name.                       "GetStableCurrencyId" --> "PalletId"
🛠  modules.47.constants.0.ty.                                 "CurrencyId" --> "PalletId"
🛠  modules.47.constants.0.value.                                    "0081" --> "6163612F6C6F616E"
🗑  modules.47.constants.1.                            {"documentation":[" The cap of lots number when create collateral auction on a"," liquidation or to create debit/surplus auction on block end."," If set to 0, does not work."],"name":"MaxAuctionsCount","ty":"u32","value":"64000000"}
🗑  modules.47.constants.2.                            {"documentation":"","name":"TreasuryAccount","ty":"T::AccountId","value":"6D6F646C6163612F687A74720000000000000000000000000000000000000000"}
🗑  modules.47.constants.3.                            {"documentation":[" The CDP treasury's module id, keep surplus and collateral assets"," from liquidation."],"name":"PalletId","ty":"PalletId","value":"6163612F63647074"}
🛠  modules.47.errors.0.name.                          "CollateralNotEnough" --> "AmountConvertFailed"
🗑  modules.47.errors.1.                               {"documentation":[" The surplus pool of CDP treasury is not enough"],"name":"SurplusPoolNotEnough"}
🗑  modules.47.errors.2.                               {"documentation":[" The debit pool of CDP treasury is not enough"],"name":"DebitPoolNotEnough"}
🗑  modules.47.errors.3.                               {"documentation":[" The swap path is invalid"],"name":"InvalidSwapPath"}
🛠  modules.47.event.0.arguments.0.                            "CurrencyId" --> "AccountId"
🛠  modules.47.event.0.arguments.1.                               "Balance" --> "CurrencyId"
🛠  modules.47.event.0.name.                           "ExpectedCollateralAuctionSizeUpdated" --> "PositionUpdated"
🛠  modules.47.index.                                                   103 --> 101
🛠  modules.47.name.                                          "CdpTreasury" --> "Loans"
🛠  modules.47.storage.entries.0.default.              "00000000000000000000000000000000" --> "0000000000000000000000000000000000000000000000000000000000000000"
🛠  modules.47.storage.entries.0.name.                 "ExpectedCollateralAuctionSize" --> "Positions"
🗑  modules.47.storage.entries.0.ty.Map.               {"hasher":"Twox64Concat","key":"CurrencyId","unused":false,"value":"Balance"}
🛠  modules.47.storage.entries.1.default.              "00000000000000000000000000000000" --> "0000000000000000000000000000000000000000000000000000000000000000"
🛠  modules.47.storage.entries.1.name.                          "DebitPool" --> "TotalPositions"
🗑  modules.47.storage.entries.1.ty.Plain.                        "Balance"
🛠  modules.47.storage.prefix.                                "CdpTreasury" --> "Loans"
🛠  modules.48.calls.0.arguments.1.name.                              "who" --> "collateral_adjustment"
🛠  modules.48.calls.0.arguments.1.ty.                 "<T::Lookup as StaticLookup>::Source" --> "Amount"
🛠  modules.48.calls.0.name.                                    "liquidate" --> "adjust_loan"
🛠  modules.48.calls.1.arguments.1.name.                              "who" --> "maybe_path"
🛠  modules.48.calls.1.arguments.1.ty.                 "<T::Lookup as StaticLookup>::Source" --> "Option<Vec<CurrencyId>>"
🛠  modules.48.calls.1.name.                                       "settle" --> "close_loan_has_debit_by_dex"
🛠  modules.48.calls.2.arguments.0.name.               "global_interest_rate_per_sec" --> "currency_id"
🛠  modules.48.calls.2.arguments.0.ty.                               "Rate" --> "CurrencyId"
🛠  modules.48.calls.2.name.                            "set_global_params" --> "transfer_loan_from"
🛠  modules.48.calls.3.arguments.1.name.               "interest_rate_per_sec" --> "to"
🛠  modules.48.calls.3.arguments.1.ty.                   "ChangeOptionRate" --> "<T::Lookup as StaticLookup>::Source"
🗑  modules.48.calls.3.arguments.2.                    {"name":"liquidation_ratio","ty":"ChangeOptionRatio"}
🗑  modules.48.calls.3.arguments.3.                    {"name":"liquidation_penalty","ty":"ChangeOptionRate"}
🗑  modules.48.calls.3.arguments.4.                    {"name":"required_collateral_ratio","ty":"ChangeOptionRatio"}
🗑  modules.48.calls.3.arguments.5.                    {"name":"maximum_total_debit_value","ty":"ChangeBalance"}
🛠  modules.48.calls.3.name.                           "set_collateral_params" --> "authorize"
🛠  modules.48.constants.0.name.                       "CollateralCurrencyIds" --> "DepositPerAuthorization"
🛠  modules.48.constants.0.ty.                            "Vec<CurrencyId>" --> "Balance"
🛠  modules.48.constants.0.value.                              "0800820083" --> "0060C226D30100000000000000000000"
🗑  modules.48.constants.1.                            {"documentation":[" The default liquidation ratio for all collateral types of CDP"],"name":"DefaultLiquidationRatio","ty":"Ratio","value":"000002C01C870A120000000000000000"}
🗑  modules.48.constants.2.                            {"documentation":[" The default debit exchange rate for all collateral types"],"name":"DefaultDebitExchangeRate","ty":"ExchangeRate","value":"00008A5D784563010000000000000000"}
🗑  modules.48.constants.3.                            {"documentation":[" The default liquidation penalty rate when liquidate unsafe CDP"],"name":"DefaultLiquidationPenalty","ty":"Rate","value":"0000087E93371C010000000000000000"}
🗑  modules.48.constants.4.                            {"documentation":[" The minimum debit value to avoid debit dust"],"name":"MinimumDebitValue","ty":"Balance","value":"0010A5D4E80000000000000000000000"}
🗑  modules.48.constants.5.                            {"documentation":[" Stablecoin currency id"],"name":"GetStableCurrencyId","ty":"CurrencyId","value":"0081"}
🗑  modules.48.constants.6.                            {"documentation":[" The max slippage allowed when liquidate an unsafe CDP by swap with"," DEX"],"name":"MaxSlippageSwapWithDEX","ty":"Ratio","value":"00004F8C34E814020000000000000000"}
🗑  modules.48.constants.7.                            {"documentation":[" A configuration for base priority of unsigned transactions.",""," This is exposed so that it can be tuned for particular runtime, when"," multiple modules send unsigned transactions."],"name":"UnsignedPriority","ty":"TransactionPriority","value":"FFFFFFFFFFFFFFFF"}
🛠  modules.48.errors.0.name.                          "ExceedDebitValueHardCap" --> "NoPermission"
🛠  modules.48.errors.1.name.                          "BelowRequiredCollateralRatio" --> "AlreadyShutdown"
🛠  modules.48.errors.2.name.                          "BelowLiquidationRatio" --> "AuthorizationNotExists"
🛠  modules.48.errors.3.name.                                "MustBeUnsafe" --> "AlreadyAuthorized"
🗑  modules.48.errors.4.                               {"documentation":[" The CDP already is unsafe"],"name":"IsUnsafe"}
🗑  modules.48.errors.5.                               {"documentation":[" Invalid collateral type"],"name":"InvalidCollateralType"}
🗑  modules.48.errors.6.                               {"documentation":[" Remain debit value in CDP below the dust amount"],"name":"RemainDebitValueTooSmall"}
🗑  modules.48.errors.7.                               {"documentation":[" Feed price is invalid"],"name":"InvalidFeedPrice"}
🗑  modules.48.errors.8.                               {"documentation":[" No debit value in CDP so that it cannot be settled"],"name":"NoDebitValue"}
🗑  modules.48.errors.9.                               {"documentation":[" System has already been shutdown"],"name":"AlreadyShutdown"}
🗑  modules.48.errors.10.                              {"documentation":[" Must after system shutdown"],"name":"MustAfterShutdown"}
🛠  modules.48.event.0.arguments.0.                            "CurrencyId" --> "AccountId"
🛠  modules.48.event.0.arguments.2.                               "Balance" --> "CurrencyId"
🗑  modules.48.event.0.arguments.3.                               "Balance"
🗑  modules.48.event.0.arguments.4.                    "LiquidationStrategy"
🛠  modules.48.event.0.name.                           "LiquidateUnsafeCDP" --> "Authorization"
🛠  modules.48.event.1.arguments.0.                            "CurrencyId" --> "AccountId"
🛠  modules.48.event.1.name.                             "SettleCDPInDebit" --> "UnAuthorization"
🛠  modules.48.event.2.arguments.0.                            "CurrencyId" --> "AccountId"
🗑  modules.48.event.2.arguments.1.                             "AccountId"
🗑  modules.48.event.2.arguments.2.                               "Balance"
🗑  modules.48.event.2.arguments.3.                               "Balance"
🗑  modules.48.event.2.arguments.4.                               "Balance"
🛠  modules.48.event.2.name.                           "CloseCDPInDebitByDEX" --> "UnAuthorizationAll"
🗑  modules.48.event.3.                                {"arguments":["CurrencyId","OptionRate"],"documentation":[" The interest rate per sec for specific collateral type updated."," \\[collateral_type, new_interest_rate_per_sec\\]"],"name":"InterestRatePerSec"}
🗑  modules.48.event.4.                                {"arguments":["CurrencyId","OptionRatio"],"documentation":[" The liquidation fee for specific collateral type updated."," \\[collateral_type, new_liquidation_ratio\\]"],"name":"LiquidationRatioUpdated"}
🗑  modules.48.event.5.                                {"arguments":["CurrencyId","OptionRate"],"documentation":[" The liquidation penalty rate for specific collateral type updated."," \\[collateral_type, new_liquidation_panelty\\]"],"name":"LiquidationPenaltyUpdated"}
🗑  modules.48.event.6.                                {"arguments":["CurrencyId","OptionRatio"],"documentation":[" The required collateral penalty rate for specific collateral type"," updated. \\[collateral_type, new_required_collateral_ratio\\]"],"name":"RequiredCollateralRatioUpdated"}
🗑  modules.48.event.7.                                {"arguments":["CurrencyId","Balance"],"documentation":[" The hard cap of total debit value for specific collateral type"," updated. \\[collateral_type, new_total_debit_value\\]"],"name":"MaximumTotalDebitValueUpdated"}
🗑  modules.48.event.8.                                {"arguments":["Rate"],"documentation":[" The global interest rate per sec for all types of collateral"," updated. \\[new_global_interest_rate_per_sec\\]"],"name":"GlobalInterestRatePerSecUpdated"}
🛠  modules.48.index.                                                   104 --> 102
🛠  modules.48.name.                                            "CdpEngine" --> "Honzon"
🛠  modules.48.storage.entries.0.name.                  "DebitExchangeRate" --> "Authorization"
🗑  modules.48.storage.entries.0.ty.Map.               {"hasher":"Twox64Concat","key":"CurrencyId","unused":false,"value":"ExchangeRate"}
🗑  modules.48.storage.entries.1.                      {"default":"00000000000000000000000000000000","documentation":[" Global interest rate per sec for all types of collateral",""," GlobalInterestRatePerSec: Rate"],"modifier":"Default","name":"GlobalInterestRatePerSec","ty":{"Plain":"Rate"}}
🗑  modules.48.storage.entries.2.                      {"default":"0000000000000000000000000000000000000000","documentation":[" Mapping from collateral type to its risk management params",""," CollateralParams: CurrencyId => RiskManagementParams"],"modifier":"Default","name":"CollateralParams","ty":{"Map":{"hasher":"Twox64Concat","key":"CurrencyId","unused":false,"value":"RiskManagementParams"}}}
🗑  modules.48.storage.entries.3.                      {"default":"0000000000000000","documentation":[" Timestamp in seconds of the last interest accumulation",""," LastAccumulationSecs: u64"],"modifier":"Default","name":"LastAccumulationSecs","ty":{"Plain":"u64"}}
🛠  modules.48.storage.prefix.                                  "CdpEngine" --> "Honzon"
🛠  modules.49.calls.0.arguments.                                        "" --> [{"name":"amount","ty":"Balance"}]
🛠  modules.49.calls.0.name.                           "emergency_shutdown" --> "extract_surplus_to_treasury"
🛠  modules.49.calls.1.arguments.                                        "" --> [{"name":"currency_id","ty":"CurrencyId"},{"name":"amount","ty":"Balance"},{"name":"target","ty":"Balance"},{"name":"splited","ty":"bool"}]
🛠  modules.49.calls.1.name.                           "open_collateral_refund" --> "auction_collateral"
🛠  modules.49.calls.2.arguments.0.name.                           "amount" --> "currency_id"
🛠  modules.49.calls.2.arguments.0.ty.                   "Compact<Balance>" --> "CurrencyId"
🛠  modules.49.calls.2.name.                           "refund_collaterals" --> "set_expected_collateral_auction_size"
🛠  modules.49.constants.0.name.                       "CollateralCurrencyIds" --> "GetStableCurrencyId"
🛠  modules.49.constants.0.ty.                            "Vec<CurrencyId>" --> "CurrencyId"
🛠  modules.49.constants.0.value.                              "0800820083" --> "0081"
🛠  modules.49.errors.0.name.                             "AlreadyShutdown" --> "CollateralNotEnough"
🛠  modules.49.errors.1.name.                           "MustAfterShutdown" --> "SurplusPoolNotEnough"
🛠  modules.49.errors.2.name.                                "CanNotRefund" --> "DebitPoolNotEnough"
🛠  modules.49.errors.3.name.                          "ExistPotentialSurplus" --> "InvalidSwapPath"
🗑  modules.49.errors.4.                               {"documentation":[" Exist unhandled debit, means settlement has not been completed"],"name":"ExistUnhandledDebit"}
🛠  modules.49.event.0.arguments.0.                           "BlockNumber" --> "CurrencyId"
🛠  modules.49.event.0.name.                                     "Shutdown" --> "ExpectedCollateralAuctionSizeUpdated"
🗑  modules.49.event.1.                                {"arguments":["BlockNumber"],"documentation":[" The final redemption opened. \\[block_number\\]"],"name":"OpenRefund"}
🗑  modules.49.event.2.                                {"arguments":["AccountId","Balance","Vec<(CurrencyId, Balance)>"],"documentation":[" Refund info. \\[caller, stable_coin_amount, refund_list\\]"],"name":"Refund"}
🛠  modules.49.index.                                                   105 --> 103
🛠  modules.49.name.                                    "EmergencyShutdown" --> "CdpTreasury"
🛠  modules.49.storage.entries.0.default.                              "00" --> "00000000000000000000000000000000"
🛠  modules.49.storage.entries.0.name.                         "IsShutdown" --> "ExpectedCollateralAuctionSize"
🗑  modules.49.storage.entries.0.ty.Plain.                           "bool"
🛠  modules.49.storage.entries.1.default.                              "00" --> "00000000000000000000000000000000"
🛠  modules.49.storage.entries.1.name.                          "CanRefund" --> "DebitPool"
🛠  modules.49.storage.entries.1.ty.Plain.                           "bool" --> "Balance"
🛠  modules.49.storage.prefix.                          "EmergencyShutdown" --> "CdpTreasury"
🛠  modules.50.calls.0.arguments.0.name.                   "lp_currency_id" --> "currency_id"
🛠  modules.50.calls.0.arguments.1.name.                           "amount" --> "who"
🛠  modules.50.calls.0.arguments.1.ty.                            "Balance" --> "<T::Lookup as StaticLookup>::Source"
🛠  modules.50.calls.0.name.                            "deposit_dex_share" --> "liquidate"
🛠  modules.50.calls.1.arguments.0.name.                   "lp_currency_id" --> "currency_id"
🛠  modules.50.calls.1.arguments.1.name.                           "amount" --> "who"
🛠  modules.50.calls.1.arguments.1.ty.                            "Balance" --> "<T::Lookup as StaticLookup>::Source"
🛠  modules.50.calls.1.name.                           "withdraw_dex_share" --> "settle"
🛠  modules.50.calls.2.arguments.0.name.                          "pool_id" --> "global_interest_rate_per_sec"
🛠  modules.50.calls.2.arguments.0.ty.                 "PoolId<T::RelaychainAccountId>" --> "Rate"
🛠  modules.50.calls.2.name.                                "claim_rewards" --> "set_global_params"
🛠  modules.50.calls.3.arguments.0.name.                          "updates" --> "currency_id"
🛠  modules.50.calls.3.arguments.0.ty.                 "Vec<(PoolId<T::RelaychainAccountId>, Balance)>" --> "CurrencyId"
🛠  modules.50.calls.3.name.                           "update_incentive_rewards" --> "set_collateral_params"
🗑  modules.50.calls.4.                                {"arguments":[{"name":"updates","ty":"Vec<(PoolId<T::RelaychainAccountId>, Rate)>"}],"documentation":"","name":"update_dex_saving_rewards"}
🗑  modules.50.calls.5.                                {"arguments":[{"name":"updates","ty":"Vec<(PoolId<T::RelaychainAccountId>, Rate)>"}],"documentation":"","name":"update_payout_deduction_rates"}
🗑  modules.50.calls.6.                                {"arguments":[{"name":"pool_id","ty":"PoolId<T::RelaychainAccountId>"},{"name":"amount","ty":"Balance"}],"documentation":"","name":"add_allowance"}
🛠  modules.50.constants.0.name.                         "AccumulatePeriod" --> "CollateralCurrencyIds"
🛠  modules.50.constants.0.ty.                             "T::BlockNumber" --> "Vec<CurrencyId>"
🛠  modules.50.constants.0.value.                                "05000000" --> "0800820083"
🛠  modules.50.constants.1.name.                         "NativeCurrencyId" --> "DefaultLiquidationRatio"
🛠  modules.50.constants.1.ty.                                 "CurrencyId" --> "Ratio"
🛠  modules.50.constants.1.value.                                    "0080" --> "0000167B0D12D1140000000000000000"
🛠  modules.50.constants.2.name.                         "StableCurrencyId" --> "DefaultDebitExchangeRate"
🛠  modules.50.constants.2.ty.                                 "CurrencyId" --> "ExchangeRate"
🛠  modules.50.constants.2.value.                                    "0081" --> "00008A5D784563010000000000000000"
🛠  modules.50.constants.3.name.                         "LiquidCurrencyId" --> "DefaultLiquidationPenalty"
🛠  modules.50.constants.3.ty.                                 "CurrencyId" --> "Rate"
🛠  modules.50.constants.3.value.                                    "0083" --> "0000087E93371C010000000000000000"
🛠  modules.50.constants.4.name.                       "NativeRewardsSource" --> "MinimumDebitValue"
🛠  modules.50.constants.4.ty.                               "T::AccountId" --> "Balance"
🛠  modules.50.constants.4.value.                      "6D6F646C6163612F75726C730000000000000000000000000000000000000000" --> "0040E59C301200000000000000000000"
🛠  modules.50.constants.5.name.                       "RewardsVaultAccountId" --> "GetStableCurrencyId"
🛠  modules.50.constants.5.ty.                               "T::AccountId" --> "CurrencyId"
🛠  modules.50.constants.5.value.                      "0000000000000000000000000000000000000000000000000000000000000000" --> "0081"
🛠  modules.50.constants.6.name.                                 "PalletId" --> "MaxSlippageSwapWithDEX"
🛠  modules.50.constants.6.ty.                                   "PalletId" --> "Ratio"
🛠  modules.50.constants.6.value.                        "6163612F696E6374" --> "0000C16FF28623000000000000000000"
🛠  modules.50.errors.0.name.                                   "NotEnough" --> "ExceedDebitValueHardCap"
🛠  modules.50.errors.1.name.                           "InvalidCurrencyId" --> "BelowRequiredCollateralRatio"
🛠  modules.50.errors.2.name.                               "InvalidPoolId" --> "BelowLiquidationRatio"
🛠  modules.50.errors.3.name.                                 "InvalidRate" --> "MustBeUnsafe"
🛠  modules.50.event.0.arguments.0.                             "AccountId" --> "CurrencyId"
🛠  modules.50.event.0.arguments.1.                            "CurrencyId" --> "AccountId"
🛠  modules.50.event.0.name.                              "DepositDexShare" --> "LiquidateUnsafeCDP"
🛠  modules.50.event.1.arguments.0.                             "AccountId" --> "CurrencyId"
🛠  modules.50.event.1.arguments.1.                            "CurrencyId" --> "AccountId"
🗑  modules.50.event.1.arguments.2.                               "Balance"
🛠  modules.50.event.1.name.                             "WithdrawDexShare" --> "SettleCDPInDebit"
🛠  modules.50.event.2.arguments.0.                             "AccountId" --> "CurrencyId"
🛠  modules.50.event.2.arguments.1.                                "PoolId" --> "AccountId"
🛠  modules.50.event.2.arguments.2.                            "CurrencyId" --> "Balance"
🛠  modules.50.event.2.name.                                "PayoutRewards" --> "CloseCDPInDebitByDEX"
🛠  modules.50.event.3.arguments.0.                                "PoolId" --> "CurrencyId"
🛠  modules.50.event.3.arguments.1.                               "Balance" --> "OptionRate"
🛠  modules.50.event.3.name.                           "IncentiveRewardAmountUpdated" --> "InterestRatePerSec"
🛠  modules.50.event.4.arguments.0.                                "PoolId" --> "CurrencyId"
🛠  modules.50.event.4.arguments.1.                                  "Rate" --> "OptionRatio"
🛠  modules.50.event.4.name.                           "SavingRewardRateUpdated" --> "LiquidationRatioUpdated"
🛠  modules.50.event.5.arguments.0.                                "PoolId" --> "CurrencyId"
🛠  modules.50.event.5.arguments.1.                                  "Rate" --> "OptionRate"
🛠  modules.50.event.5.name.                           "PayoutDeductionRateUpdated" --> "LiquidationPenaltyUpdated"
🛠  modules.50.index.                                                   120 --> 104
🛠  modules.50.name.                                           "Incentives" --> "CdpEngine"
🛠  modules.50.storage.entries.0.default.              "00000000000000000000000000000000" --> "00"
🛠  modules.50.storage.entries.0.modifier.                        "Default" --> "Optional"
🛠  modules.50.storage.entries.0.name.                 "IncentiveRewardAmount" --> "DebitExchangeRate"
🛠  modules.50.storage.entries.0.ty.Map.key.           "PoolId<T::RelaychainAccountId>" --> "CurrencyId"
🛠  modules.50.storage.entries.0.ty.Map.value.                    "Balance" --> "ExchangeRate"
🛠  modules.50.storage.entries.1.name.                 "DexSavingRewardRate" --> "GlobalInterestRatePerSec"
🗑  modules.50.storage.entries.1.ty.Map.               {"hasher":"Twox64Concat","key":"PoolId<T::RelaychainAccountId>","unused":false,"value":"Rate"}
🛠  modules.50.storage.entries.2.default.              "00000000000000000000000000000000" --> "0000000000000000000000000000000000000000"
🛠  modules.50.storage.entries.2.name.                 "PayoutDeductionRates" --> "CollateralParams"
🛠  modules.50.storage.entries.2.ty.Map.key.           "PoolId<T::RelaychainAccountId>" --> "CurrencyId"
🛠  modules.50.storage.entries.2.ty.Map.value.                       "Rate" --> "RiskManagementParams"
🛠  modules.50.storage.prefix.                                 "Incentives" --> "CdpEngine"
🛠  modules.51.calls.0.arguments.                      [{"name":"metadata","ty":"CID"},{"name":"properties","ty":"Properties"}] --> ""
🛠  modules.51.calls.0.name.                                 "create_class" --> "emergency_shutdown"
🛠  modules.51.calls.1.arguments.                      [{"name":"to","ty":"<T::Lookup as StaticLookup>::Source"},{"name":"class_id","ty":"ClassIdOf<T>"},{"name":"metadata","ty":"CID"},{"name":"quantity","ty":"u32"}] --> ""
🛠  modules.51.calls.1.name.                                         "mint" --> "open_collateral_refund"
🛠  modules.51.calls.2.arguments.0.name.                               "to" --> "amount"
🛠  modules.51.calls.2.arguments.0.ty.                 "<T::Lookup as StaticLookup>::Source" --> "Compact<Balance>"
🗑  modules.51.calls.2.arguments.1.                    {"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"}
🛠  modules.51.calls.2.name.                                     "transfer" --> "refund_collaterals"
🗑  modules.51.calls.3.                                {"arguments":[{"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"}],"documentation":[" Burn NFT token",""," - `token`: (class_id, token_id)"],"name":"burn"}
🗑  modules.51.calls.4.                                {"arguments":[{"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"},{"name":"remark","ty":"Vec<u8>"}],"documentation":[" Burn NFT token",""," - `token`: (class_id, token_id)"," - `remark`: Vec<u8>"],"name":"burn_with_remark"}
🗑  modules.51.calls.5.                                {"arguments":[{"name":"class_id","ty":"ClassIdOf<T>"},{"name":"dest","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Destroy NFT class, remove dest from proxy, and send all the free"," balance to dest",""," - `class_id`: The class ID to destroy"," - `dest`: The proxy account that will receive free balance"],"name":"destroy_class"}
🛠  modules.51.constants.0.name.                       "CreateClassDeposit" --> "CollateralCurrencyIds"
🛠  modules.51.constants.0.ty.                               "BalanceOf<T>" --> "Vec<CurrencyId>"
🛠  modules.51.constants.0.value.                      "0040E59C301200000000000000000000" --> "0800820083"
🗑  modules.51.constants.1.                            {"documentation":[" The minimum balance to create token"],"name":"CreateTokenDeposit","ty":"BalanceOf<T>","value":"00204AA9D10100000000000000000000"}
🗑  modules.51.constants.2.                            {"documentation":[" Deposit required for per byte."],"name":"DataDepositPerByte","ty":"BalanceOf<T>","value":"00E1F505000000000000000000000000"}
🗑  modules.51.constants.3.                            {"documentation":[" The NFT's module id"],"name":"PalletId","ty":"PalletId","value":"6163612F614E4654"}
🛠  modules.51.errors.0.name.                             "ClassIdNotFound" --> "AlreadyShutdown"
🛠  modules.51.errors.1.name.                             "TokenIdNotFound" --> "MustAfterShutdown"
🛠  modules.51.errors.2.name.                                "NoPermission" --> "CanNotRefund"
🛠  modules.51.errors.3.name.                             "InvalidQuantity" --> "ExistPotentialSurplus"
🛠  modules.51.errors.4.name.                             "NonTransferable" --> "ExistUnhandledDebit"
🗑  modules.51.errors.5.                               {"documentation":[" Property of class don't support burn"],"name":"NonBurnable"}
🗑  modules.51.errors.6.                               {"documentation":[" Can not destroy class"," Total issuance is not 0"],"name":"CannotDestroyClass"}
🛠  modules.51.event.0.arguments.0.                             "AccountId" --> "BlockNumber"
🗑  modules.51.event.0.arguments.1.                               "ClassId"
🛠  modules.51.event.0.name.                                 "CreatedClass" --> "Shutdown"
🛠  modules.51.event.1.arguments.0.                             "AccountId" --> "BlockNumber"
🗑  modules.51.event.1.arguments.1.                             "AccountId"
🗑  modules.51.event.1.arguments.2.                               "ClassId"
🗑  modules.51.event.1.arguments.3.                                   "u32"
🛠  modules.51.event.1.name.                                  "MintedToken" --> "OpenRefund"
🛠  modules.51.event.2.arguments.1.                             "AccountId" --> "Balance"
🛠  modules.51.event.2.arguments.2.                               "ClassId" --> "Vec<(CurrencyId, Balance)>"
🗑  modules.51.event.2.arguments.3.                               "TokenId"
🛠  modules.51.event.2.name.                             "TransferredToken" --> "Refund"
🗑  modules.51.event.3.                                {"arguments":["AccountId","ClassId","TokenId"],"documentation":[" Burned NFT token. \\[owner, class_id, token_id\\]"],"name":"BurnedToken"}
🗑  modules.51.event.4.                                {"arguments":["AccountId","ClassId","TokenId","Hash"],"documentation":[" Burned NFT token with remark. \\[owner, class_id, token_id, remark_hash\\]"],"name":"BurnedTokenWithRemark"}
🗑  modules.51.event.5.                                {"arguments":["AccountId","ClassId"],"documentation":[" Destroyed NFT class. \\[owner, class_id\\]"],"name":"DestroyedClass"}
🛠  modules.51.index.                                                   121 --> 105
🛠  modules.51.name.                                                  "NFT" --> "EmergencyShutdown"
🛠  modules.51.storage.                                                null --> {"entries":[{"default":"00","documentation":[" Emergency shutdown flag",""," IsShutdown: bool"],"modifier":"Default","name":"IsShutdown","ty":{"Plain":"bool"}},{"default":"00","documentation":[" Open final redemption flag",""," CanRefund: bool"],"modifier":"Default","name":"CanRefund","ty":{"Plain":"bool"}}],"prefix":"EmergencyShutdown"}
🛠  modules.52.calls.0.arguments.0.name.                           "target" --> "lp_currency_id"
🛠  modules.52.calls.0.arguments.0.ty.                         "EvmAddress" --> "CurrencyId"
🛠  modules.52.calls.0.arguments.1.name.                            "input" --> "amount"
🛠  modules.52.calls.0.arguments.1.ty.                            "Vec<u8>" --> "Balance"
🗑  modules.52.calls.0.arguments.2.                    {"name":"value","ty":"BalanceOf<T>"}
🗑  modules.52.calls.0.arguments.3.                    {"name":"gas_limit","ty":"u64"}
🗑  modules.52.calls.0.arguments.4.                    {"name":"storage_limit","ty":"u32"}
🛠  modules.52.calls.0.name.                                         "call" --> "deposit_dex_share"
🛠  modules.52.calls.1.arguments.0.name.                             "from" --> "lp_currency_id"
🛠  modules.52.calls.1.arguments.0.ty.                         "EvmAddress" --> "CurrencyId"
🛠  modules.52.calls.1.arguments.1.name.                           "target" --> "amount"
🛠  modules.52.calls.1.arguments.1.ty.                         "EvmAddress" --> "Balance"
🗑  modules.52.calls.1.arguments.2.                    {"name":"input","ty":"Vec<u8>"}
🗑  modules.52.calls.1.arguments.3.                    {"name":"value","ty":"BalanceOf<T>"}
🗑  modules.52.calls.1.arguments.4.                    {"name":"gas_limit","ty":"u64"}
🗑  modules.52.calls.1.arguments.5.                    {"name":"storage_limit","ty":"u32"}
🛠  modules.52.calls.1.name.                               "scheduled_call" --> "withdraw_dex_share"
🛠  modules.52.calls.2.arguments.0.name.                             "init" --> "pool_id"
🛠  modules.52.calls.2.arguments.0.ty.                            "Vec<u8>" --> "PoolId<T::RelaychainAccountId>"
🗑  modules.52.calls.2.arguments.1.                    {"name":"value","ty":"BalanceOf<T>"}
🗑  modules.52.calls.2.arguments.2.                    {"name":"gas_limit","ty":"u64"}
🗑  modules.52.calls.2.arguments.3.                    {"name":"storage_limit","ty":"u32"}
🛠  modules.52.calls.2.name.                                       "create" --> "claim_rewards"
🛠  modules.52.calls.3.arguments.0.name.                             "init" --> "updates"
🛠  modules.52.calls.3.arguments.0.ty.                            "Vec<u8>" --> "Vec<(PoolId<T::RelaychainAccountId>, Balance)>"
🗑  modules.52.calls.3.arguments.1.                    {"name":"salt","ty":"H256"}
🗑  modules.52.calls.3.arguments.2.                    {"name":"value","ty":"BalanceOf<T>"}
🗑  modules.52.calls.3.arguments.3.                    {"name":"gas_limit","ty":"u64"}
🗑  modules.52.calls.3.arguments.4.                    {"name":"storage_limit","ty":"u32"}
🛠  modules.52.calls.3.name.                                      "create2" --> "update_incentive_rewards"
🛠  modules.52.calls.4.arguments.0.name.                             "init" --> "updates"
🛠  modules.52.calls.4.arguments.0.ty.                            "Vec<u8>" --> "Vec<(PoolId<T::RelaychainAccountId>, Rate)>"
🗑  modules.52.calls.4.arguments.1.                    {"name":"value","ty":"BalanceOf<T>"}
🗑  modules.52.calls.4.arguments.2.                    {"name":"gas_limit","ty":"u64"}
🗑  modules.52.calls.4.arguments.3.                    {"name":"storage_limit","ty":"u32"}
🛠  modules.52.calls.4.name.                           "create_network_contract" --> "update_dex_saving_rewards"
🛠  modules.52.calls.5.arguments.0.name.                         "contract" --> "updates"
🛠  modules.52.calls.5.arguments.0.ty.                         "EvmAddress" --> "Vec<(PoolId<T::RelaychainAccountId>, Rate)>"
🗑  modules.52.calls.5.arguments.1.                    {"name":"new_maintainer","ty":"EvmAddress"}
🛠  modules.52.calls.5.name.                           "transfer_maintainer" --> "update_payout_deduction_rates"
🛠  modules.52.calls.6.arguments.0.name.                         "contract" --> "pool_id"
🛠  modules.52.calls.6.arguments.0.ty.                         "EvmAddress" --> "PoolId<T::RelaychainAccountId>"
🛠  modules.52.calls.6.name.                                       "deploy" --> "add_allowance"
🗑  modules.52.calls.7.                                {"arguments":[{"name":"contract","ty":"EvmAddress"}],"documentation":[" Mark a given contract as deployed without paying the deployment fee",""," - `contract`: The contract to mark as deployed, the caller must be the contract's","   maintainer."],"name":"deploy_free"}
🗑  modules.52.calls.8.                                {"arguments":"","documentation":[" Mark the caller's address to allow contract development."," This allows the address to interact with non-deployed contracts."],"name":"enable_contract_development"}
🗑  modules.52.calls.9.                                {"arguments":"","documentation":[" Mark the caller's address to disable contract development."," This disallows the address to interact with non-deployed contracts."],"name":"disable_contract_development"}
🗑  modules.52.calls.10.                               {"arguments":[{"name":"contract","ty":"EvmAddress"},{"name":"code","ty":"Vec<u8>"}],"documentation":[" Set the code of a contract at a given address.",""," - `contract`: The contract whose code is being set, must not be marked as deployed"," - `code`: The new ABI bundle for the contract"],"name":"set_code"}
🗑  modules.52.calls.11.                               {"arguments":[{"name":"contract","ty":"EvmAddress"}],"documentation":[" Remove a contract at a given address.",""," - `contract`: The contract to remove, must not be marked as deployed"],"name":"selfdestruct"}
🛠  modules.52.constants.0.name.                       "NewContractExtraBytes" --> "AccumulatePeriod"
🛠  modules.52.constants.0.ty.                                        "u32" --> "T::BlockNumber"
🛠  modules.52.constants.0.value.                                "10270000" --> "05000000"
🛠  modules.52.constants.1.name.                       "StorageDepositPerByte" --> "NativeCurrencyId"
🛠  modules.52.constants.1.ty.                               "BalanceOf<T>" --> "CurrencyId"
🛠  modules.52.constants.1.value.                      "00E1F505000000000000000000000000" --> "0080"
🛠  modules.52.constants.2.name.                              "MaxCodeSize" --> "StableCurrencyId"
🛠  modules.52.constants.2.ty.                                        "u32" --> "CurrencyId"
🛠  modules.52.constants.2.value.                                "00600000" --> "0081"
🛠  modules.52.constants.3.name.                                  "ChainId" --> "LiquidCurrencyId"
🛠  modules.52.constants.3.ty.                                        "u64" --> "CurrencyId"
🛠  modules.52.constants.3.value.                        "AE02000000000000" --> "0083"
🛠  modules.52.constants.4.name.                       "NetworkContractSource" --> "NativeRewardsSource"
🛠  modules.52.constants.4.ty.                                 "EvmAddress" --> "T::AccountId"
🛠  modules.52.constants.4.value.                      "0000000000000000000000000000000000000000" --> "6D6F646C6163612F75726C730000000000000000000000000000000000000000"
🛠  modules.52.constants.5.name.                         "DeveloperDeposit" --> "PalletId"
🛠  modules.52.constants.5.ty.                               "BalanceOf<T>" --> "PalletId"
🛠  modules.52.constants.5.value.                      "00407A10F35A00000000000000000000" --> "6163612F696E6374"
🗑  modules.52.constants.6.                            {"documentation":[" The fee for deploying the contract."],"name":"DeploymentFee","ty":"BalanceOf<T>","value":"0000C16FF28623000000000000000000"}
🗑  modules.52.constants.7.                            {"documentation":"","name":"TreasuryAccount","ty":"T::AccountId","value":"6D6F646C6163612F747273790000000000000000000000000000000000000000"}
🛠  modules.52.errors.0.name.                            "AddressNotMapped" --> "NotEnough"
🛠  modules.52.errors.1.name.                            "ContractNotFound" --> "InvalidCurrencyId"
🛠  modules.52.errors.2.name.                                "NoPermission" --> "InvalidPoolId"
🛠  modules.52.errors.3.name.                               "NumOutOfBound" --> "InvalidRate"
🗑  modules.52.errors.4.                               {"documentation":[" Storage exceeds max code size"],"name":"StorageExceedsStorageLimit"}
🗑  modules.52.errors.5.                               {"documentation":[" Contract development is not enabled"],"name":"ContractDevelopmentNotEnabled"}
🗑  modules.52.errors.6.                               {"documentation":[" Contract development is already enabled"],"name":"ContractDevelopmentAlreadyEnabled"}
🗑  modules.52.errors.7.                               {"documentation":[" Contract already deployed"],"name":"ContractAlreadyDeployed"}
🗑  modules.52.errors.8.                               {"documentation":[" Contract exceeds max code size"],"name":"ContractExceedsMaxCodeSize"}
🗑  modules.52.errors.9.                               {"documentation":[" Storage usage exceeds storage limit"],"name":"OutOfStorage"}
🗑  modules.52.errors.10.                              {"documentation":[" Charge fee failed"],"name":"ChargeFeeFailed"}
🗑  modules.52.errors.11.                              {"documentation":[" Contract cannot be killed due to reference count"],"name":"CannotKillContract"}
🗑  modules.52.errors.12.                              {"documentation":[" Contract address conflicts with the system contract"],"name":"ConflictContractAddress"}
🛠  modules.52.event.0.arguments.0.                                   "Log" --> "AccountId"
🛠  modules.52.event.0.name.                                          "Log" --> "DepositDexShare"
🛠  modules.52.event.1.arguments.0.                            "EvmAddress" --> "AccountId"
🛠  modules.52.event.1.name.                                      "Created" --> "WithdrawDexShare"
🛠  modules.52.event.2.arguments.0.                            "EvmAddress" --> "AccountId"
🛠  modules.52.event.2.arguments.1.                            "ExitReason" --> "PoolId"
🛠  modules.52.event.2.arguments.2.                               "Vec<u8>" --> "CurrencyId"
🛠  modules.52.event.2.name.                                "CreatedFailed" --> "PayoutRewards"
🛠  modules.52.event.3.arguments.0.                            "EvmAddress" --> "PoolId"
🛠  modules.52.event.3.name.                                     "Executed" --> "IncentiveRewardAmountUpdated"
🛠  modules.52.event.4.arguments.0.                            "EvmAddress" --> "PoolId"
🛠  modules.52.event.4.arguments.1.                            "ExitReason" --> "Rate"
🗑  modules.52.event.4.arguments.2.                               "Vec<u8>"
🛠  modules.52.event.4.name.                               "ExecutedFailed" --> "SavingRewardRateUpdated"
🛠  modules.52.event.5.arguments.0.                             "AccountId" --> "PoolId"
🛠  modules.52.event.5.arguments.1.                            "EvmAddress" --> "Rate"
🗑  modules.52.event.5.arguments.2.                                  "U256"
🛠  modules.52.event.5.name.                               "BalanceDeposit" --> "PayoutDeductionRateUpdated"
🗑  modules.52.event.6.                                {"arguments":["AccountId","EvmAddress","U256"],"documentation":[" A withdrawal has been made from a given address. \\[sender, address,"," value\\]"],"name":"BalanceWithdraw"}
🗑  modules.52.event.7.                                {"arguments":["EvmAddress","u32"],"documentation":[" A quota has been added at a given address. \\[address, bytes\\]"],"name":"AddStorageQuota"}
🗑  modules.52.event.8.                                {"arguments":["EvmAddress","u32"],"documentation":[" A quota has been removed at a given address. \\[address, bytes\\]"],"name":"RemoveStorageQuota"}
🗑  modules.52.event.9.                                {"arguments":["EvmAddress","EvmAddress"],"documentation":[" Transferred maintainer. \\[contract, address\\]"],"name":"TransferredMaintainer"}
🗑  modules.52.event.10.                               {"arguments":["EvmAddress","EvmAddress"],"documentation":[" Canceled the transfer maintainer. \\[contract, address\\]"],"name":"CanceledTransferMaintainer"}
🗑  modules.52.event.11.                               {"arguments":["EvmAddress","EvmAddress"],"documentation":[" Confirmed the transfer maintainer. \\[contract, address\\]"],"name":"ConfirmedTransferMaintainer"}
🗑  modules.52.event.12.                               {"arguments":["EvmAddress","EvmAddress"],"documentation":[" Rejected the transfer maintainer. \\[contract, address\\]"],"name":"RejectedTransferMaintainer"}
🗑  modules.52.event.13.                               {"arguments":["AccountId"],"documentation":[" Enabled contract development. \\[who\\]"],"name":"ContractDevelopmentEnabled"}
🗑  modules.52.event.14.                               {"arguments":["AccountId"],"documentation":[" Disabled contract development. \\[who\\]"],"name":"ContractDevelopmentDisabled"}
🗑  modules.52.event.15.                               {"arguments":["EvmAddress"],"documentation":[" Deployed contract. \\[contract\\]"],"name":"ContractDeployed"}
🗑  modules.52.event.16.                               {"arguments":["EvmAddress"],"documentation":[" Set contract code. \\[contract\\]"],"name":"ContractSetCode"}
🗑  modules.52.event.17.                               {"arguments":["EvmAddress"],"documentation":[" Selfdestructed contract code. \\[contract\\]"],"name":"ContractSelfdestructed"}
🛠  modules.52.index.                                                   130 --> 120
🛠  modules.52.name.                                                  "EVM" --> "Incentives"
🛠  modules.52.storage.entries.0.default.                              "00" --> "00000000000000000000000000000000"
🛠  modules.52.storage.entries.0.modifier.                       "Optional" --> "Default"
🛠  modules.52.storage.entries.0.name.                           "Accounts" --> "IncentiveRewardAmount"
🛠  modules.52.storage.entries.0.ty.Map.key.                   "EvmAddress" --> "PoolId<T::RelaychainAccountId>"
🛠  modules.52.storage.entries.0.ty.Map.value.             "AccountInfo<T>" --> "Balance"
🛠  modules.52.storage.entries.1.default.                        "00000000" --> "00000000000000000000000000000000"
🛠  modules.52.storage.entries.1.name.                 "ContractStorageSizes" --> "DexSavingRewardRate"
🛠  modules.52.storage.entries.1.ty.Map.key.                   "EvmAddress" --> "PoolId<T::RelaychainAccountId>"
🛠  modules.52.storage.entries.1.ty.Map.value.                        "u32" --> "Rate"
🛠  modules.52.storage.entries.2.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00000000000000000000000000000000"
🛠  modules.52.storage.entries.2.name.                    "AccountStorages" --> "PayoutDeductionRates"
🗑  modules.52.storage.entries.2.ty.DoubleMap.         {"hasher":"Twox64Concat","key1":"EvmAddress","key2":"H256","key2_hasher":"Blake2_128Concat","value":"H256"}
🗑  modules.52.storage.entries.3.                      {"default":"00","documentation":[" The code for EVM contracts."," Key is Keccak256 hash of code.",""," Codes: H256 => Vec<u8>"],"modifier":"Default","name":"Codes","ty":{"Map":{"hasher":"Identity","key":"H256","unused":false,"value":"BoundedVec<u8, T::MaxCodeSize>"}}}
🗑  modules.52.storage.entries.4.                      {"default":"00","documentation":[" The code info for EVM contracts."," Key is Keccak256 hash of code.",""," CodeInfos: H256 => Option<CodeInfo>"],"modifier":"Optional","name":"CodeInfos","ty":{"Map":{"hasher":"Identity","key":"H256","unused":false,"value":"CodeInfo"}}}
🗑  modules.52.storage.entries.5.                      {"default":"0000000000000000","documentation":[" Next available system contract address.",""," NetworkContractIndex: u64"],"modifier":"Default","name":"NetworkContractIndex","ty":{"Plain":"u64"}}
🗑  modules.52.storage.entries.6.                      {"default":"00","documentation":[" Extrinsics origin for the current transaction.",""," ExtrinsicOrigin: Option<AccountId>"],"modifier":"Optional","name":"ExtrinsicOrigin","ty":{"Plain":"T::AccountId"}}
🛠  modules.52.storage.prefix.                                        "EVM" --> "Incentives"
🛠  modules.53.calls.                                                  null --> [{"arguments":[{"name":"metadata","ty":"CID"},{"name":"properties","ty":"Properties"},{"name":"attributes","ty":"Attributes"}],"documentation":[" Create NFT class, tokens belong to the class.",""," - `metadata`: external metadata"," - `properties`: class property, include `Transferable` `Burnable`"],"name":"create_class"},{"arguments":[{"name":"to","ty":"<T::Lookup as StaticLookup>::Source"},{"name":"class_id","ty":"ClassIdOf<T>"},{"name":"metadata","ty":"CID"},{"name":"attributes","ty":"Attributes"},{"name":"quantity","ty":"u32"}],"documentation":[" Mint NFT token",""," - `to`: the token owner's account"," - `class_id`: token belong to the class id"," - `metadata`: external metadata"," - `quantity`: token quantity"],"name":"mint"},{"arguments":[{"name":"to","ty":"<T::Lookup as StaticLookup>::Source"},{"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"}],"documentation":[" Transfer NFT token to another account",""," - `to`: the token owner's account"," - `token`: (class_id, token_id)"],"name":"transfer"},{"arguments":[{"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"}],"documentation":[" Burn NFT token",""," - `token`: (class_id, token_id)"],"name":"burn"},{"arguments":[{"name":"token","ty":"(ClassIdOf<T>, TokenIdOf<T>)"},{"name":"remark","ty":"Vec<u8>"}],"documentation":[" Burn NFT token",""," - `token`: (class_id, token_id)"," - `remark`: Vec<u8>"],"name":"burn_with_remark"},{"arguments":[{"name":"class_id","ty":"ClassIdOf<T>"},{"name":"dest","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Destroy NFT class, remove dest from proxy, and send all the free"," balance to dest",""," - `class_id`: The class ID to destroy"," - `dest`: The proxy account that will receive free balance"],"name":"destroy_class"},{"arguments":[{"name":"class_id","ty":"ClassIdOf<T>"},{"name":"properties","ty":"Properties"}],"documentation":[" Update NFT class properties. The current class properties must contains"," ClassPropertiesMutable.",""," - `class_id`: The class ID to update"," - `properties`: The new properties"],"name":"update_class_properties"}]
🛠  modules.53.constants.                                                "" --> [{"documentation":[" The minimum balance to create class"],"name":"CreateClassDeposit","ty":"BalanceOf<T>","value":"0040E59C301200000000000000000000"},{"documentation":[" The minimum balance to create token"],"name":"CreateTokenDeposit","ty":"BalanceOf<T>","value":"00204AA9D10100000000000000000000"},{"documentation":[" Deposit required for per byte."],"name":"DataDepositPerByte","ty":"BalanceOf<T>","value":"00E1F505000000000000000000000000"},{"documentation":[" The NFT's module id"],"name":"PalletId","ty":"PalletId","value":"6163612F614E4654"},{"documentation":[" Maximum number of bytes in attributes"],"name":"MaxAttributesBytes","ty":"u32","value":"00080000"}]
🛠  modules.53.errors.0.name.                               "ExecutionFail" --> "ClassIdNotFound"
🛠  modules.53.errors.1.name.                             "ExecutionRevert" --> "TokenIdNotFound"
🛠  modules.53.errors.2.name.                              "ExecutionFatal" --> "NoPermission"
🛠  modules.53.errors.3.name.                              "ExecutionError" --> "InvalidQuantity"
🛠  modules.53.errors.4.name.                          "InvalidReturnValue" --> "NonTransferable"
🛠  modules.53.event.                                                  null --> [{"arguments":["AccountId","ClassId"],"documentation":[" Created NFT class. \\[owner, class_id\\]"],"name":"CreatedClass"},{"arguments":["AccountId","AccountId","ClassId","u32"],"documentation":[" Minted NFT token. \\[from, to, class_id, quantity\\]"],"name":"MintedToken"},{"arguments":["AccountId","AccountId","ClassId","TokenId"],"documentation":[" Transferred NFT token. \\[from, to, class_id, token_id\\]"],"name":"TransferredToken"},{"arguments":["AccountId","ClassId","TokenId"],"documentation":[" Burned NFT token. \\[owner, class_id, token_id\\]"],"name":"BurnedToken"},{"arguments":["AccountId","ClassId","TokenId","Hash"],"documentation":[" Burned NFT token with remark. \\[owner, class_id, token_id, remark_hash\\]"],"name":"BurnedTokenWithRemark"},{"arguments":["AccountId","ClassId"],"documentation":[" Destroyed NFT class. \\[owner, class_id\\]"],"name":"DestroyedClass"}]
🛠  modules.53.index.                                                   131 --> 121
🛠  modules.53.name.                                            "EVMBridge" --> "NFT"
🛠  modules.54.calls.0.arguments.0.name.                      "eth_address" --> "target"
🛠  modules.54.calls.0.arguments.1.name.                    "eth_signature" --> "input"
🛠  modules.54.calls.0.arguments.1.ty.                     "EcdsaSignature" --> "Vec<u8>"
🛠  modules.54.calls.0.name.                                "claim_account" --> "call"
🛠  modules.54.calls.1.arguments.                                        "" --> [{"name":"from","ty":"EvmAddress"},{"name":"target","ty":"EvmAddress"},{"name":"input","ty":"Vec<u8>"},{"name":"value","ty":"BalanceOf<T>"},{"name":"gas_limit","ty":"u64"},{"name":"storage_limit","ty":"u32"}]
🛠  modules.54.calls.1.name.                           "claim_default_account" --> "scheduled_call"
🛠  modules.54.constants.                                                "" --> [{"documentation":[" Charge extra bytes for creating a contract, would be reserved until"," the contract deleted."],"name":"NewContractExtraBytes","ty":"u32","value":"10270000"},{"documentation":[" Storage required for per byte."],"name":"StorageDepositPerByte","ty":"BalanceOf<T>","value":"00E1F505000000000000000000000000"},{"documentation":[" Contract max code size."],"name":"MaxCodeSize","ty":"u32","value":"00600000"},{"documentation":[" Chain ID of EVM."],"name":"ChainId","ty":"u64","value":"AE02000000000000"},{"documentation":[" The EVM address for creating system contract."],"name":"NetworkContractSource","ty":"EvmAddress","value":"0000000000000000000000000000000000000000"},{"documentation":[" Deposit for the developer."],"name":"DeveloperDeposit","ty":"BalanceOf<T>","value":"00407A10F35A00000000000000000000"},{"documentation":[" The fee for deploying the contract."],"name":"DeploymentFee","ty":"BalanceOf<T>","value":"0000C16FF28623000000000000000000"},{"documentation":"","name":"TreasuryAccount","ty":"T::AccountId","value":"6D6F646C6163612F747273790000000000000000000000000000000000000000"}]
🛠  modules.54.errors.0.name.                          "AccountIdHasMapped" --> "AddressNotMapped"
🛠  modules.54.errors.1.name.                          "EthAddressHasMapped" --> "ContractNotFound"
🛠  modules.54.errors.2.name.                                "BadSignature" --> "NoPermission"
🛠  modules.54.errors.3.name.                            "InvalidSignature" --> "NumOutOfBound"
🛠  modules.54.errors.4.name.                             "NonZeroRefCount" --> "StorageExceedsStorageLimit"
🛠  modules.54.event.0.arguments.0.                             "AccountId" --> "Log"
🗑  modules.54.event.0.arguments.1.                            "EvmAddress"
🛠  modules.54.event.0.name.                                 "ClaimAccount" --> "Log"
🛠  modules.54.index.                                                   132 --> 130
🛠  modules.54.name.                                          "EvmAccounts" --> "EVM"
🛠  modules.54.storage.entries.0.ty.Map.value.               "T::AccountId" --> "AccountInfo<T>"
🛠  modules.54.storage.entries.1.default.                              "00" --> "00000000"
🛠  modules.54.storage.entries.1.modifier.                       "Optional" --> "Default"
🛠  modules.54.storage.entries.1.name.                       "EvmAddresses" --> "ContractStorageSizes"
🛠  modules.54.storage.entries.1.ty.Map.key.                 "T::AccountId" --> "EvmAddress"
🛠  modules.54.storage.entries.1.ty.Map.value.                 "EvmAddress" --> "u32"
🛠  modules.54.storage.prefix.                                "EvmAccounts" --> "EVM"
🛠  modules.55.errors.0.name.                           "CurrencyIdExisted" --> "ExecutionFail"
🛠  modules.55.index.                                                   133 --> 131
🛠  modules.55.name.                                           "EvmManager" --> "EVMBridge"
🛠  modules.55.storage.                                {"entries":[{"default":"00","documentation":[" Mapping between u32 and Erc20 address."," Erc20 address is 20 byte, take the first 4 non-zero bytes, if it is less"," than 4, add 0 to the left.",""," map u32 => Option<Erc20Info>"],"modifier":"Optional","name":"CurrencyIdMap","ty":{"Map":{"hasher":"Twox64Concat","key":"u32","unused":false,"value":"Erc20Info"}}}],"prefix":"EvmManager"} --> null
🛠  modules.56.calls.0.arguments.0.name.                             "call" --> "eth_address"
🛠  modules.56.calls.0.arguments.0.ty.                 "Box<<T as Config>::Call>" --> "EvmAddress"
🛠  modules.56.calls.0.name.                                         "sudo" --> "claim_account"
🛠  modules.56.calls.1.arguments.                      [{"name":"call","ty":"Box<<T as Config>::Call>"},{"name":"_weight","ty":"Weight"}] --> ""
🛠  modules.56.calls.1.name.                           "sudo_unchecked_weight" --> "claim_default_account"
🗑  modules.56.calls.2.                                {"arguments":[{"name":"new","ty":"<T::Lookup as StaticLookup>::Source"}],"documentation":[" Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo key.",""," The dispatch origin for this call must be _Signed_.",""," # <weight>"," - O(1)."," - Limited storage reads."," - One DB change."," # </weight>"],"name":"set_key"}
🗑  modules.56.calls.3.                                {"arguments":[{"name":"who","ty":"<T::Lookup as StaticLookup>::Source"},{"name":"call","ty":"Box<<T as Config>::Call>"}],"documentation":[" Authenticates the sudo key and dispatches a function call with `Signed` origin from"," a given account.",""," The dispatch origin for this call must be _Signed_.",""," # <weight>"," - O(1)."," - Limited storage reads."," - One DB write (event)."," - Weight of derivative `call` execution + 10,000."," # </weight>"],"name":"sudo_as"}
🛠  modules.56.errors.0.name.                                 "RequireSudo" --> "AccountIdHasMapped"
🛠  modules.56.event.0.arguments.0.                        "DispatchResult" --> "AccountId"
🛠  modules.56.event.0.name.                                        "Sudid" --> "ClaimAccount"
🗑  modules.56.event.1.                                {"arguments":["AccountId"],"documentation":[" The \\[sudoer\\] just switched identity; the old key is supplied."],"name":"KeyChanged"}
🗑  modules.56.event.2.                                {"arguments":["DispatchResult"],"documentation":[" A sudo just took place. \\[result\\]"],"name":"SudoAsDone"}
🛠  modules.56.index.                                                   255 --> 132
🛠  modules.56.name.                                                 "Sudo" --> "EvmAccounts"
🛠  modules.56.storage.entries.0.default.              "0000000000000000000000000000000000000000000000000000000000000000" --> "00"
🛠  modules.56.storage.entries.0.modifier.                        "Default" --> "Optional"
🛠  modules.56.storage.entries.0.name.                                "Key" --> "Accounts"
🗑  modules.56.storage.entries.0.ty.Plain.                   "T::AccountId"
🛠  modules.56.storage.prefix.                                       "Sudo" --> "EvmAccounts"
Changes:
- unmodified    = 13.12% (317)
- added     = 21.14% (511)
- modified  = 48.61% (1175)
- removed   = 17.13% (414)
Skipped:
- documentation =   520
- bytes     =     0