Skip to content
This repository was archived by the owner on Mar 13, 2023. It is now read-only.

Locked collateral for each order#910

Merged
hackfisher merged 47 commits into
masterfrom
update-fee-market
Nov 15, 2021
Merged

Locked collateral for each order#910
hackfisher merged 47 commits into
masterfrom
update-fee-market

Conversation

@boundless-forest
Copy link
Copy Markdown
Member

@boundless-forest boundless-forest commented Nov 5, 2021

Too many things are included in this pr, I made a list to help review.

Update List:

  • Rename AssignedRelayersStorage to AssignedRelayers , migration needed.
  • Rename first_and_last_fee() to lowest_and_highest_fee.
  • Delete one config type MiniumLockCollateral and introduce another type CollateralEachOrder. The original MiniumLockCollateral was used to limit the minimum locked collateral when relayers enroll. At the same time, MiniumLockCollateral was the maximum slash amount for each assigned relayer when relaying delay occurred. A drawback this implementation has is how the market reward message relayer and confirm relayers for a delay message whose assigned relayers' original collateral had been slashed out. I made a change about this issue in this pull request. Introduce order_capacity for the relayer to indicate the ability to accept the order task. The capacity is calculated as locked_collateral / CollateralEachOrder. The relayer who has more collateral locked has more order_capacity, can eat more relaying orders. One thing that should be noted is the selection of assigned relayers also have a relationship with relayer order capacity.
  • Slash logic update, the maximum slash value change to CollateralEachOrder. Once a message is delayed, slash CollateralEachOrder collateral.

TODO:

  • Data Migration for AssignedRelayers and Relayer.
  • Benchmark test update
  • Update readme docs

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 5, 2021

