メモ
これをやったときの自分用のメモです。
lesson1
「 Install Sui Binaries Locally」をやってみる。
前もって必要なものを確認して、指定されているコマンドを実行
cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui
叩いたらエラーになったが鯨飲はrustcが古かったから。最新版を入れるコマンドを叩く。
rustup update
気を取り直してもう一度コマンドを実行。ビルドにめちゃくちゃ時間がかかった。。
ちなみにdevnet, testnet, mainnetとありそれぞれ開発環境、検証環境、本番環境みたいなものだと理解している。
確認
~ % sui --version
sui 1.8.1-005304cf1
無事インストールできた。
Dockerもあるみたいなのでそちらを使ってやればよかったと、今更後悔。。
次のステップはCLIについてとかなので流し読みして先に進める。
lesson2 - Suiプロジェクトについて
ローカルにプロジェクトの作成
sui move new hello_world
みたいな感じでコマンドを打てばプロジェクトが作成される
これで作成されるのは。。
Move.tomlとsourcesフォルダ
「Move.toml」はマニフェストファイルで3つのセクションに分かれているらしい
-
[package]
パッケージの名前、、バージョンなど- スネークケースで記述するルールがある
- use部分はrustと一緒
-
[dependencies]
使うパッケージなどを記述するらしい、package.jsonのdependenciesみたいなものと理解しておく -
[addresses]
Defines aliases for addresses in the package source code - よくわからないがこうなってる
hello_world = "0x0"
結構シンプル?
lesson3, 4 言語について
Functions
- private public,
- Entry Functions: transactionで呼び出し可能なもの
- returnはない
- entryとfunの前に着く
とりあえずコピペで進めた。
lesson5 - hello world
devnetに作ったパッケージをデプロイする。
コマンドを叩いてみたがgasがなかったのでエラーに
~ % sui client publish --gas-budget 20000000 .
Config file ["/Users/higary/.sui/sui_config/client.yaml"] doesn't exist, do you want to connect to a Sui Full node server [y/N]?y
Sui Full node server URL (Defaults to Sui Devnet if not specified) :
Select key scheme to generate keypair (0 for ed25519, 1 for secp256k1, 2: for secp256r1):
0
Generated new keypair for address with scheme "ed25519" [0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f]
Secret Recovery Phrase : [blind tiny taxi camera doctor noodle eager gate aware tired super end]
[warn] Client/Server api version mismatch, client api version : 1.8.1, server api version : 1.8.0
FETCHING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_world
Successfully verified dependencies on-chain against source.
Cannot find gas coin for signer address [0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f] with amount sufficient for the required gas amount [20000000].
ガスを調達するために、lesson1でやり残していた「Get Devnet Sui Tokens」を進める。
SuiのDiscordにジョインして、テスト用のガスをもらう。特定のフォーマットでメッセージを投げればOKらしい。
faucetは蛇口という意味。蛇口を捻ったらデプロイやトランザクションを実行するリソースをもらえるみたいに理解した。
メッセージを投稿したら、即時にガスがチャージされた。
~ % sui client gas
Object ID | Gas Value
----------------------------------------------------------------------------------
0x75c5b384139650295861c197055b80c62a38d795227458fd6201a43bff67f27b | 10000000000
改めてデプロイを実行。
~ % sui client publish --gas-budget 20000000 .
UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_world
Successfully verified dependencies on-chain against source.
----- Transaction Digest ----
B2BEH1YTSxsAUdsC4GMe3WkDbo9h98Hh8sznknXTwb1N
----- Transaction Data ----
Transaction Signature: [Signature(Ed25519SuiSignature(Ed25519SuiSignature([0, 231, 205, 7, 120, 98, 81, 217, 176, 115, 236, 116, 168, 164, 150, 200, 34, 216, 83, 121, 117, 107, 218, 176, 241, 250, 199, 229, 68, 142, 10, 186, 208, 3, 160, 13, 52, 16, 195, 191, 94, 237, 130, 41, 36, 12, 108, 12, 136, 180, 46, 35, 189, 191, 158, 178, 26, 213, 254, 49, 52, 17, 51, 35, 13, 49, 49, 6, 4, 40, 64, 19, 217, 221, 96, 107, 18, 250, 30, 72, 143, 78, 8, 146, 172, 158, 194, 171, 158, 103, 151, 87, 95, 66, 198, 100, 39])))]
Transaction Kind : Programmable
Inputs: [Pure(SuiPureValue { value_type: Some(Address), value: "0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f" })]
Commands: [
Publish(<modules>,0x0000000000000000000000000000000000000000000000000000000000000001,0x0000000000000000000000000000000000000000000000000000000000000002),
TransferObjects([Result(0)],Input(0)),
]
Sender: 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f
Gas Payment: Object ID: 0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99, version: 0x5, digest: 7Fky7ZBRdPmyqG393sqsAHH8yGK3P65p3kPSMkfhEKFm
Gas Owner: 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f
Gas Price: 1000
Gas Budget: 20000000
----- Transaction Effects ----
Status : Success
Created Objects:
- ID: 0x7eaffe80472f5ebaa92003ed7703d274f069edd37eeb6eef5aeb4ca89e8a8da3 , Owner: Immutable
- ID: 0x9725aaee6c70533b94a68c48877e7b456335f067e0b58715f5439fd60b33b075 , Owner: Account Address ( 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f )
Mutated Objects:
- ID: 0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99 , Owner: Account Address ( 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f )
----- Events ----
Array []
----- Object changes ----
Array [
Object {
"type": String("mutated"),
"sender": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"objectType": String("0x2::coin::Coin<0x2::sui::SUI>"),
"objectId": String("0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99"),
"version": String("6"),
"previousVersion": String("5"),
"digest": String("5asXGf1MLeFixH8t1YmiBbvFXwiQ83evVufymNpfkJVd"),
},
Object {
"type": String("published"),
"packageId": String("0x7eaffe80472f5ebaa92003ed7703d274f069edd37eeb6eef5aeb4ca89e8a8da3"),
"version": String("1"),
"digest": String("6nkhKEj7fwiRMRwxZWCtZKkwMoyLxWWJ1u9Ti2Af3QgM"),
"modules": Array [
String("hello_world"),
],
},
Object {
"type": String("created"),
"sender": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"objectType": String("0x2::package::UpgradeCap"),
"objectId": String("0x9725aaee6c70533b94a68c48877e7b456335f067e0b58715f5439fd60b33b075"),
"version": String("6"),
"digest": String("8QZJqPAzSDF1LJGvKKm4su13eEkb88h5RpGZnHEVHsiw"),
},
]
----- Balance changes ----
Array [
Object {
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"coinType": String("0x2::sui::SUI"),
"amount": String("-7979080"),
},
]
~ % sui client gas
[warn] Client/Server api version mismatch, client api version : 1.8.1, server api version : 1.9.0
Object ID | Gas Value
----------------------------------------------------------------------------------
0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99 | 9992020920
devnetを見てみるとPackageできてる。
これでデプロイは完了。
Calling a Method through a Transaction
メソッドをコールする。デプロイしたhelloworldを呼び出すentryをつけてるfunctionなので呼び出せる。
~ % sui client call --function mint --module hello_world --package 0x7eaffe80472f5ebaa92003ed7703d274f069edd37eeb6eef5aeb4ca89e8a8da3 --gas-budget 10000000
[warn] Client/Server api version mismatch, client api version : 1.8.1, server api version : 1.9.0
----- Transaction Digest ----
7uDVL9vpowKraUQDE3mD3SmaXaAizqBjd4AGhJ2MmPpR
----- Transaction Data ----
Transaction Signature: [Signature(Ed25519SuiSignature(Ed25519SuiSignature([0, 84, 75, 240, 148, 138, 157, 117, 116, 218, 246, 57, 145, 203, 88, 92, 230, 46, 212, 101, 78, 94, 237, 101, 228, 224, 156, 195, 103, 179, 80, 247, 119, 208, 158, 150, 70, 230, 3, 179, 186, 54, 189, 217, 243, 152, 198, 154, 24, 7, 76, 206, 116, 159, 246, 0, 205, 145, 2, 17, 151, 210, 36, 15, 14, 49, 49, 6, 4, 40, 64, 19, 217, 221, 96, 107, 18, 250, 30, 72, 143, 78, 8, 146, 172, 158, 194, 171, 158, 103, 151, 87, 95, 66, 198, 100, 39])))]
Transaction Kind : Programmable
Inputs: []
Commands: [
MoveCall(0x7eaffe80472f5ebaa92003ed7703d274f069edd37eeb6eef5aeb4ca89e8a8da3::hello_world::mint()),
]
Sender: 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f
Gas Payment: Object ID: 0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99, version: 0x8, digest: GHZafXQqpRXoMA9LZA7AaVLrcXpEETXtTSC9fxwaccHG
Gas Owner: 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f
Gas Price: 1000
Gas Budget: 10000000
----- Transaction Effects ----
Status : Success
Created Objects:
- ID: 0x74f0ba283599fd3f6d12bfb6ef0445b2c451aa36d8b29a630be7d0c8e2ddcaa7 , Owner: Account Address ( 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f )
Mutated Objects:
- ID: 0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99 , Owner: Account Address ( 0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f )
----- Events ----
Array []
----- Object changes ----
Array [
Object {
"type": String("mutated"),
"sender": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"objectType": String("0x2::coin::Coin<0x2::sui::SUI>"),
"objectId": String("0xc9414b11bb5211300e6f65e23b43c5b1826cb73eeb4176a90e8a71cc0bcabf99"),
"version": String("9"),
"previousVersion": String("8"),
"digest": String("BBykHYkAEzXnup7azkV6nTTaacDvUb9HaNGtgoAHcwTD"),
},
Object {
"type": String("created"),
"sender": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"objectType": String("0x7eaffe80472f5ebaa92003ed7703d274f069edd37eeb6eef5aeb4ca89e8a8da3::hello_world::HelloWorldObject"),
"objectId": String("0x74f0ba283599fd3f6d12bfb6ef0445b2c451aa36d8b29a630be7d0c8e2ddcaa7"),
"version": String("9"),
"digest": String("8FMThKPvX1DMqesHXZ7BWCFkRv1dN1XiiDh8kFrqgYj1"),
},
]
----- Balance changes ----
Array [
Object {
"owner": Object {
"AddressOwner": String("0x9354e46a13398a7184da2b25f3751470f9024128091ac3d447579bafbb3af24f"),
},
"coinType": String("0x2::sui::SUI"),
"amount": String("-2507080"),
},
]
こちらもdevnetで確認
hello worldした感覚は全くないけどこれでできたっぽい。
Discussion