Cet article utilise Mac OS Sierra 10.12.4. La version python est 3.5.0.
Les monnaies virtuelles telles que Bitcoin ont un explorateur pour vérifier les adresses et les transactions. Etherscan est disponible en tant qu'explorateur pour Ethereum. Et Etherscan dispose également d'une API. Si vous l'utilisez, vous pouvez facilement extraire des transactions sans passer directement de la blockchain. Alors je vais l'utiliser.
Pour utiliser l'API Etherscan, vous devez enregistrer Etherscan et obtenir l'API-KEY. La procédure d'enregistrement et d'acquisition est décrite sur la [page API] officielle d'Etherscan (https://etherscan.io/apis). Vous pouvez obtenir API-KEY en vous inscrivant nouvellement sur Etherscan et en consultant ClientPortal-> MyApiKey.
Cette fois, nous utiliserons l'API d'Etherscan en utilisant python. Pour ce faire, accédez à la page github py-etherscan-api (https://github.com/corpetty/py-etherscan-api/tree/cebc169dfca7d4fea5eec01c875550216de67039) et git le cloner.
git-clone
git clone https://github.com/corpetty/py-etherscan-api.git
python
cd py-etherscan-api
Installez localement après le clonage.
python
python setup.py install
Compte Etherscan ALL Obtenez une adresse appropriée en haut du montant et confirmez la transaction.
get_all_transactions ()
était une erreur (Référence: [get_all_transactions conduit à une erreur dans la connexion # 34]
](Https://github.com/corpetty/py-etherscan-api/issues/34)), remplacé par la méthode get_transaction_page ()
. Si vous voulez obtenir beaucoup de transactions, vous devriez pouvoir traiter les variables page_no et offset dans get_transaction_page ()
et les boucler.
-En outre, l'importation de datetime a été divulguée, alors je l'ai ajoutée.
-En outre, tsv est sorti.get_tx_values.py(2019/2/7 versions)
from etherscan import accounts
import pandas as pd
import datetime as dt
API_KEY = 'API_KEY' # change API_KEY
ADDRESS = '0xb794f5ea0ba39494ce839613fffba74279579268' # change address
def get_tx_value(page_no, address, api_key):
ac = accounts.Account(address=address,api_key=api_key)
# txes = ac.get_all_transactions()
txes = ac.get_transaction_page(page_no)
ret = []
for t in txes:
tmp = []
tmp.append(t.get('from'))
tmp.append(t.get('to'))
tmp.append(int(t.get('value')) / 1000000000000000000 )
tmp.append(dt.datetime.fromtimestamp(int(t.get('timeStamp'))))
ret.append(tmp)
return ret
ret = get_tx_value(page_no=1, address=ADDRESS,api_key=API_KEY)
df = pd.DataFrame(ret,columns=['from','to','value','datetime'])
df.to_csv('txes.tsv',sep='\t')
get_tx_values.py(ancienne version. Ne fonctionne pas avec une erreur)
from etherscan import accounts
import pandas as pd
import datetime as dt
API_KEY = 'API_KEY' # change API_KEY
ADDRESS = '0xb794f5ea0ba39494ce839613fffba74279579268' # change address
def get_tx_value(address,api_key):
ac = accounts.Account(address=address,api_key=api_key)
txes = ac.get_all_transactions()
ret = []
for t in txes:
tmp = []
tmp.append(t.get('from'))
tmp.append(t.get('to'))
tmp.append(int(t.get('value')) / 1000000000000000000 )
tmp.append(dt.datetime.fromtimestamp(int(t.get('timeStamp'))))
ret.append(tmp)
return ret
ret = get_tx_value(address=ADDRESS,api_key=API_KEY)
df = pd.DataFrame(ret,columns=['from','to','value','datetime'])
résultat
from to value datetime
0 0x32be343b94f860124dc4fee278fdcbd38c102d88 0xb794f5ea0ba39494ce839613fffba74279579268 100.000000 2015-08-09 07:47:35
1 0xb794f5ea0ba39494ce839613fffba74279579268 0x32be343b94f860124dc4fee278fdcbd38c102d88 99.000000 2015-08-09 07:53:13
2 0x32be343b94f860124dc4fee278fdcbd38c102d88 0xb794f5ea0ba39494ce839613fffba74279579268 99.001192 2015-08-09 07:55:43
3 0x32be343b94f860124dc4fee278fdcbd38c102d88 0xb794f5ea0ba39494ce839613fffba74279579268 900.000000 2015-08-09 07:58:23
4 0x32be343b94f860124dc4fee278fdcbd38c102d88 0xb794f5ea0ba39494ce839613fffba74279579268 9000.000000 2015-08-09 07:59:15
Il correspond à la transaction sur Etherscan. (Puisque python sort du plus ancien, il sort dans l'ordre inverse d'Etherscan)
L'API d'Explorer semble être utile lors de l'analyse des transactions d'adresse.