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

# primitives/StorageDiff

> Auto-generated API documentation

[**@tevm/voltaire**](../index.mdx)

***

[@tevm/voltaire](../index.mdx) / primitives/StorageDiff

# primitives/StorageDiff

## Type Aliases

### StorageChange

> **StorageChange** = `object`

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:11](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L11)

Storage slot change for a single account

Tracks before/after values for storage slots.
null indicates slot didn't exist (before) or was deleted (after).

#### Properties

##### from

> `readonly` **from**: [`StorageValueType`](StorageValue.mdx#storagevaluetype) | `null`

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:12](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L12)

##### to

> `readonly` **to**: [`StorageValueType`](StorageValue.mdx#storagevaluetype) | `null`

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:13](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L13)

***

### StorageDiffType

> **StorageDiffType** = `object`

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:32](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L32)

Storage changes for an account during transaction execution

Maps storage slots to their before/after values.
Used for state diff analysis, particularly with debug\_traceTransaction.

#### Example

```typescript theme={null}
const diff: StorageDiffType = {
  address: myAddress,
  changes: new Map([
    [{ address: myAddress, slot: 0n }, { from: oldValue, to: newValue }],
  ]),
};
```

#### Properties

##### address

> `readonly` **address**: [`AddressType`](Address.mdx#addresstype)

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:36](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L36)

Contract address for these storage changes

##### changes

> `readonly` **changes**: `ReadonlyMap`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>

Defined in: [src/primitives/StorageDiff/StorageDiffType.ts:43](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/StorageDiffType.ts#L43)

Map of storage slot changes
Key: StorageKey (address + slot)
Value: Before/after storage values

## Variables

### StorageDiff

> `const` **StorageDiff**: `object`

Defined in: [src/primitives/StorageDiff/index.ts:65](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/index.ts#L65)

#### Type Declaration

##### from()

> **from**: (`address`, `changes`) => [`StorageDiffType`](#storagedifftype) = `_from`

Create StorageDiff from address and changes

###### Parameters

###### address

[`AddressType`](Address.mdx#addresstype)

Contract address

###### changes

Storage changes

`Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)> | \[[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)]\[]

###### Returns

[`StorageDiffType`](#storagedifftype)

StorageDiff

###### Example

```typescript theme={null}
const diff = StorageDiff.from(address, new Map([[key, { from: null, to: value }]]));
const diff2 = StorageDiff.from(address, [[key, { from: oldVal, to: newVal }]]);
```

##### getChange()

> **getChange**: (`diff`, `key`) => [`StorageChange`](#storagechange) | `undefined`

###### Parameters

###### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

###### key

[`StorageKeyType`](State.mdx#storagekeytype)

###### Returns

[`StorageChange`](#storagechange) | `undefined`

##### getKeys()

> **getKeys**: (`diff`) => [`StorageKeyType`](State.mdx#storagekeytype)\[]

###### Parameters

###### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

###### Returns

[`StorageKeyType`](State.mdx#storagekeytype)\[]

##### size()

> **size**: (`diff`) => `number`

###### Parameters

###### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

###### Returns

`number`

## Functions

### \_getChange()

> **\_getChange**(`diff`, `key`): [`StorageChange`](#storagechange) | `undefined`

Defined in: [src/primitives/StorageDiff/getChange.js:16](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/getChange.js#L16)

Get change for a specific storage slot

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype)

Storage diff

##### key

[`StorageKeyType`](State.mdx#storagekeytype)

Storage key to look up

#### Returns

[`StorageChange`](#storagechange) | `undefined`

Storage change or undefined

#### Example

```typescript theme={null}
const change = StorageDiff.getChange(diff, storageKey);
if (change) {
  console.log(`${change.from} -> ${change.to}`);
}
```

***

### \_getKeys()

> **\_getKeys**(`diff`): [`StorageKeyType`](State.mdx#storagekeytype)\[]

Defined in: [src/primitives/StorageDiff/getKeys.js:15](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/getKeys.js#L15)

Get all storage keys that changed

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype)

Storage diff

#### Returns

[`StorageKeyType`](State.mdx#storagekeytype)\[]

Array of storage keys

#### Example

```typescript theme={null}
const keys = StorageDiff.getKeys(diff);
for (const key of keys) {
  console.log(`Slot ${key.slot} changed`);
}
```

***

### \_size()

> **\_size**(`diff`): `number`

Defined in: [src/primitives/StorageDiff/size.js:13](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/size.js#L13)

Get number of storage slots that changed

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype)

Storage diff

#### Returns

`number`

Number of changed slots

#### Example

```typescript theme={null}
const count = StorageDiff.size(diff);
console.log(`${count} storage slots changed`);
```

***

### from()

> **from**(`address`, `changes`): [`StorageDiffType`](#storagedifftype)

Defined in: [src/primitives/StorageDiff/from.js:14](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/from.js#L14)

Create StorageDiff from address and changes

#### Parameters

##### address

[`AddressType`](Address.mdx#addresstype)

Contract address

##### changes

Storage changes

`Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)> | \[[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)]\[]

#### Returns

[`StorageDiffType`](#storagedifftype)

StorageDiff

#### Example

```typescript theme={null}
const diff = StorageDiff.from(address, new Map([[key, { from: null, to: value }]]));
const diff2 = StorageDiff.from(address, [[key, { from: oldVal, to: newVal }]]);
```

***

### getChange()

> **getChange**(`diff`, `key`): [`StorageChange`](#storagechange) | `undefined`

Defined in: [src/primitives/StorageDiff/index.ts:15](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/index.ts#L15)

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

##### key

[`StorageKeyType`](State.mdx#storagekeytype)

#### Returns

[`StorageChange`](#storagechange) | `undefined`

***

### getKeys()

> **getKeys**(`diff`): [`StorageKeyType`](State.mdx#storagekeytype)\[]

Defined in: [src/primitives/StorageDiff/index.ts:31](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/index.ts#L31)

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

#### Returns

[`StorageKeyType`](State.mdx#storagekeytype)\[]

***

### size()

> **size**(`diff`): `number`

Defined in: [src/primitives/StorageDiff/index.ts:46](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/StorageDiff/index.ts#L46)

#### Parameters

##### diff

[`StorageDiffType`](#storagedifftype) | \[[`AddressType`](Address.mdx#addresstype), `Map`\<[`StorageKeyType`](State.mdx#storagekeytype), [`StorageChange`](#storagechange)>]

#### Returns

`number`
