Main /
Streamlit-test
import streamlit as st
import os
from stellar_sdk import Server, Keypair, TransactionBuilder, Network, Asset
import requests
import time
import json
from datetime import date
from datetime import datetime
import random
from random import randrange
gap = 0.0005
def cuann(dx):
page = "https://horizon.stellar.org/transactions/"+dx+"/operations"
body = {}
r = requests.get(page, data=json.dumps(body))
amo = r.json()['_embedded']['records'][2]['amount']
return amo
def ediff(p):
if(len(p)==2):
return "ok"
if(p[2]==True):
return "ok"
curr_dt = datetime.now()
tn = int(round(curr_dt.timestamp()))
asx = p[2].replace("T", ",")
asx = asx.replace(":", ",")
asx = asx.replace("-", ",")
asx = asx.replace("Z", "")
asx = asx.split(",")
dt = datetime(int(asx[0]),int(asx[1]),int(asx[2]),int(asx[3]),int(asx[4]),int(asx[5]))
dt = dt.timestamp()
dt = int(round(dt))
if(tn > dt):
return "expired"
else:
return "ok"
def sdiff(p):
#st.write(p)
if(len(p)==2):
return "ok"
if(p[2]==True):
return "ok"
curr_dt = datetime.now()
tn = int(round(curr_dt.timestamp()))
asx = p[2].replace("T", ",")
asx = asx.replace(":", ",")
asx = asx.replace("-", ",")
asx = asx.replace("Z", "")
asx = asx.split(",")
dt = datetime(int(asx[0]),int(asx[1]),int(asx[2]),int(asx[3]),int(asx[4]),int(asx[5]))
dt = dt.timestamp()
dt = int(round(dt))
if(tn > dt):
return "ok"
else:
return "lock"
def satu(skey):
root_keypair = Keypair.from_secret(skey)
pk = root_keypair.public_key
page = "https://horizon.stellar.org/claimable_balances?limit=200&claimant="+pk;
body = {}
r = requests.get(page, data=json.dumps(body))
try:
be = len(r.json()['_embedded']['records'])
except:
st.text("null")
return
#st.text(str(be)+" "+pk)
#return
for x in range(be):
assetx = r.json()['_embedded']['records'][x]['asset']
idb = r.json()['_embedded']['records'][x]['id']
jum = r.json()['_embedded']['records'][x]['amount']
spon = r.json()['_embedded']['records'][x]['sponsor']
at = assetx.split(":")
code = at[0]
issuer = at[1]
lbxx.text(pk)
lbx.text(code+" "+jum)
exp = []
exp.append(code)
exp.append(jum)
exp2 = []
exp2.append(code)
exp2.append(jum)
######END ['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['abs_before']
try:
ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['abs_before']
exp.append(ee0)
except:
ee0 = "null"
try:
ee0 = r.json()['_embedded']['records'][x]['claimants'][1]['predicate']['abs_before']
exp.append(ee0)
except:
ee0 = "null"
try:
ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['abs_before']
exp.append(ee0)
except:
ee0 = "null"
try:
ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['abs_before']
exp.append(ee0)
except:
ee0 = "null"
try:
ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['unconditional']
exp.append(ee0)
except:
ee0 = "null"
#st.write(len(exp))
#st.write(exp)
if(len(exp)>1):
ec = ediff(exp)
##########START
#var ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['not']['abs_before']
try:
ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['not']['abs_before']
exp2.append(ss0)
except:
ss0 = "null"
try:
ss0 = r.json()['_embedded']['records'][x]['claimants'][1]['predicate']['not']['abs_before']
exp2.append(ss0)
except:
ss0 = "null"
try:
ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['not']['abs_before']
exp2.append(ss0)
except:
ss0 = "null"
try:
ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['not']['abs_before']
exp2.append(ss0)
except:
ss0 = "null"
#st.write(len(exp2))
#st.write(exp2)
if(len(exp2)>1):
sc = sdiff(exp2)
##############################################
if(code=="AQUA" and spon == pk):
sc = "lock"
if(ec!="expired" and sc!="lock"):
#st.text(ec+" "+sc+" "+code+" "+jum)
chkn(code,issuer,jum,idb,skey)
#st.write(r.json())
return
def chkn(tok2,iss2,anu1,idb,skey):
tp = "credit_alphanum4"
if(len(tok2)>4):
tp = "credit_alphanum12"
page = "https://horizon.stellar.org/paths/strict-send?source_asset_type="+tp+"&source_asset_code="+tok2+"&source_asset_issuer="+iss2+"&source_amount="+anu1+"&destination_assets=native";
body = {}
r = requests.get(page, data=json.dumps(body))
arr = []
try:
anu2 = r.json()['_embedded']['records'][0]['destination_amount']
#lx = r.json()['_embedded']['records'][0]['path']
#st.write(anu2)
except:
#st.write("anu2 null")
return
if(tok2=="AQUA"):
swapxx(tok2,iss2,anu1,idb,skey)
return
if(float(anu2) > float(gap)):
swapgoo(tok2,iss2,anu1,idb,skey)
else:
#st.write("skip")
return
def swapgoo(tok,iss,dam,idb,skey):
ppt = []
ppt.append(Asset.native())
server = Server(horizon_url="https://horizon.stellar.org")
root_keypair = Keypair.from_secret(skey)
pkey = root_keypair.public_key
peka = pkey[0:10]+"..."+pkey[len(pkey)-10:]
root_account = server.load_account(account_id=pkey)
public_key = pkey
transaction = (
TransactionBuilder(
source_account=root_account,
network_passphrase=Network.PUBLIC_NETWORK_PASSPHRASE,
base_fee=1000,
)
.append_change_trust_op(tok,iss,limit=None,source=None)
.append_claim_claimable_balance_op(balance_id=idb,source=None)
.append_path_payment_strict_send_op(
destination=public_key,
send_code=tok,
send_issuer=iss,
send_amount=dam,
dest_code="XLM",
dest_issuer=None,
dest_min=str(gap),
path=ppt,
)
.append_change_trust_op(tok,iss,"0",source=None)
.add_text_memo("PedjuangRetjeh")
.set_timeout(30)
.build()
)
xd = transaction.to_xdr()
transaction.sign(root_keypair)
#st.caption(peka)
dam = dam.split(".")[0]
try:
response = server.submit_transaction(transaction)
#kirim(dam+" to "+damx)
#st.write(response['id'])
#st.write(dam+" "+tok)
s = peka+"_"+cuann(response['id'])+"_"
st.caption(":blue["+s+"] ["+tok+"](https://stellar.expert/explorer/public/tx/"+response['id']+") ")
#y = response['id']
except Exception as e:
y = json.loads(str(e))
#st.write(y['title']+" "+tok+" "+dam)
y = peka+"__"+y['title']+" "+tok+" "+dam
st.caption(":red["+y+"]")
#st.write(str(e))
#placeholder20.text(y['title'])
#time.sleep(1)
#swapp20()
return
def swapxx(tok,iss,dam,idb,skey):
server = Server(horizon_url="https://horizon.stellar.org")
root_keypair = Keypair.from_secret(skey)
pkey = root_keypair.public_key
peka = pkey[0:10]+"..."+pkey[len(pkey)-10:]
root_account = server.load_account(account_id=pkey)
public_key = pkey
transaction = (
TransactionBuilder(
source_account=root_account,
network_passphrase=Network.PUBLIC_NETWORK_PASSPHRASE,
base_fee=2000,
)
.append_claim_claimable_balance_op(balance_id=idb,source=None)
.add_text_memo("PedjuangRetjeh")
.set_timeout(30)
.build()
)
xd = transaction.to_xdr()
transaction.sign(root_keypair)
try:
response = server.submit_transaction(transaction)
y = response['id']
s = peka+"__"+dam
st.caption(":blue["+s+"] ["+tok+"](https://stellar.expert/explorer/public/tx/"+y+")")
except Exception as e:
y = json.loads(str(e))
y = peka+"__"+y['title']+" "+tok+" "+dam
st.caption(":red["+y+"]")
st.write(y)
return
st.title("Hajar Micin")
st.write("[email protected]")
st.caption(":red[^Untuk digunakan dalam area terbatas, segala resiko yang terjadi, diluar tanggungjawab kami.]")
line = st.text_input('Paste Secret Key', type='password')
if st.button('Hajar...'):
lbxx = st.empty()
lbx = st.empty()
try:
satu(line)
lbx.text("Selesai !!!")
except:
lbx.text("null")
#lbx.text("Selesai !!!")