remixsethereumcompiler.pro Open in urlscan Pro
2a06:98c1:3120::3  Public Scan

URL: http://remixsethereumcompiler.pro/
Submission: On February 24 via api from US — Scanned from NL

Form analysis 2 forms found in the DOM

<form class="remixui_permissionForm" data-id="pluginManagerSettingsPermissionForm">
  <div class="p-2"></div>
</form>

<form id="local-plugin-form">
  <div class="form-group"><label for="plugin-name">Plugin Name <small>(required)</small></label><input class="form-control" id="plugin-name" data-id="localPluginName" placeholder="Should be camelCase" value=""></div>
  <div class="form-group"><label for="plugin-displayname">Display Name</label><input class="form-control" id="plugin-displayname" data-id="localPluginDisplayName" placeholder="Name in the header" value=""></div>
  <div class="form-group"><label for="plugin-methods">Api (comma separated list of method names)</label><input class="form-control" id="plugin-methods" data-id="localPluginMethods" placeholder="Methods" value=""></div>
  <div class="form-group"><label for="plugin-methods">Plugins it can activate (comma separated list of plugin names)</label><input class="form-control" id="plugin-canactivate" data-id="localPluginCanActivate" placeholder="Plugin names" value="">
  </div>
  <div class="form-group"><label for="plugin-url">Url <small>(required)</small></label><input class="form-control" id="plugin-url" data-id="localPluginUrl" placeholder="ex: https://localhost:8000" value=""></div>
  <h6>Type of connection <small>(required)</small></h6>
  <div class="form-check form-group">
    <div class="radio"><input class="form-check-input" type="radio" name="type" id="iframe" data-id="localPluginRadioButtoniframe" value="iframe" checked=""><label class="form-check-label" for="iframe">Iframe</label></div>
    <div class="radio"><input class="form-check-input" type="radio" name="type" id="ws" data-id="localPluginRadioButtonws" value="ws"><label class="form-check-label" for="ws">Websocket</label></div>
  </div>
  <h6>Location in remix <small>(required)</small></h6>
  <div class="form-check form-group">
    <div class="radio"><input class="form-check-input" type="radio" name="location" id="none" data-id="localPluginRadioButtonsidePanel" value="sidePanel" checked=""><label class="form-check-label" for="sidePanel">Side Panel</label></div>
    <div class="radio"><input class="form-check-input" type="radio" name="location" id="none" data-id="localPluginRadioButtonmainPanel" value="mainPanel"><label class="form-check-label" for="mainPanel">Main Panel</label></div>
    <div class="radio"><input class="form-check-input" type="radio" name="location" id="none" data-id="localPluginRadioButtonnone" value="none"><label class="form-check-label" for="none">None</label></div>
  </div>
</form>

Text Content

loading compiler...




FILE EXPLORERS

GENERAL SETTINGS

Generate contract metadata. Generate a JSON file in the contract folder. Allows
to specify library addresses the contract depends on. If nothing is specified,
Remix deploys libraries automatically.
Always use Javascript VM at load
Word wrap in editor
Enable Personal Mode for web3 provider. Transaction sent over Web3 will use the
web3.personal API. Be sure the endpoint is opened before enabling it. This mode
allows a user to provide a passphrase in the Remix interface without having to
unlock the account. Although this is very convenient, you should completely
trust the backend you are connected to (Geth, Parity, ...). Remix never persists
any passphrase
Enable Matomo Analytics. We do not collect personally identifiable information
(PII). The info is used to improve the site’s UX & UI. See more about Analytics
in Remix IDE & Matomo

GITHUB ACCESS TOKEN

Manage the access token used to publish to Gist and retrieve Github contents.

Go to github token page (link below) to create a new token and save it in Remix.
Make sure this token has only 'create gist' permission.

https://github.com/settings/tokens

TOKEN:
Remove

THEMES

Dark (dark)
Light (light)
Midcentury (light)
Black (dark)
Candy (light)
Cerulean (light)
Flatly (light)
Spacelab (light)
Cyborg (dark)
Connect to a Local Plugin
Active Modules1
SOLIDITY COMPILER
DEACTIVATE

Compile solidity contracts
Inactive Modules29
BUILDBEAR
ACTIVATE

Create a Private Sandbox for various EVM and EVM-compatible blockchain networks,
complete with a Faucet and Explorer.
CELOBETA
ACTIVATE

Deploy and Run Transactions with Celo.
CODE BY WELLDONE STUDIOBETA
ACTIVATE

Multi-Chain Deploy and Run Transactions
CONTRACT DEPLOYERALPHA
ACTIVATE

Deploy a compiled contract to the same address on multiple networks
CONTRACT VERIFICATION - SOURCIFY
ACTIVATE

Solidity contract and metadata verification service
COOKBOOK.DEV
ACTIVATE

Find any smart contract, protocol, and library.
DEBUGGER
ACTIVATE

Debug transactions
DEPLOY & RUN JS ON XINGHUO BIF
ACTIVATE

Deploy JS Contracts & Run Transactions on Xinghuo BIF
DEPLOY & RUN SOLIDITY ON XINGHUO BIF
ACTIVATE

Deploy Solidity contracts & Run Transactions on Xinghuo BIF
DGIT
ACTIVATE

Manage workspaces in a git repository.
DGIT DIFF
ACTIVATE

Diff viewer for the DGIT plugin.
HARDHAT PROVIDER
ACTIVATE

Hardhat provider
KLAYTN
ACTIVATE

Deploy and Run Transactions with Klaytn.
LEARNETHBETA
ACTIVATE

Learn Ethereum with Remix!
LEXONALPHA
ACTIVATE

Compile Lexon contracts
MYTHX SECURITY VERIFICATION
ACTIVATE

Perform Static and Dynamic Security Analysis using the MythX Cloud Service
NAHMII COMPILER
ACTIVATE

Compiler for Nahmii 2.0.
ONE CLICK DAPP
ACTIVATE

