Esempio n. 1
0
def sendpycoin(request):
    allify = {}
    data = {}
    if request.method == 'POST':
        senderpubkey = request.POST.get('spubkey')
        senderprivatekey = request.POST.get('sprikey').strip()
        senderwalletid = request.POST.get('swid')
        receiver = request.POST.get('pubkey').strip()
        receiverhex = hashlib.sha256(base64.b64decode(receiver)).hexdigest()
        amount = request.POST.get('amount').strip()

        if int(amount) <= 0:
            allify['response'] = "fail"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")

        balance = getbalance(senderwalletid)
        if balance is None:
            balance = 0
        if int(amount) > int(balance):
            allify['response'] = "fail"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")
        else:
            first_timestamp = time.time()
            data['senderpublickey'] = str(senderwalletid)  #1
            data['receiverhex'] = str(receiverhex)  #2
            data['previous_hash'] = str(
                transaction.objects.all().last().blockhash)  #3
            data['amount'] = str(amount)  #4
            data['timestamp'] = str(first_timestamp)  #5
            perfect = miner(first_timestamp, senderwalletid, receiverhex,
                            amount)
            data["nonce"] = str(perfect)
            data = collections.OrderedDict(sorted(data.items()))

            datashash = hashlib.sha256(
                json.dumps(data).encode('utf-8')).hexdigest()

            #senderprivatekeyde = base64.b64decode(senderprivatekey)
            #rsakey = RSA.importKey(senderprivatekeyde)
            #digitalSignature = rsakey.sign(datashash.encode('utf-8'),'')
            #digitalSignature = json.dumps(digitalSignature)

            newtrans = transaction(
                sender=base64.b64encode(senderpubkey.encode('utf-8')),
                senderhexdigest=senderwalletid,
                receiver=receiver,
                receiverhexdigest=receiverhex,
                prevblockhash=transaction.objects.all().last().blockhash,
                blockhash=datashash,
                amount=amount,
                nonce=perfect,
                first_timestamp=first_timestamp,
                #P2PKH=digitalSignature,
                verification=True)
            newtrans.save()

            return render(request, 'ok.html', locals())
Esempio n. 2
0
def addreward():
    utc = arrow.utcnow()
    local = utc.to('GMT')
    first_timestamp = local.timestamp
    nonce = miner(first_timestamp, settings.REWARD_HASH,
                  settings.NODE_OWNER_WALLET, 100)
    blockhash = gethash(settings.REWARD_HASH, settings.NODE_OWNER_WALLET, 100,
                        first_timestamp, nonce)
    digitalSignature = json.dumps("reward")
    newtrans = transaction(
        sender=settings.REWARD_HASH,
        senderwallet=settings.REWARD_HASH,
        receiver=settings.NODE_OWNER_WALLET,
        prevblockhash=transaction.objects.all().last().blockhash,
        blockhash=blockhash,
        amount=100.00000000,
        nonce=nonce,
        first_timestamp=first_timestamp,
        P2PKH=digitalSignature,
        verification=True)
    newtrans.save()
    newtrans.refresh_from_db()
    ip = ni.ifaddresses('eth0')[ni.AF_INET][0]['addr']
    geturl = "http://{}/api/v1/gettransaction/{}/".format(ip, newtrans.id)
    test = {
        "server": False,
        "sender": settings.REWARD_HASH,
        "receiver": settings.NODE_OWNER_WALLET,
        "prevblockhash": transaction.objects.all().last().blockhash,
        "blockhash": blockhash,
        "amount": 100.00000000,
        "nonce": nonce,
        "timestamp": first_timestamp,
        "P2PKH": digitalSignature,
        "verification": True,
        "block": transaction.objects.all().last().id + 1,
        "message": "new_transaction",
        "url": geturl
    }

    payload = json.dumps(test)

    ws = websocket.WebSocket()
    wsip = "ws://{}:9000".format(ip)
    ws.connect(wsip)
    ws.send(payload)
Esempio n. 3
0
def syncfirst(host):
    url = "http://{}/api/v1/alltransactions/".format(host)
    alltrans = requests.get(url).json()
    for x in alltrans["alltestsarecomplated"]:
        try:
            mytransactions = transaction.objects.get(blockhash=x["blockhash"])
        except transaction.DoesNotExist:
            newtrans = transaction(sender=x["sender"],
                senderwallet=x["senderwallet"],
                receiver=x["receiver"],
                prevblockhash=x["prevblockhash"],
                blockhash=x["blockhash"],
                amount=x["amount"],
                nonce=x["nonce"],
                first_timestamp=x["first_timestamp"],
                P2PKH=x["P2PKH"],
                verification=x["verification"])
            newtrans.save()
    print("everyting is up-da-te")
