💧
久々にMove言語を触る(準備編)
2年ほど前にaptos moveでDEXを作っていたのですが、それ以来moveに触れる機会がありませんでした。
sui moveは初なので復習もかねて1から触ってみます。
作業結果を張り付けているだけです。ここでは詳細な説明はしません。
環境構築
とりあえずcliを入れます。
brew install sui
以下を実行しtestnetへ接続する設定を行います。
sui client
$ sui client envs
╭─────────┬─────────────────────────────────────┬────────╮
│ alias │ url │ active │
├─────────┼─────────────────────────────────────┼────────┤
│ testnet │ https://fullnode.testnet.sui.io:443 │ * │
╰─────────┴─────────────────────────────────────┴────────╯
アカウント準備
create account
sui client new-address ed25519
$ sui client new-address ed25519
╭───────────────────────────────────────────────────────────────────────────────────────────╮
│ Created new keypair and saved it to keystore. │
├────────────────┬──────────────────────────────────────────────────────────────────────────┤
│ alias │ mystifying-chrysoberyl │
│ address │ 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ keyScheme │ ed25519 │
│ recoveryPhrase │ 一応隠しておきます │
╰────────────────┴──────────────────────────────────────────────────────────────────────────╯
faucet
sui client faucet --address 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e
GET!(先に少し使ってしまったので減ってます)
$ sui client balance 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e
╭────────────────────────────────────────╮
│ Balance of coins owned by this address │
├────────────────────────────────────────┤
│ ╭─────────────────────────────────╮ │
│ │ coin balance (raw) balance │ │
│ ├─────────────────────────────────┤ │
│ │ Sui 986650480 0.98 SUI │ │
│ ╰─────────────────────────────────╯ │
╰────────────────────────────────────────╯
スマコン作成
ここでは細かい説明は省きます
publish
$ sui client publish --gas-budget 50000000
UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING sui_first_package
Successfully verified dependencies on-chain against source.
Transaction Digest: BZoKo27iff3QrUauUiqNrxBmS1ihnbJEX16zgqUeTXbm
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Transaction Data │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ Gas Owner: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ Gas Budget: 50000000 MIST │
│ Gas Price: 1000 MIST │
│ Gas Payment: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Version: 92485315 │
│ │ Digest: 9XZFbW8e878zxSd1sTTnqxWPuDYRFr2LuhocUNNLuDAn │
│ └── │
│ │
│ Transaction Kind: Programmable │
│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Input Objects │ │
│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │
│ │ 0 Pure Arg: Type: address, Value: "0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e" │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─────────────────────────────────────────────────────────────────────────╮ │
│ │ Commands │ │
│ ├─────────────────────────────────────────────────────────────────────────┤ │
│ │ 0 Publish: │ │
│ │ ┌ │ │
│ │ │ Dependencies: │ │
│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │
│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │
│ │ └ │ │
│ │ │ │
│ │ 1 TransferObjects: │ │
│ │ ┌ │ │
│ │ │ Arguments: │ │
│ │ │ Result 0 │ │
│ │ │ Address: Input 0 │ │
│ │ └ │ │
│ ╰─────────────────────────────────────────────────────────────────────────╯ │
│ │
│ Signatures: │
│ azxTPQP629wHcdZHwIZPxhkp1TatZLIdYZOsySqnJxcXgkdBso4UGzt0LaqQbxNfkt/jdeE7q7A3RxsV8YrXCg== │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Transaction Effects │
├───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Digest: BZoKo27iff3QrUauUiqNrxBmS1ihnbJEX16zgqUeTXbm │
│ Status: Success │
│ Executed Epoch: 514 │
│ │
│ Created Objects: │
│ ┌── │
│ │ ID: 0x0c3284124534d127638449b1853e84046c6fbddf80298cb23f5b45386f107a15 │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485316 │
│ │ Digest: 2pvqq1FB1EGnqdryJGRMPdyJqFMMkucULyQL3seX9xGm │
│ └── │
│ ┌── │
│ │ ID: 0xcc7361967ec8098ece79f5ad6afd881519133613c7ce06933790e85505232965 │
│ │ Owner: Immutable │
│ │ Version: 1 │
│ │ Digest: 76iG7juaaqUuF2uBt915rqj4c9ZJ5HPxry4JTECL9U6T │
│ └── │
│ ┌── │
│ │ ID: 0xd8bc8e819ea260a3647c8fbb2d3928fbdbc56d235ef0a4610df1ac9334ade11a │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485316 │
│ │ Digest: 7TsrpdYMXjxaQ1tKuzdP4c88T6Krp5kLPpfwNWWKKQeY │
│ └── │
│ Mutated Objects: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485316 │
│ │ Digest: 8xfEi6P5a36Su2iZrEMtq6agqtUm7seTmL2P6j7nWtg9 │
│ └── │
│ Gas Object: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485316 │
│ │ Digest: 8xfEi6P5a36Su2iZrEMtq6agqtUm7seTmL2P6j7nWtg9 │
│ └── │
│ Gas Cost Summary: │
│ Storage Cost: 10298000 MIST │
│ Computation Cost: 1000000 MIST │
│ Storage Rebate: 978120 MIST │
│ Non-refundable Storage Fee: 9880 MIST │
│ │
│ Transaction Dependencies: │
│ 2VBiXoKJAfDeVgi8ntkra1wDszKN2diDdp8u1UiqM3i2 │
│ EHhhGiuAqeb3TRM4g5xhzHFokrVVsGsemXKc7QX1XVc8 │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────╮
│ No transaction block events │
╰─────────────────────────────╯
╭────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Object Changes │
├────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Created Objects: │
│ ┌── │
│ │ ObjectID: 0x0c3284124534d127638449b1853e84046c6fbddf80298cb23f5b45386f107a15 │
│ │ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ ObjectType: 0x2::package::UpgradeCap │
│ │ Version: 92485316 │
│ │ Digest: 2pvqq1FB1EGnqdryJGRMPdyJqFMMkucULyQL3seX9xGm │
│ └── │
│ ┌── │
│ │ ObjectID: 0xd8bc8e819ea260a3647c8fbb2d3928fbdbc56d235ef0a4610df1ac9334ade11a │
│ │ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ ObjectType: 0xcc7361967ec8098ece79f5ad6afd881519133613c7ce06933790e85505232965::example::Forge │
│ │ Version: 92485316 │
│ │ Digest: 7TsrpdYMXjxaQ1tKuzdP4c88T6Krp5kLPpfwNWWKKQeY │
│ └── │
│ Mutated Objects: │
│ ┌── │
│ │ ObjectID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │
│ │ Version: 92485316 │
│ │ Digest: 8xfEi6P5a36Su2iZrEMtq6agqtUm7seTmL2P6j7nWtg9 │
│ └── │
│ Published Objects: │
│ ┌── │
│ │ PackageID: 0xcc7361967ec8098ece79f5ad6afd881519133613c7ce06933790e85505232965 │
│ │ Version: 1 │
│ │ Digest: 76iG7juaaqUuF2uBt915rqj4c9ZJ5HPxry4JTECL9U6T │
│ │ Modules: example │
│ └── │
╰────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Balance Changes │
├───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ┌── │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ CoinType: 0x2::sui::SUI │
│ │ Amount: -10319880 │
│ └── │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
実行
$ sui client ptb \
--assign forge 0xd8bc8e819ea260a3647c8fbb2d3928fbdbc56d235ef0a4610df1ac9334ade11a \
--assign to_address 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e \
--move-call 0xcc7361967ec8098ece79f5ad6afd881519133613c7ce06933790e85505232965::my_module::new_sword forge 3 3 \
--assign sword \
--transfer-objects "[sword]" to_address \
--gas-budget 20000000
Transaction Digest: 3X7wdwUNz1q7NnibVVvjGv9bjHWqqHj8BTTGVCcGrrwE
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
│ Transaction Data │
├─────────────────────────────────────────────────────────────────────────────────────────────┤
│ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ Gas Owner: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ Gas Budget: 2988000 MIST │
│ Gas Price: 1000 MIST │
│ Gas Payment: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Version: 92485316 │
│ │ Digest: 8xfEi6P5a36Su2iZrEMtq6agqtUm7seTmL2P6j7nWtg9 │
│ └── │
│ │
│ Transaction Kind: Programmable │
│ No input objects for this transaction │
│ No commands for this transaction │
│ │
│ Signatures: │
│ 1rjvKkkTzKK+gZW+jHb+nW7KzlQ41MRO2W5lfRfEDBQh8iNRzjqmsW1ibmiJlhEhfv8jKoWXqm0JKOJL25mJBQ== │
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Transaction Effects │
├───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Digest: 3X7wdwUNz1q7NnibVVvjGv9bjHWqqHj8BTTGVCcGrrwE │
│ Status: Success │
│ Executed Epoch: 514 │
│ Mutated Objects: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485317 │
│ │ Digest: Crrrcid5ivZrhzjtLdZhLsusduqnJehNWSFQmLn8kQ3F │
│ └── │
│ Gas Object: │
│ ┌── │
│ │ ID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ Version: 92485317 │
│ │ Digest: Crrrcid5ivZrhzjtLdZhLsusduqnJehNWSFQmLn8kQ3F │
│ └── │
│ Gas Cost Summary: │
│ Storage Cost: 988000 MIST │
│ Computation Cost: 1000000 MIST │
│ Storage Rebate: 978120 MIST │
│ Non-refundable Storage Fee: 9880 MIST │
│ │
│ Transaction Dependencies: │
│ BZoKo27iff3QrUauUiqNrxBmS1ihnbJEX16zgqUeTXbm │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────────╮
│ No transaction block events │
╰─────────────────────────────╯
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Object Changes │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Mutated Objects: │
│ ┌── │
│ │ ObjectID: 0xbee1d78a4e5c09f210da55e9583bfbf919b5421fda1799c5979006671040ecb3 │
│ │ Sender: 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │
│ │ Version: 92485317 │
│ │ Digest: Crrrcid5ivZrhzjtLdZhLsusduqnJehNWSFQmLn8kQ3F │
│ └── │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Balance Changes │
├───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ┌── │
│ │ Owner: Account Address ( 0x2cc80886077a04dceb2d0b939a1e9498769ff73ebe1afd74a910da7bf340c97e ) │
│ │ CoinType: 0x2::sui::SUI │
│ │ Amount: -1009880 │
│ └── │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
最後に
次はCoinを作ります。
Discussion