RE: [ENG/ITA] Earning HIVE Thanks to My Scripts: Bridges Arbitrage and Grid Trading
You are viewing a single comment's thread:
Ecco, ora dovrebbe andare.
Mancava "type": "custom_json_operation",
quando veniva creato il custom_json.
from beem import Hive
from beem.account import Account
from beembase.operations import Custom_json
import json
# Dati utente
username = "xxxx"
active_key = "xxxxx" # tua chiave privata
# Inizializza blockchain
hive = Hive(keys=[active_key])
account = Account(username, blockchain_instance=hive)
# Parametri ordine
quantity = "1.00000"
price = "1"
symbol = "SWAP.HIVE" # Hive su Hive-Engine
order_type = "sell"
json_data = {
"contractName": "market",
"contractAction": order_type,
"contractPayload": {
"symbol": symbol,
"quantity": quantity,
"price": price
}
}
# Prepara e firma la transazione JSON
tx = Custom_json(
**{
"type": "custom_json_operation", # <--- mancava questo
"required_auths": [username],
"required_posting_auths": [],
"id": "ssc-mainnet-hive",
"json": json.dumps(json_data)
}
)
# Invia la transazione
broadcast_result = hive.finalizeOp(tx, username, "active")
print("Ordine piazzato:")
print(broadcast_result)
Ho fatto due test con un altro token (perchè non avevo SWAP.HIVE a disposizione) e mi ha creato gli ordini :)
0
0
0.000
grazie mille! Ho riprovato con la correzione, ma non capisco come capire se l'ordine è andato a buon fine...
Puoi controllare su questo block explorer:
https://he.dtools.dev/@barnabo73
Vedo però che non hai SWAP.HIVE disponibili, per cui se stai provando a creare ordini per questo token la transazione non andrà a buon fine!
scusa ancora la mia somme ignoranza, ma cosa sono gli swap.hive? Se intendi hive disponibili, ne ho molti....
SWAP.HIVE è l'equivalente di HIVE ma su Hive-Engine, per cui è proprio un token diverso, per quanto di valore identico ad HIVE.
Nel tuo wallet su Hive-Engine vedo che non ci sono SWAP.HIVE:
Per vedere se il tuo script funziona potresti cambiare il token symbol con WAIV, lanciare il tuo script e poi controllare su un block explorer o tramite lo script che hai inserito nell'altro commento se l'ordine così è stato recepito dalla blockchain (di base stavolta dovrebbe perchè hai disponibili parecchi WAIV).
Entrambi gli script che hai condiviso nei commenti sono infatti relativi ad Hive-Engine, non Hive, per cui è al primo che devi fare riferimento per vedere se hai abbastanza token per creare un ordine.
Per creare qualcosa che funzioni su Hive (invece che Hive-Engine) dovresti fare riferimento alla documentazione di beem ed a quella sulle API di Hive.
Se ti serve qualche esempio concreto dimmi pure :) nelle mie repositories su Github trovi alcuni esempi, anche se quelli più interessanti sono in repo private (perchè dentro ci copio spesso le mie chiavi private, evviva la sicurezza 🤣), ma posso inviarti in qualche modo anche quelli se ti possono fare comodo.
ah, ok! Beem invece usa i token direttamente su hive, se ho capito bene. Grazie mille, quando ho tempo ci studio un po'! I tuoi commenti sono molto preziosi, come vedi sono molto ignorante su molti aspetti base della blockchain, c'è molto da studiare...
Dipende, beem può essere utilizzata sia per Hive che per Hive-Engine, in alcune sue parti; ciò che fa la differenza sono:
Esempi di nodi di Hive sono invece questi:
Mentre un esempio di costruzione di un trasferimento, sempre per Hive, è questo:
La parte finale la potresti anche sostituire con
hive.finalizeOps()
che ti ho visto usare nel primo script che hai condiviso, dato che quello si occupa di inviare e firmare la transazione.Tranquillo, siamo sulla stessa barca 🤣
ho usato questo codice per vedere gli ordini attivi, ma brancolo un po' nel buio... Mi dice 'Nessun ordine attivo trovato....' eppure quando ho lanciato il tuo script corretto mi ha dato 'ordine piazzato'. Grazie ancora!
import requests
username = "myusername"
url = "https://api.hive-engine.com/rpc/contracts"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "find",
"params": {
"contract": "market",
"table": "openOrders",
"query": {
"account": username
},
"limit": 1000
}
}
response = requests.post(url, json=payload)
orders = response.json().get("result", [])
print(f"Ordini attivi per {username}:")
if orders is None:
print("Nessun ordine attivo trovato o risposta non valida.")
else:
for order in orders:
print(order)