Dieser Artikel verwendet Mac OS Sierra 10.12.4. Die Python-Version ist 3.5.0.
Virtuelle Währungen wie Bitcoin verfügen über einen Explorer zum Überprüfen von Adressen und Transaktionen. Etherscan ist als Explorer für Ethereum verfügbar. Und Etherscan hat auch eine API. Wenn Sie dies verwenden, können Sie Transaktionen einfach extrahieren, ohne direkt aus der Blockchain zu gehen. Also werde ich es benutzen.
Um die Etherscan-API verwenden zu können, müssen Sie Etherscan registrieren und API-KEY erhalten. Das Registrierungs- und Erwerbsverfahren ist auf der offiziellen Etherscan API-Seite beschrieben. Sie können API-KEY erhalten, indem Sie sich neu bei Etherscan registrieren und ClientPortal-> MyApiKey aufrufen.
Dieses Mal werden wir die API von Etherscan mit Python verwenden. Gehen Sie dazu zur Seite py-etherscan-api github (https://github.com/corpetty/py-etherscan-api/tree/cebc169dfca7d4fea5eec01c875550216de67039) und klonen Sie sie.
git-clone
git clone https://github.com/corpetty/py-etherscan-api.git
python
cd py-etherscan-api
Nach dem Klonen lokal installieren.
python
python setup.py install
Etherscan ALL-Konto Erhalten Sie oben im Betrag eine entsprechende Adresse und bestätigen Sie die Transaktion.
get_transaction_page ()
. Wenn Sie viele Transaktionen erhalten möchten, sollten Sie in der Lage sein, die Variablen page_no und offset in get_transaction_page ()
zu verarbeiten und zu schleifen.
-Auch der Import von datetime ist durchgesickert, also habe ich ihn hinzugefügt.get_tx_values.py(2019/2/7 Versionen)
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(Vorherige Versionen. Funktioniert nicht mit Fehler)
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'])
Ergebnis
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
Es entspricht der Transaktion auf Etherscan. (Da Python vom ältesten ausgegeben wird, wird es in umgekehrter Reihenfolge wie Etherscan ausgegeben.)
Die Explorer-API scheint bei der Analyse von Adresstransaktionen hilfreich zu sein.