diff --git a/mover/zhtkeepup/code/readme.md b/mover/zhtkeepup/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/zhtkeepup/code/task1/hellomove/Move.lock b/mover/zhtkeepup/code/task1/hellomove/Move.lock new file mode 100644 index 000000000..4c4874da4 --- /dev/null +++ b/mover/zhtkeepup/code/task1/hellomove/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "11BAF94A33662E7D904523341D85F0402E2C1A82A85216775F5E05EC6ADE9D9C" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xc1b082a9e8660a90d221d986883fb328815555b42eebdf8f1c78a2a1426ff4c4" +latest-published-id = "0xc1b082a9e8660a90d221d986883fb328815555b42eebdf8f1c78a2a1426ff4c4" +published-version = "1" diff --git a/mover/zhtkeepup/code/task1/hellomove/Move.toml b/mover/zhtkeepup/code/task1/hellomove/Move.toml new file mode 100644 index 000000000..be65a17c8 --- /dev/null +++ b/mover/zhtkeepup/code/task1/hellomove/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hellomove" +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] +hellomove = "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" + diff --git a/mover/zhtkeepup/code/task1/hellomove/sources/hellomove.move b/mover/zhtkeepup/code/task1/hellomove/sources/hellomove.move new file mode 100644 index 000000000..9ebae4dc5 --- /dev/null +++ b/mover/zhtkeepup/code/task1/hellomove/sources/hellomove.move @@ -0,0 +1,17 @@ +module hellomove::hello ; + +use std::ascii::{String, string}; +use sui::transfer::transfer; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"zhtkeepup"), + }; + transfer(hello_move, ctx.sender()); +} diff --git a/mover/zhtkeepup/code/task1/hellomove/tests/hellomove_tests.move b/mover/zhtkeepup/code/task1/hellomove/tests/hellomove_tests.move new file mode 100644 index 000000000..3f6ec59dc --- /dev/null +++ b/mover/zhtkeepup/code/task1/hellomove/tests/hellomove_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hellomove::hellomove_tests; +// uncomment this line to import the module +// use hellomove::hellomove; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hellomove() { + // pass +} + +#[test, expected_failure(abort_code = ::hellomove::hellomove_tests::ENotImplemented)] +fun test_hellomove_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zhtkeepup/code/task2/my_coin/Move.lock b/mover/zhtkeepup/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..d49787f93 --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.devnet] +chain-id = "0fc07bbe" +original-published-id = "0x3d9b75db063ad1b584ac0a67a19923b78214da867bbf9bd80a43df0273509376" +latest-published-id = "0x3d9b75db063ad1b584ac0a67a19923b78214da867bbf9bd80a43df0273509376" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836" +latest-published-id = "0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836" +published-version = "1" diff --git a/mover/zhtkeepup/code/task2/my_coin/Move.toml b/mover/zhtkeepup/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +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] +my_coin = "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" + diff --git a/mover/zhtkeepup/code/task2/my_coin/call.sh b/mover/zhtkeepup/code/task2/my_coin/call.sh new file mode 100644 index 000000000..9f68d5bad --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/call.sh @@ -0,0 +1,7 @@ +sui client call --package 0x2 \ +--module coin \ +--function mint_and_transfer \ +--type-args 0x63b706b16338bc592a5c784a650dbe9c74a4c0572ed6e95f6a9c6b7a76df6dff::my_coin::MY_COIN \ +--args 0xa49accfcbac4a6b9ffb5678d5704ff50219f6462a0068bd449645045030b661e \ +10000000000 \ +0x264742e5020aafcb51f214513f1b7d5ce7eb2d6473c9b47f1343aa89402fa621 \ No newline at end of file diff --git a/mover/zhtkeepup/code/task2/my_coin/shell.history b/mover/zhtkeepup/code/task2/my_coin/shell.history new file mode 100644 index 000000000..bfa999228 --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/shell.history @@ -0,0 +1,27 @@ +sui client publish +sui client envs; sui client addresses; +sui client switch --address funny-crocidolite + + sui client faucet + +sui client new-address ed25519 + +sui client switch --env devnet + +sui client balance 0x111111111 + + + +/* + c: &mut TreasuryCap, + amount: u64, + recipient: address, + // ctx: &mut TxContext, +*/ + +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836::my_coin::MY_COIN --args 0x2bb3e8fba75d462bb0081ec46c62107692d2814cf028ec3264129b17d381c69e 10000000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --gas-budget 5000000 + +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836::faucet_coin::FAUCET_COIN --args 0xac408f565c41f605e72824eacb498721669330650f0a5d5558913e1bff7620a5 10000000000 0x264742e5020aafcb51f214513f1b7d5ce7eb2d6473c9b47f1343aa89402fa621 --gas-budget 5000000 + + + diff --git a/mover/zhtkeepup/code/task2/my_coin/sources/faucet_coin.move b/mover/zhtkeepup/code/task2/my_coin/sources/faucet_coin.move new file mode 100644 index 000000000..6701c343f --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/sources/faucet_coin.move @@ -0,0 +1,28 @@ + +/// Module: my_coin +module my_coin::faucet_coin; + +use std::option::{none, some}; +use sui::coin; +use sui::coin::create_currency; +use sui::transfer::{public_freeze_object, public_transfer, public_share_object}; +use sui::url; +use sui::url::Url; + +public struct FAUCET_COIN has drop { + +} + +fun init(faucet_coin:FAUCET_COIN, ctx: &mut TxContext) { + + let no:Option = none(); + let url = url::new_unsafe_from_bytes(b"https://etherscan.io/token/images/centre-usdc_28.png"); + let yes = some(url); + + let (treasury, coin_metadata) = create_currency(faucet_coin,8,b"FaucetCoin",b"FaucetCoin",b"faucet coin.",no,ctx); + + public_freeze_object(coin_metadata); + + public_share_object(treasury); + // public_transfer(treasury, ctx.sender()); +} \ No newline at end of file diff --git a/mover/zhtkeepup/code/task2/my_coin/sources/my_coin.move b/mover/zhtkeepup/code/task2/my_coin/sources/my_coin.move new file mode 100644 index 000000000..be0692f8c --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/sources/my_coin.move @@ -0,0 +1,28 @@ + +/// Module: my_coin +module my_coin::my_coin; + +use std::option::{none, some}; +use sui::coin; +use sui::coin::create_currency; +use sui::transfer::{public_freeze_object, public_transfer, public_share_object}; +use sui::url; +use sui::url::Url; + +public struct MY_COIN has drop { + +} + +fun init(my_coin:MY_COIN, ctx: &mut TxContext) { + + let no:Option = none(); + let url = url::new_unsafe_from_bytes(b"https://etherscan.io/token/images/centre-usdc_28.png"); + let yes = some(url); + + let (treasury, coin_metadata) = create_currency(my_coin,8,b"MyCoin",b"MyCoin",b"my coin.",no,ctx); + + public_freeze_object(coin_metadata); + + // public_share_object(treasury); + public_transfer(treasury, ctx.sender()); +} \ No newline at end of file diff --git a/mover/zhtkeepup/code/task2/my_coin/tests/my_coin_tests.move b/mover/zhtkeepup/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/zhtkeepup/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zhtkeepup/code/task3/my_nft/Move.lock b/mover/zhtkeepup/code/task3/my_nft/Move.lock new file mode 100644 index 000000000..5d89f5356 --- /dev/null +++ b/mover/zhtkeepup/code/task3/my_nft/Move.lock @@ -0,0 +1,46 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "4C9B47E7441289AA0D50D87EEB9836BD01CE3604E3B249490E7F2046EAEE3400" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x020ede4d61aab752af4f703633b8b4efbf05897b903feb0471cd31ebae70f09b" +latest-published-id = "0x020ede4d61aab752af4f703633b8b4efbf05897b903feb0471cd31ebae70f09b" +published-version = "1" + +[env.devnet] +chain-id = "0fc07bbe" +original-published-id = "0x4fa6978a5bcb02b11030b911caacf183dbb2b611d78debe6b24e4fbb4fd10c26" +latest-published-id = "0x4fa6978a5bcb02b11030b911caacf183dbb2b611d78debe6b24e4fbb4fd10c26" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x76c65ad4cbf1a0fac148ba88e15b2d542b5c151a970601a81f889faa09bc336e" +latest-published-id = "0x76c65ad4cbf1a0fac148ba88e15b2d542b5c151a970601a81f889faa09bc336e" +published-version = "1" diff --git a/mover/zhtkeepup/code/task3/my_nft/Move.toml b/mover/zhtkeepup/code/task3/my_nft/Move.toml new file mode 100644 index 000000000..d40d13d2e --- /dev/null +++ b/mover/zhtkeepup/code/task3/my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +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] +my_nft = "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" + diff --git a/mover/zhtkeepup/code/task3/my_nft/sources/my_nft.move b/mover/zhtkeepup/code/task3/my_nft/sources/my_nft.move new file mode 100644 index 000000000..9dde1b401 --- /dev/null +++ b/mover/zhtkeepup/code/task3/my_nft/sources/my_nft.move @@ -0,0 +1,88 @@ + +/// Module: my_nft +module my_nft::my_nft; +use std::string; +use std::string::String; +use sui::object; +use sui::transfer::transfer; +use sui::tx_context::sender; + +use sui::display; +use sui::package; + +public struct MyNFT has key,store { + id:UID, + name:String, + image_url:String, +} + +public struct MY_NFT has drop {} + +fun init(otw: MY_NFT, ctx: &mut TxContext){ + + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"https://query.by.id/{id}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A nft by zhtkeepup on Sui!".to_string(), + // Project URL is usually static + b"https://zhtkeepup.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `Hero` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + + let nft = MyNFT{ + id: object::new(ctx), + name : string::utf8(b"zhtkeepup ntf"), + image_url:string::utf8(b"https://avatars.githubusercontent.com/u/166729445?v=4&size=64"), + }; + transfer(nft, sender(ctx)); +} + + +public entry fun mint(name:String, ctx: &mut TxContext){ + let my_nft = MyNFT{ + id:object::new(ctx), + name:name, + image_url:b"https://avatars.githubusercontent.com/u/166729445?v=4&size=64".to_string(), + }; + transfer(my_nft, sender(ctx)); +} + +public entry fun mint2(name:String, recipient:address, ctx: &mut TxContext){ + let my_nft = MyNFT{ + id:object::new(ctx), + name:name, + image_url:b"https://avatars.githubusercontent.com/u/166729445?v=4&size=64".to_string(), + }; + transfer(my_nft, recipient); +} \ No newline at end of file diff --git a/mover/zhtkeepup/code/task3/my_nft/tests/my_nft_tests.move b/mover/zhtkeepup/code/task3/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/zhtkeepup/code/task3/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zhtkeepup/images/bilibili.png b/mover/zhtkeepup/images/bilibili.png new file mode 100644 index 000000000..2ed8fedce Binary files /dev/null and b/mover/zhtkeepup/images/bilibili.png differ diff --git a/mover/zhtkeepup/images/githubstar.png b/mover/zhtkeepup/images/githubstar.png new file mode 100644 index 000000000..d9bbc22f7 Binary files /dev/null and b/mover/zhtkeepup/images/githubstar.png differ diff --git a/mover/zhtkeepup/images/package.png b/mover/zhtkeepup/images/package.png new file mode 100644 index 000000000..cfb14fb21 Binary files /dev/null and b/mover/zhtkeepup/images/package.png differ diff --git a/mover/zhtkeepup/images/task3-mint2me.png b/mover/zhtkeepup/images/task3-mint2me.png new file mode 100644 index 000000000..acfc7e071 Binary files /dev/null and b/mover/zhtkeepup/images/task3-mint2me.png differ diff --git a/mover/zhtkeepup/images/task3-mint2uvd.png b/mover/zhtkeepup/images/task3-mint2uvd.png new file mode 100644 index 000000000..75b130817 Binary files /dev/null and b/mover/zhtkeepup/images/task3-mint2uvd.png differ diff --git a/mover/zhtkeepup/images/wallet.png b/mover/zhtkeepup/images/wallet.png new file mode 100644 index 000000000..ba3d7e72b Binary files /dev/null and b/mover/zhtkeepup/images/wallet.png differ diff --git a/mover/zhtkeepup/notes/readme.md b/mover/zhtkeepup/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/zhtkeepup/readme.md b/mover/zhtkeepup/readme.md new file mode 100644 index 000000000..58d01d1a8 --- /dev/null +++ b/mover/zhtkeepup/readme.md @@ -0,0 +1,71 @@ +## 基本信息 + +- Sui 钱包地址: `0x264742e5020aafcb51f214513f1b7d5ce7eb2d6473c9b47f1343aa89402fa621` + > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `zhtkeepup` + +## 个人简介 + +- 工作经验: 10 年 +- 技术栈: `solidity` `java` `js` `Rust` `sql` + > 重要提示 请认真写自己的简介 +- 偏后端的全栈开发者 +- 联系方式: tg: `zhtkeepup` + +## 任务 + +## 01 hello move + +- [✓] Sui cli version: sui 1.37.3-homebrew +- [✓] Sui 钱包截图: ![Sui钱包截图](./images/wallet.png) +- [✓] package id: 0xc1b082a9e8660a90d221d986883fb328815555b42eebdf8f1c78a2a1426ff4c4 +- [✓] package id 在 scan 上的查看截图:![Scan截图](./images/package.png) + +### 其他截图, b 站关注与 github star: + +[✓] 1: ![b站关注](./images/bilibili.png) +[✓] 2: ![github star](./images/githubstar.png) + +## 02 move coin + +(在同一个 package 里同时包含 Faucet Coin 和 My Coin, 因此两个 id 是一样的.) + +- [✓] My Coin package id : 0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836 +- [✓] Faucet package id : 0x0b0b06cc47146f8d4f0db905dc1492354169ae416c78d371e14f0d13c8876836 +- [✓] 转账 `My Coin` hash: (mint_and_transfer) 4bR3X9rdtL19FhLnepvqqy3pTDaXVyRaubi9ZKS36fKd +- [✓] `Faucet Coin` address1 mint hash: 89ur8P58qYAhQrQhQY4XVQpAJqSdghKKQR2WzAz6daAH +- [✓] `Faucet Coin` address2 mint hash: 4ySXL9qT1smLQ4YErpFV4GvFUXac9zKtUAhgn3pLhGGQ + +## 03 move NFT + +- [✓] nft package id : 0x76c65ad4cbf1a0fac148ba88e15b2d542b5c151a970601a81f889faa09bc336e +- [✓] nft object id : (mint 给自己的 nft obj id) 0x33ed248181429a6b7c0d1c1f1ce05d3ba602e7da346100109fb1ae3f358fc566 +- [✓] 转账 nft hash: (直接 mint 给 uvd 的 nft 的 hash) Bu41bE6eqMYszj1v12mojoGrTKF2eBKnU9Pgbuy8amN8 +- [✓] scan 上的 NFT 截图:![mint给自己的Scan截图](./images/task3-mint2me.png) + +## 04 Move Game + +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap + +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB + +- [] save hash : + +## 07 Move CTF Check In + +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move + +- [] proof : +- [] flag hash : diff --git a/mover/zhtkeepup/scan/readme.md b/mover/zhtkeepup/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/zhtkeepup/scan/readme.md @@ -0,0 +1 @@ +