A free tool to generate smart contract interfaces.
REMIXD
ACTIVATE

Using Remixd daemon, allow to access file system
RESTORE BACKUP ZIP
ACTIVATE

Use this to restore your Remix backup zip files to the new workspaces.
SOLHINT LINTER
ACTIVATE

Linter for Solidity
SOLIDITY COMPILER (XINGHUO BIF)
ACTIVATE

Compile Solidity Contracts (Xinghuo BIF)
SOLIDITY STATIC ANALYSIS
ACTIVATE

Checks the contract code for security vulnerabilities and bad practices.
SOLIDITY UNIT TESTING
ACTIVATE

Fast tool to generate unit tests for your contracts
STARKNET
ACTIVATE

Compile and deploy contracts with Cairo, a native smart contract language for
Starknet.
TENDERLY
ACTIVATE

Remix & Tenderly Project Integration. Verify Contracts. Import To Remix From
your Tenderly project.
WALLET CONNECT
ACTIVATE

Use an external wallet for transacting
ZKSYNC
ACTIVATE

Compile and deploy smart contracts for zkSync Era.
ZOKRATESBETA
ACTIVATE

ZoKrates toolbox for zkSNARKs on Ethereum

PLUGIN MANAGER PERMISSIONS

Close

NO PERMISSION REQUESTED YET.


OKCancel
Permissions

LOCAL PLUGIN

Close
Plugin Name (required)
Display Name
Api (comma separated list of method names)
Plugins it can activate (comma separated list of plugin names)
Url (required)

TYPE OF CONNECTION (REQUIRED)

Iframe
Websocket

LOCATION IN REMIX (REQUIRED)

Side Panel
Main Panel
None
OKCancel
WorkspacesCreateRenameDeletedefault_workspace - connect to localhost -
 * Create New FileCreate New FolderPublish all the current workspace files (only
   root) to a github gistLoad a local file into current workspace
    * contracts
    * scripts
    * tests
    * README.txt





Close





Close

Close
CompilerAdd a custom compiler with URLlatest local version -
soljson-v0.8.7+commit.e28d00a7.js0.8.24+commit.e11b9ed90.8.23+commit.f704f3620.8.22+commit.4fc1097e0.8.21+commit.d9974bed0.8.20+commit.a1b79de60.8.19+commit.7dd6d4040.8.18+commit.87f61d960.8.17+commit.8df45f5f0.8.16+commit.07a7930e0.8.15+commit.e14f27140.8.14+commit.80d49f370.8.13+commit.abaa5c0e0.8.12+commit.f00d73080.8.11+commit.d7f039430.8.10+commit.fc4108300.8.9+commit.e5eed63a0.8.8+commit.dddeac2f0.8.7+commit.e28d00a70.8.6+commit.11564f7e0.8.5+commit.a4f2e5910.8.4+commit.c7e474f20.8.3+commit.8d00100c0.8.2+commit.661d11030.8.1+commit.df193b150.8.0+commit.c7dfd78e0.7.6+commit.7338295f0.7.5+commit.eb77ed080.7.4+commit.3f05b7700.7.3+commit.9bfce1f60.7.2+commit.51b20bc00.7.1+commit.f4a555be0.7.0+commit.9e61f92b0.6.12+commit.27d517650.6.11+commit.5ef660b10.6.10+commit.00c0fcaf0.6.9+commit.3e3065ac0.6.8+commit.0bbfe4530.6.7+commit.b8d736ae0.6.6+commit.6c089d020.6.5+commit.f956cc890.6.4+commit.1dca32f30.6.3+commit.8dda95210.6.2+commit.bacdbe570.6.1+commit.e6f7d5a40.6.0+commit.26b700770.5.17+commit.d19bba130.5.16+commit.9c3226ce0.5.15+commit.6a57276f0.5.14+commit.01f1aaa40.5.13+commit.5b0b510c0.5.12+commit.7709ece90.5.11+commit.22be85920.5.11+commit.c082d0b40.5.10+commit.5a6ea5b10.5.9+commit.c68bc34e0.5.9+commit.e560f70d0.5.8+commit.23d335f20.5.7+commit.6da8b0190.5.6+commit.b259423e0.5.5+commit.47a71e8f0.5.4+commit.9549d8ff0.5.3+commit.10d17f240.5.2+commit.1df8f40c0.5.1+commit.c8a2cb620.5.0+commit.1d4f565a0.4.26+commit.4563c3fc0.4.25+commit.59dbf8f10.4.24+commit.e67f01470.4.23+commit.124ca40d0.4.22+commit.4cb486ee0.4.21+commit.dfe3193c0.4.20+commit.3155dd800.4.19+commit.c4cbbb050.4.18+commit.9cf6e9100.4.17+commit.bdeb9e520.4.16+commit.d7661dd90.4.15+commit.8b45bddb0.4.15+commit.bbb8e64f0.4.14+commit.c2215d460.4.13+commit.0fb4cb1a0.4.12+commit.194ff0330.4.11+commit.68ef58100.4.10+commit.f0d539ae0.4.9+commit.364da4250.4.8+commit.60cc16680.4.7+commit.822622cf0.4.6+commit.2dabbdf00.4.5+commit.b318366e0.4.4+commit.4633f3de0.4.3+commit.2353da710.4.2+commit.af6afb040.4.1+commit.4fc6fc2c0.4.0+commit.acd334c90.3.6+commit.3fc68da50.3.5+commit.5f97274a0.3.4+commit.7dab89020.3.3+commit.4dc1cb140.3.2+commit.81ae2a780.3.1+commit.c492d9be0.3.0+commit.11d673690.2.2+commit.ef92f5660.2.1+commit.91a6b35f0.2.0+commit.4dc2445e0.1.7+commit.b4e666cc0.1.6+commit.d41f8b7c0.1.5+commit.23865e390.1.4+commit.5f6c3cdf0.1.3+commit.028f561d0.1.2+commit.d0d36e30.1.1+commit.6ff4cd6
Include nightly builds
LanguageSolidityYul
EVM Versioncompiler
defaultlondonberlinistanbulpetersburgconstantinoplebyzantiumspuriousDragontangerineWhistlehomestead

