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
| Setting | Value | Notes |
|---|---|---|
| Compiler version | 0.8.24 | Latest stable. Fixed across all projects. |
| Optimizer enabled | Yes | Reduces deployment gas. |
| Optimizer runs | 200 | Balanced for deployment vs call gas. Configurable per project. |
| EVM version | cancun | Latest EVM. Enables TSTORE/TLOAD opcodes. |
| via IR | false | Standard codegen (faster compilation) |
| License | MIT | Added 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:
{
"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.
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
| Severity | Colour | Meaning |
|---|---|---|
| error | Red | Compilation failed. The contract cannot be deployed until fixed. |
| warning | Amber | Compilation succeeded but there may be a correctness issue. |
| info | Blue | Informational message. No action required. |
Common errors and fixes
| Error | Cause | Fix |
|---|---|---|
| DeclarationError: Identifier not found | A block references a variable or contract not in scope | Connect the missing block or check the block order |
| TypeError: Function has override but no base function | override keyword used without a base class | Connect an interface or base contract block |
| ParserError: Expected ';' | Codegen produced invalid Solidity | Click AI Fix — this is usually a FlowNodes codegen bug |
| Warning: Unused variable | A variable is declared but never read | Remove it or use it to suppress the warning |
| Warning: SPDX license identifier not provided | License comment missing | This 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.
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.
