예제 #1
0
파일: centra.py 프로젝트: shinjanxp/CEnTrA
 def create_lrep_client(self,
                        host='127.0.0.1',
                        lrep_port=5000,
                        vote_tokens=None):
     self.lrep_cs_client = ChainspaceClient(host=host,
                                            port=lrep_port,
                                            max_wait=lrep_port - 5000)
     create_lrep_client_txn = create_lrep_client(
         vote_tokens,
         None,
         (pack(self.pub), ),
         pack(self.priv),
     )
     self.vote_slip = create_lrep_client_txn['transaction']['outputs'][1]
     self.lrep_client = create_lrep_client_txn['transaction']['outputs'][0]
     self.lrep_cs_client.process_transaction(create_lrep_client_txn)
예제 #2
0
파일: centra.py 프로젝트: shinjanxp/CEnTrA
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, )
        create_centra_client_txn = create_centra_client(
            token,
            None,
            (pack(self.pub), ),
            pack(self.priv),
        )
        self.centra_client = create_centra_client_txn['transaction'][
            'outputs'][0]
        self.vote_slip = create_centra_client_txn['transaction']['outputs'][1]
        self.ebtoken = create_centra_client_txn['transaction']['outputs'][2]
        self.cs_client.process_transaction(create_centra_client_txn)

    def cast_csc_vote(self, client_pub):
        cast_csc_vote_txn = cast_csc_vote(
            (self.vote_slip, ),
            None,
            None,
            pack(self.priv),
            pack(client_pub),
        )
        vote_token = cast_csc_vote_txn['transaction']['outputs'][0]
        self.vote_slip = cast_csc_vote_txn['transaction']['outputs'][1]
        self.cs_client.process_transaction(cast_csc_vote_txn)
        return vote_token

    def cast_lrep_vote(self, rep_pub, queue=None):
        cast_lrep_vote_txn = cast_lrep_vote(
            (self.vote_slip, ),
            None,
            None,
            pack(self.priv),
            pack(rep_pub),
        )
        vote_token = cast_lrep_vote_txn['transaction']['outputs'][0]
        self.vote_slip = cast_lrep_vote_txn['transaction']['outputs'][1]
        self.cs_client.process_transaction(cast_lrep_vote_txn)
        if queue:
            queue.put(vote_token)
        return vote_token

    def submit_bid(self, bid_type, quantity):
        bid_proof_txn = submit_bid_proof((self.ebtoken, ), None, (bid_type, ),
                                         pack(self.priv), quantity)
        bid_proof = bid_proof_txn['transaction']['outputs'][0]
        self.ebtoken = bid_proof_txn['transaction']['outputs'][1]
        self.cs_client.process_transaction(bid_proof_txn)
예제 #3
0
파일: centra.py 프로젝트: shinjanxp/CEnTrA
class LREPClient(CentraClient):
    def create_lrep_client(self,
                           host='127.0.0.1',
                           lrep_port=5000,
                           vote_tokens=None):
        self.lrep_cs_client = ChainspaceClient(host=host,
                                               port=lrep_port,
                                               max_wait=lrep_port - 5000)
        create_lrep_client_txn = create_lrep_client(
            vote_tokens,
            None,
            (pack(self.pub), ),
            pack(self.priv),
        )
        self.vote_slip = create_lrep_client_txn['transaction']['outputs'][1]
        self.lrep_client = create_lrep_client_txn['transaction']['outputs'][0]
        self.lrep_cs_client.process_transaction(create_lrep_client_txn)

    def accept_bids(self):
        time.sleep(DELTA)
        bid_proofs = self.lrep_cs_client.get_objects({
            'location':
            loads(self.lrep_client)['location'],
            'type':
            'BidProof'
        })
        bidders = {}
        for bid in bid_proofs:
            bid = loads(bid)
            bidders[str(bid['quantity_sig'])] = True

        time.sleep(2 * DELTA)
        buy_bids = self.lrep_cs_client.get_objects({
            'location':
            loads(self.lrep_client)['location'],
            'type':
            'EBBuy'
        })
        sell_bids = self.lrep_cs_client.get_objects({
            'location':
            loads(self.lrep_client)['location'],
            'type':
            'EBSell'
        })
        # process bid
        accepted_bids = []
        for bid in buy_bids:
            if not bidders.has_key(loads(bid)['quantity_sig']):
                continue
            accepted_bids.append(bid)
        for bid in sell_bids:
            if not bidders.has_key(loads(bid)['quantity_sig']):
                continue
            accepted_bids.append(bid)
        if len(accepted_bids) == 0:
            return None
        accept_bids_txn = accept_bids(
            tuple(accepted_bids),
            None,
            (pack(self.pub), ),
            pack(self.priv),
        )
        bid_accept = accept_bids_txn['transaction']['outputs'][0]
        self.lrep_cs_client.process_transaction(accept_bids_txn)
        return bid_accept
