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 :)

orders.JPG



0
0
0.000
7 comments
avatar

grazie mille! Ho riprovato con la correzione, ma non capisco come capire se l'ordine è andato a buon fine...

0
0
0.000
avatar

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!

0
0
0.000
avatar

scusa ancora la mia somme ignoranza, ma cosa sono gli swap.hive? Se intendi hive disponibili, ne ho molti....

0
0
0.000
avatar

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.

0
0
0.000
avatar

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...

0
0
0.000
avatar

Dipende, beem può essere utilizzata sia per Hive che per Hive-Engine, in alcune sue parti; ciò che fa la differenza sono:

  • i nodi a cui ti connetti (https://api.hive-engine.com/rpc/contracts ad esempio è un nodo di Hive-Engine)
  • come costruisci l'informazione che vuoi inviare (l'utilizzo del "payload" e di un "custom_json" ad esempio è tipico di Hive-Engine)

Esempi di nodi di Hive sono invece questi:

urls = [
        "https://api.deathwing.me",
        "https://api.hive.blog",
        "https://hive-api.arcange.eu",
        "https://hive.roelandp.nl",
        "https://api.openhive.network",
        "https://api.c0ff33a.uk",
        "https://anyx.io",
        "https://techcoderx.com",
        "https://rpc.mahdiyari.info",
    ]

Mentre un esempio di costruzione di un trasferimento, sempre per Hive, è questo:

def transfer_hive(sender, receiver="arc7icwolf", amount="0.001", memo=""):
    data = Transfer(
        **{"from": sender, "to": receiver, "amount": f"{amount} HIVE", "memo": memo}
    )
    
    hive = connect_to_hive()
    tx = TransactionBuilder(hive_instance=hive)
    tx.appendOps(data)
    tx.appendWif(PRIVATE_KEY)
    tx.sign()
    tx_id = tx.broadcast()
    print(tx_id)

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.

sono molto ignorante su molti aspetti base della blockchain, c'è molto da studiare...

Tranquillo, siamo sulla stessa barca 🤣

0
0
0.000
avatar

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)

0
0
0.000