Compiler Configuration

Auto compile
Enable optimization
Hide warnings
compiler is loading, please wait a few moments.Compile <no file selected>
No Contract Compiled Yet



Close

OK




Close

Close



Close


Environment
JavaScript VM (London) JavaScript VM (Berlin) Injected Web3 Web3 Providercheck
out docs to setup Environment
VM
Account
0x5B3...eddC4 (100 ether)0xAb8...35cb2 (100 ether)0x4B2...C02db (100
ether)0x787...cabaB (100 ether)0x617...5E7f2 (100 ether)0x17F...8c372 (100
ether)0x5c6...21678 (100 ether)0x03C...D1Ff7 (100 ether)0x1aE...E454C (100
ether)0x0A0...C70DC (100 ether)0xCA3...a733c (100 ether)0x147...C160C (100
ether)0x4B0...4D2dB (100 ether)0x583...40225 (100 ether)0xdD8...92148 (100
ether)

Sign a message using this account key
Gas limit
Value
WeiGweiFinneyEther
Contract
No contract compiled yet or compilation failed. Please check the compile tab for
more information.ABI file selected
No compiled contracts
or
At Address
 * Transactions recorded
   0
   

Deployed Contracts
Currently you have no contract instances to interact with.



Close





Close

Close



Close

OK


Zoom outZoom in
 * Home


Scroll to see all tabs
1





Enter to Rename, Shift+Enter to Preview



IMPORT FROM

Close

Import



Close

Close
Remix IDE


FEATURED PLUGINS

Solidity
StarkNetL2
Solhint linter
LearnEth
Sourcify
More

FILE

New File

Open Files

Connect to Localhost

Download Backup

Restore Backup

LOAD FROM:

GistGitHubIpfshttps

RESOURCES

Documentation

Gitter channel

Featuring website

Old experience

TwitterMedium blogs
14 Feb



REMIX RELEASE V0.43.0

Author: Rob Stupay


THE BIG NEWS

 * File Explorer: hover icons and right-click compile Vyper
 * Vyper compiler updates
 * Indication for external plugins
 * WalletConnect updated


FILE EXPLORER UPDATES

HOVER ICONS IN FILE EXPLORER

Now in the File Explorer, when you hover over a file or folder to the right
there will be some tool icons.

RIGHT-CLICK COMPILE VYPER FILE

So you’ve got a Vyper file in Remix and want to compile it AND you are lazy…
what are you going to do? With this release, right-click the file:

The Vyper compiler plugin will automatically load, and you can see your compiler
errors there (if you have any).


VYPER COMPILER UPDATES

The Vyper compiler now shows compiler errors in cards below the Compile button.


INDICATION FOR EXTERNAL PLUGINS

Remix has plugins that the Remix team maintains, and plugins that external teams
develop and maintain. The Remix team plugins have a green check mark, and now
external ones have a warning symbol.


WALLETCONNECT PLUGIN UPDATED

 * Updated Web3Modal SDK to v3.5.7
 * Added support for EIP-6963
 * Added support for more chains

Thanks so much to glitch-txs for contributing this PR!


BUG FIXES

 * Flattening now works with Solidity remappings. Thanks to nakul1010 for
   reporting this issue.
 * We fixed a bug for copying an address when using the External Http Provider.
   Thanks, EthanBlockson


THANK YOU, DEAR REMIX USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.43.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
01 Feb



REMIX RELEASE V0.42.0

Author: Rob Stupay


THE BIG NEWS

 * Ask GPT for Circom ZKP compiler errors/warnings
 * Default Solidity compiler set to 0.8.24 with support of ‘Cancun’ EVM
 * Workspace Template ‘Uniswap v4 Periphery’ renamed to ‘Uniswap v4 Template’


GPT HELP FOR THE ERRORS IN CIRCOM

Have you tried the Circom compiler in Remix? If not click here to load Remix
with the Circom plugin.

If you have tried it but don’t understand anything about it, check this article
article with an intro to ZK Proof terms and this article about how to use the
Circom plugin.

And finally for you dear ZK Dev or ZK Dev wannabe who has tried it out but
doesn’t understand the error messages, you can now click ASK GPT for help.


NEW DEFAULT SOLIDITY VERSION AND NEW DEFAULT EVM VERSION

Is it my fault or your fault? No, its just the default! OK stop groaning…and
notice that Remix is up to date with the coming network upgrade.

The default compiler is Cancun and the default Solidity version is 0.8.24.


UNISWAP V4 TEMPLATE

We have had the Uniswap v4 template in Remix — but it was previously called
Uniswap v4 Periphery. So now we have renamed it to something that you can
identify more easily.

To load this template in the File Explorer, click the hamburger menu and then
select Create. You’ll see it in the Uniswap V4 section.


THANK YOU LUSCIOUS REMIX USERS AND V4 HACKERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.42.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
11 Jan



REMIX RELEASE V0.40.0

Author: Aniket


THE BIG NEWS

 * A Revamped Vyper compiler that compiles the latest version and more!
 * Circom v2.1.6 support
 * Uniswap v4 templates


VYPER VYPER AND VYPER -> A NEW VYPER COMPILER FOR REMIX!

Remix has teamed up with ApeWorX for a new Vyper compiler. This means you can
compile Vyper contracts in Remix and use not only the latest version but nearly
all Vyper versions!

Compiling is either done remotely or locally. And to compile a file you need to
have a Vyper file as the active file in the File Explorer, which you can get by
clicking the Clone Vyper examples repository button.

REMOTE COMPILER

The remote compilation is done using our remote containerized service that
supports the official Vyper plugin for the Ape framework that ApeWorX maintains.

LOCAL COMPILER

