Use hardcoded deployedBytecode for local EVM execution (#2198)
* hardcode deployedBytecode in contracts * log warning if bytecode is empty or invalid * be typesafe
This commit is contained in:
parent
97eabc6c03
commit
cb20f03a92
@ -43,7 +43,13 @@ describe('StaticCallProxy', () => {
|
|||||||
txDefaults,
|
txDefaults,
|
||||||
artifacts,
|
artifacts,
|
||||||
);
|
);
|
||||||
staticCallProxy = new IAssetProxyContract(staticCallProxyWithoutTransferFrom.address, provider, txDefaults);
|
staticCallProxy = new IAssetProxyContract(
|
||||||
|
staticCallProxyWithoutTransferFrom.address,
|
||||||
|
provider,
|
||||||
|
txDefaults,
|
||||||
|
{},
|
||||||
|
StaticCallProxyContract.deployedBytecode,
|
||||||
|
);
|
||||||
staticCallTarget = await TestStaticCallTargetContract.deployFrom0xArtifactAsync(
|
staticCallTarget = await TestStaticCallTargetContract.deployFrom0xArtifactAsync(
|
||||||
artifacts.TestStaticCallTarget,
|
artifacts.TestStaticCallTarget,
|
||||||
provider,
|
provider,
|
||||||
|
@ -5,6 +5,10 @@
|
|||||||
{
|
{
|
||||||
"note": "Use V3 contracts",
|
"note": "Use V3 contracts",
|
||||||
"pr": 2181
|
"pr": 2181
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "Hardcode bytecode for local EVM execution",
|
||||||
|
"pr": 2198
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
File diff suppressed because one or more lines are too long
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class CoordinatorContract extends BaseContract {
|
export class CoordinatorContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Recovers the address of a signer given a hash and signature.
|
* Recovers the address of a signer given a hash and signature.
|
||||||
*/
|
*/
|
||||||
@ -1491,8 +1492,17 @@ export class CoordinatorContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = CoordinatorContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('Coordinator', CoordinatorContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'Coordinator',
|
||||||
|
CoordinatorContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@ export interface CoordinatorRegistryCoordinatorEndpointSetEventArgs extends Deco
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class CoordinatorRegistryContract extends BaseContract {
|
export class CoordinatorRegistryContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Called by a Coordinator operator to set the endpoint of their Coordinator.
|
* Called by a Coordinator operator to set the endpoint of their Coordinator.
|
||||||
*/
|
*/
|
||||||
@ -528,6 +529,7 @@ export class CoordinatorRegistryContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = CoordinatorRegistryContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'CoordinatorRegistry',
|
'CoordinatorRegistry',
|
||||||
@ -536,6 +538,7 @@ export class CoordinatorRegistryContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
this._subscriptionManager = new SubscriptionManager<CoordinatorRegistryEventArgs, CoordinatorRegistryEvents>(
|
this._subscriptionManager = new SubscriptionManager<CoordinatorRegistryEventArgs, CoordinatorRegistryEvents>(
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class DutchAuctionContract extends BaseContract {
|
export class DutchAuctionContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Calculates the Auction Details for the given order
|
* Calculates the Auction Details for the given order
|
||||||
*/
|
*/
|
||||||
@ -1259,6 +1260,7 @@ export class DutchAuctionContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = DutchAuctionContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'DutchAuction',
|
'DutchAuction',
|
||||||
@ -1267,6 +1269,7 @@ export class DutchAuctionContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -54,6 +54,8 @@ export interface ERC20TokenApprovalEventArgs extends DecodedLogArgs {
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class ERC20TokenContract extends BaseContract {
|
export class ERC20TokenContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610154578063dd62ed3e1461018d57610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101c8565b604080519115158252519081900360200190f35b6100cc61023b565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610241565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661049d565b6100b06004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c5565b6100cc600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60025490565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120548211156102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482111561037457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054828101101561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3360009081526020819052604081205482111561054357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110156105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b336000818152602081815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220549056fea265627a7a72315820a8be845157409b80a426219f30a11309977ab023952976f504aad6eb0ede15d164736f6c634300050b0032';
|
||||||
/**
|
/**
|
||||||
* `msg.sender` approves `_spender` to spend `_value` tokens
|
* `msg.sender` approves `_spender` to spend `_value` tokens
|
||||||
*/
|
*/
|
||||||
@ -1289,8 +1291,17 @@ export class ERC20TokenContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = ERC20TokenContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('ERC20Token', ERC20TokenContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'ERC20Token',
|
||||||
|
ERC20TokenContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
this._subscriptionManager = new SubscriptionManager<ERC20TokenEventArgs, ERC20TokenEvents>(
|
this._subscriptionManager = new SubscriptionManager<ERC20TokenEventArgs, ERC20TokenEvents>(
|
||||||
ERC20TokenContract.ABI(),
|
ERC20TokenContract.ABI(),
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -28,6 +28,8 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class EthBalanceCheckerContract extends BaseContract {
|
export class EthBalanceCheckerContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a0901e5114610030575b600080fd5b6100d36004803603602081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184602083028401116401000000008311171561009557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610123945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561010f5781810151838201526020016100f7565b505050509050019250505060405180910390f35b6060808251604051908082528060200260200182016040528015610151578160200160208202803883390190505b50905060005b835181146101a95783818151811061016b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163182828151811061019657fe5b6020908102919091010152600101610157565b509291505056fea265627a7a723158208e3ee4f32e855ae8a6648cee5637fa515aca850035f9a1a43d11706388208ad064736f6c634300050b0032';
|
||||||
/**
|
/**
|
||||||
* Batch fetches ETH balances
|
* Batch fetches ETH balances
|
||||||
*/
|
*/
|
||||||
@ -214,6 +216,7 @@ export class EthBalanceCheckerContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = EthBalanceCheckerContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'EthBalanceChecker',
|
'EthBalanceChecker',
|
||||||
@ -222,6 +225,7 @@ export class EthBalanceCheckerContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class IAssetProxyContract extends BaseContract {
|
export class IAssetProxyContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Transfers assets. Either succeeds or throws.
|
* Transfers assets. Either succeeds or throws.
|
||||||
*/
|
*/
|
||||||
@ -471,8 +472,17 @@ export class IAssetProxyContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = IAssetProxyContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('IAssetProxy', IAssetProxyContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'IAssetProxy',
|
||||||
|
IAssetProxyContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class IValidatorContract extends BaseContract {
|
export class IValidatorContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Verifies that a signature is valid.
|
* Verifies that a signature is valid.
|
||||||
*/
|
*/
|
||||||
@ -240,8 +241,17 @@ export class IValidatorContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = IValidatorContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('IValidator', IValidatorContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'IValidator',
|
||||||
|
IValidatorContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class IWalletContract extends BaseContract {
|
export class IWalletContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
/**
|
/**
|
||||||
* Validates a hash with the `Wallet` signature type.
|
* Validates a hash with the `Wallet` signature type.
|
||||||
*/
|
*/
|
||||||
@ -226,8 +227,17 @@ export class IWalletContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = IWalletContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('IWallet', IWalletContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'IWallet',
|
||||||
|
IWalletContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -28,6 +28,7 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class OrderValidatorContract extends BaseContract {
|
export class OrderValidatorContract extends BaseContract {
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
public getOrderAndTraderInfo = {
|
public getOrderAndTraderInfo = {
|
||||||
/**
|
/**
|
||||||
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
||||||
@ -1789,6 +1790,7 @@ export class OrderValidatorContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = OrderValidatorContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'OrderValidator',
|
'OrderValidator',
|
||||||
@ -1797,6 +1799,7 @@ export class OrderValidatorContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class StaticCallProxyContract extends BaseContract {
|
export class StaticCallProxyContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a85e59e41461003b578063ae25532e146100d3575b600080fd5b6100d16004803603608081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610110565b005b6100db6103a5565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000606060006101656004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6103c5169050565b806020019051606081101561017957600080fd5b8151602083018051604051929492938301929190846401000000008211156101a057600080fd5b9083019060208201858111156101b557600080fd5b82516401000000008111828201881017156101cf57600080fd5b82525081516020918201929091019080838360005b838110156101fc5781810151838201526020016101e4565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050925092509250600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106102ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461030c576040519150601f19603f3d011682016040523d82523d6000602084013e610311565b606091505b50915091508161032357805160208201fd5b8051602082012083811461039857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f554e45585045435445445f5354415449435f43414c4c5f524553554c54000000604482015290519081900360640190fd5b5050505050505050505050565b600060405180806104b06021913960210190506040518091039020905090565b6060818311156103e3576103e36103de60008585610408565b6104a7565b83518211156103fc576103fc6103de6001848751610408565b50819003910190815290565b6060632800659560e01b8484846040516024018084600781111561042857fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe53746174696343616c6c28616464726573732c62797465732c6279746573333229a265627a7a7231582044c2020ae7667d494aab070c9280e9d8a46d53ab502953edef7491d567612b5764736f6c634300050b0032';
|
||||||
/**
|
/**
|
||||||
* Makes a staticcall to a target address and verifies that the data returned matches the expected return data.
|
* Makes a staticcall to a target address and verifies that the data returned matches the expected return data.
|
||||||
*/
|
*/
|
||||||
@ -333,6 +335,7 @@ export class StaticCallProxyContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = StaticCallProxyContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'StaticCallProxy',
|
'StaticCallProxy',
|
||||||
@ -341,6 +344,7 @@ export class StaticCallProxyContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,8 @@ export interface WETH9WithdrawalEventArgs extends DecodedLogArgs {
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class WETH9Contract extends BaseContract {
|
export class WETH9Contract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x6080604052600436106100925760003560e01c63ffffffff16806306fdde031461009c578063095ea7b31461012657806318160ddd1461016b57806323b872dd146101925780632e1a7d4d146101c9578063313ce567146101e157806370a082311461020c57806395d89b411461023a578063a9059cbb1461024f578063d0e30db014610092578063dd62ed3e14610280575b61009a6102b4565b005b3480156100a857600080fd5b506100b1610303565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100eb5781810151838201526020016100d3565b50505050905090810190601f1680156101185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013257600080fd5b5061015773ffffffffffffffffffffffffffffffffffffffff600435166024356103af565b604080519115158252519081900360200190f35b34801561017757600080fd5b50610180610422565b60408051918252519081900360200190f35b34801561019e57600080fd5b5061015773ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610427565b3480156101d557600080fd5b5061009a6004356105c7565b3480156101ed57600080fd5b506101f661065c565b6040805160ff9092168252519081900360200190f35b34801561021857600080fd5b5061018073ffffffffffffffffffffffffffffffffffffffff60043516610665565b34801561024657600080fd5b506100b1610677565b34801561025b57600080fd5b5061015773ffffffffffffffffffffffffffffffffffffffff600435166024356106ef565b34801561028c57600080fd5b5061018073ffffffffffffffffffffffffffffffffffffffff60043581169060243516610703565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156103a75780601f1061037c576101008083540402835291602001916103a7565b820191906000526020600020905b81548152906001019060200180831161038a57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b303190565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561045957600080fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104cf575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105495773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051157600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105e357600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610622573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156103a75780601f1061037c576101008083540402835291602001916103a7565b60006106fc338484610427565b9392505050565b6004602090815260009283526040808420909152908252902054815600a165627a7a723058208c1a5f90a07df164cfae00321c12c43db2b7ada1e01f84db768bd564cdcb5e810029';
|
||||||
public name = {
|
public name = {
|
||||||
/**
|
/**
|
||||||
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
||||||
@ -1884,8 +1886,17 @@ export class WETH9Contract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = WETH9Contract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('WETH9', WETH9Contract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'WETH9',
|
||||||
|
WETH9Contract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
this._subscriptionManager = new SubscriptionManager<WETH9EventArgs, WETH9Events>(
|
this._subscriptionManager = new SubscriptionManager<WETH9EventArgs, WETH9Events>(
|
||||||
WETH9Contract.ABI(),
|
WETH9Contract.ABI(),
|
||||||
|
@ -54,6 +54,8 @@ export interface ZRXTokenApprovalEventArgs extends DecodedLogArgs {
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class ZRXTokenContract extends BaseContract {
|
export class ZRXTokenContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a7230582089c65002cb8f3d655c649cfac99a1bc182fd35bc61f3da8b1602755719ae5da50029';
|
||||||
public name = {
|
public name = {
|
||||||
/**
|
/**
|
||||||
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
||||||
@ -1519,8 +1521,17 @@ export class ZRXTokenContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = ZRXTokenContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('ZRXToken', ZRXTokenContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'ZRXToken',
|
||||||
|
ZRXTokenContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
this._subscriptionManager = new SubscriptionManager<ZRXTokenEventArgs, ZRXTokenEvents>(
|
this._subscriptionManager = new SubscriptionManager<ZRXTokenEventArgs, ZRXTokenEvents>(
|
||||||
ZRXTokenContract.ABI(),
|
ZRXTokenContract.ABI(),
|
||||||
|
@ -359,6 +359,25 @@ for (const abiFileName of abiFileNames) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let deployedBytecode;
|
||||||
|
try {
|
||||||
|
deployedBytecode = parsedContent.compilerOutput.evm.deployedBytecode.object;
|
||||||
|
if (
|
||||||
|
deployedBytecode === '' ||
|
||||||
|
deployedBytecode === undefined ||
|
||||||
|
deployedBytecode === '0x' ||
|
||||||
|
deployedBytecode === '0x00'
|
||||||
|
) {
|
||||||
|
throw new Error();
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
logUtils.log(
|
||||||
|
`Couldn't find deployedBytecode for ${chalk.bold(
|
||||||
|
namedContent.name,
|
||||||
|
)}, using undefined. Found [${deployedBytecode}]`,
|
||||||
|
);
|
||||||
|
deployedBytecode = undefined;
|
||||||
|
}
|
||||||
let ctor = ABI.find((abi: AbiDefinition) => abi.type === ABI_TYPE_CONSTRUCTOR) as ConstructorAbi;
|
let ctor = ABI.find((abi: AbiDefinition) => abi.type === ABI_TYPE_CONSTRUCTOR) as ConstructorAbi;
|
||||||
if (ctor === undefined) {
|
if (ctor === undefined) {
|
||||||
ctor = utils.getEmptyConstructor(); // The constructor exists, but it's implicit in JSON's ABI definition
|
ctor = utils.getEmptyConstructor(); // The constructor exists, but it's implicit in JSON's ABI definition
|
||||||
@ -401,6 +420,7 @@ for (const abiFileName of abiFileNames) {
|
|||||||
const contextData = {
|
const contextData = {
|
||||||
contractName: namedContent.name,
|
contractName: namedContent.name,
|
||||||
ctor,
|
ctor,
|
||||||
|
deployedBytecode,
|
||||||
ABI: ABI as ContractAbi,
|
ABI: ABI as ContractAbi,
|
||||||
ABIString: JSON.stringify(ABI),
|
ABIString: JSON.stringify(ABI),
|
||||||
methods: methodsData,
|
methods: methodsData,
|
||||||
|
@ -50,6 +50,12 @@ export enum {{contractName}}Events {
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class {{contractName}}Contract extends BaseContract {
|
export class {{contractName}}Contract extends BaseContract {
|
||||||
|
{{#ifEquals this.deployedBytecode undefined~}}
|
||||||
|
public static deployedBytecode: string | undefined;
|
||||||
|
{{else~}}
|
||||||
|
public static deployedBytecode = '{{this.deployedBytecode}}';
|
||||||
|
{{/ifEquals~}}
|
||||||
|
|
||||||
{{#each methods}}
|
{{#each methods}}
|
||||||
{{#if this.devdoc.details}}
|
{{#if this.devdoc.details}}
|
||||||
/**
|
/**
|
||||||
@ -231,8 +237,14 @@ export class {{contractName}}Contract extends BaseContract {
|
|||||||
);
|
);
|
||||||
return logs;
|
return logs;
|
||||||
}{{/if}}
|
}{{/if}}
|
||||||
constructor(address: string, supportedProvider: SupportedProvider, txDefaults?: Partial<TxData>, logDecodeDependencies?: { [contractName: string]: ContractAbi }) {
|
constructor(
|
||||||
super('{{contractName}}', {{contractName}}Contract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
address: string,
|
||||||
|
supportedProvider: SupportedProvider,
|
||||||
|
txDefaults?: Partial<TxData>,
|
||||||
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = {{contractName}}Contract.deployedBytecode,
|
||||||
|
) {
|
||||||
|
super('{{contractName}}', {{contractName}}Contract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies, deployedBytecode);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);{{#if events}}
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);{{#if events}}
|
||||||
this._subscriptionManager = new SubscriptionManager<{{contractName}}EventArgs, {{contractName}}Events>(
|
this._subscriptionManager = new SubscriptionManager<{{contractName}}EventArgs, {{contractName}}Events>(
|
||||||
{{contractName}}Contract.ABI(),
|
{{contractName}}Contract.ABI(),
|
||||||
|
File diff suppressed because one or more lines are too long
@ -28,6 +28,8 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class LibDummyContract extends BaseContract {
|
export class LibDummyContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72305820b14322cd05aa1dcae66812e472d3ab85cced78118ea7f9a5098d073b2accc45964736f6c634300050a0032';
|
||||||
public static async deployFrom0xArtifactAsync(
|
public static async deployFrom0xArtifactAsync(
|
||||||
artifact: ContractArtifact | SimpleContractArtifact,
|
artifact: ContractArtifact | SimpleContractArtifact,
|
||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
@ -104,8 +106,17 @@ export class LibDummyContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = LibDummyContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super('LibDummy', LibDummyContract.ABI(), address, supportedProvider, txDefaults, logDecodeDependencies);
|
super(
|
||||||
|
'LibDummy',
|
||||||
|
LibDummyContract.ABI(),
|
||||||
|
address,
|
||||||
|
supportedProvider,
|
||||||
|
txDefaults,
|
||||||
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ import * as ethers from 'ethers';
|
|||||||
// tslint:disable:no-parameter-reassignment
|
// tslint:disable:no-parameter-reassignment
|
||||||
// tslint:disable-next-line:class-name
|
// tslint:disable-next-line:class-name
|
||||||
export class TestLibDummyContract extends BaseContract {
|
export class TestLibDummyContract extends BaseContract {
|
||||||
|
public static deployedBytecode =
|
||||||
|
'0x6080604052348015600f57600080fd5b506004361060325760003560e01c806322935e921460375780632b82fdf0146063575b600080fd5b605160048036036020811015604b57600080fd5b5035607d565b60408051918252519081900360200190f35b605160048036036020811015607757600080fd5b5035608c565b60006086826095565b92915050565b6000608682609c565b6104d20190565b6001019056fea265627a7a72305820ddb720d14b34694daaefebcbd729af6ae04fa2232481812dd8fde63d6a4c32c164736f6c634300050a0032';
|
||||||
public publicAddConstant = {
|
public publicAddConstant = {
|
||||||
/**
|
/**
|
||||||
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
* Sends a read-only call to the contract method. Returns the result that would happen if one were to send an
|
||||||
@ -287,6 +289,7 @@ export class TestLibDummyContract extends BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
txDefaults?: Partial<TxData>,
|
txDefaults?: Partial<TxData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode: string | undefined = TestLibDummyContract.deployedBytecode,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
'TestLibDummy',
|
'TestLibDummy',
|
||||||
@ -295,6 +298,7 @@ export class TestLibDummyContract extends BaseContract {
|
|||||||
supportedProvider,
|
supportedProvider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
logDecodeDependencies,
|
logDecodeDependencies,
|
||||||
|
deployedBytecode,
|
||||||
);
|
);
|
||||||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']);
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,7 @@ export class BaseContract {
|
|||||||
public constructorArgs: any[] = [];
|
public constructorArgs: any[] = [];
|
||||||
private _evmIfExists?: VM;
|
private _evmIfExists?: VM;
|
||||||
private _evmAccountIfExists?: Buffer;
|
private _evmAccountIfExists?: Buffer;
|
||||||
|
private _deployedBytecodeIfExists?: Buffer;
|
||||||
protected static _formatABIDataItemList(
|
protected static _formatABIDataItemList(
|
||||||
abis: DataItem[],
|
abis: DataItem[],
|
||||||
values: any[],
|
values: any[],
|
||||||
@ -197,9 +198,11 @@ export class BaseContract {
|
|||||||
await psm.putAccount(accountAddress, account);
|
await psm.putAccount(accountAddress, account);
|
||||||
|
|
||||||
// 'deploy' the contract
|
// 'deploy' the contract
|
||||||
|
if (this._deployedBytecodeIfExists === undefined) {
|
||||||
const contractCode = await this._web3Wrapper.getContractCodeAsync(this.address);
|
const contractCode = await this._web3Wrapper.getContractCodeAsync(this.address);
|
||||||
const deployedBytecode = Buffer.from(contractCode.substr(2), 'hex');
|
this._deployedBytecodeIfExists = Buffer.from(contractCode.substr(2), 'hex');
|
||||||
await psm.putContractCode(addressBuf, deployedBytecode);
|
}
|
||||||
|
await psm.putContractCode(addressBuf, this._deployedBytecodeIfExists);
|
||||||
|
|
||||||
// save for later
|
// save for later
|
||||||
this._evmIfExists = vm;
|
this._evmIfExists = vm;
|
||||||
@ -252,6 +255,8 @@ export class BaseContract {
|
|||||||
/// @param supportedProvider for communicating with an ethereum node.
|
/// @param supportedProvider for communicating with an ethereum node.
|
||||||
/// @param logDecodeDependencies the name and ABI of contracts whose event logs are
|
/// @param logDecodeDependencies the name and ABI of contracts whose event logs are
|
||||||
/// decoded by this wrapper.
|
/// decoded by this wrapper.
|
||||||
|
/// @param deployedBytecode the deployedBytecode of the contract, used for executing
|
||||||
|
/// pure Solidity functions in memory. This is different from the bytecode.
|
||||||
constructor(
|
constructor(
|
||||||
contractName: string,
|
contractName: string,
|
||||||
abi: ContractAbi,
|
abi: ContractAbi,
|
||||||
@ -259,9 +264,14 @@ export class BaseContract {
|
|||||||
supportedProvider: SupportedProvider,
|
supportedProvider: SupportedProvider,
|
||||||
callAndTxnDefaults?: Partial<CallData>,
|
callAndTxnDefaults?: Partial<CallData>,
|
||||||
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
logDecodeDependencies?: { [contractName: string]: ContractAbi },
|
||||||
|
deployedBytecode?: string,
|
||||||
) {
|
) {
|
||||||
assert.isString('contractName', contractName);
|
assert.isString('contractName', contractName);
|
||||||
assert.isETHAddressHex('address', address);
|
assert.isETHAddressHex('address', address);
|
||||||
|
if (deployedBytecode !== undefined && deployedBytecode !== '') {
|
||||||
|
assert.isHexString('deployedBytecode', deployedBytecode);
|
||||||
|
this._deployedBytecodeIfExists = Buffer.from(deployedBytecode.substr(2), 'hex');
|
||||||
|
}
|
||||||
const provider = providerUtils.standardizeOrThrow(supportedProvider);
|
const provider = providerUtils.standardizeOrThrow(supportedProvider);
|
||||||
if (callAndTxnDefaults !== undefined) {
|
if (callAndTxnDefaults !== undefined) {
|
||||||
assert.doesConformToSchema('callAndTxnDefaults', callAndTxnDefaults, schemas.callDataSchema, [
|
assert.doesConformToSchema('callAndTxnDefaults', callAndTxnDefaults, schemas.callDataSchema, [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user