Skip to content
This repository has been archived by the owner on Jun 17, 2021. It is now read-only.

Add Account class #275

Merged
merged 11 commits into from
Oct 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,36 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)

## [7.0.6] - [UNRELEASED]

[ ADD REFERENCES TO YOUR WORK HERE UPON PRs. PLEASE ADOPT THE VERSION IF YOUR PR REQUIRES. ]
### New `Account` class

This release adds a new `Account` class intended as a modern replacement for `ethereumjs-account`. It has a shape of `Account(nonce?: BN, balance?: BN, stateRoot?: Buffer, codeHash?: Buffer)`.

**Instantiation**

The static factory methods assist in creating an `Account` object from varying data types: `Object: fromAccountData`, `RLP: fromRlpSerializedAccount`, and `Array: fromValuesArray`.

**Methods**: `isEmpty(): boolean`, `isContract(): boolean`, `serialize(): Buffer`

Example usage:

```typescript
import { Account, BN } from 'ethereumjs-util'

const account = new Account(
new BN(0), // nonce, default: 0
new BN(10).pow(new BN(18)), // balance, default: 0
undefined, // stateRoot, default: KECCAK256_RLP (hash of RLP of null)
undefined, // codeHash, default: KECCAK256_NULL (hash of null)
)
```

For more info see the documentation or examples of usage in `test/account.spec.ts`.

### New export: TypeScript types

A new file with helpful TypeScript types has been added to the exports of this project.

In this release it contains `BNLike`, `BufferLike`, and `TransformableToBuffer`.

## [7.0.5] - 2020-09-09

Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ assert.equal(new BN('dead', 16).add(new BN('101010', 2)), 57047)
### Modules

- [account](docs/modules/_account_.md)
- Account class
- Private/public key and address-related functionality (creation, validation, conversion)
- [address](docs/modules/_address_.md)
- Address class and type
Expand All @@ -46,6 +47,8 @@ assert.equal(new BN('dead', 16).add(new BN('101010', 2)), 57047)
- Helper function for creating a binary object (`DEPRECATED`)
- [signature](docs/modules/_signature_.md)
- Signing, signature validation, conversion, recovery
- [types](docs/modules/_types_.md)
- Helpful TypeScript types
- [externals](docs/modules/_externals_.md)
- Helper methods from `ethjs-util`
- Re-exports of `BN`, `rlp`
Expand Down
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

### Modules

* ["@types/ethjs-util/index"](modules/__types_ethjs_util_index_.md)
Copy link
Contributor Author

@ryanio ryanio Sep 25, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't find a way to ignore this file in typedoc without getting the error Could not find a declaration file for module 'ethjs-util'., so I guess there is no harm in having it for now, although I wish the file was filled with the type info rather than just being empty 😅

The library mode in typedoc is pretty new and works quite well for our purposes, so perhaps it will be fixed or improved in the future:

Warning: File ./src/@types/ethjs-util/index.ts is not a module and cannot be converted in library mode

* ["account"](modules/_account_.md)
* ["address"](modules/_address_.md)
* ["bytes"](modules/_bytes_.md)
Expand All @@ -15,3 +16,4 @@
* ["helpers"](modules/_helpers_.md)
* ["object"](modules/_object_.md)
* ["signature"](modules/_signature_.md)
* ["types"](modules/_types_.md)
167 changes: 167 additions & 0 deletions docs/classes/_account_.account.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
[ethereumjs-util](../README.md) › ["account"](../modules/_account_.md) › [Account](_account_.account.md)

# Class: Account

## Hierarchy

* **Account**

## Index

### Constructors

