Hướng dẫn này mô tả cách tạo và chuyển NFT trên chuỗi khối Aptos. Việc triển khai Aptos cho các NFT cốt lõi có thể được tìm thấy trong mã thông báo. di chuyển Di chuyển mô-đun
Để tham khảo, xem thêm
- mint_nft Di chuyển ví dụ về cách airdrop NFT
- mint_nft. rs Kiểm tra đầu cuối của Rust
Bước 1. Chọn một SDK
Cài đặt SDK ưa thích của bạn từ danh sách bên dưới
- SDK TypeScript
- SDK Python
- SDK rỉ sét
Bước 2. Chạy ví dụ
Mỗi SDK cung cấp một thư mục
cd ~/aptos-core/ecosystem/python/sdk
4. Hướng dẫn này bao gồm ví dụ về cd ~/aptos-core/ecosystem/python/sdk
5Sao chép kho lưu trữ
cd ~/aptos-core/ecosystem/python/sdk
6git clone git@github.com:aptos-labs/aptos-core.git ~/aptos-core
- bản đánh máy
- con trăn
- rỉ sét
Điều hướng đến thư mục mẫu TypeScript SDK
cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
Cài đặt các phụ thuộc cần thiết
pnpm install
Chạy ví dụ TypeScript
cd ~/aptos-core/ecosystem/python/sdk
7pnpm run simple_nft
Điều hướng đến thư mục Python SDK
cd ~/aptos-core/ecosystem/python/sdk
Cài đặt các phụ thuộc cần thiết
curl -sSL //install.python-poetry.org | python3
poetry update
Chạy ví dụ về Python
cd ~/aptos-core/ecosystem/python/sdk
5poetry run python -m examples.simple-nft
Sắp ra mắt
Bước 3. Hiểu đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện ví dụ
cd ~/aptos-core/ecosystem/python/sdk
5, mặc dù một số giá trị sẽ khác=== Addresses ===
Alice: 0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754
Bob: 0x4dcd7b180c123fdb989d10f71fba6c978bda268c2e3660c169bdb55f67aab776
=== Initial Coin Balances ===
Alice: 100000000
Bob: 100000000
=== Creating Collection and Token ===
Alice's collection: {
"description": "Alice's simple collection",
"maximum": "18446744073709551615",
"mutability_config": {
"description": false,
"maximum": false,
"uri": false
},
"name": "Alice's",
"supply": "1",
"uri": "//alice.com"
}
Alice's token balance: 1
Alice's token data: {
"default_properties": {
"map": {
"data": []
}
},
"description": "Alice's simple token",
"largest_property_version": "0",
"maximum": "18446744073709551615",
"mutability_config": {
"description": false,
"maximum": false,
"properties": false,
"royalty": false,
"uri": false
},
"name": "Alice's first token",
"royalty": {
"payee_address": "0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754",
"royalty_points_denominator": "0",
"royalty_points_numerator": "0"
},
"supply": "1",
"uri": "//aptos.dev/img/nyan.jpeg"
}
=== Transferring the token to Bob ===
Alice's token balance: 0
Bob's token balance: 1
=== Transferring the token back to Alice using MultiAgent ===
Alice's token balance: 1
Bob's token balance: 0
Ví dụ này chứng minh
- Đang khởi tạo REST và máy khách vòi
- Việc tạo hai tài khoản. Alice và Bob
- Cấp vốn và tạo tài khoản của Alice và Bob
- Việc tạo bộ sưu tập và mã thông báo bằng tài khoản của Alice
- Alice đưa ra một mã thông báo và Bob yêu cầu nó
- Bob đơn phương gửi mã thông báo cho Alice thông qua giao dịch đa tác nhân
Bước 4. SDK chuyên sâu
- bản đánh máy
- con trăn
- rỉ sét
Xem mã đầy đủ
Xem
cd ~/aptos-core/ecosystem/python/sdk
7 để biết mã hoàn chỉnh khi bạn làm theo các bước bên dướiXem mã đầy đủ
Xem
cd ~/aptos-core/ecosystem/python/sdk
5 để biết mã hoàn chỉnh khi bạn làm theo các bước bên dướiSắp ra mắt
Bước 4. 1. Khởi tạo client
Trong bước đầu tiên, ví dụ khởi tạo cả ứng dụng khách API và vòi
- Ứng dụng khách API tương tác với API REST
- Ứng dụng khách vòi tương tác với dịch vụ Vòi devnet để tạo và tài trợ tài khoản
- bản đánh máy
- con trăn
- rỉ sét
const client = new AptosClient[NODE_URL];
const faucetClient = new FaucetClient[NODE_URL, FAUCET_URL];
Sử dụng ứng dụng khách API, chúng tôi có thể tạo một
curl -sSL //install.python-poetry.org | python3
poetry update
2 mà chúng tôi sử dụng cho các hoạt động mã thông báo phổ biến như tạo bộ sưu tập và mã thông báo, chuyển chúng, xác nhận quyền sở hữu, v.v.const tokenClient = new TokenClient[client];
curl -sSL //install.python-poetry.org | python3
poetry update
3 khởi tạo các giá trị URL như vậycd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
0cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
1curl -sSL //install.python-poetry.org | python3
poetry update
4 khởi tạo các giá trị này như saucd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
2cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
3Sử dụng ứng dụng khách API, chúng tôi có thể tạo một
curl -sSL //install.python-poetry.org | python3
poetry update
5 mà chúng tôi sử dụng cho các hoạt động tiền xu phổ biến như chuyển tiền xu và kiểm tra số dưcd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
4Trong ví dụ này, chúng tôi khởi tạo các giá trị URL như vậy
cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
5mẹo
Theo mặc định, các URL cho cả hai dịch vụ đều trỏ đến các dịch vụ devnet của Aptos. Tuy nhiên, chúng có thể được cấu hình với các biến môi trường sau
6curl -sSL //install.python-poetry.org | python3
poetry update
7curl -sSL //install.python-poetry.org | python3
poetry update
Bước 4. 2. Tạo tài khoản cục bộ
Bước tiếp theo là tạo hai tài khoản cục bộ. Tài khoản đại diện cho cả trạng thái trong và ngoài chuỗi. Trạng thái ngoài chuỗi bao gồm một địa chỉ và cặp khóa công khai/riêng tư được sử dụng để xác thực quyền sở hữu. Bước này trình bày cách tạo trạng thái ngoài chuỗi đó
- bản đánh máy
- con trăn
- rỉ sét
cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
6cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
7cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
8Bước 4. 3. Tạo tài khoản chuỗi khối
Trong Aptos, mỗi tài khoản phải có đại diện trên chuỗi để nhận mã thông báo và tiền xu cũng như tương tác với các dApp khác. Một tài khoản đại diện cho một phương tiện để lưu trữ tài sản; . Ví dụ này tận dụng Vòi để tạo tài khoản của Alice và Bob
- bản đánh máy
- con trăn
- rỉ sét
cd ~/aptos-core/ecosystem/typescript/sdk/examples/typescript
9pnpm install
0Vì ví dụ Rust ở đây sử dụng cùng một `transfer-coin. rs` như trong hướng dẫn [Giao dịch đầu tiên của bạn][/tutorials/your-first-transaction], nó tạo nhưng không cấp tiền cho tài khoản của Bob
pnpm install
1Bước 4. 4. Tạo bộ sưu tập
Bây giờ bắt đầu quá trình tạo mã thông báo. Đầu tiên, người tạo phải tạo một bộ sưu tập để lưu trữ mã thông báo. Một bộ sưu tập có thể chứa không, một hoặc nhiều mã thông báo riêng biệt bên trong nó. Bộ sưu tập không hạn chế các thuộc tính của mã thông báo vì nó chỉ là một bộ chứa
- bản đánh máy
- con trăn
- rỉ sét
Ứng dụng của bạn sẽ gọi
curl -sSL //install.python-poetry.org | python3
poetry update
8pnpm install
2Đây là chữ ký hàm của
curl -sSL //install.python-poetry.org | python3
poetry update
8. Nó trả về một hàm băm giao dịchpnpm install
3Ứng dụng của bạn sẽ gọi
poetry run python -m examples.simple-nft
0pnpm install
4Đây là chữ ký hàm của
poetry run python -m examples.simple-nft
0. Nó trả về một hàm băm giao dịchpnpm install
5Sắp ra mắt
Bước 4. 5. Tạo mã thông báo
Để tạo mã thông báo, người tạo phải chỉ định bộ sưu tập được liên kết. Mã thông báo phải được liên kết với bộ sưu tập và bộ sưu tập đó phải có mã thông báo còn lại có thể được đúc. Có nhiều thuộc tính được liên kết với mã thông báo, nhưng API của trình trợ giúp chỉ hiển thị số lượng tối thiểu cần thiết để tạo nội dung tĩnh
- bản đánh máy
- con trăn
- rỉ sét
Ứng dụng của bạn sẽ gọi
poetry run python -m examples.simple-nft
2pnpm install
6Đây là chữ ký hàm của
poetry run python -m examples.simple-nft
2. Nó trả về một hàm băm giao dịchpnpm install
7Ứng dụng của bạn sẽ gọi
poetry run python -m examples.simple-nft
4pnpm install
8Đây là chữ ký hàm của
poetry run python -m examples.simple-nft
4. Nó trả về một hàm băm giao dịchpnpm install
9Sắp ra mắt
Bước 4. 6. Đọc mã thông báo và siêu dữ liệu bộ sưu tập
Cả siêu dữ liệu bộ sưu tập và mã thông báo đều được lưu trữ trên tài khoản của người tạo trong
poetry run python -m examples.simple-nft
6 của họ trong một bảng. SDK cung cấp trình bao bọc thuận tiện xung quanh việc truy vấn các bảng cụ thể này- bản đánh máy
- con trăn
- rỉ sét
Để đọc siêu dữ liệu của bộ sưu tập
pnpm run simple_nft
0Để đọc siêu dữ liệu của mã thông báo
pnpm run simple_nft
1Đây là cách
poetry run python -m examples.simple-nft
7 truy vấn siêu dữ liệu mã thông báopnpm run simple_nft
2Để đọc siêu dữ liệu của bộ sưu tập
pnpm run simple_nft
3Để đọc siêu dữ liệu của mã thông báo
pnpm run simple_nft
4Đây là cách
poetry run python -m examples.simple-nft
8 truy vấn siêu dữ liệu mã thông báopnpm run simple_nft
5Sắp ra mắt
Bước 4. 7. Đọc số dư mã thông báo
Mỗi mã thông báo trong Aptos là một tài sản riêng biệt. Tài sản thuộc sở hữu của người dùng được lưu trữ trong
poetry run python -m examples.simple-nft
9 của họ. Để có được sự cân bằng- bản đánh máy
- con trăn
- rỉ sét
pnpm run simple_nft
6pnpm run simple_nft
7Sắp ra mắt
Bước 4. 8. Cung cấp và yêu cầu mã thông báo
Nhiều người dùng của các chuỗi khối khác đã nhận được các mã thông báo không mong muốn có thể gây ra bất kỳ điều gì từ sự bối rối tối thiểu đến sự phân nhánh nghiêm trọng. Aptos trao quyền cho từng chủ sở hữu tài khoản để quyết định có nhận chuyển khoản đơn phương hay không. Theo mặc định, chuyển đơn phương không được hỗ trợ. Vì vậy, Aptos cung cấp một khuôn khổ để cung cấp và yêu cầu mã thông báo
Để cung cấp một mã thông báo
- bản đánh máy
- con trăn
- rỉ sét
pnpm run simple_nft
8pnpm run simple_nft
9Sắp ra mắt
Để yêu cầu một mã thông báo
- bản đánh máy
- con trăn
- rỉ sét
cd ~/aptos-core/ecosystem/python/sdk
0cd ~/aptos-core/ecosystem/python/sdk
1Sắp ra mắt
Bước 4. 9. Chuyển mã thông báo đơn phương an toàn
Để hỗ trợ chuyển mã thông báo đơn phương an toàn, trước tiên người gửi có thể yêu cầu người nhận xác nhận chuyển khoản đang chờ xử lý ngoài chuỗi. Điều này xuất hiện dưới dạng một yêu cầu giao dịch đa tác nhân. Giao dịch đa tác nhân chứa nhiều chữ ký, một chữ ký cho mỗi tài khoản trên chuỗi. Sau đó, Move có thể tận dụng điều này để cấp quyền cấp
=== Addresses ===
Alice: 0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754
Bob: 0x4dcd7b180c123fdb989d10f71fba6c978bda268c2e3660c169bdb55f67aab776
=== Initial Coin Balances ===
Alice: 100000000
Bob: 100000000
=== Creating Collection and Token ===
Alice's collection: {
"description": "Alice's simple collection",
"maximum": "18446744073709551615",
"mutability_config": {
"description": false,
"maximum": false,
"uri": false
},
"name": "Alice's",
"supply": "1",
"uri": "//alice.com"
}
Alice's token balance: 1
Alice's token data: {
"default_properties": {
"map": {
"data": []
}
},
"description": "Alice's simple token",
"largest_property_version": "0",
"maximum": "18446744073709551615",
"mutability_config": {
"description": false,
"maximum": false,
"properties": false,
"royalty": false,
"uri": false
},
"name": "Alice's first token",
"royalty": {
"payee_address": "0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754",
"royalty_points_denominator": "0",
"royalty_points_numerator": "0"
},
"supply": "1",
"uri": "//aptos.dev/img/nyan.jpeg"
}
=== Transferring the token to Bob ===
Alice's token balance: 0
Bob's token balance: 1
=== Transferring the token back to Alice using MultiAgent ===
Alice's token balance: 1
Bob's token balance: 0
0 cho tất cả những người đã ký giao dịch. Đối với chuyển mã thông báo, quy trình này đảm bảo bên nhận thực sự muốn nhận mã thông báo này mà không yêu cầu sử dụng khung chuyển mã thông báo được mô tả ở trên