-
Notifications
You must be signed in to change notification settings - Fork 905
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'move-cn:main' into main
- Loading branch information
Showing
1,019 changed files
with
71,920 additions
and
223 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
comment: | ||
on-update: recreate | ||
header: | | ||
谢谢你的提交,请在社群里面发出你的提交PR才会被 :tada:. | ||
footer: | | ||
--- | ||
请仔细阅读任务要求 | ||
snippets: | ||
- id: any-markdown-file-changed | ||
files: | ||
- '*.md' | ||
- '**/*.md' | ||
body: | | ||
QQ群: 79489587 <br/> | ||
电报群: https://t.me/move_cn <br/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
name: "PR Commenter" | ||
on: | ||
- pull_request_target | ||
|
||
jobs: | ||
pr-comment: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: exercism/[email protected] | ||
with: | ||
github-token: "${{ github.token }}" | ||
config-file: ".github/pr-commenter.yml" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# 学习路径 | ||
|
||
## 步骤一:前置安装 | ||
|
||
### 安装Sui Wallet | ||
采用Google插件 | ||
https://chromewebstore.google.com/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil | ||
|
||
### 安装Nodejs | ||
具体安装过程需要自行探索 | ||
https://nodejs.org/en | ||
|
||
### 安装编译器 | ||
VSCODE 和 RustRover 二选一即可 | ||
#### RustRover | ||
RustRover的报错和提示比较友好,也有成熟的插件 | ||
https://www.jetbrains.com.cn/rust/ | ||
#### VSCODE | ||
容易上手,通用性强 | ||
https://code.visualstudio.com/ | ||
|
||
### 配置开发环境 | ||
https://docs.sui.io/guides/developer/getting-started/sui-install | ||
建议采用从Github下载二进制文件,对小白更友好 | ||
|
||
|
||
## 步骤二:基本语法学习 | ||
[bilibili教学视频](https://www.bilibili.com/video/BV1Rm42177Kx/) (视频包括基本语法的学习和实战演练 ) | ||
课程相关代码库: | ||
- https://github.com/404ll/letsmove/tree/main/tutorial/bootcamp | ||
- Swap以及Coin的代码库 https://github.com/uvd/sui-swap-course | ||
|
||
完整入门手册,非常详细 | ||
- [轻松入门move](https://easy.sui-book.com/chapter_1.htm) | ||
|
||
|
||
## 步骤三:深入学习以及完成task | ||
|
||
区块链浏览器:https://suivision.xyz/ | ||
|
||
由于教学视频的时间限制,手把手教学来完成每一个task基本是不现实的,同时已有的学习资料已经完全足够从入门到熟练掌握 | ||
因此需要学员有强大的内驱力和学习能力,从已有的文档和代码库中,寻找和学习所需的知识点 | ||
|
||
基于官方标准库,可以查询和了解每一个函数的功能及使用方法 | ||
- https://github.com/MystenLabs/sui/tree/main/crates/sui-framework | ||
|
||
探索官方文档(包括Coin协议等等) | ||
- https://docs.sui.io | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# Sui dApp Starter Template | ||
|
||
This dApp was created using `@mysten/create-dapp` that sets up a basic React | ||
Client dApp using the following tools: | ||
|
||
- [React](https://react.dev/) as the UI framework | ||
- [TypeScript](https://www.typescriptlang.org/) for type checking | ||
- [Vite](https://vitejs.dev/) for build tooling | ||
- [Radix UI](https://www.radix-ui.com/) for pre-built UI components | ||
- [ESLint](https://eslint.org/) for linting | ||
- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to | ||
wallets and loading data | ||
- [pnpm](https://pnpm.io/) for package management | ||
|
||
## Deploying your Move code | ||
|
||
### Install Sui cli | ||
|
||
Before deploying your move code, ensure that you have installed the Sui CLI. You | ||
can follow the [Sui installation instruction](https://docs.sui.io/build/install) | ||
to get everything set up. | ||
|
||
This template uses `devnet` by default, so we'll need to set up a devnet | ||
environment in the CLI: | ||
|
||
```bash | ||
sui client new-env --alias devnet --rpc https://fullnode.devnet.sui.io:443 | ||
sui client switch --env devnet | ||
``` | ||
|
||
If you haven't set up an address in the sui client yet, you can use the | ||
following command to get a new address: | ||
|
||
```bash | ||
sui client new-address secp256k1 | ||
``` | ||
|
||
This well generate a new address and recover phrase for you. You can mark a | ||
newly created address as you active address by running the following command | ||
with your new address: | ||
|
||
```bash | ||
sui client switch --address 0xYOUR_ADDRESS... | ||
``` | ||
|
||
We can ensure we have some Sui in our new wallet by requesting Sui from the | ||
faucet (make sure to replace the address with your address): | ||
|
||
```bash | ||
curl --location --request POST 'https://faucet.devnet.sui.io/gas' \ | ||
--header 'Content-Type: application/json' \ | ||
--data-raw '{ | ||
"FixedAmountRequest": { | ||
"recipient": "<YOUR_ADDRESS>" | ||
} | ||
}' | ||
``` | ||
|
||
### Publishing the move package | ||
|
||
The move code for this template is located in the `move` directory. To publish | ||
it, you can enter the `move` directory, and publish it with the Sui CLI: | ||
|
||
```bash | ||
cd move | ||
sui client publish --gas-budget 100000000 counter | ||
``` | ||
|
||
In the output there will be an object with a `"packageId"` property. You'll want | ||
to save that package ID to the `src/constants.ts` file as `PACKAGE_ID`: | ||
|
||
```ts | ||
export const DEVNET_COUNTER_PACKAGE_ID = "<YOUR_PACKAGE_ID>"; | ||
``` | ||
|
||
Now that we have published the move code, and update the package ID, we can | ||
start the app. | ||
|
||
## Starting your dApp | ||
|
||
To install dependencies you can run | ||
|
||
```bash | ||
pnpm install | ||
``` | ||
|
||
To start your dApp in development mode run | ||
|
||
```bash | ||
pnpm dev | ||
``` | ||
|
||
## Building | ||
|
||
To build your app for deployment you can run | ||
|
||
```bash | ||
pnpm build | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
<!doctype html> | ||
<html lang="en" class="dark-theme" style="color-scheme: dark"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>Sui dApp Starter</title> | ||
|
||
<style> | ||
/* | ||
Josh's Custom CSS Reset | ||
https://www.joshwcomeau.com/css/custom-css-reset/ | ||
*/ | ||
*, | ||
*::before, | ||
*::after { | ||
box-sizing: border-box; | ||
} | ||
* { | ||
margin: 0; | ||
} | ||
body { | ||
line-height: 1.5; | ||
-webkit-font-smoothing: antialiased; | ||
} | ||
img, | ||
picture, | ||
video, | ||
canvas, | ||
svg { | ||
display: block; | ||
max-width: 100%; | ||
} | ||
input, | ||
button, | ||
textarea, | ||
select { | ||
font: inherit; | ||
} | ||
p, | ||
h1, | ||
h2, | ||
h3, | ||
h4, | ||
h5, | ||
h6 { | ||
overflow-wrap: break-word; | ||
} | ||
#root, | ||
#__next { | ||
isolation: isolate; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<div id="root"></div> | ||
<script type="module" src="/src/main.tsx"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = "3700BE3663FD5EAE7AF34BC8B36CFF2AA9C8D280DDEE9324B30BE9F9BFDDD64D" | ||
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.27.2" | ||
edition = "2024.beta" | ||
flavor = "sui" | ||
|
||
[env] | ||
|
||
[env.testnet] | ||
chain-id = "4c78adac" | ||
original-published-id = "0x54fae9c956cc1a2ef3f1436e1fa008a7230d7f79070c58bfc070c5d893315483" | ||
latest-published-id = "0x54fae9c956cc1a2ef3f1436e1fa008a7230d7f79070c58bfc070c5d893315483" | ||
published-version = "1" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
[package] | ||
name = "counter" | ||
version = "0.0.1" | ||
edition = "2024.beta" | ||
|
||
[dependencies] | ||
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } | ||
|
||
[addresses] | ||
counter = "0x0" |
53 changes: 53 additions & 0 deletions
53
mover/0x-wen/code/hello_dapp/move/counter/sources/counter.move
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// Copyright (c) Mysten Labs, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
/// This example demonstrates a basic use of a shared object. | ||
/// Rules: | ||
/// - anyone can create and share a counter | ||
/// - everyone can increment a counter by 1 | ||
/// - the owner of the counter can reset it to any value | ||
module counter::counter { | ||
use sui::transfer; | ||
use sui::object::{Self, UID}; | ||
use sui::tx_context::{Self, TxContext}; | ||
|
||
/// A shared counter. | ||
public struct Counter has key { | ||
id: UID, | ||
owner: address, | ||
value: u64 | ||
} | ||
|
||
public fun owner(counter: &Counter): address { | ||
counter.owner | ||
} | ||
|
||
public fun value(counter: &Counter): u64 { | ||
counter.value | ||
} | ||
|
||
/// Create and share a Counter object. | ||
public fun create(ctx: &mut TxContext) { | ||
transfer::share_object(Counter { | ||
id: object::new(ctx), | ||
owner: tx_context::sender(ctx), | ||
value: 0 | ||
}) | ||
} | ||
|
||
/// Increment a counter by 1. | ||
public fun increment(counter: &mut Counter) { | ||
counter.value = counter.value + 1; | ||
} | ||
|
||
/// Set value (only runnable by the Counter owner) | ||
public fun set_value(counter: &mut Counter, value: u64, ctx: &TxContext) { | ||
assert!(counter.owner == tx_context::sender(ctx), 0); | ||
counter.value = value; | ||
} | ||
|
||
/// Assert a value for the counter. | ||
public fun assert_value(counter: &Counter, value: u64) { | ||
assert!(counter.value == value, 0) | ||
} | ||
} |
Oops, something went wrong.