All Projects → lorenzb → libsubmarine

lorenzb / libsubmarine

Licence: other
Implementation of a novel practical scheme for submarine commitments

Programming Languages

python
139335 projects - #7 most used programming language
solidity
1140 projects

Projects that are alternatives of or similar to libsubmarine

Solidity
Solidity, the Smart Contract Programming Language
Stars: ✭ 13,691 (+6711.44%)
Mutual labels:  smartcontracts
Ethlist
The Comprehensive Ethereum Reading List
Stars: ✭ 3,576 (+1679.1%)
Mutual labels:  smartcontracts
awesome-waves
Curated list of awesome things for development on Waves blockchain.
Stars: ✭ 60 (-70.15%)
Mutual labels:  smartcontracts
blocky
Ethereum based smart contracts for IoT devices
Stars: ✭ 17 (-91.54%)
Mutual labels:  smartcontracts
pyrrha-consensus
Core set of Ethereum contracts for Pandora Boxchain functioning
Stars: ✭ 25 (-87.56%)
Mutual labels:  smartcontracts
mcat
a framework for developing ethereum smart contracts
Stars: ✭ 32 (-84.08%)
Mutual labels:  smartcontracts
tomomaster
TomoMaster provides a master professional level UI that brings governance power back to the users. Tomomaster allows users to vote for masternodes and apply to become a candidate
Stars: ✭ 50 (-75.12%)
Mutual labels:  smartcontracts
protocol
Covee protocol for decentralized teamwork
Stars: ✭ 18 (-91.04%)
Mutual labels:  smartcontracts
soltix
SOLTIX: Scalable automated framework for testing Solidity compilers.
Stars: ✭ 30 (-85.07%)
Mutual labels:  smartcontracts
auction-platform
A smartcontract Dapp with a web based UI that keeps track of contract data by adding it into blocks to be mined on a test network.
Stars: ✭ 19 (-90.55%)
Mutual labels:  smartcontracts
proveth
Generate & verify Merkle-Patricia-proofs for Ethereum
Stars: ✭ 89 (-55.72%)
Mutual labels:  smartcontracts
Hydra
Framework for cryptoeconomic contract security, decentralized security bounties. Live on Ethereum.
Stars: ✭ 72 (-64.18%)
Mutual labels:  smartcontracts
neo-go
Go Node and SDK for the NEO blockchain
Stars: ✭ 104 (-48.26%)
Mutual labels:  smartcontracts
EthereumFoos
A Curated List Of Costly Ethereum Mistakes To Learn From (WIP)
Stars: ✭ 24 (-88.06%)
Mutual labels:  smartcontracts

LibSubmarine

Build Status

                    | \
                     '.|
     _-   _-    _-  _-||    _-    _-  _-   _-    _-    _-
       _-    _-   - __||___    _-       _-    _-    _-
    _-   _-    _-  |   _   |       _-   _-    _-
      _-    _-    /_) (_) (_\        _-    _-       _-
              _.-'           `-._      ________       _-
        _..--`                   `-..'       .'
    _.-'  o/o                     o/o`-..__.'        ~  ~
 .-'      o|o                     o|o      `.._.  // ~  ~
 `-._     o|o                     o|o        |||<|||~  ~
     `-.__o\o                     o|o       .'-'  \\ ~  ~
LGB       `-.______________________\_...-``'.       ~  ~
                                    `._______'.

A work-in-progress implementation of better submarine sends for Ethereum.

Submarine Steps

  • A User
  • B Commit Address (No Private key)
  • C Libsubmarine
  • D Dapp, Application (e.g Auction, DEX, ICO, etc.)
  • MPT Merkle-Patricia Proof of TxCommit Inclusion on-chain
     TxCommit (1)
A +-------------------> B
+                       +
|                       |   TxUnlock (3)
|                       | (calls unlock)
|                       v
+---------------------> C < - - - - - - - - - - - - -+ D
                         (overload) onSubmarineReveal
    TxReveal (2)           (query) revealedAndUnlocked(submarineId)
 (call reveal + MPT
 + RLP-encoded TxUnlock)
                                                        

Workflow and API Guide

For a more in-depth discussion of what the workflow / steps from a user's perspective for a Submarine transaction looks like, refer to WORKFLOW.md.

For an in-depth discussion of how to incorporate LibSubmarine into your existing application, as well as some software architecture notes, see API.md.


Contract Unit Tests / Examples / Offchain Components

Install Solc (Installation guide)

Use pip to install python dependencies (we recommend using a virtualenv with >= python3.6):

pip3 install -r requirements.txt

Run the tests:

python3 test/test_whateverComponent.py

The tests are particularly useful to see as a reference, since they basically model an end-users interaction with LibSubmarine from start to finish.


Disclaimer

This project is a Work in Progress. It has not undergone a formal security audit from an independent 3rd party (though we would like to have that done).

For a high level discussion around the research of Submarine Sends and some historical implementations, please refer to the blog post: To Sink Frontrunners, Send in the Submarines.


Authors

LibSubmarine's development was started by the Submarines group at the 2018 IC3 Ethereum bootcamp, but is now an open source project. Anyone is encouraged to contribute.

IC3 Ethereum Bootcamp <3 2018

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].