diff options
author | Fabio Berger <me@fabioberger.com> | 2018-07-04 22:35:49 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-07-04 22:35:49 +0800 |
commit | 8adc6f0faadb46f88c1f9738b04039d037cfbcb9 (patch) | |
tree | 6ea9d1f9c9506bee42dbbe0543a8c407c6c5d05e /packages/web3-wrapper/src/web3_wrapper.ts | |
parent | 4e783fba57bbd3d389ab52679ca8763bfa03cbf3 (diff) | |
parent | ade620f4f7d9ac1e5726681aefcbddf742915a84 (diff) | |
download | dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar.gz dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar.bz2 dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar.lz dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar.xz dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.tar.zst dexon-sol-tools-8adc6f0faadb46f88c1f9738b04039d037cfbcb9.zip |
merge v2-prototype
Diffstat (limited to 'packages/web3-wrapper/src/web3_wrapper.ts')
-rw-r--r-- | packages/web3-wrapper/src/web3_wrapper.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/web3-wrapper/src/web3_wrapper.ts b/packages/web3-wrapper/src/web3_wrapper.ts index 6ea69883c..b79ade278 100644 --- a/packages/web3-wrapper/src/web3_wrapper.ts +++ b/packages/web3-wrapper/src/web3_wrapper.ts @@ -31,6 +31,12 @@ export const uniqueVersionIds = { ganache: 'EthereumJS TestRPC', }; +// NodeType represents the type of the backing Ethereum node. +export enum NodeType { + Geth = 'GETH', + Ganache = 'GANACHE', +} + /** * A wrapper around the Web3.js 0.x library that provides a consistent, clean promise-based interface. */ @@ -489,6 +495,20 @@ export class Web3Wrapper { public async setHeadAsync(blockNumber: number): Promise<void> { await this._sendRawPayloadAsync<void>({ method: 'debug_setHead', params: [this._web3.toHex(blockNumber)] }); } + /** + * Returns either NodeType.Geth or NodeType.Ganache depending on the type of + * the backing Ethereum node. Throws for any other type of node. + */ + public async getNodeTypeAsync(): Promise<NodeType> { + const version = await this.getNodeVersionAsync(); + if (_.includes(version, uniqueVersionIds.geth)) { + return NodeType.Geth; + } else if (_.includes(version, uniqueVersionIds.ganache)) { + return NodeType.Ganache; + } else { + throw new Error(`Unknown client version: ${version}`); + } + } private async _sendRawPayloadAsync<A>(payload: Partial<JSONRPCRequestPayload>): Promise<A> { const sendAsync = this._web3.currentProvider.sendAsync.bind(this._web3.currentProvider); const payloadWithDefaults = { |