# Light Account • Getting started

> Getting started with Light Account in Smart Wallets

Getting started with Light Account is straightforward. Below you will create and send transactions for both `LightAccount` and `MultiOwnerLightAccount` using `@alchemy/aa-alchemy`.

### Install packages

**Prerequisites**

* minimum Typescript version of 5

**Installation**

<CodeBlocks>
  ```bash npm
  npm i @account-kit/smart-contracts
  ```

  ```bash yarn
  yarn add@account-kit/smart-contracts
  ```
</CodeBlocks>

### Create a client and send a transaction

The code snippets below demonstrate how to use `LightAccount` and `MultiOwnerLightAccount` with Smart Wallets. They create the account and send a `UserOperation` from it.

<CodeBlocks>
  ```ts light-account.ts
  import { createLightAccountAlchemyClient } from "@account-kit/smart-contracts";
  import { sepolia, alchemy } from "@account-kit/infra";
  import { LocalAccountSigner } from "@aa-sdk/core";
  import { generatePrivateKey } from "viem";

  const lightAccountClient = await createLightAccountAlchemyClient({
    transport: alchemy({ apiKey: "your-api-key" })
    chain: sepolia,
    signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
  });
  ```

  ```ts multi-owner-light-account.ts
  import { createMultiOwnerLightAccountAlchemyClient } from "@account-kit/smart-contracts";
  import { sepolia, alchemy } from "@account-kit/infra";
  import { LocalAccountSigner } from "@aa-sdk/core";
  import { generatePrivateKey } from "viem";

  const lightAccountClient = await createMultiOwnerLightAccountAlchemyClient({
    transport: alchemy({ apiKey: "your-api-key" })
    chain: sepolia,
    signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
  });
  ```
</CodeBlocks>

<Tip title="Address calculation">
  For `LightAccount`, the address of the smart account will be calculated as a combination of the version, [the owner, and the salt](https://github.com/alchemyplatform/light-account/blob/v2.0.0/src/LightAccountFactory.sol#L24-L33). You will get the same smart account address each time you supply the same `version` and `owner`. Alternatively, you can supply `salt` if you want a different address for the same `version` and `owner` params (the default salt is `0n`). For `MultiOwnerLightAccount`, the same pattern follows, except that it takes an array of owner addresses instead of a single owner address.

  If you want to use a signer to connect to an account whose address does not map to the contract-generated address, you can supply the `accountAddress` to connect with the account of interest. In that case, the `signer` address is not used for address calculation, but only used for signing the operation.

  Reference: https://eips.ethereum.org/EIPS/eip-4337#first-time-account-creation
</Tip>