The local compilation can be done by connecting Remix Online IDE to your file
system with Remixd and then running a docker container that runs the Ape
framework. Click here for more info about this setup.

In the near future, (spoiler alert!!!) a major update is coming to Remix
Desktop, you’ll be able to run everything locally — both Remix, and the new
Vyper compilers (still in Docker, of course).

SPECIFYING VYPER & EVM VERSIONS

To specify the version of Vyper or the EVM version, add a comment at the top of
your .vy code like in the example below:

HERPETOLOGICALLY* CURIOUS? LEARN VYPER!

(*the study of snakes, not herpes)
Don’t know about Vyper? Check out some Vyper files by hitting the clone button.
This will load a repo full of Vyper files, so slither over to the File Explorer
to check them out. Take note: this repo could take up to a minute to load, so
take a deep breath or two, they’ll load.

To learn more about Vyper, read through the Vyperlang Readthedocs, check
Snekmate, and join the Vyper discord server!

A URL TO LOAD REMIX WITH THE VYPER COMPILER ACTIVATED

Want to send someone to Remix with the Vyper plugin loaded and active? Use this
url: https://remix.ethereum.org/#activate=vyper

VIEWING COMPILER ERRORS

When there are compiler errors in the Vyper plugin, the icon will have a warning
icon. Mouseover the icon to get the error with its line number.


SCARED OF UNISWAP V4??

If you want to start playing with Uniswap v4, come check out our new Uniswap v4
templates. Check them out, and if you get confused, ask ChatGPT for help.

Tip: you can ask ChatGPT in the Remix console by starting with “gpt”.
For example:

gpt when would you use a uniswap multisigswap contract?

LOADING UNISWAP TEMPLATES

Go to the hamburger menu to create a new Workspace.

In the Create Workspace modal’s template select box, choose one under the
Uniswap V4 section.

To load these templates, Remix clones them from their repos, so it can take
10–60 seconds for them to load, depending on your connection speed.

These Uniswap v4 files are coming from Cookbook.dev. As such, the Remix
COOKBOOK.DEV plugin is activated, and it will write the template files into the
File Explorer. But because these files are coming from outside Remix, you will
need to agree to the Cookbook.dev plugin writing files into the File Explorer.

Its a bit easier to check the Remember this choice checkbox.

HOOKBOOK MULTISIGSWAPHOOK

The MultiSigSwapHook contract can be used when you want to ensure a swap
operation on Uniswap (or a similar platform) has been approved by multiple
parties before it can be executed.

BREAKTHROUGH LABS UNISWAP V4 HOOKS

for more info about these files see:
https://github.com/Breakthrough-Labs/Uniswapv4Hooks

UNISWAP V4 PERIPHERY

Uniswap v4 is a new automated market maker protocol that provides extensibility
and customizability to pools. v4-periphery hosts the logic that builds on top of
the core pool logic like hook contracts, position managers, and even possibly
libraries needed for integrations. The v4-periphery contracts in this repository
are still in development, and further periphery contracts have not yet
been built.

see: https://github.com/Uniswap/v4-periphery


CIRCOM V2.1.6

In Remix you can now run the latest Circom compiler. So take your ellyptic
curves through Circom’s latest.


THANK YOU REMIX USERS — WITH OR WITHOUT HERPETOLOGICAL KNOWLEDGE

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.40.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
19 Dec



CIRCOM IN REMIX PART 2: HOW TO USE

Author: Rob Stupay

The Remix Circom plugin is a great tool for getting started with writing ZK
circuits in Circom. The Remix innovation here is that we’ve got the Circom
compiler working in the browser. This makes playing with Circom easier because…
well, because it’s Remix, so no setup is needed. Just keep in mind that the
plugin is in alpha, so it’s not for production use yet.

Under the hood, the Remix Circom plugin’s GUI (graphical user interface)
organizes your data into the correct parameters for the methods in snarks.js, so
you don’t need to dig too deep there unless you want to. And if you want to, we
also have scripts you can adapt that use snarks.js and ethers.js.

LINK TO PART 1

Part 1 Circom in Remix article (the definitions)


COMPONENTS OF THE PROOF

At a high level, to make a proof with a ZK system, you need:

 1. The inputs — both private and public
 2. The circuit
 3. The witness
 4. The constraint system
 5. The signals ( the inputs, outputs, and intermediary steps of the circuit)
 6. A special set of random numbers (from the trusted setup- the Perpetual
    Powers of Tau ceremony)

If these components don’t make sense, please see Part 1 of this series.

The proof can be generated and verified, and it can be submitted for on-chain
verification via a Solidity file which we will be generating later in
this article.

Let’s take a walk through the Circom compiler plugin.


REMIX’S SIMPLEST ZK SNARK EXAMPLE

Let’s choose a very basic example to start with. Remix has added some Workspace
Templates for Circom. When you choose one of these templates, the Circom
compiler will automatically activate.

To see these templates, create a new Workspace by clicking on the hamburger menu
in the File Explorer and choosing the Create option. Then, in the modal that
comes up, click the Choose a template pulldown menu, and the following list will
come up:

The most basic Circom example file is the simple.circom file which is located in
the Semphore template. So to start, choose this template.

Here’s the compiler:

In order to use the plugin you will need to have a .circom file active in the
File Explorer, so choose simple.circom.

Then go to the Circom compiler and the compile button can be used.

> Note: If the active file in the Editor is not a Circom file, the compile
> button in the plugin cannot be clicked.

You can either hit the Compile button or use the Ctrl+S keyboard shortcut as
shown above in the tool-tip. The compilation result will be stored in a .wasm
file in the .bin directory that is inside the circuits folder.

Next, create the R1CS constraint file by clicking the button.

Generate R1CS button with tooltip

This creates the simple.r1cs file in the .bin directory. Generating the R1CS
file can take longer than compiling the .circom file.

COMPUTE WITNESS

The prover inputs their private info for the circuit in this section.

