Cast Spells

Build Money Lego Transactions

Spells denotes a sequence of connector functions that will achieve a given use case. Spells can comprise of any number of functions across any number of connectors.

With this SDK, performing DeFi operations on your dapp consists of creating a spells instance to add transactions. Here is where you can initiate complex transactions amongst different protocols.

Create an instance.

let spells = dsa.Spell();

Add spells that you want to execute. Think of any actions, and by just adding new SPELLS, you can wonderfully CAST transactions across protocols. Let's try to execute the following actions:

  1. Lend 1 ETH on Compound
  2. Borrow 50 DAI on Compound
spells.add({
  connector: "compound",
  method: "deposit",
  args: [dsa.tokens.info.eth.address, dsa.tokens.fromDecimal(1, "eth"), 0, 0]
});

spells.add({
  connector: "compound",
  method: "borrow",
  args: [dsa.tokens.info.dai.address, dsa.tokens.fromDecimal(50, "dai"), 0, 0]
});

Note: Make sure, your smart account have the equivalent ETH balance before executing the above actions. Check this section for more details.

At last, cast your spell using cast() method.

dsa.cast(spells).then(console.log) // returns transaction hash

You can also pass an object to send optional parameters like sending ETH along with the transaction.

dsa.cast({
  spells: spells,
  gasPrice: web3.utils.toWei(gasPrice, 'gwei'), // in gwei, used in node implementation.
  value: dsa.tokens.fromDecimal(1,"eth"), // sending 1 Eth along the transaction.
  nonce: nonce
})
Parameter (optional)TypeDescription
spellsobjectInstance of the spells() method
gasPricestring/numberThe gas price in gwei. Mostly used in Node implementation to configure the transaction confirmation speed.
valuestring/numberAmount/value of tokens which you want to send along with the transaction.
noncestring/numberNonce of your sender account. Mostly used in Node implementation to send transaction with a particular nonce.

This will send the transaction to blockchain in node implementation (or ask users to confirm the transaction on web3 wallet like Metamask).

Start with your use case


If you still can't find something you're looking for or have any questions, ask them at our developers community on Telegram, Discord or simply send an Email.

Our team is excited about assisting you to build an application using Instadapp Developer Platform. Your questions and feedback help us make a better development environment for future developers.

Best way to stay connected with our progress.