Giter VIP home page Giter VIP logo

memview-demo's Introduction

Memview Demo

License CI Status Coverage Status

The Solidity library MemView is a very powerful tool for parsing and validating arbitrary data. The purpose of this repo is to demonstrate the use of MemView in a smart contract. The contracts are a POC of a bridge contract that accepts an arbitrary bytes payload and parses it to execute different kinds of transactions (e.g., ERC20 transfers, NFT transfers or arbitrary contract calls). The code also demonstrates nested MemViews, which are useful for parsing complex data structures. MemView also allows for very flexible data handling, making it easy to add more functionality through upgrades.

Build and Test

On the project root, run:

$ npm i                 # install dependencies
$ npm run compile       # compile contracts and generate typechain
$ npm test              # run tests

optional:

$ npm run coverage      # run test coverage tool

To run foundry tests:

$ forge build           # compile contracts
$ forge test            # run foundry tests

Etherscan verification

To try out Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Goerli.

In this project, copy the .env.example file to a file named .env, and then edit it to fill in the details. Enter your Etherscan API key, your Infura API key, and the mnemonic phrase of the account which will send the deployment transaction. With a valid .env file in place, first deploy your contract:

npx hardhat run scripts/deploy.ts --network goerli

Then, copy the deployment address and paste it in to replace DEPLOYED_CONTRACT_ADDRESS in this command:

npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!"

Performance optimizations

For faster runs of your tests and scripts, consider skipping ts-node's type checking by setting the environment variable TS_NODE_TRANSPILE_ONLY to 1 in hardhat's environment. For more details see the documentation.

memview-demo's People

Contributors

gretzke avatar

Stargazers

Zero Ekkusu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.