Now dial down the Compute Witness caret.

I’ve input the following:

So my private info is 3 & 4.

When I hit the compute button, a .wtn file is created in the .bin folder.


FILES GENERATED SO FAR

We now have:

 * simple.wasm (the compilation result)
 * simple.r1cs (the constraint file)
 * simple.wtn (the witness file)

Notice there is no proof file, nor have we generated a Solidity file for doing
an on-chain verification of the proof.

Currently in the Remix Circom plugin, these steps can only be done by
running scripts.


USING THE SCRIPTS IN THE CIRCOM COMPILER

Let’s switch to a different Workspace Template to go through the run_setup and
run_verification scripts.

Hash Checker template has fewer parameters in its scripts than the Semphore
template does.

So load this template up.

BEFORE RUNNING A SCRIPT

Scripts need a compiled circom file to work with. So before running a script in
this plugin, compile calculate_hash.circom (by making it the active file in the
Editor and then in the Circom plugin’s GUI, by clicking the compile button).

This will generate the file calculate_hash.wasm in the ./circuits/.bin folder.


RUNNING SCRIPT RUN_SETUP.TS

MAKES THE R1CS FILE

First, the run_setup.ts script creates the .r1cs file in the circuits/.bin
directory, just like the Generate R1CS button did.

The setup script will then take the special randomness of the Powers of Tau
ceremony, and will contribute to it and add its phase2 as described in the
snarks.js docs and in the Circom docs.

> The trusted setup consists of two parts:

> • The powers of tau, which is independent of the circuit
> • The phase 2, which depends on the circuit

> - from Circom Docs

MAKES THE VERIFICATION KEYS

The verification keys will be used for verifying the proof.
The script generates and stores them in this file:
zk/build/verification_key.json

MAKES THE FILE FOR ONCHAIN VERIFICATION

The run_setup.ts script will also generate the Solidity file for verifying the
proof. It will also be saved in this directory.

ZK_SETUP.TXT

Finally the zk_setup.txt will be generated and saved in this directory, which
will be used for getting the zkey_final parameter when running
run_verification.ts.

Here’s what the build folder will contain after running run_setup.ts:


RUNNING RUN_VERIFICATION.TS

This script makes the proof and then will run the verification.

The inputs for the proof include:

 1. The private information: these are hard coded on lines 31–34
 2. The other preliminary files that were created in run_setup.ts, including:
    calculate_hash.r1cs, calculate_hash.wasm, zk_setup.txt,
    verification_key.json

It will create the proof as well as the public signals with this line:

    const { proof, publicSignals } = await snarkjs.groth16.prove(zkey_final, wtns);

And then, it will take the proof, the public Signals, and will verify them with
this line:

 const verified = await snarkjs.groth16.verify(vKey, publicSignals, proof, logger);

From here, see if you can use the zk_verifier.sol file. Also, try inputting a
wrong value into the proof (see line 36) to see what will happen.


COMMENTS WELCOME AND NEEDED

The Remix Circom plugin is in Alpha, so please send your comments.

One of our next updates to the plugin will a button for generating a proof. More
Remix Circom Workspace templates are also coming.

Join our Discord server and comment there, or send us an email to
remix@ethereum.org! We will have articles about each of the Circom Remix
Workspaces: Semaphore, Hash Checker, and the Rate Limiting Nullifier later in
this series.

--------------------------------------------------------------------------------

Circom in Remix Part 2: How to use was originally published in Remix Project on
Medium, where people are continuing the conversation by highlighting and
responding to this story.

More...
19 Dec



CIRCOM IN REMIX PART 1: DEFINITIONS

Author: Rob Stupay

Remix now has a Circom Compiler for running circuits and generating ZK Proofs.
This is Part 1 of a 2-part series about Circom in Remix. This article goes
through ZKProof vocabulary and concepts so you can understand the interface of
the Remix Circom compiler. But, if you want to jump ahead, here’s the link to
Part 2.

In order to work with Circom, you should go through their docs and their ZK
Background page. Many of the definitions contained in this article are from this
excellent video, Arithmetic Circuits in Circom v2.0 by Darth Cy.


BASIC ELEMENTS OF A ZK-SNARK

A ZKProof, contains these elements:

 * Public inputs that are known to everyone
 * Private inputs that are only known to the prover, who claims that these are
   the right inputs for solving the problem.
 * Problem: a function that takes private and public inputs. It is also the
   circuit, which we will get into below.
 * Prover: a person who knows the solution (the private inputs) for the problem.
   The prover runs the program that executes the circuit and generates a proof.
 * Verifier: a program or a person that takes a proof (with the public inputs),
   and can verify its validity without needing the private inputs.


ZK PROOF IS IN A MATHEMATICAL CONTEXT

The prover wants to prove to the verifier that they have a piece of information
—while hiding this information. In the context of Circom (and most ZK Proofs),
the information is a number or an encoding — like a hash of some text. And in
this mathematical context, the private input will need to satisfy a
criteria — like an equation.


THE MECHANISM OF A ZK PROOF

In a proof, there is the original, private input which is encoded and used in a
polynomial equation let’s call it f(x). Then a prover comes along and says they
have the same private input which is also encoded and used in another polynomial
equation g(x) , let’s call this the expected polynomial equation.

The verification system is a way of comparing the two equations by feeding them
arbitrary data and checking that the results are the same. The arbitrary data
must indeed be random, otherwise the proof of the private input could be faked.

Now let’s get into a technical glossary of the basics.


CIRCOM

Circom is a low-level language that describes mathematical procedures by
simplifying complex mathematical operations into circuits.


CIRCUITS

In the context of Circom, a circuit is a mathematical equation — a polynomial
equation. It is written with a series of logic gates. The logic gates of Circom
can either be where two numbers are multiplied, or where an arbitrary set of
numbers are added.

So this equation:

is rewritten as steps, where x is multiplied by x, and then the result of that
is multiplied by y, and that result is added to 6.

