diff options
author | Amir Bandeali <abandeali1@gmail.com> | 2018-04-25 02:24:55 +0800 |
---|---|---|
committer | Amir Bandeali <abandeali1@gmail.com> | 2018-04-27 01:33:37 +0800 |
commit | 0e0a46f373e076843fd4118cdafb325fb754141a (patch) | |
tree | 65c012961c6fa72dd258a2e0e0e671a0a6dc64a6 /packages/contracts/src/utils/transaction_factory.ts | |
parent | 732202fe8e4f3eb1847515a0c3f8f2d068d35baf (diff) | |
download | dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar.gz dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar.bz2 dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar.lz dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar.xz dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.tar.zst dexon-sol-tools-0e0a46f373e076843fd4118cdafb325fb754141a.zip |
Update tests and utils
Diffstat (limited to 'packages/contracts/src/utils/transaction_factory.ts')
-rw-r--r-- | packages/contracts/src/utils/transaction_factory.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/contracts/src/utils/transaction_factory.ts b/packages/contracts/src/utils/transaction_factory.ts new file mode 100644 index 000000000..3a4f48330 --- /dev/null +++ b/packages/contracts/src/utils/transaction_factory.ts @@ -0,0 +1,35 @@ +import { ZeroEx } from '0x.js'; +import { BigNumber } from '@0xproject/utils'; +import * as ethUtil from 'ethereumjs-util'; + +import { crypto } from './crypto'; +import { signingUtils } from './signing_utils'; +import { SignatureType, SignedTransaction } from './types'; + +export class TransactionFactory { + private _signer: string; + private _exchangeAddress: string; + private _privateKey: Buffer; + constructor(privateKey: Buffer, exchangeAddress: string) { + this._privateKey = privateKey; + this._exchangeAddress = exchangeAddress; + const signerBuff = ethUtil.privateToAddress(this._privateKey); + this._signer = `0x${signerBuff.toString('hex')}`; + } + public newSignedTransaction( + data: string, + signatureType: SignatureType = SignatureType.Ecrecover, + ): SignedTransaction { + const salt = ZeroEx.generatePseudoRandomSalt(); + const txHash = crypto.solSHA3([this._exchangeAddress, salt, ethUtil.toBuffer(data)]); + const signature = signingUtils.signMessage(txHash, this._privateKey, signatureType); + const signedTx = { + exchangeAddress: this._exchangeAddress, + salt, + signer: this._signer, + data, + signature: `0x${signature.toString('hex')}`, + }; + return signedTx; + } +} |