distribusi hardened vs node mati + send ⊖ pernah menyesatkan (V58/V59)
V58 failover node pool: config += API_NODES (CSV VEX_API_NODES, default v2.vexascan.com:2096 + https://api.databisnis.id, mainnet terverifikasi) ; distribute _post_json coba SEMUA node per putaran (semua mati → RuntimeError), build_signed_transfer coba tiap node utk link+sign (net ter-bind → send ikut node sama), fetch_balance_with_retry backoff [30..180]s ~10 mnt real-run / dry-run satu attempt ; scan/claim tetap API_NODE tunggal, fee klaim mewarisi failover gratis ; oracle failover saldo + semua-mati raise + backoff + mock Net V59 send aman per pemilih (B19): (1) verify_txid → None (Hyperion down) = TAHAN sungguhan — break + failed di attempt 1, ⊖ resend dgn tapos/expiration baru → txid baru → double-send (kode lama cuma print ditahan lalu fallthrough ke retry, oracle lolos karena set MAX_ATTEMPTS=1) ; (2) _send_rejected(resp) deteksi body HTTP-500 pyntelope ⊖ raise (pola V46/B11, duplicate/ insufficient-balance) → raise → jalur verify/retry, ⊖ pernah sent utk tx yang ⊥ mendarat ; oracle hold-attempt-1 (3 attempt default, build sekali per pemilih) + rejection-500 → failed ; docs §V58/V59 + §B/B19 + T51/T52 + AGENTS image dist + claim rebuild + push (claim impor distribute)
This commit is contained in:
1 parent
8e80653df9
commit
fb16eeafaa
6 files changed
+285
-47
No files matched your search
@@ -17,6 +17,17 @@ TARGET_BP = os.getenv('VEX_TARGET_BP', 'databisnisid')
|
||||
# Node RPC publik Vexanium
|
||||
API_NODE = os.getenv('VEX_API_NODE', 'https://v2.vexascan.com:2096')
|
||||
|
||||
# Node pool RPC (V58): CSV `VEX_API_NODES` — node utama + cadangan utk failover
|
||||
# distribusi (fetch saldo, ABI/TAPOS, broadcast). Default = `API_NODE` +
|
||||
# `https://api.databisnis.id` (node mainnet Vexanium terverifikasi, host sama
|
||||
# dgn DATABISNIS_API tapi melayani juga /v1/chain). Dipakai `distribute.py`;
|
||||
# scan/klaim tetap memakai `API_NODE` tunggal.
|
||||
API_NODES = [
|
||||
n.strip() for n in os.getenv(
|
||||
'VEX_API_NODES', f'{API_NODE},https://api.databisnis.id').split(',')
|
||||
if n.strip()
|
||||
]
|
||||
|
||||
# Lokasi basis data SQLite (dipakai fetcher & dashboard)
|
||||
DB_PATH = os.getenv('VEX_DB_PATH', 'voters.db')
|
||||
|
||||
|
||||
Reference in new issue
Block a user