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
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)
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()
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