# How to change the triggering vault in the Ethers Provider

**URL:** <https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283>\
**Category:** Developer Discussion\
**Tags:** help-center\
**Created:** [March 5, 2025, 2:51pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283 "2025-03-05T14:51:20Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rocio](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rocio](https://community.fireblocks.com/u/rocio)\
**Post date:** [March 5, 2025, 2:51pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/1 "2025-03-05T14:51:20Z")

</div>

This is how we are initializing the provider now:

 ![image](https://us1.discourse-cdn.com/flex015/uploads/fireblocks/original/1X/30ab1a053a073766fcd43c991b627b5ce6800e09.png)

The idea is to have every token contract owner in the vaultAccountIds list.

But how can I then choose the correct owner of the contract when using them so that I don’t encounter issues when interacting with them?

---

<div class="post-metadata">

**Author:** ![mnamakwala](https://avatars.discourse-cdn.com/v4/letter/m/b5a626/32.png) [@mnamakwala](https://community.fireblocks.com/u/mnamakwala)\
**Post date:** [March 7, 2025, 8:26pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/2 "2025-03-07T20:26:45Z")

</div>

Hi Rocio,  
Can you please describe the issue in more detail here? If I understand correctly, you are trying to pass in an array of vault IDs, but you are unable to do that.  
You need to choose the correct Vault ID and the correct address will be picked up associated with that user

Kindly take a look at our documentation with code examples mentioned below.

> **[EVM Web3 Provider](https://developers.fireblocks.com/reference/evm-web3-provider)**
>
> Overview Popular blockchain choices for building Web3 capabilities are based typically on the Ethereum Virtual Machine (EVM), and therefore share the development tech stack. Some examples of EVM blockchains: Ethereum BNB Chain (BSC) Polygon Avalanche...

---

<div class="post-metadata">

**Author:** ![rocio](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rocio](https://community.fireblocks.com/u/rocio)\
**Post date:** [March 11, 2025, 8:55pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/3 "2025-03-11T20:55:08Z")

</div>

This is what I mean:  
Lets asume I have 3 accounts that have a smart contract deployed to their name. (1, 2, 3)

So I would create the fireblocks provider with vaultAccountIds: [1, 2, 3]

My question is, how do I set which account I am interacting with when running a function on a smart contract?

If I try to use the smart contract deployed by accountId 2, I’ll get an error because account 1 does not have permission to interact with that contract.

---

<div class="post-metadata">

**Author:** ![rocio](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rocio](https://community.fireblocks.com/u/rocio)\
**Post date:** [March 11, 2025, 8:56pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/4 "2025-03-11T20:56:06Z")

</div>

I’ve search the docs, I couldn’t find this case scenario.

---

<div class="post-metadata">

**Author:** ![rocio](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rocio](https://community.fireblocks.com/u/rocio)\
**Post date:** [March 18, 2025, 12:31pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/5 "2025-03-18T12:31:15Z")

</div>

Hi, I would like to re surface this issue since I haven’t found a solution yet.

---

<div class="post-metadata">

**Author:** ![yoji](https://avatars.discourse-cdn.com/v4/letter/y/977dab/32.png) [@yoji](https://community.fireblocks.com/u/yoji)\
**Post date:** [March 18, 2025, 6:25pm UTC](https://community.fireblocks.com/t/how-to-change-the-triggering-vault-in-the-ethers-provider/2283/6 "2025-03-18T18:25:40Z")

</div>

Hi @rocio – apologies for the earlier confusion, you can certainly select what wallet to use when setting up your eip1993 provider with multiple vault accounts.

When you’re sending the signature request, you can specify a `JsonRpcSigner` object to use. If you’ve created the provider with multiple vaults, you will have a separate `JsonRpcSigner` object for each vault’s wallet. You can fetch these using the `Web3Provider.getSigner()` function. For example, this eip1993 provider was created and provided with two vaults, and I can then use the `getSigner()` function to fetch specific wallet signers, and can then use it when instantiating a new Contract object, or use it’s TX-related functions :

```javascript
const eip1193Provider = new FireblocksWeb3Provider({
    privateKey: fs.readFileSync('<secret_key_path>', 'utf-8'),
    apiKey: '<api_key>',
    vaultAccountIds: [0, 1],
    chainId: ChainId.MAINNET
});

const fbSigner_default = new ethers.providers.Web3Provider(eip1193Provider, "any").getSigner();
const fbSigner_zero = new ethers.providers.Web3Provider(eip1193Provider, "any").getSigner(0);
const fbSigner_one = new ethers.providers.Web3Provider(eip1193Provider, "any").getSigner(1);
console.log(await fbSigner.getAddress())
console.log(await fbSigner0.getAddress())
console.log(await fbSigner1.getAddress())

const tx = await fbSigner_default.sendTransaction({
    to: '<to_address>',
    value: ethers.utils.parseUnits('<eth_amount>', 'ether'),
});

```
