Bitcoingraph – O biblioteca Python pentru explorarea graficului tranzactiilor Bitcoin.

Conditii preliminare

Configurarea si configurarea Bitcoin Core

Mai intai, instalati versiunea curenta a Bitcoin Core (v.11.1), fie de la sursa, fie de la un executabil precompilat.

Odata instalat, veti avea acces la trei programe: bitcoind (= peer complet), bitcoin-qt (= peer cu GUI) si bitcoin-cli (interfata linie de comanda RPC). Urmatoarele instructiuni au fost testate cu bitcoind si presupun ca puteti porni si rula un partener Bitcoin Core dupa cum urmeaza:

In al doilea rand, trebuie sa va asigurati ca clientul dvs. bitcoin accepta conexiuni JSON-RPC modificand fisierul de configurare Bitcoin Core dupa cum urmeaza:

# server = 1 spune Bitcoin-QT sa accepte comenzile JSON-RPC. server = 1 # Trebuie sa setati rpcuser si rpcpassword pentru a securiza api JSON-RPC rpcuser = your_rpcuser rpcpassword = your_rpcpass # Cate secunde bitcoin va astepta o cerere completa HTTP RPC. # dupa stabilirea conexiunii HTTP. rpctimeout = 30 # Ascultati conexiunile RPC pe acest port TCP: rpcport = 8332

Testati daca interfata JSON-RPC functioneaza pornind pe Bitcoin Core peer (… asteptand pana la finalizarea pornirii …) si utilizand urmatoarea cerere CURL (cu numele de utilizator si parola adaptate):

curl –data-binary ‘{“jsonrpc”: “1.0”, “id”: “curltest”, “method”: “getinfo”, “params”: []}’ -H ‘content-type: text / plain ; ” http: // your_rpcuser: your_rpcpass @ localhost: 8332 /

In al treilea rand, deoarece Bitcoingraph trebuie sa acceseze tranzactiile blockchain non-portofel prin ID-urile lor, trebuie sa activati indexul tranzactiilor in baza de date Bitcoin Core. Acest lucru poate fi realizat prin adaugarea urmatoarei proprietati la bitcoin.conf

… si reporniti peerul dvs. de baza Bitcoin dupa cum urmeaza (reconstruirea indexului poate dura ceva timp):

Testati accesul la datele tranzactiilor fara portofel luand un ID de tranzactie arbitrar si emitand urmatoarea solicitare folosind cURL:

curl –data-binary ‘{“jsonrpc”: “1.0”, “id”: “curltest”, “method”: “getrawtransaction”, “params”: [“110ed92f558a1e3a94976ddea5c32f030670b5c58c3cc4d857ac14d7a1547a90” tip: text / simplu; ‘ http: // your_rpcuser: your_rpcpass @ localhost: 8332 /

In cele din urma, bitcoingraph foloseste si interfata HTTP REST a Bitcoin Core, care este activata utilizand urmatorul parametru:

Testati-l folosind niste hash-uri de blocare

http: // localhost: 8332 / rest / block / 000000000000000e7ad69c72afc00dc4e05fc15ae3061c47d3591d07c09f2928.json

Cand ati ajuns la acest punct, configurarea dvs. Bitcoin Core functioneaza. Terminati toate instantele Bitcoind care ruleaza si lansati un nou daemon de fundal cu interfata REST activata

Configurarea bibliotecii Bitcoingraph

Bitcoingraph este dezvoltat in Python 3.4. Asigurati-va ca ruleaza pe masina dvs.:

Acum cloneaza Bitcoingraph …

git clone https://github.com/behas/bitcoingraph.git

… testati si instalati biblioteca Bitcoingraph:

cd bitcoingraph pip install -r requirements.txt py.test python setup.py install

Specificatii Mac OSX

Rularea bitcoingraph pe un Mac necesita instalarea coreutils

homebrew instaleaza coreutils

Stimularea bazei de date grafice subiacente (Neo4J)

bitcoingraph stocheaza tranzactiile Bitcoin ca grafic etichetat directionat intr-o instanta a bazei de date a graficului Neo4J. Aceasta baza de date poate fi bootstrappata prin incarcarea unei descarcari initiale blockchain, efectuarea calculului entitatii pe intreaga descarcare, asa cum este descris de Ron si Shamir si ingerarea acesteia intr-o instanta Neo4J care ruleaza.

folladas en el metro maduras sensuales
video sexo porno español trios
shemalehd porno español abuelas
videos de chicas gratis abuelas por el culo
madre follada a la fuerza maduras gozando
necrofilia xxx masajes porno en español
jovencitas masturbandose porno españolas peludas
familia española follando española viciosa
zoofila peliculas porno subtituladas en español
pillados follando infraganti creampie española
follando en el convento videos porno corridas internas
super mamadas incesto abuelas
porno guey alexa grace
moras follando porno traducido al español
lisbianas maduras gordibuenas
incesto abuelas megan montaner follando
españolas follando por dinero taboo.com
pajas en coche chica se masturba
maduras a cuatro patas videos chicas gratis
tetas amateur parejitas españolas follando

Pasul 1: creati tranzactia de blocare din blockchain

Bitcoingraph ofera instrumentul bcgraph-export pentru exportul tranzactiilor intr-un anumit interval de blocuri din blockchain. Urmatoarea comanda exporta toate tranzactiile cuprinse in intervalul de blocuri de la 0 la 1000 utilizand formatul de antet Neo4Js si fisiere de antet CSV separate:

bcgraph-export 0 1000 -u your_rpcuser -p your_rpcpass

Sunt create urmatoarele fisiere CSV (cu fisiere antet separate):

  • adresele.csv: lista sortata a adresei Bitcoin
  • blocks.csv: lista de blocuri (hash, inaltime, timestamp)
  • transactions.csv: lista tranzactiilor (hash, coinbase / non-coinbase)
  • outputs.csv: lista iesirilor tranzactiei (cheie de iesire, id, valoare, tip de script)
  • rel_block_tx.csv: relatia dintre blocuri si tranzactii (block_hash, tx_hash)
  • rel_input.csv: relatia dintre tranzactii si iesirile tranzactiei (tx_hash, cheie de iesire)
  • rel_output_address.csv: relatia dintre iesiri si adrese (cheie de iesire, adresa)
  • rel_tx_output.csv: relatia dintre tranzactii si iesirile tranzactiei (tx_hash, cheie de iesire)

Pasul 2: calculati entitatile peste dump-ul tranzactiei

Urmatoarea comanda calculeaza entitati pentru o anumita descarcare de date blockchain:

bcgraph-compute-entity -i blocks_0_1000

Sunt create doua fisiere suplimentare:

  • entity.csv: lista de identificatori de entitate (entity_id)
  • rel_address_entity.csv: atribuirea adreselor catre entitati (adresa, entity_id)

Pasul 3: ingerati o descarcare pre-calculata in Neo4J

Descarcati si instalati editia comunitatii Neo4J (> = 2.3.0):

tar xvfz neo4j-community-2.3.0-unix.tar.gz export NEO4J_HOME = [PATH_TO_NEO4J_INSTALLATION]

Testati instalarea Neo4J:

$ NEO4J_HOME / bin / neo4j start http: // localhost: 7474 /

Instalati si asigurati-va ca nu ruleaza si ca bazele de date preexistente sunt eliminate:

$ NEO4J_HOME / bin / neo4j stop rm -rf $ NEO4J_HOME / data / *

Reveniti in directorul de descarcare si creati o noua baza de date utilizand instrumentul de importare CSV al Neo4J:

$ NEO4J_HOME / bin / neo4j-import –in $ NEO4J_HOME / data / graph.db \ –nodes: Block blocks_header.csv, blocks.csv \ –nodes: Transaction transactions_header.csv, transactions.csv \ –nodes: Iesire outputs_header.csv, outputs.csv \ –nodes: Adresa address_header.csv, adreses.csv \ –nodes: Entitati entitati.csv \ –relationships: CONTAINS rel_block_tx_header.csv, rel_block_tx.csv \ –relationships: OUTPUT rel_tx_output_header .csv, rel_tx_output.csv \ –relationships: INPUT rel_input_header.csv, rel_input.csv \ –relationships: USES rel_output_address_header.csv, rel_output_address.csv \ –relationships: BELONGS_TO rel_address_entity.csv

Apoi, porniti shell-ul Neo4J …:

$ NEO4J_HOME / bin / neo4j-shell -path $ NEO4J_HOME / data

si creati urmatoarele constrangeri uniquness:

CREARE CONSTRAINT ON (a: Address) ASSERT a.address IS UNIQUE; CREARE CONSTRAINT ON (o: Output) ASSERT o.txid_n ESTE UNIC;

In cele din urma, incepeti Neo4J

$ NEO4J_HOME / bin / neo4j start

Pasul 4: imbogatiti graficul tranzactiilor cu informatii de identitate

Unele adrese bitcoin au informatii de identitate publica asociate. Bitcoingraph ofera un exemplu de script care colecteaza informatii de pe blockchain.info.

utils / identity_information.py

Fisierul CSV rezultat poate fi importat in Neo4j cu instructiunea Cypher:

INCARCATI CSV CU HEADERS FROM “fisier: // <PATH> /identities.csv” AS rand MERGE (a: Address {address: row.address}) CREATE a – [: HAS] -> (i: Identity {name: row .tag, link: row.link, sursa: “https://blockchain.info/”})

Pasul 5: Instalati pluginul de calcul al entitatii Neo4J

Clonati depozitul git si compilati din sursa. Acest lucru necesita instalarea Maven si Java JDK.

git clone https://github.com/romankarl/entity-plugin.git pachet mvn cd entity-plugin

Copiati pachetul JAR in directorul de pluginuri Neo4j.

service neo4j-service stop cp target / entity-plugin-0.0.1-SNAPSHOT.jar $ NEO4J_HOME / plugins / service neo4j-service start

Pasul 6: activati sincronizarea cu lantul de blocuri Bitcoin

Bitcoingraph ofera un script de sincronizare, care citeste blocuri din bitcoind si le scrie in Neo4j. Este destinat sa fie apelat de un job cron care ruleaza zilnic sau mai frecvent. Din motive de performanta, nu reprezinta o inlocuire pentru pasii 1-3.

bcgraph-synchronize -s localhost -u RPC_USER -p RPC_PASS -S localhost -U NEO4J_USER -P NEO4J_PASS –rest

Colaboratori

  • Bernhard Haslhofer
  • Roman Karl

Licenta

Aceasta biblioteca este lansata Open Source sub licenta MIT.