예제 #4
0
파일: centra.py 프로젝트: shinjanxp/CEnTrA
 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)
from json import dumps, loads
import time
import unittest
import requests
# chainsapce
from chainspacecontract import transaction_to_solution
# from chainspacecontract.examples.energy_bidding import contract as energy_bidding_contract
from chainspacecontract.examples import energy_bidding
# crypto
from chainspacecontract.examples.utils import setup, key_gen, pack
from chainspaceapi import ChainspaceClient

G = setup()[0]
(provider_priv, provider_pub) = key_gen(setup())
client = ChainspaceClient(port=5001)

# Init txn
init_transaction = energy_bidding.init()
token = init_transaction['transaction']['outputs'][0]
client.process_transaction(init_transaction)

# # Create meter
# create_meter_transaction = energy_bidding.create_meter(
#     (token,),
#     None,
#     None,
#     pack(provider_pub),
#     'Some info about the meter.',
#     dumps([5, 3, 5, 3, 5]),  # the tariffs
#     dumps(764)               # billing period
# )
예제 #6
0
    pp.pprint(obj)


def post_transaction(tx):
    start_tx = datetime.now()
    response = client.process_transaction(tx)
    client_latency = (datetime.now() - start_tx)
    print response.text
    json_response = json.loads(response.text)
    results.append((json_response['success'], response.url,
                    str(client_latency), tx['transaction']['methodID']))


start_time = datetime.now()

client = ChainspaceClient()

# crypto parameters
t, n = 4, 5  # threshold and total number of authorities
bp_params = bp_setup()  # bp system's parameters
(sk, vk, vvk) = ttp_th_keygen(bp_params, t, n)  # signers keys

# petition parameters
UUID = Bn(1234)
options = ['YES', 'NO']
pet_params = pet_setup()
(priv_owner, pub_owner) = pet_keygen(pet_params)

tx_init = petition.init()

# pp_object(tx_init)
예제 #7
0
CS_HOST = os.getenv('PEERS_HOST', 'localhost')

# Setup logging
logging.basicConfig(level=logging.INFO,
                    filename="../../../stats/" + RUN_ID + "_execution.log",
                    filemode="a+",
                    format="%(asctime)-15s %(levelname)-8s %(message)s")
logging.info("Starting measure_centra_add_lrep")

logging.info("NUM_SHARDS: %s, NUM_REPLICAS: %s, NUM_CLIENTS: %s " %
             (NUM_SHARDS, NUM_REPLICAS, NUM_CLIENTS))
G = setup()[0]

# In[2]:

global_client = ChainspaceClient(host=CS_HOST, port=5000)
init_transaction = centra.init()
init_tokens = init_transaction['transaction']['outputs']
global_client.process_transaction(init_transaction)
client_divs = centra.eq_div(NUM_CLIENTS, NUM_SHARDS)
# print client_divs

# In[3]:

# Create prosumer clients for locations
clients = []
base_port = 5000
lreps = []

for s in range(0, NUM_SHARDS):
    clients.append([])
예제 #8
0
import time
import unittest
import requests
# chainsapce
from chainspacecontract import transaction_to_solution
# from chainspacecontract.examples.centra import contract as centra_contract
from chainspacecontract.examples import centra
# crypto
from chainspacecontract.examples.utils import setup, key_gen, pack
from chainspaceapi import ChainspaceClient

G = setup()[0]
(provider_priv1, provider_pub1) = key_gen(setup())
(provider_priv2, provider_pub2) = key_gen(setup())
(provider_priv3, provider_pub3) = key_gen(setup())
client1 = ChainspaceClient(port=5000)
client2 = ChainspaceClient(port=5001)
client3 = ChainspaceClient(port=5000)

# Init txn
init_transaction = centra.init()
init_s0_token1 = init_transaction['transaction']['outputs'][0]
client1.process_transaction(init_transaction)

init_transaction = centra.init()
init_s1_token1 = init_transaction['transaction']['outputs'][0]
client2.process_transaction(init_transaction)

###########################################################################
############################  Client 1  ###################################
###########################################################################