Skip to content

Polimec 0.8.0

Latest
Compare
Choose a tag to compare
@lrazovic lrazovic released this 05 Sep 09:42
· 35 commits to main since this release
59222cb

Warning

This release introduces significant updates to both the runtime and the node. As a result, a new binary version has been distributed. Upgrading to this version is mandatory to ensure proper block production after the 0.8.0 runtime is enacted and to maintain the correct operation of an RPC node.

Note

Among the changes, this version also includes a Polkadot SDK upgrade. We have moved from Polkadot SDK 1.6.0 to Polkadot SDK 1.13.0, ensuring our runtime and codebase remain aligned with the latest updates, improvements, and security fixes.

What's Changed

Tip

The latest/v0.8.0 Docker image can be accessed on Docker Hub.

Full Changelog: v0.7.6...v0.8.0

  • Generated using srtool
✨ Your Substrate WASM Runtime is ready! ✨
✨ WASM  : runtimes/polimec/target/srtool/production/wbuild/polimec-runtime/polimec_runtime.compact.wasm
✨ Z_WASM: runtimes/polimec/target/srtool/production/wbuild/polimec-runtime/polimec_runtime.compact.compressed.wasm
Summary generated with srtool v0.15.0 using the docker image paritytech/srtool:1.77.0:
 Package     : polimec-runtime v0.8.0
 GIT commit  : 59222cb91026cd2b25f248013af78d35254b6acf
 GIT tag     : v0.7.6
 GIT branch  : HEAD
 Rustc       : rustc 1.77.0 (aedd173a2 2024-03-17)
 Time        : 2024-09-05T09:00:39Z

== Compact
 Version          : polimec-mainnet-8000 (polimec-mainnet-0.tx5.au1)
 Metadata         : V14
 Size             : 5.46 MB (5728109 bytes)
 setCode          : 0xf9ac0a38e271f4634cb02dbd3b263d24dee0309762dc931829f2b64d0d9f8aaf
 authorizeUpgrade : 0xac132949f354ffab19669e9a07ba2c4fb308893617682bd99a37b7f246f5f5ce
 IPFS             : QmXtTEFsRtTdd9WKqaJphrgtVnGQoUibWpG2TFAMPuGirK
 BLAKE2_256       : 0x099b7f2ca54a1797ed32f262bdda2d3b79280a455b0dfca39a1f4ec929cb701d
 Wasm             : runtimes/polimec/target/srtool/production/wbuild/polimec-runtime/polimec_runtime.compact.wasm

== Compressed
 Version          : polimec-mainnet-8000 (polimec-mainnet-0.tx5.au1)
 Metadata         : V14
 Size             : 1.36 MB (1422031 bytes)
 Compression      : 75.18%
 setCode          : 0xcfc26ec17fc5cfda8be3f72c1dfdf0d719549104afc6be9b59e3a920dd245efc
 authorizeUpgrade : 0x1c9e02018e4996ead7e99273c13eb954945729ea641be74357ad2fa437455cf6
 IPFS             : QmUodXNA7BWoJEp5SwE2s3E921mFY5wnQ1mXHd1ZPbhNEh
 BLAKE2_256       : 0x9da7550f853f4ad42aecce88dd187f2f5ced7b89e193fd4b9dd3e2d55d2a0010
 Wasm             : runtimes/polimec/target/srtool/production/wbuild/polimec-runtime/polimec_runtime.compact.compressed.wasm
  • Generated using subwasm info
🏋️  Runtime size:             1.356 MB (1,422,031 bytes)
🗜  Compressed:               Yes, 75.17%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
🔥 Core version:             polimec-mainnet-8000 (polimec-mainnet-0.tx5.au1)
🗳️  system.setCode hash:      0xcfc26ec17fc5cfda8be3f72c1dfdf0d719549104afc6be9b59e3a920dd245efc
🗳️  authorizeUpgrade hash:    0x1c9e02018e4996ead7e99273c13eb954945729ea641be74357ad2fa437455cf6
🗳️  Blake2-256 hash:          0x9da7550f853f4ad42aecce88dd187f2f5ced7b89e193fd4b9dd3e2d55d2a0010
📦 IPFS:                     https://www.ipfs.io/ipfs/QmUodXNA7BWoJEp5SwE2s3E921mFY5wnQ1mXHd1ZPbhNEh
  • Generated using subwasm diff
[≠] pallet 0: System -> 5 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] Version: [ 60, 112, 111, 108, 105, 109, 101, 99, 45, 109, 97, 105, 110, 110, 101, 116, 60, 112, 111, 108, 105, 109, 101, 99, 45, 109, 97, 105, 110, 110, 101, 116, ... ]
        [Value([Changed(36, U8Change(94, 64)), Changed(37, U8Change(27, 31)), Changed(44, U8Change(52, 68)), Changed(77, U8Change(4, 5)), Changed(189, U8Change(251, 217)), Changed(190, U8Change(197, 101)), Changed(191, U8Change(119, 16)), Changed(192, U8Change(185, 39)), Changed(193, U8Change(215, 209)), Changed(194, U8Change(71, 133)), Changed(195, U8Change(239, 146)), Changed(196, U8Change(214, 52)), Changed(201, U8Change(4, 99)), Changed(202, U8Change(0, 137)), Changed(203, U8Change(0, 71)), Changed(204, U8Change(0, 238)), Changed(205, U8Change(1, 183)), Added(206, 168), Added(207, 251), Added(208, 223), Added(209, 1), Added(210, 0), Added(211, 0), Added(212, 0), Added(213, 74), Added(214, 49), Added(215, 12), Added(216, 237), Added(217, 116), Added(218, 92), Added(219, 130), Added(220, 18), Added(221, 1), Added(222, 0), Added(223, 0), Added(224, 0), Added(225, 64), Added(226, 98), Added(227, 235), Added(228, 97), Added(229, 215), Added(230, 193), Added(231, 244), Added(232, 156), Added(233, 1), Added(234, 0), Added(235, 0), Added(236, 0), Added(237, 251), Added(238, 197), Added(239, 119), Added(240, 185), Added(241, 215), Added(242, 71), Added(243, 239), Added(244, 214), Added(245, 1), Added(246, 0), Added(247, 0), Added(248, 0), Added(249, 5), Added(250, 0), Added(251, 0), Added(252, 0), Added(253, 1)])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 1: ParachainSystem -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 10: Balances -> 6 change(s)
  - calls changes:
    [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } }
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" }
    [+] ErrorDesc { index: 11, name: "DeltaZero" }

  - constants changes:
    [-] "MaxHolds"

[≠] pallet 13: ContributionTokens -> 2 change(s)
  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

[≠] pallet 14: ForeignAssets -> 2 change(s)
  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[≠] pallet 30: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 156, 1, 0] }

[≠] pallet 31: PolkadotXcm -> 31 change(s)
  - calls changes:
    [≠]  0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })]
    [≠]  1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })]
    [≠]  2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })]
    [≠]  4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })]
    [≠]  6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })]
    [≠]  7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })]
    [≠]  8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })]
    [≠]  9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })]
    [≠] 11: transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })]
    [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } }
    [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } }

  - events changes:
    [≠]  1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠]  2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠]  8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })]
    [≠]  9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, )  )
        [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })]
    [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })]
    [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })]
    [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })]
    [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })]
    [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })]
    [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })]
    [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })]
    [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, )  )
        [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })]
    [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, )  )
        [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })]
    [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } }

  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 34: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [1, 7, 0, 232, 118, 72, 23, 2, 0, 64, 0] }

