コード例 #1
0
ファイル: controllers.py プロジェクト: jackcook/sigma-backend
def create_purchase_transaction():
    # Resolve chain conflicts before making changes
    blockchain.resolve_conflicts()

    # Run the proof of work algorithm to get the next proof
    last_block = blockchain.last_block
    proof = blockchain.proof_of_work(last_block)

    # Get data from the URL request
    values = request.get_json()

    # Create a new transaction
    blockchain.new_transaction({
        "sender": values["sender"],
        "recipient": node_identifier,
        "amount": int(values["amount"]),
        "type": "transaction"
    })

    # Forge the new block by adding it to the chain
    previous_hash = blockchain.hash(last_block)
    block = blockchain.new_block(proof, previous_hash)

    response = {
        "index": block["index"],
        "transactions": block["transactions"],
        "proof": block["proof"],
        "previous_hash": block["previous_hash"],
    }

    return jsonify(response), 201
コード例 #2
0
ファイル: controllers.py プロジェクト: jackcook/sigma-backend
def create_user():
    blockchain.resolve_conflicts()

    # Run the proof of work algorithm to get the next proof
    last_block = blockchain.last_block
    proof = blockchain.proof_of_work(last_block)

    # Generate a globally unique address for this user
    user_identifier = str(uuid4()).replace("-", "")

    # Retrieve user data from request
    values = request.get_json()
    name = values["name"]

    # Add an initial amount to the new user's balance
    blockchain.new_transaction({
        "user_id": user_identifier,
        "balance": 10,
        "name": name,
        "type": "new_user"
    })

    # Forge the new block by adding it to the chain
    previous_hash = blockchain.hash(last_block)
    block = blockchain.new_block(proof, previous_hash)

    response = {
        "index": block["index"],
        "transactions": block["transactions"],
        "proof": block["proof"],
        "previous_hash": block["previous_hash"],
    }

    return jsonify(response)
コード例 #3
0
ファイル: controllers.py プロジェクト: jackcook/sigma-backend
def create_shelter():
    # Resolve chain conflicts before making changes
    blockchain.resolve_conflicts()

    # Run the proof of work algorithm to get the next proof
    last_block = blockchain.last_block
    proof = blockchain.proof_of_work(last_block)

    # Generate a globally unique address for this shelter
    shelter_identifier = str(uuid4()).replace('-', '')

    # Retrieve shelter data from request
    values = request.get_json()
    name = values["name"]
    address = values["address"]
    lat = float(values["lat"])
    lng = float(values["lng"])
    data = json.loads(values["data"])

    # Create this shelter in the blockchain
    blockchain.new_transaction({
        "shelter_id": shelter_identifier,
        "name": name,
        "address": address,
        "lat": lat,
        "lng": lng,
        "data": data,
        "type": "new_shelter"
    })

    # Forge the new block by adding it to the chain
    previous_hash = blockchain.hash(last_block)
    block = blockchain.new_block(proof, previous_hash)

    response = {
        "index": block["index"],
        "transactions": block["transactions"],
        "proof": block["proof"],
        "previous_hash": block["previous_hash"],
    }

    return jsonify(response)
コード例 #4
0
def consensus():
    replaced = blockchain.resolve_conflicts()

    if replaced:
        response = {
            "message": "Our chain was replaced",
            "new_chain": blockchain.chain
        }
    else:
        response = {
            "message": "Our chain is authoritative",
            "chain": blockchain.chain
        }

    return jsonify(response)
コード例 #5
0
def full_chain():
    # Resolve conflicts before returning full blockchain data
    blockchain.resolve_conflicts()

    # Return all blockchain data
    return jsonify(blockchain.chain)