Moved to concrete-eth/concrete-geth.
Concrete is a framework for building application-specific rollups on the OP Stack.
Concrete blockchains are general-purpose EVM rollups that have been enhanced at the protocol level to meet the needs of a specific use case, like expensive cryptography, spatial indexing, or complex digital physics.
With the Concrete API, you can build a rollup that fits your needs, without having to deal with the low-level complexity of forking an Ethereum client.
With Concrete, you can:
-
Write app-specific code in any language that compiles to WASM.
-
Add supercharged, stateful precompiles to the EVM using common structures like maps, arrays, and structs.
-
Extend the structure of storage beyond the MPT (Merkle Patricia Tree) to reap huge performance gains (see below).
-
Take advantage of chain introspection to make your app-specific contracts compatible with non-enhanced chains.
-
Use existing EVM-compatible tools like MUD, Foundry, Otterscan, and more.
- Go 1.19 or higher
$GOPATH/bin
or$GOBIN
in$PATH
(more info)
Run the following command from the project root to install the concrete
CLI tool:
go install ./concrete/cmd/concrete
To get started, check out the concrete project template.
Join our Discord to get support and connect with the community.
An Autonomous World where participants use a 1985 Nintendo console to create stories together.
Mudtendo is a MUD application running on a Concrete app-chain with a built-in emulator for the NES (an old Nintendo game console).
The Quadrosol Concrete app-chain has 2D spatial indexing built-in, enabling fast spatial queries for games and other applications.
By storing indexing nodes outside the MPT and running natively in Go, it outperforms a Solidity implementation by over 6x in speed and 70% in database footprint!
This repo is built on top of op-geth, the default execution-engine for the OP Stack, which itself is built on top of geth.
Find the diff with op-geth here, the most notable changes are in core/state/statedb
and core/vm/evm.go
.
The framework-specific code is under /concrete
and the bindings to compile TinyGo precompiles to WASM are under /tinygo
.