На вкладке разработчика приложений Polkadot, как вы кодируете кортеж Rust?
Есть несколько примеров, включая пользовательские типы ржавчины, объявленные в модуле времени выполнения, который может быть применен интерфейсом Polkadot Apps здесь. Однако я не уверен, как кодировать кортежи. Это также относится к любому, кто планирует использовать кортежи в своем коде и API времени выполнения для использования в polkadot-js.
Вот как это объявлено в модуле Substrate Runtime:
// tuple (struct)
pub type Code = u16;
pub type Type = u16;
pub struct Tuple(Code, Type);
// Complex struct using tuple
pub struct Record<T::AccountId,Tuple> {
pub address: T::AccountId,
pub tuple_values: Tuple,
}
// Storage
Record get(record):
map T::AccountId => Option<Record<T::AccountId,Tuple>>;
Полагаю, я бы добавил что-то подобное в Developer
вкладка в настройках приложений Polkadot, но я не знаю, правильный ли это синтаксис для использования.
{
"Code": "u16",
"Type": "u16",
"Tuple": ["Code", "Type"],
"Record": {
"address": "AccountId",
"tuple_values": "Tuple"
}
}
1 ответ
Кортежи, структуры Tuple и именованные структуры кодируются одинаково. Из https://substrate.dev/docs/en/next/conceptual/core/codec
Серия значений фиксированного размера, каждое из которых может иметь свой, но заранее определенный и фиксированный тип. Это просто объединение каждого закодированного значения. Для структур значения имеют имена, но это не имеет отношения к кодировке (имена игнорируются - имеет значение только порядок).
Так что в вашем случае будет работать что-то вроде этого:
```json
{
"Code": "u16",
"Type": "u16",
"Tuple": {
"bogus_name_1": "Code",
"bogus_name_2": "Type"
},
"Record": {
"address": "AccountId",
"tuple_values": "Tuple"
}
}