> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anchorage.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vaults, wallets & addresses

> Create and manage vaults, wallets, and deposit addresses in Porto.

export const ImageCarousel = ({images, perView = 3, children}) => {
  const [page, setPage] = useState(0);
  const [imgH, setImgH] = useState(0);
  const stripRef = useRef(null);
  const THUMB_MAX_WIDTH = 220;
  const PEEK_WIDTH = 34;
  useEffect(() => {
    const strip = stripRef.current;
    if (!strip) return;
    const measure = () => {
      const box = strip.querySelector("[data-carousel-imgbox]");
      if (box && box.clientHeight) setImgH(box.clientHeight);
    };
    measure();
    const ro = new ResizeObserver(measure);
    ro.observe(strip);
    return () => ro.disconnect();
  }, []);
  const fromChildren = React.Children.toArray(children).map(c => c && c.props && c.props.src ? {
    src: c.props.src,
    alt: c.props.alt
  } : null).filter(Boolean);
  const items = fromChildren.length ? fromChildren : images || [];
  if (!items.length) return null;
  const count = items.length;
  const columns = Math.min(perView, count);
  const totalPages = Math.ceil(count / columns);
  const showControls = totalPages > 1;
  const goTo = p => setPage((p % totalPages + totalPages) % totalPages);
  const prev = () => goTo(page - 1);
  const next = () => goTo(page + 1);
  const start = page * columns;
  const visible = items.slice(start, start + columns);
  const prevPeek = start > 0 ? items[start - 1] : null;
  const nextPeek = start + columns < count ? items[start + columns] : null;
  const renderPeek = (img, side) => {
    if (!img) return null;
    const isLeft = side === "left";
    return <button type="button" onClick={isLeft ? prev : next} aria-hidden="true" tabIndex={-1} style={{
      flex: `0 0 ${PEEK_WIDTH}px`,
      width: PEEK_WIDTH + "px",
      alignSelf: imgH ? "flex-start" : "stretch",
      height: imgH ? imgH + "px" : undefined,
      border: 0,
      padding: 0,
      cursor: "pointer",
      opacity: 0.5,
      borderRadius: isLeft ? "10px 0 0 10px" : "0 10px 10px 0",
      backgroundImage: `url("${img.src}")`,
      backgroundRepeat: "no-repeat",
      backgroundSize: "auto 100%",
      backgroundPosition: isLeft ? "right center" : "left center",
      WebkitMaskImage: `linear-gradient(to ${isLeft ? "left" : "right"}, #000 15%, transparent 100%)`,
      maskImage: `linear-gradient(to ${isLeft ? "left" : "right"}, #000 15%, transparent 100%)`
    }} />;
  };
  const arrowStyle = {
    flex: "0 0 auto",
    width: "30px",
    height: "30px",
    borderRadius: "50%",
    border: "1px solid var(--ad-border, #e4e5e7)",
    background: "var(--background, #fff)",
    fontSize: "16px",
    lineHeight: "28px",
    textAlign: "center",
    cursor: "pointer",
    padding: 0
  };
  return <div style={{
    outline: "none",
    margin: "1.5rem 0"
  }} role={showControls ? "group" : undefined} aria-label={showControls ? "Screenshot carousel" : undefined} aria-roledescription={showControls ? "carousel" : undefined}>
      <div style={{
    display: "flex",
    alignItems: "center",
    gap: "10px"
  }}>
        {showControls && <button type="button" onClick={prev} aria-label="Previous screenshots" style={arrowStyle}>
            ‹
          </button>}

        <div ref={stripRef} style={{
    display: "flex",
    flexWrap: "nowrap",
    alignItems: "flex-start",
    gap: "14px",
    justifyContent: "center",
    flex: 1
  }}>
          {renderPeek(prevPeek, "left")}
          {}
          {Array.from({
    length: columns
  }).map((_, i) => {
    const img = visible[i];
    const slotStyle = {
      margin: 0,
      flex: "1 1 0",
      maxWidth: THUMB_MAX_WIDTH + "px",
      minWidth: 0
    };
    if (!img) {
      return <div key={start + i} aria-hidden="true" style={{
        ...slotStyle,
        visibility: "hidden"
      }} />;
    }
    return <div key={start + i} style={slotStyle}>
                <span data-carousel-imgbox style={{
      display: "block"
    }}>
                  <img src={img.src} alt={img.alt ?? ""} style={{
      display: "block",
      width: "100%",
      height: "auto",
      margin: 0,
      borderRadius: "10px",
      border: "1px solid var(--ad-border, #e4e5e7)"
    }} />
                </span>
                {img.alt && <div style={{
      marginTop: "6px",
      fontSize: "12px",
      lineHeight: 1.4,
      color: "var(--ad-muted, #6b7280)",
      textAlign: "center"
    }}>
                    {img.alt}
                  </div>}
              </div>;
  })}
          {renderPeek(nextPeek, "right")}
        </div>

        {showControls && <button type="button" onClick={next} aria-label="Next screenshots" style={arrowStyle}>
            ›
          </button>}
      </div>

      {showControls && <div style={{
    textAlign: "center",
    marginTop: "8px",
    fontSize: "12px",
    color: "var(--ad-muted, #6b7280)"
  }}>
          {start + 1}
          {visible.length > 1 ? "–" + (start + visible.length) : ""} of {count}
        </div>}
    </div>;
};

