diff --git a/README.md b/README.md index a4ac8513..743f1ff6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,78 @@ # Dave -A fraud-proof system. +Dave is a permissionless, interactive fraud-proof system. This repo contains the Dave software suite, including support for both rollups and compute (_i.e._ a one-shot computation, like a rollup without inputs): + +* Solidity smart contracts; +* offchain testing node in Lua; +* offchain reference node in Rust; +* dispute algorithm specification. + + +## Running Dave + +To run the Lua node, follow the instructions [here](permissionless-arbitration/lua_node/README.md). + + +## What's in a name + +Our fraud-proof system is called _Dave_. +Just Dave. +It's neither an acronym nor an abbreviation, but a name. +Like most names, it should be written in lower case with an initial capital, that is, "Dave". + +Dave is permissionless. +This means anyone can participate in the consensus. +Since anyone can participate, there's the possibility of Sybil attacks, where an attacker can generate an army of fake personas and try to shift the consensus to their favour. + +Dave's security is one of N: a single honest validator can enforce the correct result. +It doesn't matter if it's you against the world. +If you're honest, Dave's got your back; you can fight a mountain of powerful, well-funded crooks and win, using a single laptop in a timely manner. + +Dave is named after the David vs. Goliath archetype. + + +## Execution Environment + +Dave uses the [Cartesi machine](https://github.com/cartesi/machine-emulator) as its execution environment. +The Cartesi machine is a RISC-V emulator. +Its onchain implementation can be found [here](https://github.com/cartesi/machine-solidity-step). +The Cartesi Machine state-transition function is implemented in two layers: the big-machine and the micro-architecture. +The former implements the RV64GC ISA, while the later implements the much smaller RV64IM ISA. +Using a technique called _machine swapping_ and leveraging good compilers, we implement in Solidity only the micro-architecture's state-transition function, while the execution environment can support a much larger set of extensions. + +Nevertheless, Dave was designed to be agnostic on its execution environment. +As long as one can provide a self-contained state-transition function, Dave will work. + + +## Algorithm + +Dave is based over the Permissionless Refereed Tournaments primitive. +The paper can be found [here](https://arxiv.org/abs/2212.12439). +The maximum delay grows logarithmically on the number of Sybils, whereas the computation resources and stakes are constant, and don't grow on the number of Sybils. + + +## Status + +The project is still in its prototyping stages. + + + +## Contributing + +Thank you for your interest in Cartesi! +Head over to our [Contributing Guidelines](CONTRIBUTING.md) for instructions on how to sign our Contributors Agreement and get started with Cartesi! + +Please note we have a [Code of Conduct](CODE_OF_CONDUCT.md), please follow it in all your interactions with the project. + +## License + +The repository and all contributions are licensed under [APACHE 2.0](https://www.apache.org/licenses/LICENSE-2.0). +Please review our [LICENSE](LICENSE) file. + +--- + +
+ Dave +
+

Dave.

+
diff --git a/doc/assets/dave-img.jpeg b/doc/assets/dave-img.jpeg new file mode 100644 index 00000000..6684a326 Binary files /dev/null and b/doc/assets/dave-img.jpeg differ diff --git a/doc/papers/Permissionless Refereed Tournaments.pdf b/doc/papers/Permissionless Refereed Tournaments.pdf new file mode 100644 index 00000000..9d4c28de Binary files /dev/null and b/doc/papers/Permissionless Refereed Tournaments.pdf differ diff --git a/permissionless-arbitration/lua_node/Dockerfile b/permissionless-arbitration/lua_node/Dockerfile index 0341b42f..1960c302 100644 --- a/permissionless-arbitration/lua_node/Dockerfile +++ b/permissionless-arbitration/lua_node/Dockerfile @@ -1,4 +1,4 @@ -FROM cartesi/machine-emulator:main +FROM cartesi/machine-emulator:0.15.2 USER 0 RUN apt-get -y update; apt-get -y install curl git; apt-get install -y procps diff --git a/permissionless-arbitration/lua_node/README.md b/permissionless-arbitration/lua_node/README.md index e28c96ac..d026fda3 100644 --- a/permissionless-arbitration/lua_node/README.md +++ b/permissionless-arbitration/lua_node/README.md @@ -1,7 +1,12 @@ -# Permissionless Arbitration (NxN) Lua prototype Node +# Dave Lua node + +The Lua node is used for testing and prototyping only. ## Run example +You need a docker installation to run the Dave Lua node. +From the path `permissionless-arbitration/lua_node`, run the following command: + ``` -docker build -t nxn_playground:latest -f Dockerfile ../../ && docker run --rm nxn_playground:latest +docker build -t dave:latest -f Dockerfile ../../ && docker run --rm dave:latest ```