Skip to content

Commit ba348e9

Browse files
authored
Merge pull request #4514 from ethereum/cancun
cancun
2 parents 63ed0b5 + aa7ad95 commit ba348e9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+802
-591
lines changed

apps/remix-ide-e2e/src/tests/debugger.test.ts

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,16 +206,40 @@ module.exports = {
206206
},
207207
// depends on Should debug using generated sources
208208
'Should call the debugger api: getTrace #group4': function (browser: NightwatchBrowser) {
209+
let txhash
209210
browser
210-
.addFile('test_jsGetTrace.js', { content: jsGetTrace })
211+
.clickLaunchIcon('udapp')
212+
.perform((done) => {
213+
browser.getLastTransactionHash((hash) => {
214+
txhash = hash
215+
done()
216+
})
217+
})
218+
.perform((done) => {
219+
browser.addFile('test_jsGetTrace.js', { content: jsGetTrace.replace('<txhash>', txhash) }).perform(() => {
220+
done()
221+
})
222+
})
211223
.executeScriptInTerminal('remix.exeCurrent()')
212224
.pause(3000)
213225
.waitForElementContainsText('*[data-id="terminalJournal"]', '{"gas":"0x5752","return":"0x0000000000000000000000000000000000000000000000000000000000000000","structLogs":', 60000)
214226
},
215227
// depends on Should debug using generated sources
216228
'Should call the debugger api: debug #group4': function (browser: NightwatchBrowser) {
229+
let txhash
217230
browser
218-
.addFile('test_jsDebug.js', { content: jsDebug })
231+
.clickLaunchIcon('udapp')
232+
.perform((done) => {
233+
browser.getLastTransactionHash((hash) => {
234+
txhash = hash
235+
done()
236+
})
237+
})
238+
.perform((done) => {
239+
browser.addFile('test_jsDebug.js', { content: jsDebug.replace('<txhash>', txhash) }).perform(() => {
240+
done()
241+
})
242+
})
219243
.executeScriptInTerminal('remix.exeCurrent()')
220244
.pause(3000)
221245
.clickLaunchIcon('debugger')
@@ -495,7 +519,7 @@ const localVariable_step717_ABIEncoder = { // eslint-disable-line
495519

496520
const jsGetTrace = `(async () => {
497521
try {
498-
const result = await remix.call('debugger', 'getTrace', '0x00a9f5b1ac2c9cb93e5890ea86c81efbd36b619ef2378136ef74d8c6171ddda6')
522+
const result = await remix.call('debugger', 'getTrace', '<txhash>')
499523
console.log('result ', result)
500524
} catch (e) {
501525
console.log(e.message)
@@ -504,7 +528,7 @@ const jsGetTrace = `(async () => {
504528

505529
const jsDebug = `(async () => {
506530
try {
507-
const result = await remix.call('debugger', 'debug', '0x00a9f5b1ac2c9cb93e5890ea86c81efbd36b619ef2378136ef74d8c6171ddda6')
531+
const result = await remix.call('debugger', 'debug', '<txhash>')
508532
console.log('result ', result)
509533
} catch (e) {
510534
console.log(e.message)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
'use strict'
2+
3+
import { NightwatchBrowser } from 'nightwatch'
4+
import init from '../helpers/init'
5+
6+
module.exports = {
7+
'@disabled': true,
8+
before: function (browser: NightwatchBrowser, done: VoidFunction) {
9+
init(browser, done)
10+
},
11+
'Should execute a contract that uses transient storage #group1': function (browser: NightwatchBrowser) {
12+
browser
13+
.clickLaunchIcon('udapp')
14+
.switchEnvironment('vm-cancun') // switch to a vm that know this eip.
15+
.addFile('transient_storage.sol', { content: contractTransientStorage })
16+
.clickLaunchIcon('solidity')
17+
.setSolidityCompilerVersion('soljson-v0.8.24+commit.e11b9ed9.js')
18+
.click('*[data-id="scConfigExpander"]')
19+
.setValue('#evmVersionSelector', 'cancun') // set target compilation to cancun
20+
.clickLaunchIcon('solidity')
21+
.verifyContracts(['TestTransientStorage'])
22+
.clickLaunchIcon('udapp')
23+
.createContract('')
24+
.clickInstance(0)
25+
.clickFunction('useTransientStorage - transact (not payable)')
26+
.testFunction('last',
27+
{
28+
status: '0x1 Transaction mined and execution succeed',
29+
'decoded output': {
30+
0: 'uint256: out1 14',
31+
1: 'uint256: out2 15'
32+
}
33+
})
34+
.end()
35+
}
36+
}
37+
38+
const contractTransientStorage = `// SPDX-License-Identifier: GPL-3.0
39+
40+
pragma solidity >=0.8.2 <0.9.0;
41+
42+
contract TestTransientStorage {
43+
function useTransientStorage() public returns (uint out1, uint out2) {
44+
assembly {
45+
tstore(0, 14)
46+
tstore(1, 15)
47+
out1 := tload(0)
48+
out2 := tload(1)
49+
}
50+
}
51+
}`

apps/remix-ide-e2e/src/tests/etherscan_api.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module.exports = {
3333
.execute(() => {
3434
(document.querySelector('*[data-id="basic-http-providerModalDialogContainer-react"] input[data-id="modalDialogCustomPromp"]') as any).focus()
3535
}, [], () => {})
36-
.setValue('[data-id="modalDialogCustomPromp"]', 'https://rpc.ankr.com/eth_goerli')
36+
.setValue('[data-id="modalDialogCustomPromp"]', 'https://go.getblock.io/ee42d0a88f314707be11dd799b122cb9') // sepolia
3737
.modalFooterOKClick('basic-http-provider')
3838
.clickLaunchIcon('solidity') // compile
3939
.testContracts('Owner_1.sol', { content: verifiedContract }, ['Owner'])
@@ -42,7 +42,7 @@ module.exports = {
4242
.frame(0)
4343
.click('[data-id="home"]')
4444
.setValue('select[name="contractName"]', 'Owner')
45-
.setValue('*[name="contractAddress"]', ['0x9981c9d00103da481c3c65b22a79582a3e3ff50b', browser.Keys.TAB])
45+
.setValue('*[name="contractAddress"]', ['0xfF6A41815582cFD18855c5B90efD1d45784fd4f5', browser.Keys.TAB])
4646
.click('[data-id="verify-contract"]')
4747
.waitForElementVisible('[data-id="verify-result"]')
4848
.waitForElementContainsText('[data-id="verify-result"]', 'Contract source code already verified', 15000)

apps/remix-ide-e2e/src/tests/proxy_oz_v5_non_shanghai_runtime.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module.exports = {
2020
'Should show deploy proxy option for UUPS upgradeable contract #group1': function (browser: NightwatchBrowser) {
2121
browser
2222
.clickLaunchIcon('udapp')
23-
.switchEnvironment('vm-merge') // this runtime doesn't have the PUSH0 opcode.
23+
.switchEnvironment('vm-paris') // this runtime doesn't have the PUSH0 opcode.
2424
.clickLaunchIcon('solidity')
2525
.click('.remixui_compilerConfigSection')
2626
.setValue('#evmVersionSelector', 'paris') // set an evm version which doesn't have PUSH0 opcode.

apps/remix-ide-e2e/src/tests/runAndDeploy.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module.exports = {
3333

3434
'Should sign message using account key #group2': function (browser: NightwatchBrowser) {
3535
browser.waitForElementVisible('*[data-id="settingsRemixRunSignMsg"]')
36-
.switchEnvironment('vm-merge')
36+
.switchEnvironment('vm-paris')
3737
.pause(2000)
3838
.click('*[data-id="settingsRemixRunSignMsg"]')
3939
.pause(2000)
@@ -266,7 +266,7 @@ module.exports = {
266266
.openFile('.states/vm-shanghai/state.json')
267267
.getEditorValue((content) => {
268268
browser
269-
.assert.ok(content.includes('"latestBlockNumber": "0x02"'), 'State is saved')
269+
.assert.ok(content.includes('"latestBlockNumber": "0x2"'), 'State is saved')
270270
})
271271
},
272272

@@ -303,7 +303,7 @@ module.exports = {
303303
.pause(100000)
304304
.getEditorValue((content) => {
305305
browser
306-
.assert.ok(content.includes('"latestBlockNumber": "0x01"'), 'State is saved')
306+
.assert.ok(content.includes('"latestBlockNumber": "0x1"'), 'State is saved')
307307
})
308308
},
309309

@@ -324,7 +324,7 @@ module.exports = {
324324
.openFile('.states/vm-shanghai/state.json')
325325
.getEditorValue((content) => {
326326
browser
327-
.assert.ok(content.includes('"latestBlockNumber": "0x02"'), 'State is unchanged')
327+
.assert.ok(content.includes('"latestBlockNumber": "0x2"'), 'State is unchanged')
328328
})
329329
.end()
330330
}

apps/remix-ide-e2e/src/tests/solidityUnittests.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,8 @@ module.exports = {
339339

340340
'Basic Solidity Unit tests with local compiler #group6': function (browser: NightwatchBrowser) {
341341
browser
342+
.clickLaunchIcon('udapp')
343+
.switchEnvironment('vm-cancun')
342344
.clickLaunchIcon('solidity')
343345
.setSolidityCompilerVersion('builtin')
344346
.click('.remixui_compilerConfigSection')

apps/remix-ide-e2e/src/tests/terminal.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ module.exports = {
319319
.execute(() => {
320320
(document.querySelector('*[data-id="vm-custom-forkModalDialogContainer-react"] input[data-id="CustomForkEvmType"]') as any).focus()
321321
}, [], () => { })
322-
.click('*[data-id="CustomForkEvmType"] [value="merge"]')
322+
.click('*[data-id="CustomForkEvmType"] [value="cancun"]')
323323
.pause(5000)
324324
.modalFooterOKClick('vm-custom-fork')
325325
.waitForElementPresent({

apps/remix-ide/src/app.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {StoragePlugin} from './app/plugins/storage'
2828
import {Layout} from './app/panels/layout'
2929
import {NotificationPlugin} from './app/plugins/notification'
3030
import {Blockchain} from './blockchain/blockchain'
31-
import {MergeVMProvider, LondonVMProvider, BerlinVMProvider, ShanghaiVMProvider} from './app/providers/vm-provider'
31+
import {MergeVMProvider, LondonVMProvider, BerlinVMProvider, ShanghaiVMProvider, CancunVMProvider} from './app/providers/vm-provider'
3232
import {MainnetForkVMProvider} from './app/providers/mainnet-vm-fork-provider'
3333
import {SepoliaForkVMProvider} from './app/providers/sepolia-vm-fork-provider'
3434
import {GoerliForkVMProvider} from './app/providers/goerli-vm-fork-provider'
@@ -260,6 +260,7 @@ class AppComponent {
260260
const vmProviderSepoliaFork = new SepoliaForkVMProvider(blockchain)
261261
const vmProviderGoerliFork = new GoerliForkVMProvider(blockchain)
262262
const vmProviderShanghai = new ShanghaiVMProvider(blockchain)
263+
const vmProviderCancun = new CancunVMProvider(blockchain)
263264
const vmProviderMerge = new MergeVMProvider(blockchain)
264265
const vmProviderBerlin = new BerlinVMProvider(blockchain)
265266
const vmProviderLondon = new LondonVMProvider(blockchain)
@@ -334,6 +335,7 @@ class AppComponent {
334335
dGitProvider,
335336
storagePlugin,
336337
vmProviderShanghai,
338+
vmProviderCancun,
337339
vmProviderMerge,
338340
vmProviderBerlin,
339341
vmProviderLondon,

apps/remix-ide/src/app/providers/abstract-provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export abstract class AbstractProvider extends Plugin implements IProvider {
119119
}
120120
this.call('notification', 'alert', modalContent)
121121
}
122-
await this.call('udapp', 'setEnvironmentMode', {context: 'vm-merge'})
122+
await this.call('udapp', 'setEnvironmentMode', {context: 'vm-paris'})
123123
return
124124
}
125125

apps/remix-ide/src/app/providers/mainnet-vm-fork-provider.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ export class MainnetForkVMProvider extends BasicVMProvider {
88
super(
99
{
1010
name: 'vm-mainnet-fork',
11-
displayName: 'Mainet fork -Remix VM (London)',
11+
displayName: 'Mainnet fork - Remix VM (Cancun)',
1212
kind: 'provider',
13-
description: 'Remix VM (London)',
13+
description: 'Remix VM (Cancun)',
1414
methods: ['sendAsync', 'init'],
1515
version: packageJson.version
1616
},
1717
blockchain
1818
)
1919
this.blockchain = blockchain
20-
this.fork = 'shanghai'
20+
this.fork = 'cancun'
2121
this.nodeUrl = 'https://go.getblock.io/56f8bc5187aa4ac696348f67545acf38'
2222
this.blockNumber = 'latest'
2323
}

0 commit comments

Comments
 (0)