Exemple #1
0
# general
from hashlib import sha256
from json    import dumps, loads
# petlib
from chainspacecontract.examples.utils import setup as pet_setup
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from petlib.bn import Bn
# coconut
from chainspacecontract.examples.coconut_util import pet_pack, pet_unpack, pack, unpackG1, unpackG2
from chainspacecontract.examples.coconut_lib import setup as bp_setup, verify
from chainspacecontract.examples.coconut_lib import show_coconut_petition, coconut_petition_verify
# chainspace
from chainspacecontract import ChainspaceContract

## contract name
contract = ChainspaceContract('tumbler')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():
    return {
        'outputs': (dumps({'type' : 'TToken'}),),
    }

# ------------------------------------------------------------------
Exemple #2
0
# general
from hashlib import sha256
from json import dumps, loads
import os
import time, ast
import traceback
import requests
# chainspace
from chainspacecontract import ChainspaceContract
from chainspaceapi import ChainspaceClient
# crypto
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack

## contract name
contract = ChainspaceContract('centra')

## Class definitions for clients
DELTA = 5


class CentraClient:
    def __init__(self, host='127.0.0.1', port=5000, init_token=None):
        (self.priv, self.pub) = key_gen(setup())
        self.cs_client = ChainspaceClient(host=host, port=port)
        if init_token:
            self.create_centra_client(init_token)

    def create_centra_client(self, token):
        if type(token) is not tuple:
            token = (token, )
"""A smart contract that implements a simple, authenticated bank."""

####################################################################
# imports
####################################################################
# general
from hashlib import sha256
from json    import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract
# crypto
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack

## contract name
contract = ChainspaceContract('bank_authenticated')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():

    # return
    return {
        'outputs': (dumps({'type' : 'BankToken'}),),
    }
Exemple #4
0
# imports
####################################################################
# general
from json import dumps, loads
from hashlib import sha256
# cypto
from petlib.bn import Bn
# chainspace
from chainspacecontract import ChainspaceContract
# coconut
from chainspacecontract.examples.coconut_util import pet_pack, pet_unpack, pack, unpackG1, unpackG2
from chainspacecontract.examples.coconut_lib import setup, mix_verify, prepare_mix_sign, verify_mix_sign, mix_sign
from chainspacecontract.examples.coconut_lib import show_mix_sign

## contract name
contract = ChainspaceContract('coconut')

## dependencies
from chainspacecontract.examples.hello import contract as hello_contract

contract.register_dependency(hello_contract)

import time


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
Exemple #5
0
####################################################################
# imports
####################################################################
# general
from hashlib import sha256
from json import dumps, loads, dump
from os.path import join

import subprocess

# chainspace
from chainspacecontract import ChainspaceContract

## contract name
contract = ChainspaceContract('zenroom_petition')

ZENROOM_PATH = "zenroom"
SCRIPT_PATH = "/opt/contracts/"
DATA_PATH = "/tmp/data.json"


def execute_zenroom(script_filename, data_filename=None, key_filename=None):
    commands = [ZENROOM_PATH]
    if data_filename:
        commands = commands + ['-a', data_filename]

    if key_filename:
        commands = commands + ['-k', key_filename]

    commands.append(join(SCRIPT_PATH, script_filename))
from json    import dumps, loads
# petlib
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
# coconut
from chainspacecontract.examples.utils import *
from contracts.utils import *
from contracts.petition_proofs import *
from coconut.utils import *
from coconut.scheme import *


# chainspace
from chainspacecontract import ChainspaceContract

## contract name
contract = ChainspaceContract('petition')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():
    return {
        'outputs': (dumps({'type' : 'PToken'}),),
    }

# ------------------------------------------------------------------
""" 
	Hello world contract.
"""

####################################################################
# imports
####################################################################

from json import dumps, loads
from chainspacecontract import ChainspaceContract

contract = ChainspaceContract('hello')

####################################################################
# methods
####################################################################


@contract.method('init')
def init():
    return {'outputs': (dumps({'type': 'HelloToken'}), )}


@contract.method('hello')
def hello(inputs, reference_inputs, parameters):

    # Checks that the first input is a token.
    if not (loads(inputs[0]) == {'type': 'HelloToken'}):
        raise Exception("Expected a contract token as a first input.")

    # Create a new "HelloMessage" object, just containing a message.
Exemple #8
0
"""A smart contract that extends smart meter to perform energy bids."""

####################################################################
# imports
####################################################################
# general
from hashlib import sha256
from json    import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract
# crypto
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack

## contract name
contract = ChainspaceContract('energy_bidding')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():

    # return
    return {
        'outputs': (dumps({'type' : 'SMToken'}),),
    }