[≠] pallet 46: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 80: Funding -> 91 change(s)
  - calls changes:
    [≠]  4: start_auction ( jwt: UntrustedToken, project_id: ProjectId, )  )
        [Name(StringChange("start_auction", "evaluate")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "usd_amount", ty: "BalanceOf<T>" })] })]
    [≠]  5: evaluate ( jwt: UntrustedToken, project_id: ProjectId, usd_amount: BalanceOf<T>, )  )
        [Name(StringChange("evaluate", "end_evaluation")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("jwt", "project_id")), Ty(StringChange("UntrustedToken", "ProjectId"))]), Removed(1, ArgDesc { name: "project_id", ty: "ProjectId" }), Removed(2, ArgDesc { name: "usd_amount", ty: "BalanceOf<T>" })] })]
    [≠]  7: root_do_auction_opening ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_auction_opening", "bid")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "jwt")), Ty(StringChange("ProjectId", "UntrustedToken"))]), Added(1, ArgDesc { name: "project_id", ty: "ProjectId" }), Added(2, ArgDesc { name: "ct_amount", ty: "BalanceOf<T>" }), Added(3, ArgDesc { name: "multiplier", ty: "T::Multiplier" }), Added(4, ArgDesc { name: "funding_asset", ty: "AcceptedFundingAsset" })] })]
    [≠]  8: bid ( jwt: UntrustedToken, project_id: ProjectId, ct_amount: BalanceOf<T>, multiplier: T::Multiplier, asset: AcceptedFundingAsset, )  )
        [Name(StringChange("bid", "end_auction")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("jwt", "project_id")), Ty(StringChange("UntrustedToken", "ProjectId"))]), Removed(1, ArgDesc { name: "project_id", ty: "ProjectId" }), Removed(2, ArgDesc { name: "ct_amount", ty: "BalanceOf<T>" }), Removed(3, ArgDesc { name: "multiplier", ty: "T::Multiplier" }), Removed(4, ArgDesc { name: "asset", ty: "AcceptedFundingAsset" })] })]
    [≠]  9: root_do_start_auction_closing ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_start_auction_closing", "contribute")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "jwt")), Ty(StringChange("ProjectId", "UntrustedToken"))]), Added(1, ArgDesc { name: "project_id", ty: "ProjectId" }), Added(2, ArgDesc { name: "ct_amount", ty: "BalanceOf<T>" }), Added(3, ArgDesc { name: "multiplier", ty: "MultiplierOf<T>" }), Added(4, ArgDesc { name: "funding_asset", ty: "AcceptedFundingAsset" })] })]
    [≠] 10: root_do_end_auction_closing ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_end_auction_closing", "end_funding"))]
    [≠] 11: root_do_community_funding ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_community_funding", "start_settlement"))]
    [≠] 12: community_contribute ( jwt: UntrustedToken, project_id: ProjectId, amount: BalanceOf<T>, multiplier: MultiplierOf<T>, asset: AcceptedFundingAsset, )  )
        [Name(StringChange("community_contribute", "settle_evaluation")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("jwt", "project_id")), Ty(StringChange("UntrustedToken", "ProjectId"))]), Changed(1, [Name(StringChange("project_id", "evaluator")), Ty(StringChange("ProjectId", "AccountIdOf<T>"))]), Changed(2, [Name(StringChange("amount", "evaluation_id")), Ty(StringChange("BalanceOf<T>", "u32"))]), Removed(3, ArgDesc { name: "multiplier", ty: "MultiplierOf<T>" }), Removed(4, ArgDesc { name: "asset", ty: "AcceptedFundingAsset" })] })]
    [≠] 13: root_do_remainder_funding ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_remainder_funding", "settle_bid")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "bidder", ty: "AccountIdOf<T>" }), Added(2, ArgDesc { name: "bid_id", ty: "u32" })] })]
    [≠] 17: root_do_project_decision ( project_id: ProjectId, decision: FundingOutcomeDecision, )  )
        [Name(StringChange("root_do_project_decision", "settle_contribution")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("decision", "contributor")), Ty(StringChange("FundingOutcomeDecision", "AccountIdOf<T>"))]), Added(2, ArgDesc { name: "contribution_id", ty: "u32" })] })]
    [≠] 18: root_do_start_settlement ( project_id: ProjectId, )  )
        [Name(StringChange("root_do_start_settlement", "mark_project_as_settled"))]
    [≠] 19: settle_successful_evaluation ( project_id: ProjectId, evaluator: AccountIdOf<T>, evaluation_id: u32, )  )
        [Name(StringChange("settle_successful_evaluation", "start_offchain_migration")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "jwt")), Ty(StringChange("ProjectId", "UntrustedToken"))]), Changed(1, [Name(StringChange("evaluator", "project_id")), Ty(StringChange("AccountIdOf<T>", "ProjectId"))]), Removed(2, ArgDesc { name: "evaluation_id", ty: "u32" })] })]
    [≠] 20: settle_successful_bid ( project_id: ProjectId, bidder: AccountIdOf<T>, bid_id: u32, )  )
        [Name(StringChange("settle_successful_bid", "confirm_offchain_migration")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("bidder", "participant"))]), Removed(2, ArgDesc { name: "bid_id", ty: "u32" })] })]
    [≠] 21: settle_successful_contribution ( project_id: ProjectId, contributor: AccountIdOf<T>, contribution_id: u32, )  )
        [Name(StringChange("settle_successful_contribution", "start_pallet_migration")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "jwt")), Ty(StringChange("ProjectId", "UntrustedToken"))]), Changed(1, [Name(StringChange("contributor", "project_id")), Ty(StringChange("AccountIdOf<T>", "ProjectId"))]), Changed(2, [Name(StringChange("contribution_id", "para_id")), Ty(StringChange("u32", "ParaId"))])] })]
    [≠] 22: settle_failed_evaluation ( project_id: ProjectId, evaluator: AccountIdOf<T>, evaluation_id: u32, )  )
        [Name(StringChange("settle_failed_evaluation", "start_pallet_migration_readiness_check")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "jwt")), Ty(StringChange("ProjectId", "UntrustedToken"))]), Changed(1, [Name(StringChange("evaluator", "project_id")), Ty(StringChange("AccountIdOf<T>", "ProjectId"))]), Removed(2, ArgDesc { name: "evaluation_id", ty: "u32" })] })]
    [≠] 23: settle_failed_bid ( project_id: ProjectId, bidder: AccountIdOf<T>, bid_id: u32, )  )
        [Name(StringChange("settle_failed_bid", "pallet_migration_readiness_response")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("project_id", "query_id")), Ty(StringChange("ProjectId", "QueryId"))]), Changed(1, [Name(StringChange("bidder", "response")), Ty(StringChange("AccountIdOf<T>", "Response"))]), Removed(2, ArgDesc { name: "bid_id", ty: "u32" })] })]
    [≠] 24: settle_failed_contribution ( project_id: ProjectId, contributor: AccountIdOf<T>, contribution_id: u32, )  )
        [Name(StringChange("settle_failed_contribution", "send_pallet_migration_for")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("contributor", "participant"))]), Removed(2, ArgDesc { name: "contribution_id", ty: "u32" })] })]
    [≠] 25: start_pallet_migration ( jwt: UntrustedToken, project_id: ProjectId, para_id: ParaId, )  )
        [Name(StringChange("start_pallet_migration", "confirm_pallet_migrations")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("jwt", "query_id")), Ty(StringChange("UntrustedToken", "QueryId"))]), Changed(1, [Name(StringChange("project_id", "response")), Ty(StringChange("ProjectId", "Response"))]), Removed(2, ArgDesc { name: "para_id", ty: "ParaId" })] })]
    [≠] 26: start_offchain_migration ( jwt: UntrustedToken, project_id: ProjectId, )  )
        [Name(StringChange("start_offchain_migration", "mark_project_ct_migration_as_finished")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("jwt", "project_id")), Ty(StringChange("UntrustedToken", "ProjectId"))]), Removed(1, ArgDesc { name: "project_id", ty: "ProjectId" })] })]
    [-] "root_do_evaluation_end"
    [-] "remaining_contribute"
    [-] "root_do_end_funding"
    [-] "decide_project_outcome"
    [-] "start_pallet_migration_readiness_check"
    [-] "pallet_migration_readiness_response"
    [-] "send_pallet_migration_for"
    [-] "confirm_pallet_migrations"
    [-] "confirm_offchain_migration"
    [-] "mark_project_ct_migration_as_finished"

  - events changes:
    [≠]  3: ProjectPhaseTransition ( project_id: ProjectId, phase: ProjectPhases, )  )
        [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("ProjectPhases", "ProjectStatus<BlockNumberFor<T>>"))])] })]
    [≠]  7: ProjectOutcomeDecided ( project_id: ProjectId, decision: FundingOutcomeDecision, )  )
        [Name(StringChange("ProjectOutcomeDecided", "BidRefunded")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("decision", "account")), Ty(StringChange("FundingOutcomeDecision", "AccountIdOf<T>"))]), Added(2, ArgDesc { name: "bid_id", ty: "u32" }), Added(3, ArgDesc { name: "plmc_amount", ty: "BalanceOf<T>" }), Added(4, ArgDesc { name: "funding_asset", ty: "AcceptedFundingAsset" }), Added(5, ArgDesc { name: "funding_amount", ty: "BalanceOf<T>" })] })]
    [≠]  8: BidRefunded ( project_id: ProjectId, account: AccountIdOf<T>, bid_id: u32, reason: RejectionReason, plmc_amount: BalanceOf<T>, funding_asset: AcceptedFundingAsset, funding_amount: BalanceOf<T>, )  )
        [Name(StringChange("BidRefunded", "EvaluationSettled")), Signature(SignatureChange { args: [Changed(2, [Name(StringChange("bid_id", "id"))]), Changed(3, [Name(StringChange("reason", "ct_rewarded")), Ty(StringChange("RejectionReason", "BalanceOf<T>"))]), Changed(4, [Name(StringChange("plmc_amount", "plmc_released"))]), Removed(5, ArgDesc { name: "funding_asset", ty: "AcceptedFundingAsset" }), Removed(6, ArgDesc { name: "funding_amount", ty: "BalanceOf<T>" })] })]
    [≠]  9: EvaluationSettled ( project_id: ProjectId, account: AccountIdOf<T>, id: u32, ct_amount: BalanceOf<T>, slashed_plmc_amount: BalanceOf<T>, )  )
        [Name(StringChange("EvaluationSettled", "BidSettled")), Signature(SignatureChange { args: [Changed(3, [Name(StringChange("ct_amount", "final_ct_amount"))]), Changed(4, [Name(StringChange("slashed_plmc_amount", "final_ct_usd_price")), Ty(StringChange("BalanceOf<T>", "PriceOf<T>"))])] })]
    [≠] 10: BidSettled ( project_id: ProjectId, account: AccountIdOf<T>, id: u32, ct_amount: BalanceOf<T>, )  )
        [Name(StringChange("BidSettled", "ContributionSettled"))]
    [≠] 11: ContributionSettled ( project_id: ProjectId, account: AccountIdOf<T>, id: u32, ct_amount: BalanceOf<T>, )  )
        [Name(StringChange("ContributionSettled", "PalletMigrationStarted")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("account", "para_id")), Ty(StringChange("AccountIdOf<T>", "ParaId"))]), Removed(2, ArgDesc { name: "id", ty: "u32" }), Removed(3, ArgDesc { name: "ct_amount", ty: "BalanceOf<T>" })] })]
    [≠] 12: PalletMigrationStarted ( project_id: ProjectId, para_id: ParaId, )  )
        [Name(StringChange("PalletMigrationStarted", "HrmpChannelAccepted"))]
    [≠] 13: HrmpChannelAccepted ( project_id: ProjectId, para_id: ParaId, )  )
        [Name(StringChange("HrmpChannelAccepted", "HrmpChannelEstablished"))]
    [≠] 14: HrmpChannelEstablished ( project_id: ProjectId, para_id: ParaId, )  )
        [Name(StringChange("HrmpChannelEstablished", "MigrationReadinessCheckStarted")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("para_id", "caller")), Ty(StringChange("ParaId", "T::AccountId"))])] })]
    [≠] 15: MigrationReadinessCheckStarted ( project_id: ProjectId, caller: T::AccountId, )  )
        [Name(StringChange("MigrationReadinessCheckStarted", "MigrationCheckResponseAccepted")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("caller", "query_id")), Ty(StringChange("T::AccountId", "QueryId"))]), Added(2, ArgDesc { name: "response", ty: "Response" })] })]
    [≠] 16: MigrationCheckResponseAccepted ( project_id: ProjectId, query_id: QueryId, response: Response, )  )
        [Name(StringChange("MigrationCheckResponseAccepted", "MigrationCheckResponseRejected"))]
    [≠] 17: MigrationCheckResponseRejected ( project_id: ProjectId, query_id: QueryId, response: Response, )  )
        [Name(StringChange("MigrationCheckResponseRejected", "MigrationStatusUpdated")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("query_id", "account")), Ty(StringChange("QueryId", "AccountIdOf<T>"))]), Changed(2, [Name(StringChange("response", "status")), Ty(StringChange("Response", "MigrationStatus"))])] })]
    [≠] 18: MigrationStatusUpdated ( project_id: ProjectId, account: AccountIdOf<T>, status: MigrationStatus, )  )
        [Name(StringChange("MigrationStatusUpdated", "CTMigrationFinished")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "account", ty: "AccountIdOf<T>" }), Removed(2, ArgDesc { name: "status", ty: "MigrationStatus" })] })]
    [-] "CTMigrationFinished"

  - errors changes:
    [≠] 14: RoundTransitionAlreadyHappened
        [Name(StringChange("RoundTransitionAlreadyHappened", "TooLateForRound"))]
    [≠] 16: TooManyInsertionAttempts
        [Name(StringChange("TooManyInsertionAttempts", "NotIssuer"))]
    [≠] 17: NotIssuer
        [Name(StringChange("NotIssuer", "HasActiveProject"))]
    [≠] 18: HasActiveProject
        [Name(StringChange("HasActiveProject", "ParticipationToOwnProject"))]
    [≠] 19: ParticipationToOwnProject
        [Name(StringChange("ParticipationToOwnProject", "IssuerNotEnoughFunds"))]
    [≠] 20: IssuerNotEnoughFunds
        [Name(StringChange("IssuerNotEnoughFunds", "PriceTooLow"))]
    [≠] 21: PriceTooLow
        [Name(StringChange("PriceTooLow", "TicketSizeError"))]
    [≠] 22: TicketSizeError
        [Name(StringChange("TicketSizeError", "ParticipationCurrenciesError"))]
    [≠] 23: ParticipationCurrenciesError
        [Name(StringChange("ParticipationCurrenciesError", "AllocationSizeError"))]
    [≠] 24: AllocationSizeError
        [Name(StringChange("AllocationSizeError", "AuctionRoundPercentageError"))]
    [≠] 25: AuctionRoundPercentageError
        [Name(StringChange("AuctionRoundPercentageError", "FundingTargetTooLow"))]
    [≠] 26: FundingTargetTooLow
        [Name(StringChange("FundingTargetTooLow", "FundingTargetTooHigh"))]
    [≠] 27: FundingTargetTooHigh
        [Name(StringChange("FundingTargetTooHigh", "CidNotProvided"))]
    [≠] 28: CidNotProvided
        [Name(StringChange("CidNotProvided", "BadDecimals"))]
    [≠] 29: BadDecimals
        [Name(StringChange("BadDecimals", "BadTokenomics"))]
    [≠] 30: BadTokenomics
        [Name(StringChange("BadTokenomics", "TooLow"))]
    [≠] 31: TooLow
        [Name(StringChange("TooLow", "TooHigh"))]
    [≠] 32: TooHigh
        [Name(StringChange("TooHigh", "FundingAssetNotAccepted"))]
    [≠] 33: FundingAssetNotAccepted
        [Name(StringChange("FundingAssetNotAccepted", "TooManyUserParticipations"))]
    [≠] 34: TooManyUserParticipations
        [Name(StringChange("TooManyUserParticipations", "TooManyProjectParticipations"))]
    [≠] 35: TooManyProjectParticipations
        [Name(StringChange("TooManyProjectParticipations", "ForbiddenMultiplier"))]
    [≠] 36: ForbiddenMultiplier
        [Name(StringChange("ForbiddenMultiplier", "UserHasWinningBid"))]
    [≠] 37: UserHasWinningBid
        [Name(StringChange("UserHasWinningBid", "ParticipantNotEnoughFunds"))]
    [≠] 38: ParticipantNotEnoughFunds
        [Name(StringChange("ParticipantNotEnoughFunds", "PolicyMismatch"))]
    [≠] 39: PolicyMismatch
        [Name(StringChange("PolicyMismatch", "ProjectSoldOut"))]
    [≠] 47: FundingSuccessSettlementNotStarted
        [Name(StringChange("FundingSuccessSettlementNotStarted", "SettlementNotStarted"))]
    [≠] 48: FundingFailedSettlementNotStarted
        [Name(StringChange("FundingFailedSettlementNotStarted", "WrongSettlementOutcome"))]
    [≠] 49: WrongSettlementOutcome
        [Name(StringChange("WrongSettlementOutcome", "ParticipationsNotSettled"))]
    [≠] 50: ParticipationsNotSettled
        [Name(StringChange("ParticipationsNotSettled", "SettlementNotComplete"))]
    [≠] 51: SettlementNotComplete
        [Name(StringChange("SettlementNotComplete", "MigrationsStillPending"))]
    [-] "MigrationsStillPending"

  - constants changes:
    [+] ConstantDesc { name: "AuctionRoundDuration", value: [224, 196, 0, 0] }
    [+] ConstantDesc { name: "CommunityRoundDuration", value: [160, 140, 0, 0] }
    [+] ConstantDesc { name: "EvaluationRoundDuration", value: [224, 196, 0, 0] }
    [+] ConstantDesc { name: "RemainderRoundDuration", value: [64, 56, 0, 0] }
    [-] "AuctionClosingDuration"
    [-] "AuctionInitializePeriodDuration"
    [-] "AuctionOpeningDuration"
    [-] "CommunityFundingDuration"
    [-] "EvaluationDuration"
    [-] "ManualAcceptanceDuration"
    [-] "MaxProjectsToUpdateInsertionAttempts"
    [-] "MaxProjectsToUpdatePerBlock"
    [-] "RemainderFundingDuration"
    [-] "SuccessToSettlementTime"

  - storages changes:
    [-] "Nonce"
    [-] "ProjectsToUpdate"
    [-] "RetailParticipations"

[≠] pallet 81: LinearRelease -> 3 change(s)
  - calls changes:
    [≠]  2: vested_transfer ( target: AccountIdOf<T>, schedule: VestingInfo<BalanceOf<T>, BlockNumberFor<T>>, reason: ReasonOf<T>, )  )
        [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("VestingInfo<BalanceOf<T>, BlockNumberFor<T>>", "VestingInfoOf<T>"))])] })]
    [≠]  3: force_vested_transfer ( source: AccountIdOf<T>, target: AccountIdOf<T>, schedule: VestingInfo<BalanceOf<T>, BlockNumberFor<T>>, reason: ReasonOf<T>, )  )
        [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("VestingInfo<BalanceOf<T>, BlockNumberFor<T>>", "VestingInfoOf<T>"))])] })]

  - constants changes:
    [≠] MaxVestingSchedules: [26, 0, 0, 0]
        [Value([Changed(0, U8Change(26, 100))])]

[-] pallet 33: DmpQueue
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true