docs/reference/src/documentation/operations/contract-call.md
A common blockchain operation is communication between smart contracts.
To perform a call there are three steps that we must take:
Let's take the example of a Vault to demonstrate how a call can be performed.
{{#include ../../code/operations/contract_calling/contract_interface/src/lib.sw}}
To call a function on our Vault we must create a type that can perform calls. The syntax for creating a callable type is: abi(<interface-name>, <b256-address>).
The following snippet uses a script to call our Vault contract.
{{#include ../../code/operations/contract_calling/call/src/main.sw}}
The deposit() function uses pre-defined optional arguments provided by the Sway language.