solidity-ringsignature

command module
v0.0.0-...-ba3c928 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2018 License: Apache-2.0 Imports: 14 Imported by: 0

README

Solidity-RingSignature

Ring-Signature using secp256k1 in Solidity for educational purpose. Allows untracable voting and coin transfer within the EVM environment. First implementation of "Linkable Spontaneous Anonymous Groups Signature REF."-Verification in solidity. secp256k1 is forked from jbaylina

##Note LSAG-signature voting with 3 cosigners requires ≈ 12.34 mGas. ECC operations are costly^^ use a testnet!

Guide

  1. Deploy secp256k1.sol on an ethereum chain
  2. Deploy UntraceableVoting.sol (pass the secp256k1 contract address in the constructor)
  3. Run main.go, to create a random set of "n voters and m candidates" and "signatures for each voter, to vote on on of the randomly selected candidates"
  4. copy the newly generated text in solargs.txt and pass them as arguments for the creation and setup a voting on the chain
  5. in vote.txt you'll find randomly generated valid vote parameters, pass them as argument for AnnonymousVote(..) function in UntraceableVoting.sol

Requirements

Go 1.9 or newer.

Getting Started

  • Solidity-RingSignature (and utilities) will now be installed in either $GOROOT/bin or $GOPATH/bin depending on your configuration. If you did not already add the bin directory to your system path during Go installation, we recommend you do so now.

Updating

Windows

Install a newer MSI

Linux/BSD/MacOSX/POSIX - Build from Source
  • Dep

    Dep is used to manage project dependencies and provide reproducible builds. To install:

    go get -u github.com/golang/dep/cmd/dep

Unfortunately, the use of dep prevents a handy tool such as go get from automatically downloading, building, and installing the source in a single command. Instead, the latest project and dependency sources must be first obtained manually with git and dep, and then go is used to build and install the project.

Getting the source:

For a first time installation, the project and dependency sources can be obtained manually with git and dep (create directories as needed):

git clone https://github.com/mottla/Solidity-RingSignature.git
cd $GOPATH/src/github.com/Solidity-RingSignature
dep ensure
go install . ./cmd/...

To update an existing source tree, pull the latest changes and install the matching dependencies:

cd $GOPATH/src/github.com/Solidity-RingSignature
git pull
dep ensure
go install . ./cmd/...

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
secp256k1
Package secp256k1 implements support for the elliptic curves needed for decred.
Package secp256k1 implements support for the elliptic curves needed for decred.
util/ethereum/abi
Package abi implements the Ethereum ABI (Application Binary Interface).
Package abi implements the Ethereum ABI (Application Binary Interface).
util/ethereum/abi/bind
Package bind generates Ethereum contract Go bindings.
Package bind generates Ethereum contract Go bindings.
util/ethereum/common
Package common contains various helper functions.
Package common contains various helper functions.
util/ethereum/common/bitutil
Package bitutil implements fast bitwise operations.
Package bitutil implements fast bitwise operations.
util/ethereum/common/compiler
Package compiler wraps the Solidity compiler executable (solc).
Package compiler wraps the Solidity compiler executable (solc).
util/ethereum/common/hexutil
Package hexutil implements hex encoding with 0x prefix.
Package hexutil implements hex encoding with 0x prefix.
util/ethereum/common/math
Package math provides integer math utilities.
Package math provides integer math utilities.
util/ethereum/common/mclock
package mclock is a wrapper for a monotonic clock source
package mclock is a wrapper for a monotonic clock source
util/ethereum/sha3
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL