Bitcoin Forum
November 02, 2024, 10:32:33 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Waves API  (Read 583 times)
crpt01 (OP)
Full Member
***
Offline Offline

Activity: 174
Merit: 105


View Profile
October 04, 2017, 01:24:33 PM
 #1

Salve a tutti,
avrei bisogno di aiuto. Sono un po' di giorni che sto sbattendo la testa con le API waves al fine di ricavare delle semplici info su un wallet. Nello specifico sto cercando di ricavare il balance dei waves contenuti nell'account con tanto di asset (token) e relativi balance.

Le 2 funzioni (descritte bene a questa pagina https://github.com/wavesplatform/Waves/wiki/Waves-Node-REST-API) che fanno al mio caso sono :

Code:
GET /addresses/balance/{address}

Get account balance in WAVES in {address}:
  "address" - account's address in Base58 format


Response JSON example:

{
  "address": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K",
  "confirmations": 0,
  "balance": 100945889661986
}

e

Code:
GET /assets/balance/{address}

Balances for all assets that the given account ever had (besides WAVES).
  "address" - account's address in Base58 format


Response params:
"address" -  Account's address in Base58 format
"balances" - List of balance objects for assets that the given account has ever
"assetId" - Asset ID in Base58 format
"balance" - Balance of that Asset on account
"issued" - Boolean flag whether this asset was issued by that account


Response JSON example:

{
  "address": "3Mv61qe6egMSjRDZiiuvJDnf3Q1qW9tTZDB",
  "balances": [
    {
      "assetId": "Ax9T4grFxx5m3KPUEKjMdnQkCKtBktf694wU2wJYvQUD",
      "balance": 4879179221,
      "issued": true
    },
    {
      "assetId": "49KfHPJcKvSAvNKwM7CTofjKHzL87SaSx8eyADBjv5Wi",
      "balance": 0,
      "issued": false
    }
  ]
}

Da qui nasce il mio problema. I valori dei balance che precisione hanno ? Non ci sono virgole o punti e sono tutti di lunghezza diversa. Come faccio a capire / calcolare quale sia la quantità reale ?

Ho provato anche ad utilizzare PyWaves (an object-oriented Python interface to the Waves blockchain platform) reperibile a questo indirizzo: https://github.com/PyWaves/PyWaves

Anche qui la funzione che fa al caso mio è la seguente :

Code:
Check an address balance:
>>> import pywaves as pw
>>> pw.Address('3P31zvGdh6ai6JK6zZ18TjYzJsa1B83YPoj')
address = 3P31zvGdh6ai6JK6zZ18TjYzJsa1B83YPoj
publicKey =
privateKey =
seed =
balances:
  Waves = 1186077288304570
  BDMRyZsmDZpgKhdM7fUTknKcUbVVkDpMcqEj31PUzjMy (Tokes) = 43570656915
  RRBqh2XxcwAdLYEdSickM589Vb4RCemBCPH5mJaWhU9 (Ripto Bux) = 4938300000000
  4rmhfoscYcjz1imNDvtz45doouvrQqDpbX7xdfLB4guF (incentCoffee) = 7
  Ftim86CXM6hANxArJXZs2Fq7XLs3nJvgBzzEwQWwQn6N (Waves) = 2117290600000000
  E4ip4jzTc4PCvebYn1818T4LNoYBVL3Y4Y4dMPatGwa9 (BitCoin) = 500000000000
  FLbGXzrpqkvucZqsHDcNxePTkh2ChmEi4GdBfDRRJVof (Incent) = 12302659925430
  GQr2fpkfmWjMaZCbqMxefbiwgvpcNgYdev7xpuX6xqcE (KISS) = 1000
  DxG3PLganyNzajHGzvWLjc4P3T2CpkBGxY4J9eJAAUPw (UltraCoin) = 200000000000000
  4eWBPyY4XNPsFLoQK3iuVUfamqKLDu5o6zQCYyp9d8Ae (LIKE) = 1000
>>>


... e anche qui, come si vede il risultato è lo stesso. Numeri senza una precisione ben definita.

Qualcuno sa aiutarmi a capire ? Una dritta ?

grazie anticipatamente per il vs supporto
HYPEREGO
Newbie
*
Offline Offline

Activity: 26
Merit: 0


View Profile
October 17, 2017, 02:55:26 PM
 #2

Effettivamente da una rapida occhiata alle API non pare esserci una indicazione sulla precisione della cifra ma penso che si potrebbe fare un test ai morsetti utilizzando un wallet come cavia, il risultato restituito ti svelerà l'arcano. I decimals comunque di solito sono una caratteristica di un token, nel senso che al momento del broadcast del token nella rete deve essere indicato il numero di decimali, mi fa strano che tale informazione non sia poi recuperabile dalle API.. Ad esempio, su BTC a rigor di logica quella cifra (500000000000) dovrebbe essere satoshi, quindi sono 5000btc, i restanti sono i decimali!
man1975asc
Member
**
Offline Offline

Activity: 122
Merit: 10


View Profile
October 28, 2017, 10:36:22 PM
 #3

Sembra che hai ragione non c'è nessun modo (ufficiale almeno) di recuperare questa informazione. Ti conviene contattarli direttamente.
crpt01 (OP)
Full Member
***
Offline Offline

Activity: 174
Merit: 105


View Profile
January 29, 2018, 05:08:07 PM
 #4

Sono stato un po' assente dal forum in questo periodo, ma nel frattempo non ho smesso di cercare una soluzione. Al momento ne ho trovata una. Non mi piace molto perchè passa per excel ma conto/spero di replicarla presto in python.

La soluzione consiste nel prendere uno per uno i token esistenti nel wallet ed interpellare la funzione pw.asset. Esempio :

Code:
Check an asset:
>>> import pywaves as pw
>>> pw.Asset('DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J')
status = Issued
assetId = DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J
issuer = 3PPKF2pH4KMYgsDixjrhnWrPycVHr1Ye37V
name = WavesCommunity
description = Waves community token.
quantity = 1000000000
decimals = 2
reissuable = False

A questo punto abbiamo il valore "decimals" relativo all'asset che ci interessa. Quindi non ci resta che dividere il valore (senza senso) del balance ottenuto prima per 10^decimals.

E' veramente una rottura ma al momento non ho traovato di meglio e mi meraviglio come non esistano api più user friendly per una funzione che reputo veramente banale ma fondamentale come il conoscere il balance di un asset.

Vi tengo aggiornati sugli sviluppi. Intanto qualunque aiuto o suggerimento è ben accetto.
itsmeram
Full Member
***
Offline Offline

Activity: 212
Merit: 104



View Profile
January 30, 2018, 12:37:16 AM
 #5

Credo che la tua soluzione sia l'unica percorribile al momento!
Come hai detto tu, non sono assolutamente API user friendly. Speriamo le aggiornino a breve.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!