LAST UPDATED:

December 27, 2021, 5:01:02 PM

TUTORIAL

Learn Vektor with a 10 min walkthrough

TABLE OF CONTENTS

  1. The Vektor UI
  2. Your first command
  3. Introducing Arguments
  4. Set up some labelled addresses
  5. Getting help with VXL 🚑
  6. Set up a simple portfolio
  7. Try out testnet mode
  8. Get some free testnet ETH
  9. Your first transaction!
  10. Assess the market
  11. Make a simple buy transaction
  12. Just the beginning...
  13. RELATED PAGES

Welcome to Vektor! 🎉

This 10 minute tutorial aims to get you started using Vektor, by walking through core concepts using real functions and data.

Note: This tutorial is designed so you can try out the commands yourself if you want to - just copy and paste them or retype them in the command line as you encounter them in this walkthrough.

The Vektor UI

Vektor UI has two fundamental pieces to it:

  1. The workspace, where you can arrange and configure one or more view panes. View panes display information like charts or execution outcomes, and are typically interactive.
  2. The command line, where on- and off-chain commands are composed and submitted to Vektor for execution.

Commands are written in Vektor Execution Language (VXL™), a powerful but intuitive syntax that uses spreadsheet-styled functions. VXL unlocks new levels of web3 programmability for Vektor users.

screenshot

The Vektor UI.

For optimum experience we recommend users engage with Vektor using the keyboard as much as possible, although it's possible to do most things using the mouse.

Note: Vektor works best on larger / external monitors. However if you are using a smaller laptop screen then you can Zoom out on most browsers by pressing Command + '-' key (or Ctrl + '-') to make more space.

Your first command

A command in Vektor is a single statement that gets submitted to 'make something happen'. Commands are composed of one or more functions.

The simplest functions have no inputs (aka 'arguments') at all. Examples are the START , HISTORY and CLEAR functions.

Press the Escape key on your keyboard to ensure the Command Line is activated. Then type START or START() into the command line.

START

Press Enter or click the GO button to run the START function as a command. The result shows in a new view pane.

screenshot

Most command submissions result in a new view pane appearing in the workspace.

At any time, you can see a history of the commands you recently submitted using the HISTORY function. Type HISTORY and press Enter.

HISTORY

A second view pane will appear containing the result of the HISTORY function.

screenshot

A second view pane appears and becomes active (as shown by the green header bar highlight)

You can wipe the screen clear by using the CLEAR function. Type CLEAR and press Enter.

Note: If you are viewing this tutorial in the app, then this view pane will also disappear if you use CLEAR! You can run TUTORIAL again to bring it back, or consider opening it in a second tab.

The result is a clear workspace.

screenshot

Clean and ready for action.

Introducing Arguments

Many functions will take one or more arguments. Similar to spreadsheet functions, VXL functions take arguments inside brackets with commas separating them.

e.g. FUNCTION(arg1, arg2, ... )

Depending on the function, arguments can be numbers (decimal / integer), text, boolean (True / False) values or Vektor objects like assets, blockchains, labels, portfolios, or workspaces. Arguments can also be other nested functions.

As an example, the DOCS function can instantly show you documentation on a specific function, by taking the function name as an argument.

DOCS(CLEAR)

Passing CLEAR as the only argument to the DOCS function will open up the documentation for the CLEAR function.

screenshot

The Documentation for the CLEAR function loads directly in the Vektor App.

Set up some labelled addresses

Labels are a core concept in Vektor. Labels are human-readable names that you assign to blockchain addresses. Because they are quicker to type, labels allow us to easily and securely reference full addresses in Vektor functions, without worrying about mistakes or typos.

To see which labels you've set up, type LABEL end press Enter.

LABEL

A list of labels appears in a new pane. If you haven't created any labels before, it will be empty.

screenshot

No labels are shown because none have been created yet.

To add a new label, use the LABEL.ADD(name,address) subfunction. Label names cannot include spaces.

LABEL.ADD("DEFI_WALLET", 0x0320477ab8c13f257bf910b79cb4550d579bf874)

Congratulations!🎉 You've added your first label called DEFI_WALLET. If we run LABEL or LABEL.LIST again we can see it exists.

LABEL.LIST

screenshot

Your new labelled address now shows up in the list.

Note: In Vektor, extended capability of functions can be accessed using the dot notation after the function name and adding another subordinate function keyword. We call these Subfunctions. In the case of the LABEL function, available subfunctions include .ADD, .REMOVE, and .LIST. In the above example, LABEL.LIST is the default subfunction when you use LABEL on its own, so LABEL and LABEL.LIST achieve exactly the same.

Now that we've created a label, we can reference it in other functions without having to retype the address. For example, we can check the balance of DEFI_WALLET using the BALANCE function.

BALANCE(ETH, DEFI_WALLET)

This opens a new pane with the ETH (Ethereum) balance of DEFI_WALLET.

screenshot

The ETH balance of DEFI_WALLET shown at full precision.

The BALANCE function also works for other tokens, for example DAI.

BALANCE(DAI, DEFI_WALLET)

screenshot

Multiple panes for different asset balances of the same labelled address.

