DEV Community

darkvallen
darkvallen

Posted on

Deep Dive into Soroban-CLI : soroban serve & soroban events

Hi there! This is the third post of the "Deep Dive into Soroban-CLI" series where we'll explore the soroban-cli in depth. Soroban-CLI is a command-line tool for interacting with soroban smart contracts on the Stellar network. Soroban-CLI provides a set of subcommands that can be used to perform various tasks related to smart contract development and deployment on the Stellar network.

In this post i will explaining soroban serve and soroban events subcommands.

soroban serve Subcommand

The soroban serve subcommand is used to launches a local development server for soroban web app.It's useful for a few reasons:

  • Rapid testing - You can quickly test changes to your app's intents, dialogs, etc. by refreshing the browser
  • Local work - No need to deploy your app to a staging/production server every time you make a change
  • Live reload - The server will automatically reload when you make changes to your app's code, so you see updates immediately

Usage:

soroban serve
Enter fullscreen mode Exit fullscreen mode

It will use port 8000, makes sure no service running on port 8000.

soroban events Subcommand

The soroban events subcommand is used to watches for events on a blockchain from a deployed soroban smart contract. It allows you to:

  • See your soroban smart contract events on the blockchain.
  • Get details about each event like the event name, parameters, and contract hash, ledger.

This is useful for:

  • Monitoring your smart contracts activity and usage
  • Checking for errors or issues with your smart contracts
  • Debugging by watching for specific events

Usage:

soroban events --rpc-url <RPC_URL> --start-ledger <START_LEDGER> --cursor <CURSOR>
Enter fullscreen mode Exit fullscreen mode

Usage Example :
Before we can use the soroban events command to check events on the network i will demonstrating soroban events contract example from soroban-example github repo. Build that contract using this command :

cargo build --target wasm32-unknown-unknown --release
Enter fullscreen mode Exit fullscreen mode

Then deploy that contract to Futurenet using this command :

$ soroban contract deploy --wasm /workspace/soroban-quest/soroban-examples/target/wasm32-unknown-unknown/release/soroban_events_contract.wasm --rpc-url https://rpc-futurenet.stellar.org:443

success
success
dc1d42101e4daa1f70bc7d79610c59e1e5df17b45aeec3a94904b352bcb39083
Enter fullscreen mode Exit fullscreen mode

Invoke the deployed contract using this command :

$ soroban contract invoke \
> --rpc-url https://rpc-futurenet.stellar.org:443/ \
>     --id dc1d42101e4daa1f70bc7d79610c59e1e5df17b45aeec3a94904b352bcb39083 \
>     --fn increment 
success
1
Enter fullscreen mode Exit fullscreen mode

Last we will see events created by that contract using this command :

$ soroban events --rpc-url https://rpc-futurenet.stellar.org:443/ --start-ger 518086
Event 0002225291275538432-0000000000 [CONTRACT]:
  Ledger:   518116 (closed at 2023-03-20T08:11:12Z)
  Contract: 0xdc1d42101e4daa1f70bc7d79610c59e1e5df17b45aeec3a94904b352bcb39083
  Topics:
            Symbol(StringM(COUNTER))
            Symbol(StringM(increment))
  Value: U32(1)
Latest Ledger: 518127
Enter fullscreen mode Exit fullscreen mode

We should see events from our events contract showing ledger time the contract increment function invoked, contract hash, parameters used, type and value of COUNTER, and Latest ledger of the rpc network used.

Conclusion

The soroban serve subcommand is used to launches a local development server for soroban web app. The soroban events subcommand is used to watches for events on a blockchain from a deployed soroban smart contract. I will explain the other main subcommands in the next post of this series. Happy Sorobaning!

Top comments (0)