最新的
随时了解最新帖子。
帖子
1829什么是原生函数,我们可以直接调用它们吗?
我在 Move 中遇到过 “原生函数” 一词,但找不到有关它的详细信息. 我听说它们是在 Move 中声明的,但是在外部定义的,通常是在 Rust 中. 这是否意味着它们是钱包或其他模块无法直接调用的内部函数?
- Move CLI
- Move
01- 专家问答为MoveApr 10, 2025
如何转移另一个对象拥有的对象?
我在转移对象 A 时遇到了问题,该对象归对象 B 所有,对象 B 归我所有. 我收到一条错误消息,说交易没有由正确的发件人签署. 有人知道如何解决这个问题并正确接收对象 A 吗?
- 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 Move 中将公钥转换为 Sui 地址
我正在尝试使用 Sui Move 将公钥转换为 Sui 地址,但找不到任何内置函数. 我知道这对我的工作非常重要. 有人能解释一下究竟如何进行这种转换吗?
- Move CLI
01 - 讨论Xavier.eth296为SuiApr 10, 2025
如何将SUI从标准钱包转移到Ledger钱包?
我已经将我的 Ledger 连接到一个新创建的 SUI 钱包,效果很好. 现在,我想将我的SUI从我的 “标准” SUI钱包转移到我的 “Ledger” SUI钱包中. 有没有捷径,还是我必须将SUI从一个地址发送到另一个地址,比如向交易所发送代币?我想确保这个过程是安全的.
- Transaction Processing
01 Sui 支持合同自我毁灭吗?
我想知道是否有办法在Sui框架内销毁或自毁智能合约. 我听说过一些关于 “自毁” 机制的消息,想知道它是否存在于 Sui 中. 另外,如果以这种方式终止合同,会发生什么?
- Move
- Smart Contract
01- 文章为SuiApr 10, 2025
使用 Sui Move 和现代用户界面构建下一代 NFT 彩票 dApp
🧩 使用 Sui Move 和现代用户界面构建下一代 NFT 彩票 dApp 这是你使用Sui Move构建游戏化、基于NFT的彩票DApp的终极指南,它具有多轮支持、推荐系统、DAO治理和Z世代会喜欢的设计系统. 从合约架构到用户界面流程——让我们全力以赴. 📦 阶段分解 第一阶段 — 核心彩票 -多回合游戏 -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 部分中构建 UI 并集成到 Sui 测试网上,请告诉我!
- Sui
3
- 2565
- 1780
- 402
- 397
- 369
- 345
- 328
- 296
- 294
- 289