Commit 3a54d34

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet Substrate2SubstrateIssuing:
+ 	Item: Storage { name: "RemoteBackingAccount", type: Plain("AccountId<T>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Commit e57efd2

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet Substrate2SubstrateIssuing:
+ 	Item: Storage { name: "RemoteBackingAccount", type: Plain("AccountId<T>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Commit 711bb66

Pangolin

Check Runtime Version

Runtime Version {
	spec_name: Pangolin
	impl_name: Pangolin
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 4
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

Pallet Substrate2SubstrateIssuing:
+ 	Item: Storage { name: "RemoteBackingAccount", type: Plain("AccountId<T>") }

+ Pallet: "TransactionPause"​

Pangoro

Check Runtime Version

Runtime Version {
	spec_name: Pangoro
	impl_name: Pangoro
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 3
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

+ Pallet: "TransactionPause"​
Commit 0199bcf

Pangolin

Check Runtime Version

Runtime Version {
	spec_name: Pangolin
	impl_name: Pangolin
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 4
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

Pallet Substrate2SubstrateIssuing:
+ 	Item: Storage { name: "RemoteBackingAccount", type: Plain("AccountId<T>") }

+ Pallet: "TransactionPause"​

Pangoro

Check Runtime Version

Runtime Version {
	spec_name: Pangoro
	impl_name: Pangoro
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 3
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

+ Pallet: "TransactionPause"​
Commit e631671

Pangolin

Check Runtime Version

Runtime Version {
	spec_name: Pangolin
	impl_name: Pangolin
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 4
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

Pallet Substrate2SubstrateIssuing:
+ 	Item: Storage { name: "RemoteBackingAccount", type: Plain("AccountId<T>") }

+ Pallet: "TransactionPause"​

Pangoro

Check Runtime Version

Runtime Version {
	spec_name: Pangoro
	impl_name: Pangoro
	authoring_version: 1
-	spec_version: 2680
+	spec_version: 2690
	impl_version: 1
	transaction_version: 3
}​

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }

+ Pallet: "TransactionPause"​
Commit 39a5f25

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit fb388ea

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 061f59f

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 902fe89

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit e96516b

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 7edd4e5

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit b5fc958

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit be9a7bb

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 76ed916

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 6d13787

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }​
Commit 0cb142e

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​
Commit 7aa6d50

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​
Commit dfdbb80

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​
Commit 8bed973

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​
Commit f0da259

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​
Commit 9ff3e3d

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }
+ 	Item: Storage { name: "RewardModeStorage", type: Plain("RewardMode") }​
Commit 1ee88ec

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "CollateralSlashProtect", type: Plain("RingBalance<T>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "CollateralSlashProtect", type: Plain("RingBalance<T>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​
Commit 58366e2

Pangolin

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "CollateralSlashProtect", type: Plain("RingBalance<T>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​

Pangoro

Check Runtime Version

Check Storage Prefix

Pallet ElectionProviderMultiPhase:
+ 	Item: Storage { name: "SignedSubmissionIndices", type: Plain("SubmissionIndicesOf<T>") }
+ 	Item: Storage { name: "SignedSubmissionNextIndex", type: Plain("u32") }
+ 	Item: Storage { name: "SignedSubmissionsMap", type: Map { hasher: Twox64Concat, key: "u32", value: "SignedSubmissionOf<T>", unused: false } }

Pallet FeeMarket:
+ 	Item: Storage { name: "AssignedRelayers", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
- 	Item: Storage { name: "AssignedRelayersStorage", type: Plain("Vec<Relayer<T::AccountId, RingBalance<T>>>") }
+ 	Item: Storage { name: "CollateralSlashProtect", type: Plain("RingBalance<T>") }
+ 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, RingBalance<T>>", unused: false } }
- 	Item: Storage { name: "Orders", type: Map { hasher: Blake2_128Concat, key: "(LaneId, MessageNonce)", value: "Order<T::AccountId, T::BlockNumber, Fee<T>>", unused: false } }​

@boundless-forest boundless-forest changed the title Internal Review(Fee market) Internal Review (Fee market) Nov 9, 2021
@aurexav
Copy link
Copy Markdown
Member

aurexav commented Nov 9, 2021

Should we still keep Fee<T>?

BTW, Internal Review is not a good title.

@boundless-forest boundless-forest changed the title Internal Review (Fee market) Make fee market better Nov 9, 2021
@boundless-forest boundless-forest marked this pull request as ready for review November 10, 2021 04:03
Comment thread frame/fee-market/src/lib.rs Outdated
Copy link
Copy Markdown
Contributor

@hackfisher hackfisher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, except one more change request related to remove_enrolled_relayer in slashing.

Comment thread frame/fee-market/src/lib.rs
Comment thread frame/fee-market/src/s2s/payment.rs
Comment thread frame/fee-market/src/s2s/payment.rs Outdated
Comment thread frame/fee-market/src/lib.rs Outdated
Comment thread frame/fee-market/src/lib.rs Outdated
Comment thread frame/fee-market/src/s2s/payment.rs
Comment thread frame/fee-market/src/lib.rs
Comment thread frame/fee-market/src/s2s/payment.rs Outdated
@boundless-forest
Copy link
Copy Markdown
Member Author

Latest Pangoro try-runtime:

darwinia-common [update-fee-market]× » ./target/release/drml try-runtime --block-at 0x02f8023395efc0a6ef163dfc2875ecd41018aeca14aae3cd9f958d31cee8c0f0 --chain pangoro-dev -u wss://pangoro-rpc.darwinia.network on-runtime-upgrade live
2021-11-12 11:55:45 `pallet_timestamp::UnixTime::now` is called at genesis, invalid value returned: 0    
2021-11-12 11:55:45 [#0] 🗳  Entering emergency mode: NoFallbackConfigured    
2021-11-12 11:55:45 [0] 💸 election provider failed due to NoFallbackConfigured    
2021-11-12 11:55:45 [#0] 🗳  Entering emergency mode: NoFallbackConfigured    
2021-11-12 11:55:45 [0] 💸 election provider failed due to NoFallbackConfigured    
2021-11-12 11:55:45 initializing remote client to "wss://pangoro-rpc.darwinia.network"    
2021-11-12 11:55:47 scraping key-pairs from remote @ 0x02f8023395efc0a6ef163dfc2875ecd41018aeca14aae3cd9f958d31cee8c0f0    
2021-11-12 11:55:47 downloading data for all modules.    
2021-11-12 11:56:12 Querying a total of 20156 keys    
2021-11-12 11:56:40 extending externalities with 1 manually injected key-values    
2021-11-12 11:56:40 injecting a total of 20158 keys    
2021-11-12 11:56:40 ===> Start migrate all storage items in AssignedRelayersStorage    
2021-11-12 11:56:40 the migrate content [Relayer { id: , collateral: 0, fee: 30000000000 }, Relayer { id: , collateral: 0, fee: 50000000000 }, Relayer { id: , collateral: 0, fee: 500000000000 }]    
2021-11-12 11:56:40 ===> End migrate all storage items in AssignedRelayersStorage    
2021-11-12 11:56:40 ===> Start migrate all storage items in Orders    
2021-11-12 11:56:40 The new order: order Order { lane: [114, 111, 108, 105], message: 62, sent_time: 1022299, confirm_time: None, locked_collateral: 100000000000, relayers: [PriorRelayer { id: , fee: 30000000000, valid_range: 1022299..1022349 }, PriorRelayer { id: , fee: 50000000000, valid_range: 1022349..1022399 }, PriorRelayer { id: , fee: 500000000000, valid_range: 1022399..1022449 }] }    
2021-11-12 11:56:40 ===> End migrate all storage items in Orders    
2021-11-12 11:56:40 ===> All Migrates finished    
2021-11-12 11:56:40 ⚠️ System declares internal migrations (which *might* execute), setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for TransactionPause, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for FeeMarket, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Substrate2SubstrateBacking, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for BridgePangolinGrandpa, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for BridgeDispatch, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for BridgePangolinMessages, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Scheduler, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Sudo, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for AuthorityDiscovery, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for ImOnline, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Grandpa, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Session, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Historical, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ⚠️ Offences declares internal migrations (which *might* execute), setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 have 0 deferred offences, applying.    
2021-11-12 11:56:40 ✅ no migration for Staking, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for ElectionProviderMultiPhase, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Authorship, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for TransactionPayment, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Kton, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Balances, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Timestamp, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for Babe, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 ✅ no migration for RandomnessCollectiveFlip, setting storage version to <wasm:stripped>    
2021-11-12 11:56:40 TryRuntime_on_runtime_upgrade executed without errors. Consumed weight = 512646400000000, total weight = 512000000000000 (1.0012625)    

Comment thread node/runtime/pangolin/src/lib.rs
@hackfisher
Copy link
Copy Markdown
Contributor

Remove the Fee type in types.json

and pangoro.

@boundless-forest
Copy link
Copy Markdown
Member Author

@hackfisher @xiaoch05 Take a review again.

Comment thread frame/fee-market/src/lib.rs Outdated
Comment thread frame/fee-market/src/s2s/payment.rs Outdated
Comment thread frame/fee-market/src/lib.rs
Comment on lines +380 to +384
<AssignedRelayers<T>>::mutate(|assigned_relayers| {
if let Some(relayers) = assigned_relayers {
relayers.retain(|x| x.id != *who);
}
});
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In which cases we will remove an relayer who is in assignment? Should we change this to use ensure!?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to update the assigned_relayers list when the enrolled relayer wants to exit the fee market by calling cancel_enrollment().

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But assigned_relayers means there exists order for the relayer right, we do not allow cancel enrollment for the relayer if it has ongoing order?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But assigned_relayers means there exists order for the relayer right?

we use occupied(who: &T::AccountId).

we do not allow cancel enrollment for the relayer if it has ongoing order?

Yes, we will check whether the relayer have ongoing orders use ensure!(Self::occupied(&who).is_none(), <Error<T>>::OccupiedRelayer); before remove_enrolled_relayer.

@hackfisher hackfisher merged commit c8832e5 into master Nov 15, 2021
@hackfisher hackfisher deleted the update-fee-market branch November 15, 2021 04:56
@aurexav
Copy link
Copy Markdown
Member

aurexav commented Nov 15, 2021

@sxlwar Types updated.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

BK-Storage [Break] This changes storage; next release should be major. N-Pangolin [Network] Pangolin N-Pangoro [Network] Pangoro

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants