Merge pull request #1461 from bakaoh/issue1457

Warn user at deploy time if contract size above ethereum/EIPs#170
pull/1/head
yann300 7 years ago committed by GitHub
commit 446cfb6a90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 21
      src/app/tabs/run-tab.js

@ -18,6 +18,7 @@ var Recorder = require('../../recorder')
var addTooltip = require('../ui/tooltip') var addTooltip = require('../ui/tooltip')
var css = require('./styles/run-tab-styles') var css = require('./styles/run-tab-styles')
var MultiParamManager = require('../../multiParamManager') var MultiParamManager = require('../../multiParamManager')
var modalDialog = require('../ui/modaldialog')
function runTab (opts, localRegistry) { function runTab (opts, localRegistry) {
/* ------------------------- /* -------------------------
@ -421,6 +422,7 @@ function contractDropdown (events, self) {
return return
} }
var forceSend = () => {
var constructor = txHelper.getConstructorInterface(selectedContract.contract.object.abi) var constructor = txHelper.getConstructorInterface(selectedContract.contract.object.abi)
self._deps.filePanel.compilerMetadata().metadataOf(selectedContract.name, (error, contractMetadata) => { self._deps.filePanel.compilerMetadata().metadataOf(selectedContract.name, (error, contractMetadata) => {
if (error) return self._deps.logCallback(`creation of ${selectedContract.name} errored: ` + error) if (error) return self._deps.logCallback(`creation of ${selectedContract.name} errored: ` + error)
@ -441,6 +443,25 @@ function contractDropdown (events, self) {
}) })
} }
if (selectedContract.contract.object.evm.deployedBytecode.object.length / 2 > 24576) {
modalDialog('Contract code size over limit', yo`<div>Contract creation initialization returns data with length of more than 24576 bytes. The deployment will likely fails. <br>
More info: <a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-170.md" target="_blank">eip-170</a>
</div>`,
{
label: 'Force Send',
fn: () => {
forceSend()
}}, {
label: 'Cancel',
fn: () => {
self._deps.logCallback(`creation of ${selectedContract.name} canceled by user.`)
}
})
} else {
forceSend()
}
}
// ACCESS DEPLOYED INSTANCE // ACCESS DEPLOYED INSTANCE
function loadFromAddress () { function loadFromAddress () {
var noInstancesText = self._view.noInstancesText var noInstancesText = self._view.noInstancesText

Loading…
Cancel
Save