aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web3-wrapper/src/web3_wrapper.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-06-12 06:23:48 +0800
committerFabio Berger <me@fabioberger.com>2018-06-12 06:23:48 +0800
commit7e78f5941ad9cb2fd5225899f79823c7376894c0 (patch)
tree13fadf90f821e9fead1373a2e567e6d86fe27e0f /packages/web3-wrapper/src/web3_wrapper.ts
parent20f93185975d16c77492f05eb86dd89695539cd9 (diff)
parentbc0ae6be318a15bf8670a6da9a59d9bdb12cadae (diff)
downloaddexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar.gz
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar.bz2
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar.lz
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar.xz
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.tar.zst
dexon-sol-tools-7e78f5941ad9cb2fd5225899f79823c7376894c0.zip
Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (68 commits) Stop exporting ArtifactWriter Fix no-unused-variable tslint rule to include parameters and fix issues Fix linter exclude rule Validate all signature types rather then only ECSignatures Store the instantiated OrderValidationUtils Remove global hooks from tests and deploy contracts from within the specific tests Add EmitStatement to ASTVisitor Fix tslint issues Add back artifacts file Fix a bug in SolCompilerArtifacts adapter config overriding Move OrderValidationUtils (+ tests) and ExchangeTransferSimulator to order-utils export parseECSignature method Export ArtifactWriter from migrations package Remove unused artifact file Pass in generated contract wrapper to orderValidationUtils at instantiation Refactor orderValidationUtils to use the generated contract wrapper instead of the higher-level one Refactor ExchangeTransferSimulator public interface to accet an AbstractBalanceAndProxyAllowanceLazyStore so that this module could be re-used in different contexts. Increase timeout for contract migrations Remove some copy-paste code Await transactions in migrations ...
Diffstat (limited to 'packages/web3-wrapper/src/web3_wrapper.ts')
-rw-r--r--packages/web3-wrapper/src/web3_wrapper.ts52
1 files changed, 47 insertions, 5 deletions
diff --git a/packages/web3-wrapper/src/web3_wrapper.ts b/packages/web3-wrapper/src/web3_wrapper.ts
index 559bf3ea9..780695091 100644
--- a/packages/web3-wrapper/src/web3_wrapper.ts
+++ b/packages/web3-wrapper/src/web3_wrapper.ts
@@ -2,6 +2,7 @@ import { AbiDecoder, addressUtils, BigNumber, intervalUtils, promisify } from '@
import {
BlockParam,
BlockWithoutTransactionData,
+ BlockWithTransactionData,
CallData,
ContractAbi,
FilterObject,
@@ -10,8 +11,10 @@ import {
LogEntry,
Provider,
RawLogEntry,
+ TraceParams,
TransactionReceipt,
TransactionReceiptWithDecodedLogs,
+ TransactionTrace,
TxData,
} from 'ethereum-types';
import * as _ from 'lodash';
@@ -187,12 +190,34 @@ export class Web3Wrapper {
* @returns Whether or not contract code was found at the supplied address
*/
public async doesContractExistAtAddressAsync(address: string): Promise<boolean> {
- const code = await promisify<string>(this._web3.eth.getCode)(address);
+ const code = await this.getContractCodeAsync(address);
// Regex matches 0x0, 0x00, 0x in order to accommodate poorly implemented clients
const isCodeEmpty = /^0x0{0,40}$/i.test(code);
return !isCodeEmpty;
}
/**
+ * Gets the contract code by address
+ * @param address Address of the contract
+ * @return Code of the contract
+ */
+ public async getContractCodeAsync(address: string): Promise<string> {
+ const code = await promisify<string>(this._web3.eth.getCode)(address);
+ return code;
+ }
+ /**
+ * Gets the debug trace of a transaction
+ * @param txHash Hash of the transactuon to get a trace for
+ * @param traceParams Config object allowing you to specify if you need memory/storage/stack traces.
+ * @return Transaction trace
+ */
+ public async getTransactionTraceAsync(txHash: string, traceParams: TraceParams): Promise<TransactionTrace> {
+ const trace = await this._sendRawPayloadAsync<TransactionTrace>({
+ method: 'debug_traceTransaction',
+ params: [txHash, traceParams],
+ });
+ return trace;
+ }
+ /**
* Sign a message with a specific address's private key (`eth_sign`)
* @param address Address of signer
* @param message Message to sign
@@ -211,13 +236,30 @@ export class Web3Wrapper {
return blockNumber;
}
/**
- * Fetch a specific Ethereum block
+ * Fetch a specific Ethereum block without transaction data
* @param blockParam The block you wish to fetch (blockHash, blockNumber or blockLiteral)
* @returns The requested block without transaction data
*/
public async getBlockAsync(blockParam: string | BlockParam): Promise<BlockWithoutTransactionData> {
- const block = await promisify<BlockWithoutTransactionData>(this._web3.eth.getBlock)(blockParam);
- return block;
+ const shouldIncludeTransactionData = false;
+ const blockWithoutTransactionData = await promisify<BlockWithoutTransactionData>(this._web3.eth.getBlock)(
+ blockParam,
+ shouldIncludeTransactionData,
+ );
+ return blockWithoutTransactionData;
+ }
+ /**
+ * Fetch a specific Ethereum block with transaction data
+ * @param blockParam The block you wish to fetch (blockHash, blockNumber or blockLiteral)
+ * @returns The requested block with transaction data
+ */
+ public async getBlockWithTransactionDataAsync(blockParam: string | BlockParam): Promise<BlockWithTransactionData> {
+ const shouldIncludeTransactionData = true;
+ const blockWithTransactionData = await promisify<BlockWithTransactionData>(this._web3.eth.getBlock)(
+ blockParam,
+ shouldIncludeTransactionData,
+ );
+ return blockWithTransactionData;
}
/**
* Fetch a block's timestamp
@@ -469,4 +511,4 @@ export class Web3Wrapper {
const decimal = this._web3.toDecimal(hex);
return decimal;
}
-}
+} // tslint:disable-line:max-file-line-count