This is also referred to as “flattening” the equation.

Then, each step of the equation is a multiplication or summation logic gate.

By breaking down a complex equation into smaller steps, there will be
intermediary outputs. These intermediary outputs in the formula above are m1
and m2.


SIGNALS

Signals can be the original inputs, the intermediate outputs, or the
final output.


TEMPLATES

Templates are the building blocks of the Circom language. They take signals as
their inputs, and their outputs are also signals. In other languages, templates
are known as classes. But take note that in Remix, templates, used in the
context of Workspaces, are the files that load with a new Workspace.


WITNESS

The witness is generated from the signals which includes all inputs, outputs and
intermediary signals.

The intermediary signals are an ingredient in the witness to show that the
circuit went through an honest execution.

To generate the proof, only the witness is needed.


CONSTRAINTS

These are the individual steps in the computation of an equation.


R1CS — RANK 1 CONSTRAINT SYSTEM

R1CS is a protocol for organizing the constraints. For more, see this article.
Basically, R1CS flattens the equation and organizes the arrangement.


GROTH16

Groth16 is a proving system.

As described above, verification is done by sending a set of arbitrary data to
the circuit and checking that it returns the same results as the circuit derived
from the original private input.

RANDOMNESS

It is essential that the arbitrary data fed into the circuits are truly random,
otherwise a proof could be forged.

The process of getting the random points is the Trusted Setup.

Also see Darth Cy’s video about Groth16, as well as Vitalik Buterin’s
2016 article.


TRUSTED SETUP

The trusted setup is the process of creating a dataset of random numbers. It
involves any number of parties contributing randomness (also called “entropy”)
to a dataset.

The trusted setup is called a ceremony, and the specific one for Groth16 is the
Powers of Tau ceremony.

Once the randomness from the ceremony is encapsulated into a randomness file, it
is prepared for phase2.


PHASE2

Groth16 needs two types of random number sets:

 * a set from a trusted setup and that have nothing to do with a
   specific circuit
 * Phase2 number sets which are specific to a circuit

The preparation the Phase2 dataset is a process that first involves the creation
of a final ceremony file. Then the circuit you are working with is “intertwine”
and a ZKEY file is produced. The ZKEY file is required every time you want to
generate a proof for a particular circuit.

Typically, additional randomness is added to the ZKEY file.

Like French cooks who always add butter, ZKP chefs are always adding randomness
to their recipes.

Read more about Phase2 in the snarksjs docs.


GENERATING A PROOF

To generate the proof you need:

 1. Circuit-specific witness calculator — a program, which calculates witness
    from input signals (private and public)
 2. ZKey file which is a representation of the circuit
 3. input.json — a file with public and private signals.


THE BASIC BACKGROUND IS DONE!

…there’s more to study, but that’s will get you familiar with most of the terms
in the Circom compiler

So it’s time to find the proof in the pudding. And by the way, the proof in this
pudding is not in the eating, it is in evaluating the polynomials. So get your
hands out of the dessert and into some honestly random data and circuits.

Learn about how to use Remix’s Circom compiler in Part 2 , which you will
find here.

--------------------------------------------------------------------------------

Circom in Remix Part 1: Definitions was originally published in Remix Project on
Medium, where people are continuing the conversation by highlighting and
responding to this story.

More...
04 Dec



REMIX RELEASE V0.38.0

Author: Aniket


THE BIG NEWS

 * New Circom ZKP workspace templates: Hash Checker & Rate Limiting Nullifier
 * Define Solidity remappings in remappings.txt file
 * Alpha release for Solidity co-pilot
 * Run free function for any selection environment


HASH CHECKER & RATE LIMITING NULLIFIER TEMPLATES FOR CIRCOM

Building on our previous release that included a Semaphore template, we added
more templates for Circom.

To get to these templates, go to the hamburger menu in the File Explorer and
make a new workspace and in the modal that comes up choose

Now I realize Rate-Limiting Nullifier sounds like school yard epithet.

> “You’re so boring!”

> “Well you‘re a Rate-Limiting Nullifier”

But Rate Limiting Nullifiers are used for limiting the number of “something”
that a user can do — for example the number of allowable post to a form and once
that number is exceeded then the offending person’s identity is revealed. It’s
used in Zero Knowledge Proofs and it gets at the algebraic nature of Circom.
Check out these new templates!


SOLIDITY REMAPPINGS IN REMIX

Create a file called remappings.txt in the root of your workspace and place your
Solidity Remappings there. This will be especially familiar to you
Foundry users.


SOLIDITY COPILOT PLUGIN (ALPHA RELEASE)

Check out our first forays into a version of Copilot for Solidity so you can get
code suggestions in the editor.

Then start coding away and see the suggestions.

Adjust the Copilot settings in the Settings panel:

THIS PLUGIN IN ALPHA

Please join our discord and send us your comments about this plugin.


THANK YOU KNOWLEDGEABLE REMIX USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.38.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
08 Nov



REMIX RELEASE V0.37.0

Author: Rob Stupay


THE BIG NEWS

 * Circom plugin and ZKP Circom Semaphore template
 * ERC auto-complete will load the file
 * The Remix UI now translated into Spanish, French, Italian, and Simplified
   Chinese
 * Load Recent Workspaces
 * Start Coding Button
 * Updates for compatibility with OpenZeppelin v5.0 contracts


CIRCOM PLUGIN AND ZKP CIRCOM SEMAPHORE TEMPLATE

We’ve added a Semaphore Circom template which you can load by creating a new
Workspace.

When the template loads, our new Circom compiler plugin will load.

Start playing with ZK Proofs in Remix!


ERC AUTO-COMPLETE AND FILE LOADING

Remix now auto-completes all the ERC files when typing “erc”. The selected ERC
file will load in the Editor. Try this out in an empty file:

And when you select one, the ERC file will be printed out, like this:


THE REMIX IS NOW TRANSLATED INTO SPANISH, FRENCH, ITALIAN, AND SIMPLIFIED
CHINESE

