Commit 81bec775 authored by George Hotz's avatar George Hotz

update the readme and revert the cannon

parent 3a195ba5
<!--![cannon](https://upload.wikimedia.org/wikipedia/commons/8/80/Cannon%2C_Château_du_Haut-Koenigsbourg%2C_France.jpg)--> <!--![cannon](https://upload.wikimedia.org/wikipedia/commons/8/80/Cannon%2C_Château_du_Haut-Koenigsbourg%2C_France.jpg)-->
<!-- ![cannon](https://cdn1.epicgames.com/ue/product/Featured/SCIFIWEAPONBUNDLE_featured-894x488-83fbc936b6d86edcbbe892b1a6780224.png) --> ![cannon](https://cdn1.epicgames.com/ue/product/Featured/SCIFIWEAPONBUNDLE_featured-894x488-83fbc936b6d86edcbbe892b1a6780224.png)
![cannon](https://static.wikia.nocookie.net/ageofempires/images/8/80/Bombard_cannon_aoe2DE.png/revision/latest/top-crop/width/360/height/360?cb=20200331021834) <!--![cannon](https://static.wikia.nocookie.net/ageofempires/images/8/80/Bombard_cannon_aoe2DE.png/revision/latest/top-crop/width/360/height/360?cb=20200331021834)-->
The cannon (cannon cannon cannon) is an on chain interactive fraud prover The cannon (cannon cannon cannon) is an on chain interactive fraud prover
...@@ -15,7 +15,7 @@ It's half geth, half of what I think truebit was supposed to be. When it's done, ...@@ -15,7 +15,7 @@ It's half geth, half of what I think truebit was supposed to be. When it's done,
``` ```
minigeth -- A standalone "geth" capable of computing a block transition minigeth -- A standalone "geth" capable of computing a block transition
mipigeth -- This geth compiled for MIPS. Outputs a binary that's run and mapped at 0x0 mipigeth -- minigeth compiled for MIPS. Outputs a binary that's run and mapped at 0x0
mipsevm -- A MIPS runtime in the EVM (see also contracts/) mipsevm -- A MIPS runtime in the EVM (see also contracts/)
``` ```
...@@ -25,19 +25,13 @@ mipsevm -- A MIPS runtime in the EVM (see also contracts/) ...@@ -25,19 +25,13 @@ mipsevm -- A MIPS runtime in the EVM (see also contracts/)
2. Compile embedded minigeth to MIPS (done) 2. Compile embedded minigeth to MIPS (done)
3. Get embedded minigeth to verify a block using the oracle (done) 3. Get embedded minigeth to verify a block using the oracle (done)
4. Merkleize the state of the embedded machine 4. Merkleize the state of the embedded machine
5. Write Solidity code to verify any MIPS/oracle transitions 5. Write Solidity code to verify any MIPS/oracle transitions (done)
6. Write binary search engine to play on chain game 6. Write binary search engine to play on chain game (done)
...and then there's more stuff, but just that for now.
The system is checking an embedded block in CI now The system is checking an embedded block in CI now
* TODO: Fix missing trie nodes [see issue](https://github.com/geohot/cannon/issues/1)
* TODO: Stub all syscalls after it's "booted"
## TODO ## TODO
* Finish and test the MIPS state transition function in contracts/MIPS.sol
* Get minigeth running in Solidity MIPS emulator with reasonable performance (Go code using EVM with native memory) * Get minigeth running in Solidity MIPS emulator with reasonable performance (Go code using EVM with native memory)
* Add merkleization for MIPS ReadMemory and WriteMemory * Add merkleization for MIPS ReadMemory and WriteMemory
...@@ -49,9 +43,19 @@ The system is checking an embedded block in CI now ...@@ -49,9 +43,19 @@ The system is checking an embedded block in CI now
## State Oracle API ## State Oracle API
Preimage(hash) -> value # hash(value) == hash On chain / in MIPS, we have two oracles
* Input(index) -> value
* Preimage(hash) -> value # hash(value) == hash
We generate the Preimages in x86 using geth RPC
* PrefetchAccount
* PrefetchStorage
* PrefetchCode
* PrefetchBlock
PrefetchAccount, PrefetchStorage, PrefetchCode can be NOP in the VM These are NOP in the VM
## License ## License
......
../data/
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment