Найновіші
Будьте в курсі останніх дописів.
Пости
1829Що таке рідна функція і чи можемо ми називати їх безпосередньо?
Я натрапив на термін «рідна функція» у Move, але не можу знайти детальної інформації про це. Я чув, що вони оголошені в Move, але визначені зовні, часто в Rust. Чи означає це, що це внутрішні функції, які не можна викликати безпосередньо гаманцями чи іншими модулями?
- Move CLI
- Move
01- Питання та відповіді експертівДляMoveApr 10, 2025
Як передати об'єкт, що належить іншому об'єкту?
Я стикаюся з проблемою з передачею об'єкта А, який належить об'єкту B, а об'єкт B належить мені. Я отримую помилку, що повідомляє, що транзакція не була підписана правильним відправником. Хтось знає, як це вирішити і правильно отримати об'єкт А?
- Move CLI
- Move
01 Чому гаманець мого торгового бота блокується до наступної епохи?
У мене виникла проблема, коли мій торговий гаманець, який використовує бота, часто отримує помилку: «Не вдалося підписати транзакцію кворумом валідаторів...» Це призводить до того, що гаманець блокується до наступної епохи, іноді годинами. Він з'являється особливо після тайм-ауту RPC під час транзакції. Чому це відбувається, і як це можна виправити, щоб уникнути таких довгих замків?
- Sui
00How to upload large files to Walrus without speed issues?
I'm trying to use Walrus for uploading files via API and I'm running into issues when trying to upload a 300MB file. While it works with the CLI, the upload speed is slow. Is there a file upload limit with Walrus, and how can I improve upload speeds for larger files?
- Walrus
- Typescript SDK
02How does Walrus compare to AO and others?
I'm trying to understand the difference between Walrus and AO. From a functional perspective, how do they compare, especially considering their relationship with Sui and Arweave? Also, how does this comparison extend to Sui and Arweave specifically?
- Walrus
00Як інтегрувати міст Polygon Portal для передачі USDT?
Зараз я працюю над проектом, де мені потрібно інтегрувати міст Polygon Portal у гаманець, щоб полегшити переказ USDT. Чи є будь-яка документація чи ресурси, які можуть допомогти мені зрозуміти, як працює цей міст?
- Polygon PoS
02- Питання та відповіді експертівPluto Dev👽141ДляMoveApr 10, 2025
Перетворення відкритого ключа на адресу Sui в Sui Move
Я намагаюся перетворити відкритий ключ у адресу Sui за допомогою Sui Move, але не можу знайти жодної вбудованої функції. Я розумію, що це дуже важливо для моєї роботи. Чи міг би хтось пояснити, як саме зробити це перетворення?
- Move CLI
01 - ОбговоренняXavier.eth296ДляSuiApr 10, 2025
Як перевести SUI зі стандартного гаманця на гаманець Ledger?
Я підключив свій Ledger до нещодавно створеного гаманця SUI, і це добре спрацювало. Тепер я хочу перевести свій SUI з мого «Стандартного» гаманця SUI на свій гаманець SUI «Ledger». Чи є ярлик, чи мені потрібно надсилати SUI з однієї адреси на іншу, наприклад, надсилати токени на біржі? Я хочу, щоб цей процес був безпечним.
- Transaction Processing
01 Чи підтримує Суй контракт на самознищення?
Мені було цікаво, чи є спосіб знищити чи самознищити смарт-контракт в рамках Sui. Я почув щось про механізм «самознищення» і хотів знати, чи існує він у Суї. Крім того, що станеться, якщо контракт розірваний таким чином?
- Move
- Smart Contract
01- СтаттяДляSuiApr 10, 2025
Створення DApp лотереї NFT наступного покоління за допомогою Sui Move та сучасного інтерфейсу користувача
🧩 Створення DApp лотереї NFT наступного покоління за допомогою Sui Move та сучасного інтерфейсу користувача Це ваш остаточний посібник із створення гейміфікованого лотерейного DApp на базі NFT за допомогоюSui Move, з підтримкою кількох раундів, реферальними системами, управлінням DAO та системою дизайну Gen Z, яка сподобається. Від архітектури контрактів до потоку інтерфейсу користувача — давайте розберемося. 📦 Фазова поломка Фаза 1 — Основна лотерея Багатораундний геймплей NFT квитки Система винагород за рефералів Базове голосування DAO Фаза 2 - Маркетплейс та гейміфікація Інтеграція ринку NFT Бустери (збільшити шанс на виграш) Система джекпотів Приховані аеродропи Фаза 3 - DAO та багатоланцюг Крос-ланцюгова сумісність DAO з розширеними пропозиціями Динамічне ціноутворення Онлайн-аналітика 🧠 Глибоке занурення смарт-контракту на Sui Move Структура контракту module nft_lottery_x::nft_lottery_x { use sui::object; use sui::balance::{Balance, zero}; use sui::coin::{Self, Coin}; use sui::clock::Clock; use sui::random::Random; use sui::event::emit; use sui::transfer; use sui::tx_context::TxContext; use std::option; use std::signer; const EGameNotStarted: u64 = 1000; const EGameAlreadyFinished: u64 = 1001; const EInvalidPayment: u64 = 1002; const ENoTickets: u64 = 1003; const EWinnerAlreadyChosen: u64 = 1004; const ENotWinner: u64 = 1005; public struct Game has key { id: UID, ticket_price: u64, start_time: u64, end_time: u64, total_tickets: u32, round: u32, winner: Option, balance: Balance, referral_bonus: u64, } public struct Ticket has key { id: UID, game_id: ID, ticket_number: u32, buyer: address, referrer: Option, } public struct GameCreated has copy, drop { game_id: ID, start_time: u64, end_time: u64, ticket_price: u64, } public struct TicketBought has copy, drop { game_id: ID, ticket_number: u32, buyer: address, referrer: Option, } public struct WinnerAnnounced has copy, drop { game_id: ID, winner_ticket: u32, round: u32, } public struct RewardClaimed has copy, drop { game_id: ID, ticket_number: u32, amount: u64, } public fun create_game( start_time: u64, end_time: u64, ticket_price: u64, referral_bonus: u64, ctx: &mut TxContext ) { let game = Game { id: object::new(ctx), ticket_price, start_time, end_time, total_tickets: 0, round: 1, winner: option::none(), balance: zero(), referral_bonus, }; emit(GameCreated { game_id: object::id(&game), start_time, end_time, ticket_price, }); transfer::share_object(game); } public fun buy_ticket( game: &mut Game, coin: Coin, clock: &Clock, referrer: Option, ctx: &mut TxContext ): Ticket { assert!(clock.timestamp_ms() >= game.start_time, EGameNotStarted); assert!(clock.timestamp_ms() (TicketBought { game_id: object::id(game), ticket_number: ticket.ticket_number, buyer: ticket.buyer, referrer: ticket.referrer, }); ticket } public entry fun determine_winner( game: &mut Game, rand: &Random, clock: &Clock, ctx: &mut TxContext ) { assert!(clock.timestamp_ms() >= game.end_time, EGameNotStarted); assert!(game.winner.is_none(), EWinnerAlreadyChosen); assert!(game.total_tickets > 0, ENoTickets); let mut generator = rand.new_generator(ctx); let winning_ticket = generator.generate_u32_in_range(1, game.total_tickets); game.winner = option::some(winning_ticket); emit(WinnerAnnounced { game_id: object::id(game), winner_ticket: winning_ticket, round: game.round, }); } public fun claim_reward( ticket: Ticket, game: Game, ctx: &mut TxContext ): Coin { assert!(object::id(&game) == ticket.game_id, EInvalidPayment); let ticket_num = ticket.ticket_number; assert!(game.winner.contains(&ticket_num), ENotWinner); let amount = game.balance.value(); let reward = game.balance.into_coin(ctx); emit(RewardClaimed { game_id: object::id(&game), ticket_number: ticket.ticket_number, amount, }); object::delete(object::id(&game)); reward } } Ключові висновки: ✅ Balanceзабезпечує безпеку типу та належне поводження з монетами ✅ Optionчітко сигналізує, чи був обраний переможець ✅ Події пропонують простежуваність для фронтендів та дослідників 🛠 Команди Sui CLI sui client call --package --module nft_lottery_x --function create_game --args --gas-budget 10000000 Щоб купити квиток, визначити переможця або отримати винагороду, дотримуйтесь подібних потоків CLI. 🔮 Майбутні доповнення Логіка автоматичного скидання для наступного раунду claim_reward Випускайте більше подій на кшталт ReferralRewardDistributed Рефактор джекпотів та рефералів у підмодулі Дайте мені знати, якщо ви хочете, щоб частина 2 створила інтерфейс користувача та інтегрувалася в testnet Sui!
- Sui
3