Creates a bridge of SNT into Optimism
Go to file
Ricardo Guilherme Schmidt 74f3fd88a5 Improve coverage 2023-10-06 13:39:34 -03:00
.github refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.vscode refactor: move to foundry template 2023-09-26 16:58:36 +02:00
contracts Improve claimTokens 2023-10-06 12:59:54 -03:00
lib chore(deps): update minime dependency (#14) 2023-10-06 08:26:32 +02:00
script refactor: rename `SNTPlaceHolder` to `SNTOptimismController` (#19) 2023-10-06 10:03:43 +02:00
scripts add bridge code 2023-07-17 13:59:00 -03:00
test Improve coverage 2023-10-06 13:39:34 -03:00
.editorconfig refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.env.example refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.gas-snapshot Improve coverage 2023-10-06 13:39:34 -03:00
.gitattributes refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.gitignore refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.gitmodules refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.prettierignore chore: prettier ignore `contracts.json` 2023-10-05 12:37:16 +02:00
.prettierrc.yml refactor: move to foundry template 2023-09-26 16:58:36 +02:00
.solhint.json refactor: move to foundry template 2023-09-26 16:58:36 +02:00
PROPERTIES.md refactor: move to foundry template 2023-09-26 16:58:36 +02:00
README.md docs: update README with deployment instructions (#20) 2023-10-06 10:40:35 +02:00
codecov.yml refactor: move to foundry template 2023-09-26 16:58:36 +02:00
contracts.json chore: prettier ignore `contracts.json` 2023-10-05 12:37:16 +02:00
foundry.toml refactor: move to foundry template 2023-09-26 16:58:36 +02:00
index.js add bridge code 2023-07-17 13:59:00 -03:00
package.json refactor: move to foundry template 2023-09-26 16:58:36 +02:00
pnpm-lock.yaml refactor: move to foundry template 2023-09-26 16:58:36 +02:00
remappings.txt refactor: move to foundry template 2023-09-26 16:58:36 +02:00
slither.config.json refactor: move to foundry template 2023-09-26 16:58:36 +02:00

README.md

Bridging SNT with the Optimism SDK

This repository contains code to deploy SNT in Ethereum and bridge it to optimism.

Scripts:

$ MNEMONIC=$YOUR_MNEMONIC forge script script/DeployBridge.s.sol --fork-url $YOUR_RPC_URL --broadcast

Where

  • $YOUR_MNEMONIC is the mnemonic that contains the account from which you want to deploy. The deploy script will use the first account derived from the mnemonic by default.
  • $YOUR_RPC_URL is the RPC endpoint of the node you're connecting to.

You can omit the --broadcast option to simulate the deployment before actually performing it.

All tokens, even on Optimism, are MiniMeToken variant, meaning they save all account's balance change on Ethereum state for democracy contract ballots. Learn more about MiniMeToken on the official repository vacpp2p/minime.

Differences from regular MiniMeToken

The MiniMeToken used in this repository is a fork of the original. To learn about the differences between the fork and the upstream repository, head over to its documentation.

  1. There are 2 functions to mint/burn, one is mint() & generateTokens(), and other is burn() & destroyTokens(). One come from MiniMeToken inheritance, and other comes from IOptimismMintableERC20 inheritance. See more on point 2.
  2. MiniMeToken controller (SNTPlaceHolder) is also deployed on Optimism, and it could be replaced by another controller that could call generateToken function, potentially breaking the bridge, however, if we don't do this change, than it should be fine.
  3. MiniMeTokenFactory used in createCloneToken create new MiniMeTokens that are one inheritance down from OptimismMintableMiniMeToken, this is fine, just strange, but it couldnt be different, as clone tokens are not suppoused to be minted by bridge. This function is not even used by us.
  4. MiniMeToken version() had to be renamed to token_version() due a conflict on inheritance and requirements of Optimism. Semver inheritance uses version() and this seems a requirement for Optimism.