Compilation

Compilation

FlowNodes compiles your smart contracts entirely in the browser using a WebAssembly build of solc 0.8.24. There is no server involved in compilation — your source code never leaves your browser until you explicitly deploy or run a security scan.

solc 0.8.24 + Optimizer

The compiler is loaded once from a CDN on first use and cached in the browser. Subsequent compilations use the cached WASM binary — typically <100ms for most contracts.

Compiler settings

SettingValueNotes
Compiler version0.8.24Latest stable. Fixed across all projects.
Optimizer enabledYesReduces deployment gas.
Optimizer runs200Balanced for deployment vs call gas. Configurable per project.
EVM versioncancunLatest EVM. Enables TSTORE/TLOAD opcodes.
via IRfalseStandard codegen (faster compilation)
LicenseMITAdded to every generated file header.

Standard JSON input format

FlowNodes uses the Standard JSON input/output interface of solc. Here's the input schema generated for a simple ERC-20:

json
{
  "language": "Solidity",
  "sources": {
    "MyToken.sol": {
      "content": "// SPDX-License-Identifier: MIT\n..."
    }
  },
  "settings": {
    "optimizer": { "enabled": true, "runs": 200 },
    "evmVersion": "cancun",
    "outputSelection": {
      "*": {
        "*": ["abi", "evm.bytecode", "evm.deployedBytecode", "metadata"]
      }
    }
  }
}

Auto-compile

Compilation is triggered automatically 800ms after the last canvas change. You can also click the Compile button in the top bar, or press ⌘↵ to force an immediate compile.

Note
Compilation is always free. It runs in your browser and does not consume credits.

Reading compile errors

Compilation errors and warnings are shown in the Problems tab of the bottom console. Open it with ⌘J or by clicking the error count badge in the top bar.

Error severity levels

SeverityColourMeaning
errorRedCompilation failed. The contract cannot be deployed until fixed.
warningAmberCompilation succeeded but there may be a correctness issue.
infoBlueInformational message. No action required.

Common errors and fixes

ErrorCauseFix
DeclarationError: Identifier not foundA block references a variable or contract not in scopeConnect the missing block or check the block order
TypeError: Function has override but no base functionoverride keyword used without a base classConnect an interface or base contract block
ParserError: Expected ';'Codegen produced invalid SolidityClick AI Fix — this is usually a FlowNodes codegen bug
Warning: Unused variableA variable is declared but never readRemove it or use it to suppress the warning
Warning: SPDX license identifier not providedLicense comment missingThis never happens in FlowNodes (MIT is always added)

AI Fix button

Each error in the Problems panel has an AI Fix button. Clicking it pre-fills the AI prompt with the error message and focuses the AI panel. The AI will attempt to modify the graph to resolve the error.

Tip
If you get a codegen error (the generated Solidity itself has a syntax error), please report it. FlowNodes codegen bugs are rare but important to fix. Include the block configuration that caused it.

ABI & bytecode export

After successful compilation, the ABI and bytecode are available in several ways:

Code Preview

Press ⌘. or click the </> icon in the top bar to open the Code Preview panel. This shows the generated Solidity with Monaco Editor syntax highlighting. You can copy the full source from here.

ABI JSON

On the Deployed Contracts page (/contracts/[address]), the ABI is displayed in full and can be copied. This is the same ABI submitted to Etherscan for verification.

Programmatic access

The compiled output is also persisted to your project via the canvas API. You can retrieve it using the FlowNodes API (coming soon) or by downloading it from the contract detail page.

Contract size limits

Ethereum has a 24,576 byte (EIP-170) contract size limit. FlowNodes shows the compiled bytecode size as a percentage of this limit in the Output tab. If your contract exceeds the limit, you'll see acontractSizeOk: false check in the Deploy Modal.

Warning
If your contract approaches the 24KB limit, consider using the Via IR compiler setting, splitting functionality across multiple contracts, or using external libraries.
Compilation — FlowNodes Docs | FlowNodes