"""An example smart contract to demonstrate cross-contract calls."""

from chainspacecontract import ChainspaceContract
from chainspacecontract.examples.addition import contract as increment_contract

contract = ChainspaceContract('increment_twice')
contract.register_dependency(increment_contract)


@contract.method('init')
def init():
    return {'outputs': ('0', )}


@contract.method('increment')
def increment(inputs, reference_inputs, parameters):
    integer = int(inputs[0])
    increment_contract.increment((parameters[0], ), None, None)
    return {'outputs': (str(integer + 1), )}


if __name__ == '__main__':
    contract.run()
Exemple #10
0
	The main problems are:
		1) People can sign the petition multiple time;
		2) No ways to determine who is authorised to sign (access control);
		3) No privacy.
"""

####################################################################
# imports
####################################################################
# general
from json import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract

## contract name
contract = ChainspaceContract('petition_simple')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():
    return {
        'outputs': (dumps({'type': 'SPToken'}), ),
    }

Exemple #11
0
####################################################################
# general
from hashlib import sha256
from json import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract
# crypto
from petlib.bn import Bn
from petlib.ec import EcGroup
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack, add, add_side
from chainspacecontract.examples.utils import binencrypt, make_table, dec
from chainspacecontract.examples.utils import provezero, verifyzero, provebin, verifybin, proveone, verifyone

## contract name
contract = ChainspaceContract('vote')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():
    # return
    return {'outputs': (dumps({'type': 'VoteToken'}), )}


# ------------------------------------------------------------------
Exemple #12
0
"""Simulation contract for generating and consuming objects."""
from chainspacecontract import ChainspaceContract

contract = ChainspaceContract('simulator')


@contract.method('init')
def init():
    return {'outputs': ('o', )}


@contract.method('create')
def create(inputs, reference_inputs, parameters):
    count = int(parameters[0])
    return {'outputs': ('o', ) * count}


@contract.method('consume')
def consume(inputs, reference_inputs, parameters):
    return {}


if __name__ == '__main__':
    contract.run()
"""A smart contract that implements a simple, authenticated bank."""

####################################################################
# imports
####################################################################
# general
from hashlib import sha256
from json    import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract

## contract name
contract = ChainspaceContract('sensor')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():

    # return
    return {
        'outputs': (dumps({'type' : 'SensorToken'}),),
    }


# ------------------------------------------------------------------
Exemple #14
0
"""A smart contract that implements a smart meter."""

####################################################################
# imports
####################################################################
# general
from hashlib import sha256
from json import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract
# crypto
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack

## contract name
contract = ChainspaceContract('smart_meter')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():

    # return
    return {
        'outputs': (dumps({'type': 'SMToken'}), ),
    }
Exemple #15
0
""" Dump contract with a checker returning always True. """

from chainspacecontract import ChainspaceContract

contract = ChainspaceContract('dump')


@contract.method('init')
def init():
    return {'outputs': ('dump', )}


@contract.method('do_nothing')
def increment(inputs, reference_inputs, parameters):
    return {'outputs': ('dump', )}


@contract.checker('do_nothing')
def increment_checker(inputs, reference_inputs, parameters, outputs, returns,
                      dependencies):
    return True


if __name__ == '__main__':
    contract.run()
"""A simple smart contract which keeps track of an integer that can be
incremented."""

from chainspacecontract import ChainspaceContract

contract = ChainspaceContract('addition')


@contract.method('init')
def init():
    return {'outputs': ('0', )}


@contract.method('increment')
def increment(inputs, reference_inputs, parameters):

    integer = int(inputs[0])

    return {'outputs': (str(integer + 1), )}


if __name__ == '__main__':
    contract.run()
Exemple #17
0
####################################################################
# general
from hashlib import sha256
from json import dumps, loads
# chainspace
from chainspacecontract import ChainspaceContract
# crypto
from petlib.bn import Bn
from petlib.ec import EcGroup
from petlib.ecdsa import do_ecdsa_sign, do_ecdsa_verify
from chainspacecontract.examples.utils import setup, key_gen, pack, unpack, add, add_side
from chainspacecontract.examples.utils import binencrypt, make_table, dec
from chainspacecontract.examples.utils import provezero, verifyzero, provebin, verifybin, proveone, verifyone

## contract name
contract = ChainspaceContract('petition_encrypted')


####################################################################
# methods
####################################################################
# ------------------------------------------------------------------
# init
# ------------------------------------------------------------------
@contract.method('init')
def init():
    # return
    return {'outputs': (dumps({'type': 'PetitionEncToken'}), )}


# ------------------------------------------------------------------