Getting help with VXL 🚑

If you need some assistance using Vektor's Execution Language (VXL), we're here for you! There are several ways that Vektor tries to simplify the learning curve:

1. Autocomplete in the command line

The command line will help you with popups and dropdowns that suggest values for functions and arguments based on typed information and expected data types. You can accept these suggestions by simply pressing Tab one or more times as you write out your command.

screenshot

Autocomplete in action using the Tab key.

2. Use the Function Form

When you submit a command that contains a function with incomplete arguments, Vektor will open a form to help you fill in the gaps. The form will do its best to pre-fill all the arguments that you entered correctly, and you can use the drop-down menus to complete the required arguments that were missing.

screenshot

The Function Form prompts for incomplete arguments using intuitive drop down lists.

The preview at the bottom of the function form shows you how the completed function will appear, so you can remember for next time. When you're ready, the INSERT button will helpfully put this completed function back into the command line, ready for submission.

3. Use the DOCS function

Vektor has detailed documentation on all functions, which includes explanations of the different arguments and subfunctions. Use the DOCS function to access all the documentation, or jump straight to a specific function using DOCS(function_name).

screenshot

Index of Function documentation accessed using the DOC function.

4. Chat to us 📞

We'd love to hear from you! You can either chat to us using messaging for real-time support, or set up a video call with someone at Vektor.

You can open the real-time chat feature either using the CHAT function or by clicking on the chat widget in the bottom-right corner of the screen.

CHAT

screenshot

The chat button.

To set up a video call, simply use the CALL function and pick a time that suits you on Calendly.

CALL

Set up a simple portfolio

Portfolios in Vektor can display a summary of asset balances and other key information at a glance. You can create portfolios using one or more labelled addresses that you set up in a previous step.

PORTFOLIO.NEW("MY_PORTFOLIO")

This will create a new portfolio called "MY_PORTFOLIO", initially with no affiliated labeled addresses. You can create as many portfolios as you wish.

You can bring up your portfolio at any time using PORTFOLIO.GET

PORTFOLIO.GET(MY_PORTFOLIO)

This will open up the portfolio in a new view pane.

screenshot

A new portfolio starts empty.

Insert some of your labelled addresses for inclusion in this portfolio using the INSERT subfunction.

PORTFOLIO.INSERT(DEFI_WALLET, MY_PORTFOLIO)

Your portfolio will detect all the assets in that labelled address and display the balances and valuation in a table.

screenshot

The portfolio is aggregating asset balances from all the inserted labelled addresses.

Important: If there are assets missing from this view, you may need to Enable them using PORTFOLIO.EDIT. By default not all assets are enabled.

Note: There are many more things you can do with the PORTFOLIO function and its various subfunctions. For more information run DOCS(PORTFOLIO).

Try out testnet mode

With Vektor you can easily switch from 'mainnet mode' (real transactions with real value) to 'testnet mode' (test transactions with fake value). Users engage testnet mode to execute Vektor's on-chain functionality without using 'real' funds or paying mainnet transaction fees.

To toggle testnet mode, use the TESTNET function.

TESTNET.ON

You can verify that Vektor has entered testnet mode because the command line status bar (the thin line underscoring the command line input area) and all the other green elements in the UI will change color to lilac. The 'GO' button will also change to say 'TESTNET'.

screenshot

Toggling between mainnet mode (green) and testnet mode (lilac).

While in testnet mode, all Vektor functions will be interpreted in the testnet context. For example, adding labelled addresses will add them as testnet labels (separate to mainnet labels) and on-chain transactions will be effected on testnet blockchains, not on mainnet blockchains. You can consider testnet mode as a completely isolated environment from mainnet mode.

Important: Please be aware the PORTFOLIO function is currently not supported in testnet mode.

Get some free testnet ETH

To execute on-chain transactions on an Ethereum testnet, you need some testnet ETH to pay transaction fees. For added convenience, Vektor can provide a small amount of testnet ETH for its users free of charge.

To request some testnet ETH, please use the CHAT function and provide us the name of a labelled address you created while in testnet mode. Our support team will transfer some to you.

screenshot

Get in touch with us using the CHAT function to receive some testnet ETH.

Important: To receive testnet ETH from Vektor, you must provide a label that corresponds to an Ethereum address that you control (i.e. have the corresponding private keys for). It must be associated with your hardware wallet. Vektor will not be able to tell if you provide a label that corresponds to someone else's address or a watch-only address. If we send testnet ETH to an address that you do not control, it will not be useable in testnet mode, and it will not be recoverable. Do not send us your seed phrase or private keys.

Of course, you can use your own testnet ETH if you have some already, or you can acquire some from different sources (subject to availability). These include https://faucet.rinkeby.io and https://faucet.paradigm.xyz.

Your first transaction!

Let's put your testnet ETH to work with your first on-chain transaction, using Vektor's MOVE function. The MOVE function moves an asset from a sender address to a receiver address. We will use MOVE to move some testnet ETH between two labelled addresses that are both under your control.

