Skip to content
Merged

task3 #2602

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions mover/hellogaod/code/task3/nfts/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/*
122 changes: 122 additions & 0 deletions mover/hellogaod/code/task3/nfts/Move.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# @generated by Move, please check-in and do not edit manually.

[move]
version = 3
manifest_digest = "1841A5F15674DE3FCBC769C1E7FF59DDC6A335646EF37F41D3FCAE032A9283F4"
deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600"
dependencies = [
{ id = "NftProtocol", name = "NftProtocol" },
{ id = "Sui", name = "Sui" },
]

[[move.package]]
id = "Allowlist"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\allowlist" }

dependencies = [
{ id = "Permissions", name = "Permissions" },
{ id = "Sui", name = "Sui" },
]

[[move.package]]
id = "Authlist"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\authlist" }

dependencies = [
{ id = "Permissions", name = "Permissions" },
{ id = "Sui", name = "Sui" },
]

[[move.package]]
id = "Kiosk"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\kiosk" }

dependencies = [
{ id = "Permissions", name = "Permissions" },
{ id = "Request", name = "Request" },
{ id = "Sui", name = "Sui" },
]

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

[[move.package]]
id = "NftProtocol"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/nft_protocol" }

dependencies = [
{ id = "Allowlist", name = "Allowlist" },
{ id = "Authlist", name = "Authlist" },
{ id = "Kiosk", name = "Kiosk" },
{ id = "Originmate", name = "Originmate" },
{ id = "Permissions", name = "Permissions" },
{ id = "Pseudorandom", name = "Pseudorandom" },
{ id = "Request", name = "Request" },
{ id = "Sui", name = "Sui" },
{ id = "Utils", name = "Utils" },
]

[[move.package]]
id = "Originmate"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\originmate" }

dependencies = [
{ id = "Sui", name = "Sui" },
]

[[move.package]]
id = "Permissions"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\permissions" }

dependencies = [
{ id = "Sui", name = "Sui" },
{ id = "Utils", name = "Utils" },
]

[[move.package]]
id = "Pseudorandom"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\pseudorandom" }

dependencies = [
{ id = "Sui", name = "Sui" },
]

[[move.package]]
id = "Request"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\request" }

dependencies = [
{ id = "Permissions", name = "Permissions" },
{ id = "Sui", name = "Sui" },
]

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

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

[[move.package]]
id = "Utils"
source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\utils" }

dependencies = [
{ id = "Pseudorandom", name = "Pseudorandom" },
{ id = "Sui", name = "Sui" },
]

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

[env]

[env.mainnet]
chain-id = "35834a8a"
original-published-id = "0x4c5c1ff14e85bfbb84a7803de5054ed24abdca67afdfefe00e0e82e343c8a67b"
latest-published-id = "0x4c5c1ff14e85bfbb84a7803de5054ed24abdca67afdfefe00e0e82e343c8a67b"
published-version = "1"
38 changes: 38 additions & 0 deletions mover/hellogaod/code/task3/nfts/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[package]
name = "nfts"
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 = "mainnet-v1.19.1" }
NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" }

# 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]
nfts = "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"

69 changes: 69 additions & 0 deletions mover/hellogaod/code/task3/nfts/sources/nfts.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
module nfts::nfts {
use nft_protocol::attributes::{Self, Attributes};
use nft_protocol::collection;
use std::ascii::String;
use std::string;
use sui::url::{Self, Url};
use nft_protocol::display_info;
use nft_protocol::mint_cap::{Self, MintCap};
use nft_protocol::mint_event;
use ob_permissions::witness;

public struct NFTS has drop {}

/// 可用于创建后授权其他操作。至关重要的是,这个结构体不能随意提供给任何合约,因为它充当了授权令牌。
public struct Witness has drop {}

public struct NFT has key, store {
id: UID,
name: String,
description: String,
url: Url,
attributes: Attributes,
}

fun init(otw: NFTS, ctx: &mut TxContext) {
let (mut collection, mint_cap) = collection::create_with_mint_cap<NFTS, NFT>(
&otw, option::none(), ctx
);
let delegated_witness = witness::from_witness(Witness {});

collection::add_domain(
delegated_witness,
&mut collection,
display_info::new(
string::utf8(b"NFTs"),
string::utf8(b"A NFT collection of NFTs on Sui"),
),
);
transfer::public_share_object(collection);
transfer::public_share_object(mint_cap);
}

public entry fun mint_nft(
mint_cap: &MintCap<NFT>,
name: String,
description: String,
url: String,
ctx: &mut TxContext,
) {
let nft = NFT {
id: object::new(ctx),
name,
description,
url: url::new_unsafe(url),
attributes: attributes::from_vec(vector[], vector[])
};

mint_event::emit_mint(
witness::from_witness(Witness {}),
mint_cap::collection_id(mint_cap),
&nft,
);
transfer::public_transfer(nft, tx_context::sender(ctx));
}

public entry fun transfer_nft(nft: NFT, to: address) {
transfer::public_transfer(nft, to);
}
}
18 changes: 18 additions & 0 deletions mover/hellogaod/code/task3/nfts/tests/nfts_tests.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
#[test_only]
module nfts::nfts_tests;
// uncomment this line to import the module
// use nfts::nfts;

const ENotImplemented: u64 = 0;

#[test]
fun test_nfts() {
// pass
}

#[test, expected_failure(abort_code = ::nfts::nfts_tests::ENotImplemented)]
fun test_nfts_fail() {
abort ENotImplemented
}
*/
1 change: 1 addition & 0 deletions mover/hellogaod/code/task4/game/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/*
68 changes: 68 additions & 0 deletions mover/hellogaod/code/task4/game/Move.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# @generated by Move, please check-in and do not edit manually.

[move]
version = 3
manifest_digest = "F5E8D4DA4A646A9C4D17FFC36E23371A31548D863B8005D8F36679A45049E900"
deps_digest = "397E6A9F7A624706DBDFEE056CE88391A15876868FD18A88504DA74EB458D697"
dependencies = [
{ id = "Bridge", name = "Bridge" },
{ id = "MoveStdlib", name = "MoveStdlib" },
{ id = "Sui", name = "Sui" },
{ id = "SuiSystem", name = "SuiSystem" },
{ id = "hellogaod_faucet_coin", name = "hellogaod_faucet_coin" },
]

[[move.package]]
id = "Bridge"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "3802482bd4e3", subdir = "crates/sui-framework/packages/bridge" }

dependencies = [
{ id = "MoveStdlib", name = "MoveStdlib" },
{ id = "Sui", name = "Sui" },
{ id = "SuiSystem", name = "SuiSystem" },
]

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

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

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

[[move.package]]
id = "SuiSystem"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "3802482bd4e3", subdir = "crates/sui-framework/packages/sui-system" }

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

[[move.package]]
id = "hellogaod_faucet_coin"
source = { local = "..\\..\\task2\\hellogaod_faucet_coin" }

dependencies = [
{ id = "Bridge", name = "Bridge" },
{ id = "MoveStdlib", name = "MoveStdlib" },
{ id = "Sui", name = "Sui" },
{ id = "SuiSystem", name = "SuiSystem" },
]

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

[env]

[env.mainnet]
chain-id = "35834a8a"
original-published-id = "0x01f1fc9a3226bb4d2579fb87aecd794c3aeaf6ec8a15a1dec89fe918bd5ab47e"
latest-published-id = "0x01f1fc9a3226bb4d2579fb87aecd794c3aeaf6ec8a15a1dec89fe918bd5ab47e"
published-version = "1"
38 changes: 38 additions & 0 deletions mover/hellogaod/code/task4/game/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[package]
name = "game"
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]

hellogaod_faucet_coin = { local = "../../task2/hellogaod_faucet_coin" }

# 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]
game = "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"

Loading