## Vaults

Use multi-asset vaults to organize your assets. Vaults are fully customizable. Each vault operates independently with its own policies, allowing you to set quorums and sub-quorums to match your needs. Users can have permissions to initiate vault operations, or to initiate and approve them.

### Wallets

Inside a vault, each asset is stored within a wallet. It is possible to have multiple wallets of the same asset inside a vault. Holding multiple wallets can be beneficial for an organization—for example, to segregate assets according to the receiving counterparty.

### Addresses

Each wallet can have one or more addresses. For account-based networks like Ethereum, the wallet address is unique. For unspent transaction output (UTXO) networks like Bitcoin, you can create as many different addresses as needed, all pooled to the same wallet.

## Managing vaults

Administrators may change vault settings if circumstances change. Changes to policies and users are subject to quorum approval.

### Updating vault details

<Steps>
  <Step title="Open vault settings">
    Tap the vault you want to adjust, then tap the pencil icon next to the vault name.
  </Step>

  <Step title="Edit vault details">
    Edit the vault name and description as necessary and tap **Save**. Updating vault details does not require biometric approval.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-settings-edit-icon.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=262f2b8df6a29b3c4badb369d665c881" alt="Vault settings screen with the pencil edit icon highlighted next to the vault name" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-settings-edit-icon.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-edit-details-form.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=9f6fa3bb80c9a68dcc2178f7a6eeded9" alt="Edit vault details screen with the vault name and description fields and a Save button" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-edit-details-form.png" />
</ImageCarousel>

<Note>
  Administrators may delete vaults that are no longer in use from the vault details screen. Deletion is submitted for quorum approval.
</Note>

### Updating vault users

Administrators may update which users are Operators in a vault and adjust each user's privileges between **Initiate only** and **Initiate and approve**.

<Steps>
  <Step title="Open vault settings">
    Tap the vault, then tap the settings icon in the upper right corner.
  </Step>

  <Step title="Add or adjust users">
    To extend a user's access, go to **Users** and tap **Add user**. To change an existing user's privileges, select the user and change from **Initiate and approve** to **Initiate only** (or vice versa), then tap **Save changes**.
  </Step>

  <Step title="Submit for approval">
    After making all changes, follow the prompts, tap **Finish and review**, add an optional comment, and complete biometric endorsement to submit for quorum approval.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-1.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=3bfad4838b0fd766a58e4b738c43c9e7" alt="Vault settings screen with Users highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-1.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-2.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=99a6a573d534c71a49877dd951e68ce6" alt="Users list showing each user's current vault privileges" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-2.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-3.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=6c67aafa6e6bc9f09c66a2575c1d6267" alt="Role screen for a user with Initiate and approve currently selected" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-3.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-4.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=a633debfa43b26f1fdabbba2bacf3cb3" alt="Role screen with Initiate only selected and Save changes highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-4.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-5.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=71382fd88cb3fd5a3f013080454068e4" alt="Users list showing the updated privilege with Finish and review highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-5.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-6.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=6e28a00d091f5cf1f95ed3e677887566" alt="Add a comment screen before submitting the change for approval" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-6.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-permission-operator-7.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=1dca0de169e849c5665a8e61f6f9f114" alt="Review screen showing the updated quorum and role change before biometric approval" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-permission-operator-7.png" />
</ImageCarousel>

### Removing a vault user

<Steps>
  <Step title="Open vault settings">
    Tap the vault, tap the settings icon in the upper right corner, then tap **Users**.
  </Step>

  <Step title="Select the user to remove">
    Tap **Select**, choose the user or users to remove, then tap **Remove from vault**.
  </Step>

  <Step title="Submit for approval">
    Add a comment (optional), review the operation details, and follow the prompts to submit biometric approval. Removing a user updates the vault's base quorum accordingly.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-remove-user-1.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=f1743bf32287d895ad93d9280372315f" alt="Vault settings screen with Users highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-remove-user-1.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-remove-user-2.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=0d65e8fd2c6d3ef5c2264928ea853c4a" alt="Users list with Select highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-remove-user-2.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-remove-user-4.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=59fe43869406ba1328b67d61c2159dff" alt="Selection mode with a user checked and Remove from vault highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-remove-user-4.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-remove-user-5.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=ee9c06db728bc3bf712f0222a494f603" alt="Add a comment screen before submitting the removal for approval" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-remove-user-5.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-remove-user-review.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=05e01f423f5af5462bab7e8cd5a92330" alt="Review screen showing the updated base quorum and Submit and approve button" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-remove-user-review.png" />
</ImageCarousel>

## Vault policies

All operations in a vault follow the default policy unless you customize policies per operation type. Administrators may edit vault policies to:

