From 207b92e2069a5f1bcc01c55ba49cd970248be16a Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Sun, 19 Jan 2020 10:41:23 -0800 Subject: [PATCH 1/6] export chain plug-in types --- src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/index.ts b/src/index.ts index 73472268..9ee54acb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,10 @@ import * as crypto from './crypto' import { ChainFactory } from './chainFactory' import { Account, Chain, CreateAccount, Transaction } from './interfaces' +import * as EosV18 from './chains/eos_1_8' import { ChainEosV18 } from './chains/eos_1_8/ChainEosV18' import { ChainEthereumV1 } from './chains/ethereum_1/ChainEthereumV1' +import * as Ethereum10 from './chains/ethereum_1' import * as Models from './models' import * as ModelsEos from './chains/eos_1_8/models' import * as ModelsEthereum from './chains/ethereum_1/models' @@ -18,6 +20,8 @@ export { ChainType, CreateAccount, crypto, + EosV18, + Ethereum10, Models, ModelsEos, ModelsEthereum, From 50339725db57a19c8346967062035e84b49d7011 Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Sun, 19 Jan 2020 10:43:30 -0800 Subject: [PATCH 2/6] rename ...NewKeysOptions rename newKeysPassword, newKeysSalt add skipExistingPermissions option --- src/chains/eos_1_8/eosAccount.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/chains/eos_1_8/eosAccount.ts b/src/chains/eos_1_8/eosAccount.ts index 7276d4ab..612d7bc5 100644 --- a/src/chains/eos_1_8/eosAccount.ts +++ b/src/chains/eos_1_8/eosAccount.ts @@ -5,7 +5,7 @@ import { EosPermissionSimplified, EosActionStruct, EosPublicKey, - EosGenerateMissingKeysParams, + EosNewKeysOptions, EosGeneratedPermissionKeys, EosGeneratedKeys, } from './models' @@ -129,11 +129,11 @@ export class EosAccount implements Account { /** Both new password and salt must be provided if any permissions are missing public keys */ private assertValidOptionNewKeys = ( permissionsToAdd: Partial[], - generateMissingKeysParams?: EosGenerateMissingKeysParams, + newKeysOptions?: EosNewKeysOptions, ) => { const isAnyPublicKeyMissing = permissionsToAdd.some(p => isNullOrEmpty(p.publicKey)) - const { newKeysPassword, newKeysSalt } = generateMissingKeysParams || {} - if (isAnyPublicKeyMissing && (isNullOrEmpty(newKeysPassword) || isNullOrEmpty(newKeysSalt))) { + const { password, salt } = newKeysOptions || {} + if (isAnyPublicKeyMissing && (isNullOrEmpty(password) || isNullOrEmpty(salt))) { throwNewError('Invalid Option - You must provide either public keys or a password AND salt to generate new keys') } } @@ -144,20 +144,22 @@ export class EosAccount implements Account { async composeAddPermissionsActions( authPermission: EosEntityName, permissionsToUpdate: Partial[], - generateMissingKeysParams?: EosGenerateMissingKeysParams, + newKeysOptions?: EosNewKeysOptions, + /** don't return an action for a permission that is already on the account with the same parent and publicKey */ + skipExistingPermissions: boolean = true, ): Promise<{ generatedKeys: EosGeneratedPermissionKeys[]; actions: EosActionStruct[] }> { + let usePermissionsToUpdate = permissionsToUpdate // Add permissions to current account structure - this.assertValidOptionNewKeys(permissionsToUpdate, generateMissingKeysParams) + this.assertValidOptionNewKeys(permissionsToUpdate, newKeysOptions) // filter out permissions already on this account - const filteredPermissions = permissionsToUpdate.filter( - pu => !this.permissions.some(p => p.name === pu.name && p.parent === pu.parent && p.publicKey === pu.publicKey), - ) + if (skipExistingPermissions) { + usePermissionsToUpdate = permissionsToUpdate.filter( + pu => !this.permissions.some(p => p.name === pu.name && p.parent === pu.parent && p.publicKey === pu.publicKey), + ) + } // generate new keys for each new permission if needed const { generatedKeys, permissionsToAdd: usePermissionsToAdd } = - (await PermissionsHelper.generateMissingKeysForPermissionsToAdd( - filteredPermissions, - generateMissingKeysParams, - )) || {} + (await PermissionsHelper.generateMissingKeysForPermissionsToAdd(usePermissionsToUpdate, newKeysOptions)) || {} const actions = this._permHelper.composeAddPermissionActions(this.name, authPermission, usePermissionsToAdd) return { generatedKeys, actions } } From fd2ff49a8e0498cd1607a89d4d88b61dd931ae68 Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Sun, 19 Jan 2020 10:43:56 -0800 Subject: [PATCH 3/6] add appendKey... option --- src/chains/eos_1_8/eosPermissionsHelper.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/chains/eos_1_8/eosPermissionsHelper.ts b/src/chains/eos_1_8/eosPermissionsHelper.ts index e227ba24..88e613fe 100644 --- a/src/chains/eos_1_8/eosPermissionsHelper.ts +++ b/src/chains/eos_1_8/eosPermissionsHelper.ts @@ -5,7 +5,7 @@ import { EosPublicKey, EosActionStruct, EosPermissionSimplified, - EosGenerateMissingKeysParams, + EosNewKeysOptions, EosGeneratedPermissionKeys, } from './models' import { EosChainState } from './eosChainState' @@ -81,6 +81,7 @@ export class PermissionsHelper { authAccount: EosEntityName, authPermission: EosEntityName, permissionsToAdd: Partial[] | EosPermissionStruct[] = [], + appendKeyToExistingPermission: boolean = false ): EosActionStruct[] { const updateAuthActions: EosActionStruct[] = [] let usePermissionsToAdd = permissionsToAdd @@ -93,6 +94,7 @@ export class PermissionsHelper { usePermissionsToAdd = permissionsToAdd as EosPermissionSimplified[] const newPermissions: EosPermissionStruct[] = [] + // TODO: if appendKeyToExistingPermission = true, add the new key to the existing permission's require_auth array // collect an array of new permission objects usePermissionsToAdd.forEach(p => { const permissionToAdd = this.composePermission( @@ -258,10 +260,10 @@ export class PermissionsHelper { /** generate a keypair for any new permissions missing a public key */ static generateMissingKeysForPermissionsToAdd = async ( permissionsToAdd: Partial[], - params: EosGenerateMissingKeysParams, + newKeysOptions: EosNewKeysOptions, ) => { const generatedKeys: EosGeneratedPermissionKeys[] = [] - const { newKeysPassword, newKeysSalt } = params || {} + const { password, salt } = newKeysOptions || {} if (isNullOrEmpty(permissionsToAdd)) { return null @@ -271,7 +273,7 @@ export class PermissionsHelper { const keysToFix = permissionsToAdd.map(async p => { if (!p.publicKey) { const updatedPerm = p - const keys = await generateKeyPairAndEncryptPrivateKeys(newKeysPassword, newKeysSalt) + const keys = await generateKeyPairAndEncryptPrivateKeys(password, salt) updatedPerm.publicKey = keys.public updatedPerm.publicKeyWeight = 1 generatedKeys.push({ permissionName: updatedPerm.name, keyPair: keys }) From bedeff5250696a20e0fc1aed84a927c800269fb6 Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Sun, 19 Jan 2020 10:44:45 -0800 Subject: [PATCH 4/6] rename ...NewKeysOptions rename newKeysPassword, newKeysSalt --- examples/account.ts | 52 +++++++++++-------- src/chains/eos_1_8/eosCreateAccount.ts | 26 +++++----- src/chains/eos_1_8/models/accountModels.ts | 11 ++-- src/chains/eos_1_8/models/generalModels.ts | 6 +-- src/chains/ethereum_1/models/accountModels.ts | 4 +- src/interfaces/createAccount.ts | 6 +-- src/models/generalModels.ts | 2 +- 7 files changed, 55 insertions(+), 52 deletions(-) diff --git a/examples/account.ts b/examples/account.ts index f9cb0c8e..299cbc4c 100644 --- a/examples/account.ts +++ b/examples/account.ts @@ -3,8 +3,8 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable no-console */ import { Chain, ChainFactory, ChainType } from '../src/index' -import { ChainEndpoint, ChainSettings, AccountType } from '../src/models' -import { EosPrivateKey, EosAccountType, EosActionStruct } from '../src/chains/eos_1_8/models' +import { ChainEndpoint, ChainSettings, NewAccountType } from '../src/models' +import { EosPrivateKey, EosNewAccountType, EosActionStruct } from '../src/chains/eos_1_8/models' import { EosAccount } from '../src/chains/eos_1_8/eosAccount' import { ChainEosV18 } from '../src/chains/eos_1_8/ChainEosV18' import { DeletePermissionsParams, LinkPermissionsParams } from '../src/chains/eos_1_8/eosPermissionsHelper' @@ -65,8 +65,8 @@ export const createAccountOptions_createBridge = { creatorAccountName: toEosEntityName('oreidfunding'), creatorPermission: toEosEntityName('active'), newKeysOptions: { - newKeysPassword: '2233', - newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin + password: '2233', + salt: env.EOS_KYLIN_PK_SALT_V0, // kylin }, createEscrowOptions: { contractName: toEosEntityName('createbridge'), @@ -83,8 +83,8 @@ export const createAccountOptions_OreNative = { owner: 'EOS7rNR9AhgcqkmMAoUSHrjTXgxM4PnpGYDXhS3B4UW3jjZgBATXL', }, newKeysOptions: { - newKeysPassword: '2233', - newKeysSalt: env.$ORE_TESTNET_PK_SALT_V0, // ore staging + password: '2233', + salt: env.$ORE_TESTNET_PK_SALT_V0, // ore staging }, } @@ -94,8 +94,8 @@ export const createAccountOptions_virtualNested = { creatorAccountName: 'moonlightore', creatorPermission: 'active', newKeysOptions: { - newKeysPassword: '2233', - newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin + password: '2233', + salt: env.EOS_KYLIN_PK_SALT_V0, // kylin }, createEscrowOptions: { contractName: 'createbridge', @@ -123,8 +123,8 @@ export const createAccountOptions_EosNative = { creatorAccountName: 'proppropprop', creatorPermission: 'active', newKeysOptions: { - newKeysPassword: '2233', - newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin + password: '2233', + salt: env.EOS_KYLIN_PK_SALT_V0, // kylin }, publicKeys: { owner: 'EOS5TjGeH12cqxKrXExiQohiVZo8utowncv7Qg4FbFUhbwVNgUbKs', @@ -145,8 +145,8 @@ export const createAccountOptions_OreRecycleNative = { creatorAccountName: 'ore1qadesjxm', creatorPermission: 'owner', newKeysOptions: { - newKeysPassword: '2233', - newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin + password: '2233', + salt: env.EOS_KYLIN_PK_SALT_V0, // kylin }, } @@ -159,8 +159,8 @@ export const resetPermissions = [ ] export const permissionNewKeysOptions = { - newKeysPassword: '2233', - newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin + password: '2233', + salt: env.EOS_KYLIN_PK_SALT_V0, // kylin } export const accountNewPermissions = [ @@ -220,46 +220,52 @@ export const accountLinkPermissions: LinkPermissionsParams[] = [ // -----> CreateAccount - createbridge // const createAccount = kylin.new.createAccount() - // await createAccount.composeTransaction(EosAccountType.CreateEscrow, createAccountOptions_createBridge) + // await createAccount.composeTransaction(EosNewAccountType.CreateEscrow, createAccountOptions_createBridge) // await prepTransaction(kylin, createAccount.transaction, env.EOS_KYLIN_OREIDFUNDING_PRIVATE_KEY) // console.log('createAccount response: ', await createAccount.transaction.send()) // -----> CreateAccount - create native kylin account // const createAccount = kylin.new.createAccount() - // await createAccount.composeTransaction(EosAccountType.Native, createAccountOptions_EosNative) + // await createAccount.composeTransaction(EosNewAccountType.Native, createAccountOptions_EosNative) // await prepTransaction(kylin, createAccount.transaction, env.KYLIN_proppropprop_PRIVATE_KEY) // console.log('createAccount response: ', await createAccount.transaction.send()) // -----> CreateAccount - create native ore-staging account // const createAccount = oreStaging.new.createAccount() - // await createAccount.composeTransaction(EosAccountType.NativeOre, createAccountOptions_OreNative) + // await createAccount.composeTransaction(EosNewAccountType.NativeOre, createAccountOptions_OreNative) // await prepTransaction(oreStaging, createAccount.transaction, env.ORE_TESTNET_APPOREID_PRIVATE_KEY) // console.log(JSON.stringify(createAccount.transaction.toJson())) // console.log('createAccount response: ', await createAccount.transaction.send()) // -----> CreateAccount - create virtual nested account // const createAccount = kylin.new.createAccount() - // await createAccount.composeTransaction(EosAccountType.VirtualNested, createAccountOptions_virtualNested) + // await createAccount.composeTransaction(EosNewAccountType.VirtualNested, createAccountOptions_virtualNested) // await prepTransaction(kylin, createAccount.transaction, env.KYLIN_moonlightore_PRIVATE_KEY) // console.log('createAccount response: ', await createAccount.transaction.send()) // // -----> Reset account to be recyclable // const recycleAccount = (await kylin.new.account('ore1qadesjxm')) as EosAccount - // console.log('ore1qadesjxm account permissions:', recycleAccount.permissions) // const { generatedKeys, actions } = await recycleAccount.composeAddPermissionsActions( // toEosEntityName('owner'), // resetPermissions, + // null, + // false, // ) // console.log('generated Keys:', generatedKeys) + // console.log('actions:', actions) // const transaction = await prepTransactionFromActions(kylin, actions, env.EOS_KYLIN_OREIDFUNDING_PRIVATE_KEY) // console.log('response:', await transaction.send()) // // -----> CreateAccount - recycle native Kylin account - // const recycleAccount = kylin.new.createAccount() - // await recycleAccount.composeTransaction(EosAccountType.Native, createAccountOptions_OreRecycleNative) - // await prepTransaction(kylin, recycleAccount.transaction, env.EOS_KYLIN_OREIDFUNDING_PRIVATE_KEY) - // console.log('createAccount response: ', await recycleAccount.transaction.send()) + // const account = await kylin.new.account(createAccountOptions_OreRecycleNative.accountName) + // console.log('account can be recycled:', account.canBeRecycled) + // if (account.canBeRecycled) { + // const recycleAccount = kylin.new.createAccount() + // await recycleAccount.composeTransaction(EosNewAccountType.Native, createAccountOptions_OreRecycleNative) + // await prepTransaction(kylin, recycleAccount.transaction, env.EOS_KYLIN_OREIDFUNDING_PRIVATE_KEY) + // console.log('createAccount response: ', await recycleAccount.transaction.send()) + // } // -------------------- Permissions ----------------------- diff --git a/src/chains/eos_1_8/eosCreateAccount.ts b/src/chains/eos_1_8/eosCreateAccount.ts index 222a8721..c91a5c6d 100644 --- a/src/chains/eos_1_8/eosCreateAccount.ts +++ b/src/chains/eos_1_8/eosCreateAccount.ts @@ -5,7 +5,7 @@ import { EosEntityName, EosPermissionStruct, EosGeneratedKeys, - EosAccountType, + EosNewAccountType, } from './models/index' import { EosAccount } from './eosAccount' import { throwNewError } from '../../errors' @@ -45,7 +45,7 @@ export class EosCreateAccount implements CreateAccount { private _transaction: EosTransaction - private _accountType: EosAccountType + private _accountType: EosNewAccountType private _options: EosCreateAccountOptions @@ -56,7 +56,7 @@ export class EosCreateAccount implements CreateAccount { } /** Compose a transaction to send to the chain to create a new account */ - async composeTransaction(accountType: EosAccountType, options?: EosCreateAccountOptions): Promise { + async composeTransaction(accountType: EosNewAccountType, options?: EosCreateAccountOptions): Promise { this._accountType = accountType this._options = this.applyDefaultOptions(options) const { @@ -93,7 +93,7 @@ export class EosCreateAccount implements CreateAccount { } // check that we have account resource options for a native account (not needed if we are recycling) - if (!recycleAccount && accountType === EosAccountType.Native) { + if (!recycleAccount && accountType === EosNewAccountType.Native) { this.assertValidOptionsResources() } @@ -138,16 +138,16 @@ export class EosCreateAccount implements CreateAccount { this._didRecycleAccount = true } else { switch (accountType) { - case EosAccountType.Native: + case EosNewAccountType.Native: createAccountActions = composeAction(ChainActionType.AccountCreate, params) break - case EosAccountType.NativeOre: + case EosNewAccountType.NativeOre: createAccountActions = [composeAction(ChainActionType.OreCreateAccount, params)] break - case EosAccountType.CreateEscrow: + case EosNewAccountType.CreateEscrow: createAccountActions = [composeAction(ChainActionType.CreateEscrowCreate, params)] break - case EosAccountType.VirtualNested: + case EosNewAccountType.VirtualNested: // For a virual 'nested' account, we don't have a create account action // instead, we will need to add permissions (below) to the parent account createAccountActions = await this.composeCreateVirtualNestedActions() @@ -278,11 +278,11 @@ export class EosCreateAccount implements CreateAccount { let { publicKeys } = this._options || {} const { owner, active } = publicKeys || {} const { newKeysOptions } = this._options - const { newKeysPassword, newKeysSalt } = newKeysOptions || {} + const { password, salt } = newKeysOptions || {} // generate new public keys and add to options.publicKeyss if (!owner || !active) { - generatedKeys = await generateNewAccountKeysAndEncryptPrivateKeys(newKeysPassword, newKeysSalt, { publicKeys }) + generatedKeys = await generateNewAccountKeysAndEncryptPrivateKeys(password, salt, { publicKeys }) this._generatedKeys = { ...this._generatedKeys, accountKeys: generatedKeys, @@ -334,8 +334,8 @@ export class EosCreateAccount implements CreateAccount { private assertValidOptionNewKeys() { const { newKeysOptions, publicKeys } = this._options - const { newKeysPassword, newKeysSalt } = newKeysOptions || {} - if (isNullOrEmpty(publicKeys) && (isNullOrEmpty(newKeysPassword) || isNullOrEmpty(newKeysSalt))) { + const { password, salt } = newKeysOptions || {} + if (isNullOrEmpty(publicKeys) && (isNullOrEmpty(password) || isNullOrEmpty(salt))) { throwNewError('Invalid Option - You must provide either public keys or a password AND salt to generate new keys') } } @@ -357,7 +357,7 @@ export class EosCreateAccount implements CreateAccount { } /** Account type to be created */ - get accountType(): EosAccountType { + get accountType(): EosNewAccountType { return this._accountType } diff --git a/src/chains/eos_1_8/models/accountModels.ts b/src/chains/eos_1_8/models/accountModels.ts index b5d66f64..d8ee5f2f 100644 --- a/src/chains/eos_1_8/models/accountModels.ts +++ b/src/chains/eos_1_8/models/accountModels.ts @@ -1,8 +1,8 @@ -import { EosEntityName, EosAsset } from './generalModels' +import { EosEntityName, EosAsset, EosNewKeysOptions } from './generalModels' import { EosPublicKey } from './cryptoModels' -/** Type of account to craate */ -export enum EosAccountType { +/** Type of account to create */ +export enum EosNewAccountType { /** Native account for chain tyep (EOS, Ethereum, etc.) */ Native = 'Native', /** Native account on ORE chain */ @@ -23,10 +23,7 @@ export type EosCreateAccountOptions = { owner?: EosPublicKey active?: EosPublicKey } - newKeysOptions?: { - newKeysPassword?: string - newKeysSalt?: string - } + newKeysOptions?: EosNewKeysOptions oreOptions?: { pricekey?: number // default = 1 referralAccountName?: EosEntityName // default = '' // aka referral diff --git a/src/chains/eos_1_8/models/generalModels.ts b/src/chains/eos_1_8/models/generalModels.ts index 108758f4..228e8dae 100644 --- a/src/chains/eos_1_8/models/generalModels.ts +++ b/src/chains/eos_1_8/models/generalModels.ts @@ -37,7 +37,7 @@ export type EosGeneratedPermissionKeys = { keyPair: KeyPairEncrypted } -export type EosGenerateMissingKeysParams = { - newKeysPassword?: string - newKeysSalt?: string +export type EosNewKeysOptions = { + password?: string + salt?: string } diff --git a/src/chains/ethereum_1/models/accountModels.ts b/src/chains/ethereum_1/models/accountModels.ts index 479520aa..64b6e794 100644 --- a/src/chains/ethereum_1/models/accountModels.ts +++ b/src/chains/ethereum_1/models/accountModels.ts @@ -14,7 +14,7 @@ export type EthereumCreateAccountOptions = { // active?: EthereumPublicKey } newKeysOptions?: { - newKeysPassword?: string - newKeysSalt?: string + password?: string + salt?: string } } diff --git a/src/interfaces/createAccount.ts b/src/interfaces/createAccount.ts index 13380ba9..6ea17b43 100644 --- a/src/interfaces/createAccount.ts +++ b/src/interfaces/createAccount.ts @@ -1,5 +1,5 @@ import { Transaction } from './transaction' -import { AccountType, CreateAccountOptions, ChainEntityName } from '../models' +import { NewAccountType, CreateAccountOptions, ChainEntityName } from '../models' /** * The CreateAccount interface declares the operations that all concrete (chain)CreateAccount classes must implement @@ -9,7 +9,7 @@ export interface CreateAccount { * May be automatically generated (or otherwise changed) by composeTransaction() */ accountName: ChainEntityName /** Account type to be created */ - accountType: AccountType | any + accountType: NewAccountType | any /** Account will be recycled (accountName must be specified via composeTransaction() * This is set by composeTransaction() * ... if the account name provided has the 'unused' key as its active public key */ @@ -24,7 +24,7 @@ export interface CreateAccount { * This should be signed and sent to the chain to create the account */ transaction: Transaction /** Compose a transaction to send to the chain to create a new account */ - composeTransaction(accountType: AccountType | any, options?: CreateAccountOptions): Promise + composeTransaction(accountType: NewAccountType | any, options?: CreateAccountOptions): Promise /** Determine if desired account name is usable for a new account. * Generates a new account name if one isnt provided. * If account is unused (active key = unusedAccountPublicKey) then returns canRecycle = true */ diff --git a/src/models/generalModels.ts b/src/models/generalModels.ts index 747d6175..734e70fd 100644 --- a/src/models/generalModels.ts +++ b/src/models/generalModels.ts @@ -1,5 +1,5 @@ /** Type of account to craate */ -export enum AccountType { +export enum NewAccountType { /** Native account for chain tyep (EOS, Ethereum, etc.) */ Native = 'Native', /** Native account created by calling a proxy (escrow) contract that actually creates the account */ From e13aec93ab425a52976771cbba2c29d3fdcb9cf1 Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Sun, 19 Jan 2020 10:44:56 -0800 Subject: [PATCH 5/6] export chain plug-in types --- src/chains/eos_1_8/index.ts | 7 +++++++ src/chains/ethereum_1/index.ts | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 src/chains/eos_1_8/index.ts create mode 100644 src/chains/ethereum_1/index.ts diff --git a/src/chains/eos_1_8/index.ts b/src/chains/eos_1_8/index.ts new file mode 100644 index 00000000..1299563c --- /dev/null +++ b/src/chains/eos_1_8/index.ts @@ -0,0 +1,7 @@ +export * from './eosAccount' +export * from './eosCompose' +export * from './eosConstants' +export * from './eosCreateAccount' +export * from './eosCrypto' +export * from './eosErrors' +export * from './eosTransaction' diff --git a/src/chains/ethereum_1/index.ts b/src/chains/ethereum_1/index.ts new file mode 100644 index 00000000..f20fed22 --- /dev/null +++ b/src/chains/ethereum_1/index.ts @@ -0,0 +1,6 @@ +export * from './ethAccount' +export * from './ethCompose' +export * from './ethConstants' +export * from './ethCrypto' +export * from './ethErrors' +export * from './ethTransaction' From cc09be1008ec2567c9cdc5ddbe24cda6d9b6e2bd Mon Sep 17 00:00:00 2001 From: Tray Lewin Date: Mon, 20 Jan 2020 15:50:33 -0800 Subject: [PATCH 6/6] bump version to 0.9.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 77b22c73..c1225f56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@open-rights-exchange/chainjs", - "version": "0.9.9", + "version": "0.9.10", "description": "Javascript helper library providing plug-in interfaces to multiple block chains.", "main": "./dist/index.js", "scripts": {