Пост
Поделитесь своими знаниями.
Могут ли модули беспрепятственно генерировать несколько монет в блокчейне?
Я работаю над модулем для рынков прогнозирования, и мне нужен этот модуль для генерации монет в блокчейне с помощью фабричного класса без разрешения и проверки. В настоящее время в модулях действуют ограничения: из-за версии One Time Witness на модуль приходится всего одна монета. Поэтому мне пришлось создать эквивалентный стандарт монет, который кошельки пользователей не распознают как монеты. Сможем ли мы решить эту проблему в следующем обновлении?
- Move CLI
- Move Module
Ответы
2Хотя в настоящее время модули имеют ограничения, такие как ограничение на публикацию только одной монеты на модуль из-за One Time Witness, рассмотрите возможность использования одного развернутого контракта, такого как WASM, который позволяет создавать несколько типов монет, как описано в этом руководстве: https://docs.sui.io/guides/developer/nft/asset-tokenization.
Если вы создаете модуль рынка предсказаний и хотите генерировать новые монеты в блокчейне по фабричной схеме, вы столкнулись с известным ограничением в текущей системе монет Move, а именно с правиломOne Time Witness (OTW), которое ограничивает каждый модуль определением только одного типа монет. Из-за этого, когда вы пытаетесь динамически создавать несколько монет, вы вынуждены использовать собственную структуру, которую кошельки не распознают как нативные монеты, что затрудняет взаимодействие с пользователем.
Чтобы обойти эту проблему, можно создать собственную структуру, похожую на монеты, которая имитирует поведение нативной версии, Coin<T>
но не будет восприниматься интерфейсом кошелька Sui как таковая. К сожалению, пока компания Sui не обновит свою модель монет, включив в нееподдержку нескольких монет на модульили не внедрит более гибкую заводскую систему с надлежащей поддержкой кошельков, это ограничение сохранится. Тем не менее, вы все равно можете обеспечить верификацию и отсутствие разрешений в системе, публикуя события, связанные с созданием монет, и сохраняя метаданные в реестре, доступном для чтения кошельками или индексаторами.
А пока вот простая концептуальная структура заводского генератора монет, имитирующего поведение нативных монет:
public entry fun create_prediction_token(
admin: &signer,
name: vector<u8>,
symbol: vector<u8>,
decimals: u8
): (CustomCoin, CustomCoinMetadata) {
let token = CustomCoin { id: object::new(admin), value: 0 };
let metadata = CustomCoinMetadata {
name,
symbol,
decimals,
creator: signer::address_of(admin)
};
// Emit an event or store in registry for traceability
event::emit<NewTokenCreated>(&metadata);
(token, metadata)
}
В будущем Sui может предложить более гибкое или нативное решение, возможно, с использованиемфабрикис несколькими монетами**или обновленной логикой распознавания кошельков для монет, созданных на заводе. А пока вы можете следить за развитием событий и предлагать улучшения в официальном репозитории или обсуждениях в сообществе.
https://github.com/MystenLabs/sui/discussions
https://docs.sui.io/devnet/build/coin
Это растущая область экосистемы, поэтому ваши отзывы могут напрямую повлиять на будущие обновления.
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Заработай свою долю из 1000 Sui
Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.