From 89b76cd41010688cbe1d9bdc7ca4436775cc2b26 Mon Sep 17 00:00:00 2001 From: Jaab Date: Mon, 26 Aug 2019 12:28:24 +0700 Subject: [PATCH 1/2] Accept private key or address instead --- src/loom-provider.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/loom-provider.ts b/src/loom-provider.ts index fd8c764f..104f8d4e 100644 --- a/src/loom-provider.ts +++ b/src/loom-provider.ts @@ -35,6 +35,7 @@ import { import { soliditySha3 } from './solidity-helpers' import { marshalBigUIntPB } from './big-uint' import { SignedEthTxMiddleware } from './middleware' +import { CryptoUtils } from '.' export interface IEthReceipt { transactionHash: string @@ -147,7 +148,7 @@ export class LoomProvider { */ constructor( client: Client, - privateKey: Uint8Array, + privateKeyOrAddress: Uint8Array | Address, setupMiddlewaresFunction?: SetupMiddlewareFunction ) { this._client = client @@ -157,12 +158,21 @@ export class LoomProvider { this._ethRPCMethods = new Map() this.notificationCallbacks = new Array() this.accounts = new Map() + let privateKey: Uint8Array // Only subscribe for event emitter do not call subevents this._client.addListener(ClientEvent.EVMEvent, (msg: IChainEventArgs) => this._onWebSocketMessage(msg) ) + if (privateKeyOrAddress instanceof Uint8Array) { + privateKey = privateKeyOrAddress + } else { + privateKey = CryptoUtils.generatePrivateKey() + this.setMiddlewaresForAddress(privateKeyOrAddress.local.toString(), client.txMiddleware) + this.callerChainId = privateKeyOrAddress.chainId + } + if (!this._setupMiddlewares) { this._setupMiddlewares = (client: Client, privateKey: Uint8Array) => { return createDefaultTxMiddleware(client, privateKey as Uint8Array) From ff382f6f8e7275ba0a463d05bf53b15c0900b322 Mon Sep 17 00:00:00 2001 From: Jaab Date: Wed, 28 Aug 2019 16:32:42 +0700 Subject: [PATCH 2/2] edit condition --- src/loom-provider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/loom-provider.ts b/src/loom-provider.ts index 104f8d4e..4b1341ef 100644 --- a/src/loom-provider.ts +++ b/src/loom-provider.ts @@ -165,12 +165,12 @@ export class LoomProvider { this._onWebSocketMessage(msg) ) - if (privateKeyOrAddress instanceof Uint8Array) { - privateKey = privateKeyOrAddress - } else { + if ('chainId' in privateKeyOrAddress) { privateKey = CryptoUtils.generatePrivateKey() this.setMiddlewaresForAddress(privateKeyOrAddress.local.toString(), client.txMiddleware) this.callerChainId = privateKeyOrAddress.chainId + } else { + privateKey = privateKeyOrAddress } if (!this._setupMiddlewares) {