Skip to content

Commit c1f4c02

Browse files
author
root28root
committed
SimpleNFT: publish & demo tx links (Aptos Devnet)
1 parent 8f80131 commit c1f4c02

2 files changed

Lines changed: 66 additions & 13 deletions

File tree

simplenft/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,11 @@ sui move build
1212
## Test
1313
```bash
1414
sui move test
15+
16+
## 🚀 Deploy & Run (Aptos Devnet)
17+
18+
**Package address:**
19+
`0xb35962eed27b9a272d82673f2b7a99e7257b7b1a9af02c1a09143dacbaf498bd`
20+
21+
- Publish tx: https://explorer.aptoslabs.com/txn/0xfe1cbd0b4514deb3c529aee2286a35f3f3f5f177acc7867dcfa428f48305bec4?network=devnet
22+
- Demo tx (entry_demo): https://explorer.aptoslabs.com/txn/0x279c2d6adcc180f572329e253077f65f9c792cb14a5e9e49b6346540585754f2?network=devnet

simplenft/sources/simple_nft.move

Lines changed: 58 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,67 @@
11
module SimpleNFT::nft {
2-
/// Minimal NFT without strings/vectors/signers
3-
struct NFT has store {
4-
id: u64,
5-
owner: address,
2+
/// Простейшая демо-модель без ресурсов внутри полей:
3+
/// вместо хранения NFT как ресурса, храним его данные в примитивах.
4+
struct Registry has store {
5+
next_id: u64,
6+
has0: bool,
7+
id0: u64,
8+
name0: vector<u8>,
9+
owner0: address,
610
}
711

8-
/// Mint an NFT to owner with id
9-
public fun mint(id: u64, owner: address): NFT {
10-
NFT { id, owner }
12+
public fun new_registry(): Registry {
13+
Registry {
14+
next_id: 0,
15+
has0: false,
16+
id0: 0,
17+
name0: b"",
18+
owner0: @0x0
19+
}
1120
}
1221

13-
/// Transfer ownership
14-
public fun transfer(n: &mut NFT, to: address) {
15-
n.owner = to;
22+
public fun mint(r: &mut Registry, to: address, name: vector<u8>) {
23+
// Разрешаем ровно один минт (#0) для демо
24+
assert!(!r.has0, 1);
25+
let id = r.next_id;
26+
r.next_id = id + 1;
27+
28+
// Заполняем поля примитивами — никаких ресурсов = нет проблем с drop
29+
r.id0 = id;
30+
r.name0 = name;
31+
r.owner0 = to;
32+
r.has0 = true;
33+
}
34+
35+
public fun transfer(r: &mut Registry, id: u64, to: address) {
36+
assert!(r.has0, 2);
37+
assert!(r.id0 == id, 3);
38+
r.owner0 = to;
39+
}
40+
41+
public fun get_owner(r: &Registry, id: u64): address {
42+
assert!(r.has0, 4);
43+
assert!(r.id0 == id, 5);
44+
r.owner0
45+
}
46+
47+
// «Поглощаем» реестр, чтобы не было implicit drop предупреждений
48+
fun destroy_registry(r: Registry) {
49+
let Registry {
50+
next_id: _,
51+
has0: _,
52+
id0: _,
53+
name0: _,
54+
owner0: _
55+
} = r;
1656
}
1757

18-
/// Read owner
19-
public fun owner_of(n: &NFT): address {
20-
n.owner
58+
/// DEMO: создаём реестр, минтим NFT #0 → переводим → проверяем владельца
59+
public entry fun entry_demo(_s: &signer) {
60+
let r = new_registry();
61+
mint(&mut r, @0x1, b"Demo NFT");
62+
transfer(&mut r, 0, @0x2);
63+
let owner = get_owner(&r, 0);
64+
assert!(owner == @0x2, 0);
65+
destroy_registry(r);
2166
}
2267
}

0 commit comments

Comments
 (0)