Before we start this step, make sure that

  1. You have your hardware wallet ready. We recommend a Ledger Nano with the Ethereum app installed
  2. You are in TESTNET mode
  3. While in TESTNET mode, you have setup two labelled Ethereum addresses (using LABEL.ADD) that are associated with this Ledger

For convenience during this first usage, let's use the Function Form to complete the required arguments for move. Type MOVE and hit enter.

MOVE

Fill in the arguments on the Function Form:

screenshot

Example Function Form, here used for MOVE.

Click the INSERT button to insert the completed VXL into the Command Line, then press Enter.

MOVE(0.05, ETH, MY_TESTNET_ADDRESS_1, MY_TESTNET_ADDRESS_2)

The Signing Request will appear in front of the workspace.

screenshot

A Signing Request.

Press CONNECT and select a signing device from the list.

screenshot

When your device is connected, the device connection status will say 'CONNECTED' and the SIGN button will appear.

screenshot

Ready to sign.

Click SIGN and follow the instructions on your device.

screenshot

Signing and broadcasting to the blockchain.

Congratulations! 🎉 you’ve just made an on-chain transaction using Vektor.

The notification of the transaction broadcast will appear. Click VIEW to check the confirmation status on the associated public blockchain explorer.

screenshot

The Transaction Broadcast Notification links to the public blockchain explorer.

Important: The process for MOVE works exactly the same on mainnet mode (i.e. when testnet mode is off)

Assess the market

The final exercise in this tutorial is to execute your first buy transaction (we will use testnet mode again for this). But before we buy using Vektor, let’s take a brief look at some of the market research functions.

For an overview of asset prices at-a-glance, use the MARKET function.

MARKET

This will display a table of assets, with common metrics such as price, volume, and market cap. There’s a lot of information in this table, so you may want to resize the view pane using the mouse, or alternatively maximize it using the PANE.MAXIMIZE subfunction.

PANE.MAXIMIZE(1)

This will fill the workspace with the view pane with index number 1 (in this case our market table).

screenshot

Using PANE.MAXIMIZE to fill the workspace with the MARKET pane.

Note: The market table is not a whole-of-market list. Vektor curates this list to be relevant to the blockchains that are supported by the app. Vektor will support more blockchains as time goes on.

If we want to view prices of specific assets, we can use the PRICE function to specify the base asset (e.g. ETH, WBTC, UNI) and quote asset (e.g. USD, EUR, ETH).

PRICE(ETH, USD)

Each price feed occupies a view pane; multiple price feeds can exist on the same Workspace. Prices are live updating.

screenshot

Adding three live price feeds to the Workspace using the PRICE function.

If we want to see a time series of price data, we can use a chart function like GRAPHPRICE, GRAPHVOL, or GRAPHMCAP.

GRAPHPRICE(WBTC)

Charts open in their own view panes.

screenshot

Adding charts to the Workspace using GRAPHPRICE, GRAPHMCAP, and GRAPHVOL functions.

With the graph functions, as well as functions like PRICE, BALANCE, PORTFOLIO and MARKET, we can configure the Workspace into powerful customized dashboards full of different view panes. Changes to your Workspace are saved automatically. You can switch to a new Workspace and then recall this one later using the WORKSPACE function.

screenshot

Configuring different Workspaces using the WORKSPACE function.

Important: Vektor will be adding support for more blockchains and assets as time goes on. To see a list of current supported blockchains and assets, use the BLOCKCHAINS and ASSETS functions.

Make a simple buy transaction

Let’s buy something using your testnet ETH! Just like with MOVE, the BUY and SELL functions are execution functions that interact with blockchains. For this exercise, we will make a simple trade using the Uniswap v2 testnet smart contract on Ethereum.

This time, instead of using the Function Form to assist like we did with MOVE, let’s try directly inputting VXL on the command line. The BUY function expects 4 arguments in the following order:

  1. RECEIVE_AMOUNT (the exact amount of the asset you’re buying)
  2. RECEIVE_ASSET (the asset you’re buying)
  3. SPEND_ASSET (the asset you’re spending with)
  4. SPEND_LABEL (the labelled address that spends and receives the assets)

So for example, if we wanted to buy 0.1 Wrapped Bitcoin (WBTC) using our ETH, and spending from labelled address ‘MY_TESTNET_ADDRESS_1’, the VXL would be

BUY.SIMPLE(0.10, WBTC, ETH, MY_TESTNET_ADDRESS_1)

Hit Enter and you will see the Signing Request. Connect your wallet by pressing the CONNECT button.

screenshot

Note: On testnet, assets do not have real market value. The exchange rate shown on this Signing Request is clearly not realistic, but this is expected behaviour for testnet because there are no market forces acting to calibrate asset prices to their ‘real’ level.

Press SIGN and follow the instructions on your device. Once you approve, the transaction will be broadcast and you will see the Transaction Broadcasted notification.

screenshot

That’s it! You just completed a buy transaction using VXL and Vektor’s execution engine. Well done!🎉

Just the beginning...

This is the end of the tutorial, but just the beginning of your journey with Vektor. We’re here to help with any questions or queries, so please feel free to reach out to us any time:

Please let us know if you have any feedback whatsover - we’d be happy to hear from you!