* Increase or decrease the number of required approvals
* Add or remove required approvers
* Adjust the sub-quorum (number of approvals required from a selected set of approvers)

### Changing the number of approvers

<Steps>
  <Step title="Open vault policies">
    On the vault settings menu, tap **Vault policies**, then tap the arrow next to the policy you want to edit.
  </Step>

  <Step title="Edit quorum">
    Select **Quorum**, choose the number of quorum approvers, and tap the back arrow.
  </Step>

  <Step title="Submit for approval">
    Tap **Finish and review** and follow the prompts to submit biometric approval. Quorum approval is required.
  </Step>
</Steps>

### Adding or removing required approvers

<Steps>
  <Step title="Open vault policies">
    On the vault settings menu, tap **Vault policies** and select the policy you want to edit.
  </Step>

  <Step title="Edit required approvers">
    Select **Edit** next to required approvers. Make the needed changes and tap the back arrow to return to the main menu.
  </Step>

  <Step title="Submit for approval">
    Tap **Finish and review** and follow the prompts to submit biometric approval. Quorum approval is required.
  </Step>
</Steps>

### Changing the sub-quorum

<Steps>
  <Step title="Open vault policies">
    On the vault settings menu, tap **Vault policies** and select the policy you want to edit.
  </Step>

  <Step title="Edit sub-quorum">
    Select **Sub-quorum**, choose the number of sub-quorum approvers, and tap the back arrow to save changes.
  </Step>

  <Step title="Submit for approval">
    Tap **Finish and review** and follow the prompts to submit biometric approval. Quorum approval is required.
  </Step>
</Steps>

### Resetting to the default policy

<Steps>
  <Step title="Open vault policies">
    On the vault settings menu, tap **Vault policies** and select the policy you want to reset.
  </Step>

  <Step title="Reset policy">
    Select **Edit** next to required approvers, then confirm that you want to reset the policy.
  </Step>

  <Step title="Submit for approval">
    Tap **Finish and review** and follow the prompts to submit biometric approval. Quorum approval is required.
  </Step>
</Steps>

## Wallets

From the wallet details page you can:

* Check wallet balances and holdings
* Generate additional wallet addresses (where applicable)
* Initiate withdrawals
* Check the deposit address and pooled wallet addresses (where applicable)
* Edit the wallet name

### Accessing wallet details

On the vault page, select the asset to view the associated wallets in the vault. Tap the wallet to see its details. Under **Details** you can copy or share your deposit address.

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-vault-detail-assets.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=fb2cdef8b686231dffe22944d1570bb5" alt="Vault detail screen listing assets, each showing balance and wallet count" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-vault-detail-assets.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-wallet-list.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=3c0e1b7e5736b3005227a71c8222b7fd" alt="Wallet list for an asset showing each wallet's balance" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-wallet-list.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-wallet-detail-address.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=89868f5af0428da751d91a4a387831fb" alt="Wallet detail screen showing the deposit address, QR code icon, and copy icon" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-wallet-detail-address.png" />
</ImageCarousel>

### Adding a new wallet (iOS)

<Steps>
  <Step title="Select the asset">
    On the vault page, select the asset to view associated wallets.
  </Step>

  <Step title="Create a new wallet">
    Tap the wallet icon with the **+** button in the top right corner, then tap **Create new wallet** to acknowledge the disclosure and continue.
  </Step>

  <Step title="Download the encrypted wallet key">
    You will be prompted to download the encrypted wallet key. Tap **Download wallet key** and choose your preferred save method (for example, **Save to files**). If you already have wallet keys downloaded, select **Keep both** and rename as needed.

    <Info>
      New wallet keys can also be exported to your team via email by updating your key download preferences from the web dashboard. If you have previously elected to receive keys by email, you will not be prompted to download at this step.
    </Info>
  </Step>

  <Step title="Name the wallet">
    After saving your wallet key, enter a name for the new wallet.
  </Step>

  <Step title="Copy or share the deposit address">
    Tap **Deposit** to display the address and QR code. Copy or share your deposit address.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-add-wallet-disclaimer.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=b2f3ce787183ae379420a1b7b22435b8" alt="Create new wallet disclaimer screen explaining that wallets are unique and self-custodied" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-add-wallet-disclaimer.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-add-wallet-download-key.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=545915e81d13e0fe800c4b714f7711b7" alt="Download encrypted key screen with a Download wallet key button" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-add-wallet-download-key.png" />

  <img src="https://mintcdn.com/deployment-4/3eHo4c6eQNfdmseu/knowledge-base/images/screenshots/porto-wallet-detail-address.png?fit=max&auto=format&n=3eHo4c6eQNfdmseu&q=85&s=89868f5af0428da751d91a4a387831fb" alt="New wallet's detail screen showing its deposit address and QR code" width="828" height="1792" data-path="knowledge-base/images/screenshots/porto-wallet-detail-address.png" />
</ImageCarousel>

<Warning>
  The encrypted wallet key is NOT sensitive unless decrypted. Only administrators can decrypt the wallet key to import it into another wallet service provider.
</Warning>