* [constructor](_account_.account.md#constructor)

### Properties

* [balance](_account_.account.md#balance)
* [codeHash](_account_.account.md#codehash)
* [nonce](_account_.account.md#nonce)
* [stateRoot](_account_.account.md#stateroot)

### Methods

* [isContract](_account_.account.md#iscontract)
* [isEmpty](_account_.account.md#isempty)
* [serialize](_account_.account.md#serialize)
* [fromAccountData](_account_.account.md#static-fromaccountdata)
* [fromRlpSerializedAccount](_account_.account.md#static-fromrlpserializedaccount)
* [fromValuesArray](_account_.account.md#static-fromvaluesarray)

## Constructors

### constructor

\+ **new Account**(`nonce`: BN‹›, `balance`: BN‹›, `stateRoot`: Buffer‹›, `codeHash`: Buffer‹›): *[Account](_account_.account.md)*

*Defined in [account.ts:61](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L61)*

This constructor takes the values, validates and assigns them.
Use the static factory methods to assist in creating an Account from varying data types.

**Parameters:**

Name | Type | Default |
------ | ------ | ------ |
`nonce` | BN‹› | new BN(0) |
`balance` | BN‹› | new BN(0) |
`stateRoot` | Buffer‹› | KECCAK256_RLP |
`codeHash` | Buffer‹› | KECCAK256_NULL |

**Returns:** *[Account](_account_.account.md)*

## Properties

### balance

• **balance**: *BN*

*Defined in [account.ts:27](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L27)*

___

### codeHash

• **codeHash**: *Buffer*

*Defined in [account.ts:29](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L29)*

___

### nonce

• **nonce**: *BN*

*Defined in [account.ts:26](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L26)*

___

### stateRoot

• **stateRoot**: *Buffer*

*Defined in [account.ts:28](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L28)*

## Methods

### isContract

▸ **isContract**(): *boolean*

*Defined in [account.ts:96](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L96)*

Returns a `Boolean` deteremining if the account is a contract.

**Returns:** *boolean*

___

### isEmpty

▸ **isEmpty**(): *boolean*

*Defined in [account.ts:103](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L103)*

Returns a `Boolean` determining if the account is empty.

**Returns:** *boolean*

___

### serialize

▸ **serialize**(): *Buffer*

*Defined in [account.ts:89](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L89)*

Returns the RLP serialization of the account as a `Buffer`.

**Returns:** *Buffer*

___

### `Static` fromAccountData

▸ **fromAccountData**(`accountData`: [AccountData](../interfaces/_account_.accountdata.md)): *[Account](_account_.account.md)‹›*

*Defined in [account.ts:31](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L31)*

**Parameters:**

Name | Type |
------ | ------ |
`accountData` | [AccountData](../interfaces/_account_.accountdata.md) |

**Returns:** *[Account](_account_.account.md)‹›*

___

### `Static` fromRlpSerializedAccount

▸ **fromRlpSerializedAccount**(`serialized`: Buffer): *[Account](_account_.account.md)‹›*

*Defined in [account.ts:42](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L42)*

**Parameters:**

Name | Type |
------ | ------ |
`serialized` | Buffer |

**Returns:** *[Account](_account_.account.md)‹›*

___

### `Static` fromValuesArray

▸ **fromValuesArray**(`values`: Buffer[]): *[Account](_account_.account.md)‹›*

*Defined in [account.ts:52](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L52)*

**Parameters:**

Name | Type |
------ | ------ |
`values` | Buffer[] |

**Returns:** *[Account](_account_.account.md)‹›*
48 changes: 48 additions & 0 deletions docs/interfaces/_account_.accountdata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
[ethereumjs-util](../README.md) › ["account"](../modules/_account_.md) › [AccountData](_account_.accountdata.md)

# Interface: AccountData

## Hierarchy

* **AccountData**

## Index

### Properties

* [balance](_account_.accountdata.md#optional-balance)
* [codeHash](_account_.accountdata.md#optional-codehash)
* [nonce](_account_.accountdata.md#optional-nonce)
* [stateRoot](_account_.accountdata.md#optional-stateroot)

## Properties

### `Optional` balance

• **balance**? : *[BNLike](../modules/_types_.md#bnlike)*

*Defined in [account.ts:20](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L20)*

___

### `Optional` codeHash

• **codeHash**? : *[BufferLike](../modules/_types_.md#bufferlike)*

*Defined in [account.ts:22](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L22)*

___

### `Optional` nonce

• **nonce**? : *[BNLike](../modules/_types_.md#bnlike)*

*Defined in [account.ts:19](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L19)*

___

### `Optional` stateRoot

• **stateRoot**? : *[BufferLike](../modules/_types_.md#bufferlike)*

*Defined in [account.ts:21](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/account.ts#L21)*
23 changes: 23 additions & 0 deletions docs/interfaces/_types_.transformabletobuffer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[ethereumjs-util](../README.md) › ["types"](../modules/_types_.md) › [TransformableToBuffer](_types_.transformabletobuffer.md)

# Interface: TransformableToBuffer

## Hierarchy

* **TransformableToBuffer**

## Index

### Methods

* [toBuffer](_types_.transformabletobuffer.md#tobuffer)

## Methods

### toBuffer

▸ **toBuffer**(): *Buffer*

*Defined in [types.ts:10](https://github.com/ethereumjs/ethereumjs-util/blob/master/src/types.ts#L10)*

**Returns:** *Buffer*
5 changes: 5 additions & 0 deletions docs/modules/__types_ethjs_util_index_.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[ethereumjs-util](../README.md) › ["@types/ethjs-util/index"](__types_ethjs_util_index_.md)

# Module: "@types/ethjs-util/index"


Loading