Exemplo n.º 1
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)
Exemplo n.º 2
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()
Exemplo n.º 3
0
    def create_block(prev_block, private_key, amount):
        account_id = get_account_id(private_key=private_key)
        link_block = legacy_pocketable_block_factory(
            account_id=account_id, amount=amount)

        raw_block = RawBlock(
            account=account_id,
            block_type="receive",
            previous=prev_block.block_hash,
            source=link_block.block_hash)
        raw_block.sign(private_key)
        raw_block.solve_work(difficulty=TEST_DIFFICULTY)

        block = Block(
            block_data=raw_block.to_dict(),
            link_block=link_block,
        )

        return block
Exemplo n.º 4
0
    def create_link_block(account_id, amount):
        sending_private_key = generate_seed()
        sending_account_id = get_account_id(private_key=sending_private_key)

        block = RawBlock(
            block_type="send",
            account=sending_account_id,
            previous=generate_seed().upper(),
            destination=account_id,
            balance=amount + random.randint(-amount, 2**110)
        )
        block.sign(sending_private_key)
        block.solve_work(difficulty=TEST_DIFFICULTY)

        link_block = LinkBlock(
            block_data=block.to_dict(),
            amount=amount,
            timestamp=Timestamp(
                date=time.time(), source=TimestampSource.WALLET
            )
        )

        return link_block