The language can be chosen in three places:

 * At the top right of the Home Tab:

 * At the bottom of the Settings Panel
 * Via a URL by using the lang parameter with the language abbreviation:

Big shout-out to our Spanish (Juan David), French (Mehdi Amari), Italian
(matlemad). And another huge shout-out to @drafish who contributed the original
i18n PRs as well as doing the Chinese translations along with Mocca. (Actually
the Chinese translations have been around for a few months now).

In case you didn’t know, the Remix docs are available in Chinese, Spanish,
French, and Italian.

To contribute to the translation of documentation, go to CrowdIn — Remix
Translation our translation management platform.

To contribute to the translation of the Remix UI go to CrowdIn-Remix UI.


HOME TAB: RECENT WORKSPACES

Your recent workspaces are now listed:


HOME TAB: START CODING

The Start Coding button will open up a new Workspace called Playground and will
load a HelloWorld file in the Editor.


SUPPORTING OPENZEPPELIN V5

We’ve updated our OpenZeppelin templates and have made the necessary updates to
support the latest release of OpenZeppelin.


THANK YOU WONDEROUS REMIX USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

For future releases, we are looking for more Beta Testers. If you are interested
in helping this effort please fill out this form.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.37.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
27 Sep



REMIX RELEASE V0.36.0

Author: Rob Stupay


THE BIG NEWS

 * AI comes to Remix in the Editor and in the Solidity Compiler
 * More “Quick Fixes”
 * Ephemery and SKALE Chaos Testnet added to Deploy & Run


CHATGPT

AI IN THE EDITOR: EXPLAIN A FUNCTION AND GENERATE DOCUMENTATION

You can now ask ChatGPT to explain a function or to generate documentation for a
function — right in the editor.

But to get this to work, in the Settings panel, make sure that the box is
checked to “Enable code completion in Editor.”

Then, with a Solidity file open in the Editor, you can “right-click” in the body
of a function, which will reveal a pop-up menu. Click on the option “Explain the
function” or “Generate documentation.”

The explanation or documentation will print out in the terminal.

AI IN THE SOLIDITY COMPILER: HELP WITH SOLIDITY ERRORS

In the Solidity Compiler’s error “cards”, we’ve added a prompt: “Ask GPT” which,
when clicked, will display an explanation of the error in the terminal.


NEW “QUICK FIXES” IN THE EDITOR

In the previous release we added Quick Fixes to the Editor. In this release, we
have added more Quick Fixes to:

 * Add a specific pragma
 * Add required visibility for Fallback and Receive methods
 * Add data location (e.g. storage, memory, calldata) to constructor params,
   function params and variables
 * Add virtual or override to a function
 * Mark a contract abstract

To make a “Quick Fix”, click on the big blue dot in the Editor.

Then select the suggested correction.

The “Quick Fix” will be input into the function.


NEW ENVIRONMENTS IN DEPLOY & RUN TRANSACTIONS

We’ve added two new options in the Environments select box of the Deploy & Run
Transactions plugin. These options save you the trouble of configuring you
browser wallet with the configuration info for these chains.

EPHEMERY

Ephemery is a testnet that resets after seven days. As a result, its faucets run
without clogs. It’s a great chain for heavy testing.

For more info check https://ephemery.dev or check the Ephemery Repo.

SKALE CHAOS TESTNET

The Chaos testnet is a project of Skale. Get tokens for this chain here or here.


MORE ADDITIONS

 * In the Verification — Etherscan plugin, LineaScan is now supported, so
   contracts can now be verified there too.
 * Custom error details are now shown with Injected Web3 environment. Previously
   it was for VM only.


THANK YOU WONDEROUS REMIX USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

For future releases, we are looking for more Beta Testers. If you are interested
in helping this effort please fill out this form.

We no longer follow the discussions on Gitter, so we encourage you to move over
to our Discord server for community support. Or, send us an email at
remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.36.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
18 Aug



REMIX RELEASE V0.35.0

Author: Rob Stupay


THE BIG NEWS

 * “Quick Fixes” in the Remix Editor!
 * Take the Remix User Survey


REMIX USER SURVEY

Remix has a quick, one-minute survey to help us better understand you, dear
user, and your development needs. You can find the link on the home tab in the
Featured section. Or, just click here.


QUICK FIXES IN THE REMIX EDITOR

Now in Remix, fixing the license, the visibility, or the mutability is as easy
as a swatting flies in a cow pasture.

LICENSE FIXES

Have you ever forgotten to add the license to a file, and then got the warning,
and then forgot the syntax of the license?

In the image below, I left out the license and I get the warning and this blue
dot. If you can’t get the Quick Fix blue dot to appear, try clicking on the
number for the line where the error occurs.

When you click on the blue dot there are a few options:

And selecting the open-source license will add this update to the file:

VISIBILITY QUICK FIXES

When a file has a visibility error because the visibility is not specified, the
blue dot will appear to the left of the function.

Click on the dot, and a popup menu will appear.

MUTABILITY QUICK FIXES: VIEW

With the quick fix from the image above the file will look like this:

But the mutability has not been specified, so again the blue dot will appear.

Clicking the dot will show this popup menu:

MUTABILITY QUICK FIXES: PURE

When the pure keyword is needed for a pure function, the Quick Fix will
suggest it.

Clicking the blue dot will yield the suggestion:

And adding the suggestion will add the pure keyword.


THANK YOU WONDEROUS REMIX USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

For future releases, we are looking for more Beta Testers. If you are interested
in helping this effort please fill out this form.

We have migrated our community channels off Gitter and on to Discord. Although
we still follow the discussions on Gitter (now through Matrix), we encourage you
to move over to our Discord server. Or, send us an email at remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.35.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...
29 Jun



REMIX RELEASE V0.34.0

Author: Rob Stupay

