From ee835bebeb2411dd011fa86b857cdae8015c7cbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20=C5=A0kvorc?= Date: Fri, 2 Jul 2021 10:30:01 +0200 Subject: [PATCH] Propose bumping StringLimit to 128 bytes (#516) * Propose bumping StringLimit to 64 bytes The StringLimit of 50 bytes is too short for useful hashes of different protocols: - When using IPFS, the hash is 46 bytes. With a protocol prefix and type prefix (IPFS vs IPNS) it becomes: `ipfs://ipfs/QmPK1s3pNYLi9ERiq3BDxKa4XosgWwFRQUydHUtz4YgpqB` or 59 bytes. - On arweave, the hash is 43 bytes. Prefixed with just `arweave://` bumps it up to 53: `arweave://BNttzDav3jHVnNiV7nYbQv-GY0HQ-4XXsdkE5K9ylHQ`. - On Sia, with 46 char hashes, adding `sia://` as the protocol to use will bump it past 50: `sia://GACjmEWXmYF1N3Rc-PyjN304-8M0zOXHYzAXY9222xkGhA` (52) As such, we feel that 64 bytes is a reasonable minimum for the `StringLimit`. * Update lib.rs * Add different const for `UniquesStringLimit` Co-authored-by: Shawn Tabrizi --- cumulus/polkadot-parachains/rococo/src/lib.rs | 4 ++-- cumulus/polkadot-parachains/statemine/src/lib.rs | 7 ++++--- cumulus/polkadot-parachains/statemint/src/lib.rs | 4 ++-- cumulus/polkadot-parachains/westmint/src/lib.rs | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cumulus/polkadot-parachains/rococo/src/lib.rs b/cumulus/polkadot-parachains/rococo/src/lib.rs index f310d8920f..0a8a24636f 100644 --- a/cumulus/polkadot-parachains/rococo/src/lib.rs +++ b/cumulus/polkadot-parachains/rococo/src/lib.rs @@ -400,7 +400,7 @@ impl cumulus_ping::Config for Runtime { parameter_types! { pub const AssetDeposit: Balance = 1 * ROC; pub const ApprovalDeposit: Balance = 100 * MILLIROC; - pub const StringLimit: u32 = 50; + pub const AssetsStringLimit: u32 = 50; pub const MetadataDepositBase: Balance = 1 * ROC; pub const MetadataDepositPerByte: Balance = 10 * MILLIROC; pub const UnitBody: BodyId = BodyId::Unit; @@ -419,7 +419,7 @@ impl pallet_assets::Config for Runtime { type MetadataDepositBase = MetadataDepositBase; type MetadataDepositPerByte = MetadataDepositPerByte; type ApprovalDeposit = ApprovalDeposit; - type StringLimit = StringLimit; + type StringLimit = AssetsStringLimit; type Freezer = (); type Extra = (); type WeightInfo = pallet_assets::weights::SubstrateWeight; diff --git a/cumulus/polkadot-parachains/statemine/src/lib.rs b/cumulus/polkadot-parachains/statemine/src/lib.rs index 3c0750a5f2..f271373293 100644 --- a/cumulus/polkadot-parachains/statemine/src/lib.rs +++ b/cumulus/polkadot-parachains/statemine/src/lib.rs @@ -241,7 +241,7 @@ impl pallet_transaction_payment::Config for Runtime { parameter_types! { pub const AssetDeposit: Balance = UNITS; // 1 UNIT deposit to create asset pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; - pub const StringLimit: u32 = 50; + pub const AssetsStringLimit: u32 = 50; /// Key = 32 bytes, Value = 36 bytes (32+1+1+1+1) // https://github.com/paritytech/substrate/blob/069917b/frame/assets/src/lib.rs#L257L271 pub const MetadataDepositBase: Balance = deposit(1, 68); @@ -266,7 +266,7 @@ impl pallet_assets::Config for Runtime { type MetadataDepositBase = MetadataDepositBase; type MetadataDepositPerByte = MetadataDepositPerByte; type ApprovalDeposit = ApprovalDeposit; - type StringLimit = StringLimit; + type StringLimit = AssetsStringLimit; type Freezer = (); type Extra = (); type WeightInfo = weights::pallet_assets::WeightInfo; @@ -280,6 +280,7 @@ parameter_types! { pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); pub const AttributeDepositBase: Balance = deposit(1, 0); pub const DepositPerByte: Balance = deposit(0, 1); + pub const UniquesStringLimit: u32 = 128; } impl pallet_uniques::Config for Runtime { @@ -293,7 +294,7 @@ impl pallet_uniques::Config for Runtime { type MetadataDepositBase = UniquesMetadataDepositBase; type AttributeDepositBase = AttributeDepositBase; type DepositPerByte = DepositPerByte; - type StringLimit = StringLimit; + type StringLimit = UniquesStringLimit; type KeyLimit = KeyLimit; type ValueLimit = ValueLimit; type WeightInfo = weights::pallet_uniques::WeightInfo; diff --git a/cumulus/polkadot-parachains/statemint/src/lib.rs b/cumulus/polkadot-parachains/statemint/src/lib.rs index 30a480341c..3357594543 100644 --- a/cumulus/polkadot-parachains/statemint/src/lib.rs +++ b/cumulus/polkadot-parachains/statemint/src/lib.rs @@ -231,7 +231,7 @@ impl pallet_randomness_collective_flip::Config for Runtime {} parameter_types! { pub const AssetDeposit: Balance = 100 * DOLLARS; // 100 DOLLARS deposit to create asset pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; - pub const StringLimit: u32 = 50; + pub const AssetsStringLimit: u32 = 50; /// Key = 32 bytes, Value = 36 bytes (32+1+1+1+1) // https://github.com/paritytech/substrate/blob/069917b/frame/assets/src/lib.rs#L257L271 pub const MetadataDepositBase: Balance = deposit(1, 68); @@ -256,7 +256,7 @@ impl pallet_assets::Config for Runtime { type MetadataDepositBase = MetadataDepositBase; type MetadataDepositPerByte = MetadataDepositPerByte; type ApprovalDeposit = ApprovalDeposit; - type StringLimit = StringLimit; + type StringLimit = AssetsStringLimit; type Freezer = (); type Extra = (); type WeightInfo = weights::pallet_assets::WeightInfo; diff --git a/cumulus/polkadot-parachains/westmint/src/lib.rs b/cumulus/polkadot-parachains/westmint/src/lib.rs index f526882f39..0345f4323e 100644 --- a/cumulus/polkadot-parachains/westmint/src/lib.rs +++ b/cumulus/polkadot-parachains/westmint/src/lib.rs @@ -237,7 +237,7 @@ impl pallet_sudo::Config for Runtime { parameter_types! { pub const AssetDeposit: Balance = 100 * UNITS; // 100 WND deposit to create asset pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; - pub const StringLimit: u32 = 50; + pub const AssetsStringLimit: u32 = 50; /// Key = 32 bytes, Value = 36 bytes (32+1+1+1+1) // https://github.com/paritytech/substrate/blob/069917b/frame/assets/src/lib.rs#L257L271 pub const MetadataDepositBase: Balance = deposit(1, 68); @@ -254,7 +254,7 @@ impl pallet_assets::Config for Runtime { type MetadataDepositBase = MetadataDepositBase; type MetadataDepositPerByte = MetadataDepositPerByte; type ApprovalDeposit = ApprovalDeposit; - type StringLimit = StringLimit; + type StringLimit = AssetsStringLimit; type Freezer = (); type Extra = (); type WeightInfo = weights::pallet_assets::WeightInfo;