From 2ba57014c889f0c5e4d086e7764e86ac7f2b6e9b Mon Sep 17 00:00:00 2001 From: holgerd77 Date: Mon, 7 Sep 2020 12:45:17 +0200 Subject: [PATCH] common, vm, tx: centralize default hardfork setting in Common (default if none provided, before: null), remove static default HF references from VM, tx --- packages/common/src/index.ts | 22 +++++++++++----------- packages/common/tests/chains.ts | 2 +- packages/common/tests/hardforks.ts | 13 +++---------- packages/common/tests/params.ts | 9 ++------- packages/tx/src/transaction.ts | 4 +--- packages/vm/lib/index.ts | 2 -- 6 files changed, 18 insertions(+), 34 deletions(-) diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index eaa7786d54b..fe1dd89a06c 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -4,6 +4,8 @@ import { hardforks as hardforkChanges } from './hardforks' import { EIPs } from './eips' import { Chain } from './types' +const DEFAULT_HARDFORK = 'petersburg' + /** * Options for instantiating a [[Common]] instance. */ @@ -14,8 +16,10 @@ export interface CommonOpts { chain: string | number | object /** * String identifier ('byzantium') for hardfork + * + * Default: `petersburg` */ - hardfork?: string | null + hardfork?: string /** * Limit parameter returns to the given hardforks */ @@ -33,7 +37,7 @@ interface hardforkOptions { * Common class to access chain and hardfork parameters */ export default class Common { - private _hardfork: string | null + private _hardfork: string private _supportedHardforks: Array private _chainParams: Chain @@ -50,7 +54,7 @@ export default class Common { static forCustomChain( baseChain: string | number, customChainParams: Partial, - hardfork?: string | null, + hardfork?: string, supportedHardforks?: Array, ): Common { const standardChainParams = Common._getChainParams(baseChain) @@ -86,7 +90,7 @@ export default class Common { */ constructor(opts: CommonOpts) { this._chainParams = this.setChain(opts.chain) - this._hardfork = null + this._hardfork = DEFAULT_HARDFORK this._supportedHardforks = opts.supportedHardforks === undefined ? [] : opts.supportedHardforks if (opts.hardfork) { this.setHardfork(opts.hardfork) @@ -118,9 +122,9 @@ export default class Common { /** * Sets the hardfork to get params for - * @param hardfork String identifier ('byzantium') + * @param hardfork String identifier (e.g. 'byzantium') */ - setHardfork(hardfork: string | null): void { + setHardfork(hardfork: string): void { if (!this._isSupportedHardfork(hardfork)) { throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`) } @@ -143,11 +147,7 @@ export default class Common { */ _chooseHardfork(hardfork?: string | null, onlySupported: boolean = true): string { if (!hardfork) { - if (!this._hardfork) { - throw new Error('Method called with neither a hardfork set nor provided by param') - } else { - hardfork = this._hardfork - } + hardfork = this._hardfork } else if (onlySupported && !this._isSupportedHardfork(hardfork)) { throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`) } diff --git a/packages/common/tests/chains.ts b/packages/common/tests/chains.ts index a8b97a55766..eaf7cee0c17 100644 --- a/packages/common/tests/chains.ts +++ b/packages/common/tests/chains.ts @@ -7,7 +7,7 @@ tape('[Common]: Initialization / Chain params', function (t: tape.Test) { st.equal(c.chainName(), 'mainnet', 'should initialize with chain name') st.equal(c.chainId(), 1, 'should return correct chain Id') st.equal(c.networkId(), 1, 'should return correct network Id') - st.equal(c.hardfork(), null, 'should set hardfork to null') + st.equal(c.hardfork(), 'petersburg', 'should set hardfork to the default hardfork') st.equal(c._isSupportedHardfork('constantinople'), true, 'should not restrict supported HFs') c = new Common({ chain: 1 }) diff --git a/packages/common/tests/hardforks.ts b/packages/common/tests/hardforks.ts index 65a9cc0d508..d28f4246f46 100644 --- a/packages/common/tests/hardforks.ts +++ b/packages/common/tests/hardforks.ts @@ -300,22 +300,15 @@ tape('[Common]: Hardfork logic', function (t: tape.Test) { }) t.test('forkHash()', function (st: tape.Test) { - let c = new Common({ chain: 'mainnet' }) - let f = () => { - c.forkHash() - } - let msg = 'should throw when no hardfork set or provided' - st.throws(f, /neither a hardfork set nor provided by param$/, msg) - - c = new Common({ chain: 'mainnet', hardfork: 'byzantium' }) - msg = 'should provide correct forkHash for HF set' + let c = new Common({ chain: 'mainnet', hardfork: 'byzantium' }) + let msg = 'should provide correct forkHash for HF set' st.equal(c.forkHash(), '0xa00bc324', msg) msg = 'should provide correct forkHash for HF provided' st.equal(c.forkHash('spuriousDragon'), '0x3edd5b10', msg) c = new Common({ chain: 'ropsten' }) - f = () => { + let f = () => { c.forkHash('dao') } msg = 'should throw when called on non-applied or future HF' diff --git a/packages/common/tests/params.ts b/packages/common/tests/params.ts index c54bc6a7b63..875e51b3105 100644 --- a/packages/common/tests/params.ts +++ b/packages/common/tests/params.ts @@ -16,16 +16,11 @@ tape('[Common]: Parameter access', function (t: tape.Test) { t.test('Error cases', function (st: tape.Test) { let c = new Common({ chain: 'mainnet' }) - let f = function () { - c.param('gasPrices', 'ecAdd') - } - let msg = 'Should throw when no hardfork set or provided' - st.throws(f, /neither a hardfork set nor provided by param$/, msg) - f = function () { + let f = function () { c.param('gasPrizes', 'ecAdd', 'byzantium') } - msg = 'Should throw when called with non-existing topic' + let msg = 'Should throw when called with non-existing topic' st.throws(f, /Topic gasPrizes not defined$/, msg) f = function () { diff --git a/packages/tx/src/transaction.ts b/packages/tx/src/transaction.ts index 2ab16632669..82cfe7ff387 100644 --- a/packages/tx/src/transaction.ts +++ b/packages/tx/src/transaction.ts @@ -80,9 +80,7 @@ export default class Transaction { this._common = opts.common } else { const chain = opts.chain ? opts.chain : 'mainnet' - const hardfork = opts.hardfork ? opts.hardfork : 'petersburg' - - this._common = new Common({ chain, hardfork }) + this._common = new Common({ chain }) } // Define Properties diff --git a/packages/vm/lib/index.ts b/packages/vm/lib/index.ts index b11e463969f..d032fd5fa4b 100644 --- a/packages/vm/lib/index.ts +++ b/packages/vm/lib/index.ts @@ -117,7 +117,6 @@ export default class VM extends AsyncEventEmitter { this._common = opts.common } else { const DEFAULT_CHAIN = 'mainnet' - const DEFAULT_HARDFORK = 'petersburg' const supportedHardforks = [ 'chainstart', 'homestead', @@ -134,7 +133,6 @@ export default class VM extends AsyncEventEmitter { this._common = new Common({ chain: DEFAULT_CHAIN, - hardfork: DEFAULT_HARDFORK, supportedHardforks, }) }