課題
Rustでmsg!で出力したメッセージは、Solana ExplorerだとProgram Logで確認ができる。
以下は SolanaサンプルのHello World をdevnetにデプロイしたあとの実行例。Program Logにログが残っている。
しかし、localhostの場合($ solana-test-validatorで起動した場合)は、Solana Explorer上から閲覧することはできない。
対策
localhostでログ確認したい場合は、solana logsを起動しておくと、トランザクションが走るたびに出力されるようになる。
% solana logs
Streaming transaction logs. Confirmed commitment
Transaction executed in slot 2765:
Signature: 3rKeNuLYZARbDTtqiy5owQe6gTQhZ1SACWrnauALmD2KjX6LhuS2rdCUj1e246qYbDo5zCxV4JvLKxx7Dd1EwHxK
Status: Ok
Log Messages:
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc invoke [1]
Program log: Hello World Rust program entrypoint
Program log: Greeted 12 time(s)!
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc consumed 1186 of 200000 compute units
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc success
やり方
ターミナルを最終的に3つ開く必要がある。
1つ目のターミナル。Solanaノードサーバーを起動しておく。
% solana-test-validator
--faucet-sol argument ignored, ledger already exists
Ledger location: test-ledger
Log: test-ledger/validator.log
Identity: Hw8qyXEYMT8da32uKRqi79DNzV7Ad84bF1fC1UACbRH2
Genesis Hash: 74LGYnZRNyHXc2mHnnYHYHASHkdqDKTHwuV3f4ZhoXuN
Version: 1.8.5
Shred Version: 21921
Gossip Address: 127.0.0.1:1024
TPU Address: 127.0.0.1:1027
JSON RPC URL: http://127.0.0.1:8899
⠓ 00:00:18 | Processed Slot: 2777 | Confirmed Slot: 2777 | Finalized Slot: 2745
2つ目のターミナル。ログをリッスン状態にする。
% solana logs
Streaming transaction logs. Confirmed commitment
3つ目のターミナル。トランザクションを走らせる。
% npm run start
> helloworld@0.0.1 start
> ts-node src/client/main.ts
Let's say hello to a Solana account...
Connection to cluster established: http://localhost:8899 { 'feature-set': 52865992, 'solana-core': '1.8.5' }
Using account HXtBm8XZbxaTt41uqaKhwUAa6Z1aPyvJdsZVENiWsetg containing 500000000.04468334 SOL to pay for fees
Using program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc
Saying hello to 7QaiMunqrxkHsJ6GPEKYj38GcpYLhiXh6KAQcgHVxmEQ
7QaiMunqrxkHsJ6GPEKYj38GcpYLhiXh6KAQcgHVxmEQ has been greeted 12 time(s)
Success
3つ目のターミナルコマンドを実行すると、2つ目のターミナルに以下のようなログが表示される。
Transaction executed in slot 2765:
Signature: 3rKeNuLYZARbDTtqiy5owQe6gTQhZ1SACWrnauALmD2KjX6LhuS2rdCUj1e246qYbDo5zCxV4JvLKxx7Dd1EwHxK
Status: Ok
Log Messages:
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc invoke [1]
Program log: Hello World Rust program entrypoint
Program log: Greeted 12 time(s)!
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc consumed 1186 of 200000 compute units
Program Bi8Xvx9VENCUwtE2jdo4CyQLRrZCpSzKiaGsZCCtqGRc success