Skip to content

Commit 0d6ccfc

Browse files
authored
Promisify public API (ethereumjs#546)
* Promisify public API Regenerate docs Rm mistakenly pushed wasm file * Regenerate docs * Return promise in runBlockchain
1 parent e13503b commit 0d6ccfc

32 files changed

+362
-546
lines changed

docs/README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@
1717

1818
* [ExecResult](interfaces/execresult.md)
1919
* [InterpreterResult](interfaces/interpreterresult.md)
20-
* [RunBlockCb](interfaces/runblockcb.md)
2120
* [RunBlockOpts](interfaces/runblockopts.md)
2221
* [RunBlockResult](interfaces/runblockresult.md)
23-
* [RunCallCb](interfaces/runcallcb.md)
2422
* [RunCallOpts](interfaces/runcallopts.md)
25-
* [RunCodeCb](interfaces/runcodecb.md)
2623
* [RunCodeOpts](interfaces/runcodeopts.md)
27-
* [RunTxCb](interfaces/runtxcb.md)
2824
* [RunTxOpts](interfaces/runtxopts.md)
2925
* [RunTxResult](interfaces/runtxresult.md)
3026
* [StorageDump](interfaces/storagedump.md)

docs/classes/statemanager.md

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Interface for getting and setting data from an underlying state trie.
1919
* [_cache](statemanager.md#_cache)
2020
* [_checkpointCount](statemanager.md#_checkpointcount)
2121
* [_common](statemanager.md#_common)
22+
* [_originalStorageCache](statemanager.md#_originalstoragecache)
2223
* [_storageTries](statemanager.md#_storagetries)
2324
* [_touched](statemanager.md#_touched)
2425
* [_touchedStack](statemanager.md#_touchedstack)
@@ -41,6 +42,7 @@ Interface for getting and setting data from an underlying state trie.
4142
* [getAccount](statemanager.md#getaccount)
4243
* [getContractCode](statemanager.md#getcontractcode)
4344
* [getContractStorage](statemanager.md#getcontractstorage)
45+
* [getOriginalContractStorage](statemanager.md#getoriginalcontractstorage)
4446
* [getStateRoot](statemanager.md#getstateroot)
4547
* [hasGenesisState](statemanager.md#hasgenesisstate)
4648
* [putAccount](statemanager.md#putaccount)
@@ -59,7 +61,7 @@ Interface for getting and setting data from an underlying state trie.
5961

6062
**new StateManager**(opts?: *`any`*): [StateManager](statemanager.md)
6163

62-
*Defined in [state/stateManager.ts:30](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L30)*
64+
*Defined in [state/stateManager.ts:31](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L31)*
6365

6466
Instantiate the StateManager interface.
6567

@@ -81,7 +83,7 @@ ___
8183

8284
**_cache**: *`Cache`*
8385

84-
*Defined in [state/stateManager.ts:27](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L27)*
86+
*Defined in [state/stateManager.ts:27](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L27)*
8587

8688
___
8789
<a id="_checkpointcount"></a>
@@ -90,7 +92,7 @@ ___
9092

9193
**_checkpointCount**: *`number`*
9294

93-
*Defined in [state/stateManager.ts:30](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L30)*
95+
*Defined in [state/stateManager.ts:30](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L30)*
9496

9597
___
9698
<a id="_common"></a>
@@ -99,7 +101,16 @@ ___
99101

100102
**_common**: *`Common`*
101103

102-
*Defined in [state/stateManager.ts:24](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L24)*
104+
*Defined in [state/stateManager.ts:24](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L24)*
105+
106+
___
107+
<a id="_originalstoragecache"></a>
108+
109+
### _originalStorageCache
110+
111+
**_originalStorageCache**: *`Map`<`string`, `Map`<`string`, `Buffer`>>*
112+
113+
*Defined in [state/stateManager.ts:31](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L31)*
103114

104115
___
105116
<a id="_storagetries"></a>
@@ -108,7 +119,7 @@ ___
108119

109120
**_storageTries**: *`any`*
110121

111-
*Defined in [state/stateManager.ts:26](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L26)*
122+
*Defined in [state/stateManager.ts:26](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L26)*
112123

113124
___
114125
<a id="_touched"></a>
@@ -117,7 +128,7 @@ ___
117128

118129
**_touched**: *`Set`<`string`>*
119130

120-
*Defined in [state/stateManager.ts:28](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L28)*
131+
*Defined in [state/stateManager.ts:28](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L28)*
121132

122133
___
123134
<a id="_touchedstack"></a>
@@ -126,7 +137,7 @@ ___
126137

127138
**_touchedStack**: *`Set`<`string`>[]*
128139

129-
*Defined in [state/stateManager.ts:29](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L29)*
140+
*Defined in [state/stateManager.ts:29](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L29)*
130141

131142
___
132143
<a id="_trie"></a>
@@ -135,7 +146,7 @@ ___
135146

136147
**_trie**: *`any`*
137148

138-
*Defined in [state/stateManager.ts:25](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L25)*
149+
*Defined in [state/stateManager.ts:25](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L25)*
139150

140151
___
141152

@@ -147,7 +158,7 @@ ___
147158

148159
**_getStorageTrie**(address: *`Buffer`*, cb: *`any`*): `void`
149160

150-
*Defined in [state/stateManager.ts:182](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L182)*
161+
*Defined in [state/stateManager.ts:184](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L184)*
151162

152163
Gets the storage trie for an account from the storage cache or does a lookup
153164

@@ -171,7 +182,7 @@ ___
171182

172183
**_lookupStorageTrie**(address: *`Buffer`*, cb: *`any`*): `void`
173184

174-
*Defined in [state/stateManager.ts:160](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L160)*
185+
*Defined in [state/stateManager.ts:162](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L162)*
175186

176187
Creates a storage trie from the primary storage trie for an account and saves this in the storage cache.
177188

@@ -195,7 +206,7 @@ ___
195206

196207
**_modifyContractStorage**(address: *`Buffer`*, modifyTrie: *`any`*, cb: *`any`*): `void`
197208

198-
*Defined in [state/stateManager.ts:232](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L232)*
209+
*Defined in [state/stateManager.ts:266](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L266)*
199210

200211
Modifies the storage trie of an account
201212

@@ -220,7 +231,7 @@ ___
220231

221232
**accountIsEmpty**(address: *`Buffer`*, cb: *`any`*): `void`
222233

223-
*Defined in [state/stateManager.ts:538](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L538)*
234+
*Defined in [state/stateManager.ts:572](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L572)*
224235

225236
Checks if the `account` corresponding to `address` is empty as defined in EIP-161 ([https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md))
226237

@@ -244,7 +255,7 @@ ___
244255

245256
**checkpoint**(cb: *`any`*): `void`
246257

247-
*Defined in [state/stateManager.ts:304](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L304)*
258+
*Defined in [state/stateManager.ts:338](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L338)*
248259

249260
Checkpoints the current state of the StateManager instance. State changes that follow can then be committed by calling `commit` or `reverted` by calling rollback.
250261

@@ -267,7 +278,7 @@ ___
267278

268279
**cleanupTouchedAccounts**(cb: *`any`*): `void`
269280

270-
*Defined in [state/stateManager.ts:561](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L561)*
281+
*Defined in [state/stateManager.ts:595](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L595)*
271282

272283
Removes accounts form the state trie that have been touched, as defined in EIP-161 ([https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md)](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md)).
273284

@@ -290,7 +301,7 @@ ___
290301

291302
**clearContractStorage**(address: *`Buffer`*, cb: *`any`*): `void`
292303

293-
*Defined in [state/stateManager.ts:285](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L285)*
304+
*Defined in [state/stateManager.ts:319](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L319)*
294305

295306
Clears all storage entries for the account corresponding to `address`
296307

@@ -314,7 +325,7 @@ ___
314325

315326
**commit**(cb: *`any`*): `void`
316327

317-
*Defined in [state/stateManager.ts:319](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L319)*
328+
*Defined in [state/stateManager.ts:353](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L353)*
318329

319330
Commits the current change-set to the instance since the last call to checkpoint.
320331

@@ -337,7 +348,7 @@ ___
337348

338349
**copy**(): [StateManager](statemanager.md)
339350

340-
*Defined in [state/stateManager.ts:60](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L60)*
351+
*Defined in [state/stateManager.ts:62](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L62)*
341352

342353
Copies the current instance of the `DefaultStateManager` at the last fully committed point, i.e. as if all current checkpoints were reverted
343354

@@ -354,7 +365,7 @@ ___
354365

355366
**dumpStorage**(address: *`Buffer`*, cb: *`any`*): `void`
356367

357-
*Defined in [state/stateManager.ts:440](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L440)*
368+
*Defined in [state/stateManager.ts:474](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L474)*
358369

359370
Dumps the the storage values for an `account` specified by `address`
360371

@@ -378,7 +389,7 @@ ___
378389

379390
**generateCanonicalGenesis**(cb: *`any`*): `void`
380391

381-
*Defined in [state/stateManager.ts:484](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L484)*
392+
*Defined in [state/stateManager.ts:518](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L518)*
382393

383394
Generates a canonical genesis state on the instance based on the configured chain parameters. Will error if there are uncommitted checkpoints on the instance.
384395

@@ -401,7 +412,7 @@ ___
401412

402413
**generateGenesis**(initState: *`any`*, cb: *`any`*): `any`
403414

404-
*Defined in [state/stateManager.ts:505](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L505)*
415+
*Defined in [state/stateManager.ts:539](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L539)*
405416

406417
Initializes the provided genesis state into the state trie
407418

@@ -425,7 +436,7 @@ ___
425436

426437
**getAccount**(address: *`Buffer`*, cb: *`any`*): `void`
427438

428-
*Defined in [state/stateManager.ts:80](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L80)*
439+
*Defined in [state/stateManager.ts:82](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L82)*
429440

430441
Gets the [`ethereumjs-account`](https://github.com/ethereumjs/ethereumjs-account) associated with `address`. Returns an empty account if the account does not exist.
431442

@@ -449,7 +460,7 @@ ___
449460

450461
**getContractCode**(address: *`Buffer`*, cb: *`any`*): `void`
451462

452-
*Defined in [state/stateManager.ts:142](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L142)*
463+
*Defined in [state/stateManager.ts:144](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L144)*
453464

454465
Gets the code corresponding to the provided `address`
455466

@@ -473,7 +484,7 @@ ___
473484

474485
**getContractStorage**(address: *`Buffer`*, key: *`Buffer`*, cb: *`any`*): `void`
475486

476-
*Defined in [state/stateManager.ts:209](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L209)*
487+
*Defined in [state/stateManager.ts:211](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L211)*
477488

478489
Gets the storage value associated with the provided `address` and `key`
479490

@@ -491,14 +502,35 @@ Gets the storage value associated with the provided `address` and `key`
491502

492503
**Returns:** `void`
493504

505+
___
506+
<a id="getoriginalcontractstorage"></a>
507+
508+
### getOriginalContractStorage
509+
510+
**getOriginalContractStorage**(address: *`Buffer`*, key: *`Buffer`*, cb: *`any`*): `void`
511+
512+
*Defined in [state/stateManager.ts:234](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L234)*
513+
514+
Caches the storage value associated with the provided `address` and `key` on first invocation, and returns the cached (original) value from then onwards. This is used to get the original value of a storage slot for computing gas costs according to EIP-1283.
515+
516+
**Parameters:**
517+
518+
| Name | Type | Description |
519+
| ------ | ------ | ------ |
520+
| address | `Buffer` | Address of the account to get the storage for |
521+
| key | `Buffer` | Key in the account's storage to get the value for |
522+
| cb | `any` |
523+
524+
**Returns:** `void`
525+
494526
___
495527
<a id="getstateroot"></a>
496528

497529
### getStateRoot
498530

499531
**getStateRoot**(cb: *`any`*): `void`
500532

501-
*Defined in [state/stateManager.ts:372](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L372)*
533+
*Defined in [state/stateManager.ts:406](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L406)*
502534

503535
Gets the state-root of the Merkle-Patricia trie representation of the state of this StateManager. Will error if there are uncommitted checkpoints on the instance.
504536

@@ -521,7 +553,7 @@ ___
521553

522554
**hasGenesisState**(cb: *`any`*): `void`
523555

524-
*Defined in [state/stateManager.ts:471](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L471)*
556+
*Defined in [state/stateManager.ts:505](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L505)*
525557

526558
Checks whether the current instance has the canonical genesis state for the configured chain parameters.
527559

@@ -544,7 +576,7 @@ ___
544576

545577
**putAccount**(address: *`Buffer`*, account: *`Account`*, cb: *`any`*): `void`
546578

547-
*Defined in [state/stateManager.ts:93](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L93)*
579+
*Defined in [state/stateManager.ts:95](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L95)*
548580

549581
Saves an [`ethereumjs-account`](https://github.com/ethereumjs/ethereumjs-account) into state under the provided `address`
550582

@@ -569,7 +601,7 @@ ___
569601

570602
**putContractCode**(address: *`Buffer`*, value: *`Buffer`*, cb: *`any`*): `void`
571603

572-
*Defined in [state/stateManager.ts:112](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L112)*
604+
*Defined in [state/stateManager.ts:114](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L114)*
573605

574606
Adds `value` to the state trie as code, and sets `codeHash` on the account corresponding to `address` to reference this.
575607

@@ -594,7 +626,7 @@ ___
594626

595627
**putContractStorage**(address: *`Buffer`*, key: *`Buffer`*, value: *`Buffer`*, cb: *`any`*): `void`
596628

597-
*Defined in [state/stateManager.ts:261](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L261)*
629+
*Defined in [state/stateManager.ts:295](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L295)*
598630

599631
Adds value to the state trie for the `account` corresponding to `address` at the provided `key`
600632

@@ -620,7 +652,7 @@ ___
620652

621653
**revert**(cb: *`any`*): `void`
622654

623-
*Defined in [state/stateManager.ts:339](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L339)*
655+
*Defined in [state/stateManager.ts:373](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L373)*
624656

625657
Reverts the current change-set to the instance since the last call to checkpoint.
626658

@@ -643,7 +675,7 @@ ___
643675

644676
**setStateRoot**(stateRoot: *`Buffer`*, cb: *`any`*): `void`
645677

646-
*Defined in [state/stateManager.ts:396](https://github.com/ethereumjs/ethereumjs-vm/blob/de4d574/lib/state/stateManager.ts#L396)*
678+
*Defined in [state/stateManager.ts:430](https://github.com/ethereumjs/ethereumjs-vm/blob/2fcfe31/lib/state/stateManager.ts#L430)*
647679

648680
Sets the state of the instance to that represented by the provided `stateRoot`. Will error if there are uncommitted checkpoints on the instance or if the state root does not exist in the state trie.
649681

0 commit comments

Comments
 (0)