Skip to content

Commit

Permalink
finish task3
Browse files Browse the repository at this point in the history
  • Loading branch information
wasd845 committed Sep 2, 2024
1 parent 78af5f1 commit 665a2fd
Show file tree
Hide file tree
Showing 6 changed files with 190 additions and 4 deletions.
34 changes: 34 additions & 0 deletions mover/wasd845/code/task3/MyNFT/Move.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# @generated by Move, please check-in and do not edit manually.

[move]
version = 2
manifest_digest = "97942BAA05C4C1429355FE7938104D3525722BDC7FA4A0A3828916F55BA25346"
deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082"
dependencies = [
{ name = "Sui" },
]

[[move.package]]
name = "MoveStdlib"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" }

[[move.package]]
name = "Sui"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" }

dependencies = [
{ name = "MoveStdlib" },
]

[move.toolchain-version]
compiler-version = "1.32.0"
edition = "2024.beta"
flavor = "sui"

[env]

[env.devnet]
chain-id = "814c79df"
original-published-id = "0x0f828c084e17ae73a7132ef3eb37d2259c2a521835964375fa66317356d391bc"
latest-published-id = "0x0f828c084e17ae73a7132ef3eb37d2259c2a521835964375fa66317356d391bc"
published-version = "1"
37 changes: 37 additions & 0 deletions mover/wasd845/code/task3/MyNFT/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[package]
name = "MyNFT"
edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move
# license = "" # e.g., "MIT", "GPL", "Apache 2.0"
# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"]

[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }

# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`.
# Revision can be a branch, a tag, and a commit hash.
# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" }

# For local dependencies use `local = path`. Path is relative to the package root
# Local = { local = "../path/to" }

# To resolve a version conflict and force a specific version for dependency
# override use `override = true`
# Override = { local = "../conflicting/version", override = true }

[addresses]
mynft = "0x0"

# Named addresses will be accessible in Move as `@name`. They're also exported:
# for example, `std = "0x1"` is exported by the Standard Library.
# alice = "0xA11CE"

[dev-dependencies]
# The dev-dependencies section allows overriding dependencies for `--test` and
# `--dev` modes. You can introduce test-only dependencies here.
# Local = { local = "../path/to/dev-build" }

[dev-addresses]
# The dev-addresses section allows overwriting named addresses for the `--test`
# and `--dev` modes.
# alice = "0xB0B"

96 changes: 96 additions & 0 deletions mover/wasd845/code/task3/MyNFT/sources/mynft.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@

/// Module: mynft
module mynft::mynft {
use sui::tx_context::{sender};
use sui::url;
use std::string;
use sui::event;

public struct WASD845Nft has key, store {
id: UID,
creator: address,
name: string::String,
description: string::String,
url: url::Url,
}

public struct WASD845NftMinted has copy, drop {
object_id: ID,
creator: address,
name: string::String,
}

public struct WASD845NftBurnEvent has copy, drop {
object_id: ID,
}

public struct WASD845NftTransferEvent has copy, drop {
object_id: ID,
from: address,
to: address,
}

public fun name(nft: &WASD845Nft): &string::String {
&nft.name
}

public fun description(nft: &WASD845Nft): &string::String {
&nft.description
}

public fun url(nft: &WASD845Nft): &url::Url {
&nft.url
}

// modify the description of nft
public entry fun update_description(
nft: &mut WASD845Nft,
new_description: vector<u8>,
_: &mut TxContext
) {
nft.description = string::utf8(new_description)
}

public entry fun mint_to_sender(name: vector<u8>, description: vector<u8>, url: vector<u8>, ctx: &mut TxContext) {
// mint nft
let nft = WASD845Nft {
id: object::new(ctx),
name: string::utf8(name),
description: string::utf8(description),
creator: sender(ctx),
url: url::new_unsafe_from_bytes(url)
};

// send mint event
event::emit(WASD845NftMinted {
object_id: object::id(&nft),
creator: sender(ctx),
name: nft.name,
});

// transfer nft to sender
transfer::public_transfer(nft, sender(ctx));
}

public entry fun transfer(
nft: WASD845Nft, recipient: address, _: &mut TxContext
) {
event::emit(WASD845NftTransferEvent {
object_id: object::id(&nft),
from: tx_context::sender(_),
to: recipient,
});
// transfer nft to recipient
transfer::public_transfer(nft, recipient)
}

public entry fun burn(nft: WASD845Nft, _: &mut TxContext) {
let WASD845Nft { id, name: _, description: _, url: _, creator: _} = nft;

event::emit(WASD845NftBurnEvent {
object_id: object::uid_to_inner(&id),
});
object::delete(id)
}
}

19 changes: 19 additions & 0 deletions mover/wasd845/code/task3/MyNFT/tests/mynft_tests.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
#[test_only]
module mynft::mynft_tests {
// uncomment this line to import the module
// use mynft::mynft;
const ENotImplemented: u64 = 0;
#[test]
fun test_mynft() {
// pass
}
#[test, expected_failure(abort_code = ::mynft::mynft_tests::ENotImplemented)]
fun test_mynft_fail() {
abort ENotImplemented
}
}
*/
Binary file added mover/wasd845/images/task3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions mover/wasd845/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@
- [x] `Faucet Coin` address2 mint hash: Ec7eT6zw9Ms7btpSzQa7S4x8Y8Kj6Lkey7xYgQKhNCZc

## 03 move NFT
- [] nft package id :
- [] nft object id :
- [] 转账 nft hash:
- [] scan上的NFT截图:![Scan截图](./images/你的图片地址)
- [x] nft package id : 0x0f828c084e17ae73a7132ef3eb37d2259c2a521835964375fa66317356d391bc
- [x] nft object id : 0x05c18a5edc0be6d18b2056b6d0cc9319098543d399f16581c7b1487bee4c2bf3
- [x] 转账 nft hash: 9uFAeWqgVKFmReYgZwSkkdNfXaa2D4HqzMb79PmwauPU
- [x] scan上的NFT截图:![Scan截图](./images/task3.png)

## 04 Move Game
- [] game package id :
Expand Down

0 comments on commit 665a2fd

Please sign in to comment.