Example #1
0
def receive(account, private_key, representative, amount, link):
    request = requests.post(worker["node"],
                            json={
                                "action": "accounts_frontiers",
                                "accounts": [account]
                            })
    previous = frontier(account)
    if previous == "0000000000000000000000000000000000000000000000000000000000000000":
        request = requests.post(worker["node"],
                                json={
                                    "action": "account_key",
                                    "account": account
                                })
        workHash = request.json()["key"]
    else:
        workHash = previous
    block = Block(block_type="state",
                  account=account,
                  representative=representative,
                  previous=previous,
                  balance=balance(worker["account"]) + amount,
                  link=link)
    solveWork = solve_work(workHash, worker["difficulty_receive"])
    if "error" in solveWork:
        return {"error": solveWork["error"]}
    block.work = solveWork["work"]
    block.sign(private_key)
    r = broadcast(block.json())
    return r
Example #2
0
def request_block_mine():
    data = request.get_json()
    if data:
        miner = data.get("miner_transaction")
        user = data.get("user_transaction")
        miner_block = Block(block_type=miner.get('block_type'),
                            account=miner.get('account'),
                            representative=miner.get('representative'),
                            previous=miner.get('previous'),
                            link_as_account=miner_account,
                            balance=miner.get('balance'))
        miner_block_hash = miner_block.work_block_hash
        if check_balance(miner.get('account'), miner.get('balance')):
            miner_block.solve_work()
            miner_block_json = json.loads(miner_block.json())
            miner_block_new_json = {
                "account": miner_block_json.get("account"),
                "balance": miner_block_json.get("balance"),
                "link": miner_block_json.get("link"),
                "link_as_account": miner_block_json.get("link_as_account"),
                "previous": miner_block_json.get("previous"),
                "representative": miner_block_json.get("representative"),
                "type": miner_block_json.get("type"),
                "signature": miner.get("signature")
            }
            requests.post(url,
                          json={
                              "action": "process",
                              "block": miner_block_new_json
                          })
            user_transaction = mine_block(user.get('block_type'),
                                          user.get('account'),
                                          user.get('representative'),
                                          miner_block_hash,
                                          user.get('link_as_account'),
                                          user.get('balance'))
            user_transaction_json = json.loads(user_transaction.json())
            user_transaction_new_json = {
                "account": user_transaction_json.get("account"),
                "balance": user_transaction_json.get("balance"),
                "link": user_transaction_json.get("link"),
                "link_as_account":
                user_transaction_json.get("link_as_account"),
                "previous": user_transaction_json.get("previous"),
                "representative": user_transaction_json.get("representative"),
                "type": user_transaction_json.get("type"),
                "signature": user.get("signature")
            }
            r = requests.post(url,
                              json={
                                  "action": "process",
                                  "block": user_transaction_new_json
                              })
            return jsonify(r.text)
    abort(401)
Example #3
0
def mine_block(block_type, account, representative, previous, link_as_account, balance):
    block = Block(
        block_type=block_type,
        account=account,
        representative=representative,
        previous=previous,
        link_as_account=link_as_account,
        balance=balance
    )
    block.solve_work()
    return block.json()
Example #4
0
def receive(account, private_key, representative, amount, link, difficulty):
    request = requests.post(node,
                            json={
                                "action": "accounts_frontiers",
                                "accounts": [account]
                            })
    if account in request.json()["frontiers"]:
        previous = request.json()["frontiers"][account]
    else:
        previous = "0000000000000000000000000000000000000000000000000000000000000000"
    block = Block(block_type="state",
                  account=account,
                  representative=representative,
                  previous=previous,
                  balance=balance(worker_account) + amount,
                  link=link)
    block.work = solve_work(frontier(account), difficulty)
    block.sign(private_key)
    r = broadcast(block.json())
    return r