Git Product home page Git Product logo

arbiter's Introduction

arbiter

Expanding the EVM tooling ecosystem.

Github Actions codecov Twitter Badge

The Ethereum blockchain's execution environment, the Ethereum Virtual machine (EVM), contains a rich collection of decentralized applications. The EVM is stack machine that sequentially executes opcodes sent to it by users and smart contracts. Arbiter is a highly configurable rust interface over revm which is a Rust implementation of the EVM stack machine logic. The purpose of Arbiter is to interface with arbitrary agents and contracts and run this all directly on a blazing-fast simulated EVM.

Financial engineers need to study a wide array of complex portfolio management strategies against thousands of market conditions, contract parameters, and agents. To configure such a rich simulation environment on a test network could be possible, but a more efficient choice for getting the most robust, yet quick, simulations would bypass any local networking and use a low level language's implementation of the EVM.

Arbiter is being primarily developed to be a tool in evaluating economic and game theoretic security of DeFi applications.

Arbiter can be used for:

  • Evaluating the game theoretic and composable security of smart contracts in production environments (security firms and academics)
  • investigating risk, capital efficiency, rebalancing strategies, and portfolio replication (or performance). (LPs, funds, quants, traders)
  • Engineering and testing new financial products built on top of more primitive financial products (DeFi firms and academics)

Features:

For our next beta release, we will be focusing on the following features:

Build From Source

First, clone the repository to your local environment so

git clone https://github.com/primitivefinance/arbiter.git
cd arbiter

Install arbiter on your system:

cargo install --path . --force

With the arbiter binary generated, you can run commands such as:

arbiter simulate uniswap

Generating Docs

To see the documentation for Arbiter, after cloning the repo, you can run:

cargo doc --workspace --no-deps --open

This will generate and open the docs in your browser. From there, you can look at the documentation for each crate in the Arbiter workspace.

Including More Contracts

In the contracts/ directory you can add additional smart contracts or regenerate Rust bindings. Once that is done, you will want to make sure the bindings are generated in the script:

./bind.sh

You will need to add the relevant directory for your new contracts to the script above and make sure they are also handled by forge install. We look forward to improving upon this UX in the future.

At the moment, this only builds the bindings for the contracts in the lib/arbmod/contracts/ and lib/portfolio/contracts. You can of course add an additional directory of contracts in lib/. Just be sure to include it when you generate bindings!

Contributing

See our Contributing Guidelines

arbiter's People

Contributors

0xjepsen avatar autoparallel avatar 0xestelle avatar ts0yu avatar kinrezc avatar pynchmeister avatar possibilityresult avatar funkycadet avatar dependabot[bot] avatar sabnock01 avatar alexangelj avatar jeamick avatar pranavpatilsce avatar audityourcontracts avatar makischristou avatar libevm avatar omahs 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.