Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
Thomas Kerber 8d301583bb Emergency fix. há 3 anos
bin It works! há 3 anos
examples Add cargo archive, examples. há 3 anos
geth @ 16d7f05965 Add geth modifications, cleanup parity directories. há 3 anos
parity @ 1e594b1f15 Emergency fix. há 3 anos
parity0 Emergency fix. há 3 anos
parity1 Add geth modifications, cleanup parity directories. há 3 anos
pinocchio @ 0df1815c3e Add stuff for modified parity. há 3 anos
report @ b05bf33ec1 Final. Seriously this time. há 3 anos
solidity @ 86925593ba Move modules over to https for clonability. Bump version. há 3 anos
.gitignore Add geth modifications, cleanup parity directories. há 3 anos
.gitmodules Move modules over to https for clonability. Bump version. há 3 anos
LICENSE Add readme, license. há 3 anos
Makefile Add geth modifications, cleanup parity directories. há 3 anos
README.md Submission version. há 3 anos
cargo.tar.xz Add cargo archive, examples. há 3 anos
example.txt It works! há 3 anos
node.pwds Add stuff for modified parity. há 3 anos
node0.toml Add test chains. há 3 anos
node1.toml Add test chains. há 3 anos
testchain.json Add stuff for modified parity. há 3 anos

README.md

Verifiable Computation on Ethereum

This repository is the master repository for work done in my fourth year project at the University of Edinburgh. It integrates verifiable computation with Ethereum, as a proof-of-concept for utilising verifiable computation within smart contracts. For more details, see the report.

Installation Instructions

This project consists of modifications to multiple large software projects. Compiling all of them, and utilising them require a significant amount of software to be installed. Specifically, from a fresh installation of ArchLinux, the following needed to be executed to build to project from scratch:

# pacman -S git make base-devel pkg-config rustup wine cmake boost npm go
$ rustup default stable
$ git clone --recursive https://git.tkerber.org/uni/proj.git
$ cd proj
$ make
$ export PATH="$(pwd)/bin:$PATH"

Setup for other linux distributions may vary slightly. Setup under Windows was not attempted. Specifically, the following software is needed:

  • git
  • make
  • cmake
  • pkg-config
  • rustc and cargo
  • wine
  • boost
  • npm
  • autoconf
  • automake
  • gcc
  • g++
  • libtool
  • go

If Parity Breaks

Parity is a fast moving project, depending on libraries which are used specifically designed for it. The rust build proccess is designed to download and compile these on the fly, however this may cause the Parity authors to inadvertently break backward compatibility. This has occurred during the project, which is why the Parity master branch was merged back in.

For the case that this happens, a copy of the package cache has been supplied in cargo.tar.xz. This cache can be used as follows:

$ cp cargo.tar.xz ~/.cargo
$ cd ~/.cargo
$ rm -rf git registry
$ tar -xJf cargo.tar.xz
$ rm cargo.tar.xz

Combined with ensuring that rust 1.16.0 is used, this should ensure successful compilation of Parity.

Usage Instructions

For usage instructions, and detailed descriptions of the functionality of this project, please see the report.

Changes made

The changes made by me can are between the following commits:

  • parity: 877388953, and 738a9db69
  • geth: 1cf2ee45, and 16d7f059
  • solidity: b46a14f4, and 86925593

You can view a diff by entering the respective directory, and executing git diff <start hash> <end hash>.

This project is released under the GPL, just as the original geth, parity, and solidity implementations. It makes use of Pinocchio, which is licensed under the Microsoft Research License. Pinocchio is not linked against, or compiled into any of the other projects, meaning all generated binaries are GPL licensed. The Pinocchio binary itself is, of course, not.

Known Bugs

  • Functions without a return statement will return an incorrect proof index.
  • The ethvc parity module doesn’t deal well with negative numbers, and causes unexpected behaviour.