We have entered the time of year where you can listen to your neighbors singing
in the shower as the tomatoes ripen in the garden. In this juicy Remix release,
we are singing about Linting, Verifying, and Analyzing…


0.34.0’S BIG NEWS

 * Updates for the Etherscan Verification plugin including proxy contracts!
 * Linting is added to the Static Analysis plugin
 * The File Explorer’s Workspace hamburger menu has moved to the left. Go there
   to navigate all things Workspace!
 * New scripts for verification and deployment in the hamburger menu
 * New labels in Deploy & Run showing the EVM version
 * Remix’s WalletConnect plugin is all set for WalletConnect v2.0


STATIC ANALYSIS

The Solidity Static Analysis plugin has been renamed to Solidity Analyzers. The
plugin is now packaged with the SolHint linter. The plugin also run Slither
Static analysis (if you are connecting to your filesystem with Remixd) and of
course Remix Static Analysis.

To use the plugin, a file should be already compiled.

As you can see above, Slither is disabled and will only work when you are
connecting Remix to your local filesystem with Remixd.


HAMBURGER HAMBURGER

The Workspace hamburger menu is now in the top left corner of the Workspaces
area of the File Explorer.

And, inside the hamburger we’ve added a few new options:

Add Etherscan scripts will add a folder inside the scripts folder containing
two .ts files—one for verifying, and one for getting the GUID of a verified
contract. The script for verifying has inputs for chain id and it will work for
verifying a proxy contract.

The Add contract deployer scripts also adds a couple of scripts. One script is
for automating deployment, and the other is a factory for deploying a contract
to different chains, but the contract’s address will be the same.

Go forth and run scripts!


KNOW YOUR CONTRACT’S EVM VERSION

Not all EVM versions work on all chains. We’ve added a badge in Deploy & Run
indicating which version of the EVM the contract was compiled with.


ETHERSCAN PLUGIN

For all you contract verifiers out there (which should be 100 percent of you)
we’ve made some important updates to the Etherscan plugin.

Of course, contract verification with Etherscan is not the only way to verify a
contract. You can also use the Sourcify service (when deploying, check the box
to publish to IPFS and the Sourcify service will be able to verify your
contracts) or use the Remix Sourcify plugin. But I digress…

The Etherscan plugin has been renamed and is now called:
Contract Verification — Etherscan.

You can access it from the Plugin Manager.

As of this release, in addition to Ethereum Mainnet and testnets, this plugin
now supports verification on other chains through the Etherscan family of block
explorers. But you will need to choose one of the chains where the block
explorer has an API key, and then you will need to input your API key.

For example, if you are trying to verify on an L2 chain like Optimism, you’ll
need to create an account on https://optimistic.etherscan.io/ and then get that
site’s API key. Not all of the block explorers made by Etherscan have API keys.
The Remix Contract Verification — Etherscan plugin only works where you can log
in to that block explorer to get an API key.

Once the API key is input, the plugin’s homepage is opened for verification.

The network is selected in Deploy & Run, and in your browser’s wallet (if you’re
using one). You will need to have compiled the contract, and of course, you will
also need to have deployed the contract.

VERIFYING CONTRACTS WITH CONSTRUCTOR ARGUMENTS

As of this release, you no longer need to input the encoded constructor
arguments.

You can input them just like you did when you deployed the contract.

VERIFYING A PROXY CONTRACT

Upgradeable contracts using the UUPS design pattern can now be verified in the
Etherscan plugin. Before verifying a proxy contract, the implementation contract
must already be verified.

THE IMPLEMENTATION CONTRACT PART

If you haven’t already verified the implementation contract, don’t check the
proxy box when verifying the implementation. Just verify the implementation
contract like a standard contract.

Then, and only then should you continue to verify the proxy contract.

THE PROXY CONTRACT PART

To verify the proxy (just after you’ve verified the implementation):

Click the It’s a proxy contract address checkbox.

Copy the implementation contract’s address from the Contract Address box and
paste it into the Expected Implementation Address box.

Then, paste the proxy contract address into the Contract Address box and
click Verify.

GENERATE VERIFICATION SCRIPTS

Clicking the Generate Verification Scripts button will create a folder named
etherscan in the Workspace’s scripts folder that contains .ts files for
verifying and returning the receipt status.


UPDATE TO THE WALLETCONNECT PLUGIN

As of 28 June 23, DApps and wallets that use WalletConnect will need to use
WalletConnect v2.0. The Remix WalletConnect plugin is ready for the upgrade.
Keep in mind that not all mobile wallets will work when the upgrade has
happened. Check for news about this on your mobile wallet’s docs, or here.


THANK YOU REMIX SUMMERTIME USERS

Please report any problems you find in Remix. And, as always, please send us any
suggestions about changes you’d like to see in Remix, or any functionality you
think would be useful to add.

For future releases, we are looking for more Beta Testers. If you are interested
in helping this effort please fill out this form.

We have migrated our community channels off Gitter and on to Discord. Although
we still follow the discussions on Gitter (now through Matrix), we encourage you
to move over to our Discord server. Or, send us an email at remix@ethereum.org!

--------------------------------------------------------------------------------

Remix Release v0.34.0 was originally published in Remix Project on Medium, where
people are continuing the conversation by highlighting and responding to this
story.

More...



Clear console
0
listen on network

- Welcome to Remix 0.21.4 -

You can use this terminal to:
 * Check transactions details and start debugging.
 * Execute JavaScript scripts:
   - Input a script directly in the command line interface
   - Select a Javascript file in the file explorer and then run
   \`remix.execute()\` or \`remix.exeCurrent()\` in the command line interface
   - Right click on a JavaScript file in the file explorer and then click
   \`Run\`

The following libraries are accessible:
 * web3 version 1.5.2
 * ethers.js
 * remix (run remix.help() for more info)


>



Close






Close





Close

Close





WELCOME TO REMIX IDE

×
Click to launch the Home tab that contains links, tips, and shortcuts..
 *  
 *  
 *  



BackNext