/
Launch Online IDE

Visual Studio Code

A bespoke Corda plugin for the popular IDE


Reading Time: 5 min

In this chapter you step aside from code and focus on tooling. Specifically, Microsoft's free Visual Studio Code (VSC) and a bespoke Corda plugin.

So far in the course, when you wanted to manually test your flows, like you did with the IOU CorDapp, you had to do all the hard labor of building your nodes, deploying them, and starting them. That's a lot of mechanical actions. So R3 built a plugin for the Visual Studio Code IDE that elevates those tasks to simple one-click commands.

What you are going to do is:

  • Get set up.
  • Use the cordapp-example.
  • Deploy nodes.
  • Run nodes.

Get set up

First, download VSC from https://code.visualstudio.com/, then open it.

Second, you need to install the plugin. So:

  • Click on the Extensions icon to the left.
  • Search for "corda" when prompted.
  • Click on the green Install button:

Install Plugin
Install Plugin

Have a read through its README file as the extension is being installed. You will explore each command one by one, while running them against the cordapp-example project.

That's all with regard to setup.

Use it on a project

If you have not done so yet, clone the samples repository in your preferred location. The samples repository has a sub-folder named cordapp-example. This is the project to use in this exercise. Click on File -> Open Folder and choose cordapp-example.

Wait until Gradle is done downloading all dependencies and building your project, if that’s the first time you open this project.

The plugin will identify this project as a Corda project and display this finding in the status bar:

Status Bar
Status Bar

VSC's command palette is where you can find all available actions, not limited to the hard-coded ones you can find in the menus. At any time, you can open the command palette with Ctrl + Shift + P or Cmd + Shift + P. So open it now and start typing corda to see all the available commands related to Corda:

Plugin Commands
Plugin Commands

Give the tests a spin. Select Corda Run Tests:

Run Tests
Run Tests

Deploy nodes

With the tests done, deploy the nodes. This action will create a separate folder for each node that has been defined inside the deployNodes task of build.gradle file under workflows-java and workflows-kotlin modules.

By the way, cordapp-example is a special case in that it has the modules written in both Java and Kotlin for demonstration purposes. You do not need to code your project in both languages. That's why you'll notice in the terminal that the command is building both versions.

From the command palette, pick Corda DeployNodes:

Deploy Nodes
Deploy Nodes

Run nodes

With the nodes deployed, run them. Pick Corda Run Nodes and wait for all the nodes to start. Notice how you have a dropdown list that shows all of your nodes. This is much more pleasant than with the multiple terminal windows we saw in a previous module!

tip icon

Don't forget to stop your nodes, including the notary, properly by typing bye inside each terminal. Otherwise your nodes might fail to start in subsequent attempts

But, for now, keep them running so as to try the rest of the plugin's commands.

Run Nodes
Run Nodes

Interact with a flow

With the nodes running, it is time to start one of the flows. Before you do, do you remember how you used >>> run vaultTrack on a node to see a new transaction being saved in real time? The Corda plugin has the same concept here, just more pleasant.

From the command palette, choose Corda Show Transaction Explorer. It takes a bit of time to start. When it's ready, select PartyA from the dropdown list and you’ll see some details about your node, plus another dropdown that lists the flows that the node can run:

Transaction Explorer
Transaction Explorer

Choose the first flow com.example.flow.ExampleFlow$Initiator. Notice how it lets you choose a specific constructor if your flow has more than one constructor. The window now displays the required input parameters, and not only that, it also provides autocompletion on values.

Choose Flow
Choose Flow

Input an iouValue and select PartyB. Time to run the flow. Click on RUN FLOW. You should receive 2 pop-up notifications: "flow started", and "flow finished".

Flow started
Flow started

Flow finished
Flow finished

When done, the transaction explorer window shows the resulting transaction. Click on its arrow to expand its details:

Resulting Transaction
Resulting Transaction

Open PartyB in the transaction explorer and see the same transaction. Indeed, both borrower and lender are the participants of the IOU state:

PartyB Transaction
PartyB Transaction

Now let’s run the same flow again but issue an IOU from PartyA to PartyC. Select PartyA again:

PartyC Transaction
PartyC Transaction

You can also confirm that PartyC only knows of the second transaction.

Query the vault

Time to explore another feature of the plugin. In the command palette, choose Corda Show Vault Query View. Notice how the Query Builder gives you many options to filter your result set. Of note, it also provides you with auto complete on the StateRef field!

Vault Query
Vault Query

Conclusion

As you can see, the Visual Studio Code Corda plugin makes it easier to spin your nodes quickly. As well as being useful for you, the developer, it can be very useful for the QA team. They may not necessarily know how to start nodes and run commands from the terminal. The GUIs of the Transaction Explorer and Vault Query View make the process very simple.

In the following modules, you will test your flows by hand too using this plugin, and not just with unit tests.

Discuss on Slack
Rate this Page
Would you like to add a message?
Submit
Thank you for your Feedback!