Esempio n. 4
0
    def onMessage(self, payload, isBinary):
        data = {}
        print("onmessage")
        allify = {}
        if isBinary:
            print("Binary message received: {0} bytes".format(len(payload)))
        else:

            payloaded = json.loads(payload.decode('utf-8'))
            print(payloaded["host"])
            if str(payloaded["host"]) == str(ip):
                print("bu zaten sensin")
            else:

                payloaded = json.loads(payload.decode('utf-8'))
                if 'sender' in payloaded:

                    data['sender'] = str(payloaded["sender"])                                       #1
                    data['receiver'] = str(payloaded["receiver"])                                   #2
                    data['previous_hash'] = str(transaction.objects.all().last().blockhash)         #3
                    data['amount'] = str(payloaded["amount"])                                       #4
                    data['timestamp'] = str(payloaded["timestamp"])                                 #5
                    data["nonce"] = str(payloaded["nonce"])
                    data = collections.OrderedDict(sorted(data.items()))
                    datashash  = hashlib.sha256(json.dumps(data).encode('utf-8')).hexdigest()
                    sig = json.loads(payloaded["P2PKH"])

                    print("datahashhere", datashash.encode('utf-8'))
                    print("sigbyte is here", sig)
                    print("sende weas here", payloaded["sender"])
                    wllt = generate_wallet_from_pkey(payloaded["sender"])
                    try:
                        sigbyte =  bytes.fromhex(sig)
                        vk = VerifyingKey.from_string(bytes.fromhex(payloaded["sender"]), curve=SECP256k1)
                        tt = vk.verify(sigbyte, datashash.encode('utf-8')) # True
                    except BadSignatureError:
                        print("unbelieveable")
                        data["response"] = "unbelieveable"
                        newtrans = transaction(sender=payloaded["sender"],
                        senderwallet=wllt,
                        receiver=payloaded["receiver"],
                        prevblockhash=transaction.objects.all().last().blockhash,
                        blockhash=payloaded["blockhash"],
                        amount=payloaded["amount"],
                        nonce=payloaded["nonce"],
                        first_timestamp=payloaded["timestamp"],
                        P2PKH=payloaded["P2PKH"],
                        verification=False
                        ).save()
                        print("badsignature")
                        data["response"] = "bad signature"
                        return False
                    newtrans = transaction(sender=payloaded["sender"],
                    senderwallet=wllt,
                    receiver=payloaded["receiver"],
                    prevblockhash=transaction.objects.all().last().blockhash,
                    blockhash=payloaded["blockhash"],
                    amount=payloaded["amount"],
                    nonce=payloaded["nonce"],
                    first_timestamp=payloaded["timestamp"],
                    P2PKH=payloaded["P2PKH"],
                    verification=True
                    ).save()
                    data["response"] = "Everything works correctly."
                    return True
                else:
                    print("other message")
                BroadcastServerFactory.broadcast(payload)
Esempio n. 5
0
def sendosereum(request):
    allify = {}
    data = {}
    if request.method == 'POST':
        senderprivatekey = request.POST.get('sprikey')
        receiverwallet = request.POST.get('receiverwallet').strip()
        amount = request.POST.get('amount').strip()
        sender = generate_pubkey_from_prikey(senderprivatekey)

        if not receiverwallet:
            allify['response'] = "fail"
            allify['explain'] = "Please fill the receiver box"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")
        try:
            amount = int(request.POST.get('amount').strip())
        except ValueError:
            allify['response'] = "fail"
            allify['explain'] = "Please fill the balance box"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")
        if int(amount) <= 0:
            allify['response'] = "fail"
            allify['explain'] = "insufficient balance"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")
        balance = getbalance(sender)
        if balance is None:
            balance = 0
        if int(amount) > int(balance):
            allify['response'] = "fail"
            allify['explain'] = "insufficient balance"
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")
        else:
            utc = arrow.utcnow()
            local = utc.to('GMT')
            first_timestamp = local.timestamp
            data['sender'] = str(sender)  #1
            data['receiver'] = str(receiverwallet)  #2
            data['previous_hash'] = str(
                transaction.objects.all().last().blockhash)  #3
            data['amount'] = str(amount)  #4
            data['timestamp'] = str(first_timestamp)  #5
            perfect = miner(first_timestamp, sender, receiverwallet, amount)
            data["nonce"] = str(perfect)
            data = collections.OrderedDict(sorted(data.items()))
            datashash = hashlib.sha256(
                json.dumps(data).encode('utf-8')).hexdigest()

            try:
                sk = SigningKey.from_string(bytes.fromhex(senderprivatekey),
                                            curve=SECP256k1)
                vk = sk.get_verifying_key()  #public_key
                print(vk.to_string().hex())
            except UnicodeDecodeError:
                data["response"] = "Check your wallet details"
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
            print("digital sign ishere", datashash.encode('utf-8'))
            digitalSignature = sk.sign(datashash.encode('utf-8'))
            digitalSignature = json.dumps(digitalSignature.hex())

            wllt = generate_wallet_from_pkey(sender)
            newtrans = transaction(
                sender=sender,
                senderwallet=wllt,
                receiver=receiverwallet,
                prevblockhash=transaction.objects.all().last().blockhash,
                blockhash=datashash,
                amount=amount,
                nonce=perfect,
                first_timestamp=first_timestamp,
                P2PKH=digitalSignature,
                verification=True)
            newtrans.save()
            ip = ni.ifaddresses('eth0')[ni.AF_INET][0]['addr']
            geturl = "http://{}/api/vi/gettransaction/{}/".format(
                ip, newtrans.id)
            test = {
                "server": False,
                "sender": sender,
                "receiver": receiverwallet,
                "prevblockhash": transaction.objects.all().last().blockhash,
                "blockhash": datashash,
                "amount": amount,
                "nonce": perfect,
                "timestamp": first_timestamp,
                "P2PKH": digitalSignature,
                "verification": True,
                "block": transaction.objects.all().last().id + 1,
                "message": "new_transaction",
                "url": geturl
            }

            payload = json.dumps(test)

            ws = websocket.WebSocket()
            wsip = "ws://{}:9000".format(ip)
            ws.connect(wsip)
            ws.send(payload)

            allify['response'] = "ok"
            allify['datashash'] = datashash
            allify['datastring'] = json.dumps(allify)
            return HttpResponse(json.dumps(allify),
                                content_type="application/json")