0.0.12 • Published 2 months ago

@bananapus/suckers v0.0.12

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Bananapus Sucker

BPSucker.sol facilitates cross-chain token transfers between projects, using a messenger for communication and a redemption mechanism for token exchange. BPSucker only works with Optimism for now.

  • BPSucker maintains a mapping acceptFromRemote that links local project IDs to their corresponding remote project IDs.
  • BPSucker's main external functions are:
    • register: This function registers a remote project ID as the peer of a local project ID. It requires the caller to have the appropriate permissions.
    • toRemote: Send tokens from a local project to a remote project. It first checks if the remote project is valid, then redeems the tokens at the local terminal, and finally sends a message to the peer contract on the remote chain with the redeemed ETH.
    • fromRemote: This function receives tokens from a remote project. It checks if the message came from the peer contract and if the remote project is valid, then adds the redeemed funds to the local terminal and mints tokens for the beneficiary.

If you're having trouble understanding this contract, take a look at the core protocol contracts and the documentation first. If you have questions, reach out on Discord.

Install

How to install nana-suckers in another project.

For projects using npm to manage dependencies (recommended):

npm install @bananapus/suckers

For projects using forge to manage dependencies (not recommended):

forge install Bananapus/nana-suckers

If you're using forge to manage dependencies, add @bananapus/suckers/=lib/nana-suckers/ to remappings.txt. You'll also need to install nana-suckers' dependencies and add similar remappings for them.

Develop

nana-suckers uses npm (version >=20.0.0) for package management and the Foundry development toolchain for builds, tests, and deployments. To get set up, install Node.js and install Foundry:

curl -L https://foundry.paradigm.xyz | sh

You can download and install dependencies with:

npm ci && forge install

If you run into trouble with forge install, try using git submodule update --init --recursive to ensure that nested submodules have been properly initialized.

Some useful commands:

CommandDescription
forge buildCompile the contracts and write artifacts to out.
forge fmtLint.
forge testRun the tests.
forge build --sizesGet contract sizes.
forge coverageGenerate a test coverage report.
foundryupUpdate foundry. Run this periodically.
forge cleanRemove the build artifacts and cache directories.

To learn more, visit the Foundry Book docs.

Scripts

For convenience, several utility commands are available in package.json.

CommandDescription
npm testRun local tests.
npm run coverageGenerate an LCOV test coverage report.
npm run deploy:ethereum-mainnetDeploy to Ethereum mainnet
npm run deploy:ethereum-sepoliaDeploy to Ethereum Sepolia testnet
npm run deploy:optimism-mainnetDeploy to Optimism mainnet
npm run deploy:optimism-testnetDeploy to Optimism testnet
0.0.12

2 months ago

0.0.11

2 months ago

0.0.10

2 months ago

0.0.9

2 months ago

0.0.8

2 months ago

0.0.7

3 months ago

0.0.6

3 months ago

0.0.5

3 months ago

0.0.4

4 months ago

0.0.3

4 months ago

0.0.2

4 months ago

0.0.1

4 months ago