Problema con la ejecución del código web3.py

Estoy tratando de ejecutar este código

from web3 import Web3, HTTPProvider
import json
import pprint
import requests
from random import randint

# Debug flags
debug_transaction = False
debug_CALL_transactions = False

# Geth node parameters
rpcport = '4000'

# Experiment parameters
numBuckets = 50

# Instantiate web3
web3 = Web3(HTTPProvider('http://localhost:' + rpcport))
# Instantiate HTTP connection to Geth JSONRPC
session = requests.Session()

# Iterate over blocks and print transactions
latest = web3.eth.getBlock('latest').number

print (latest)

Pero sigo recibiendo este error.

Traceback (most recent call last):
  File "python", line 23, in <module>
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=4000): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fcaeb556f98>: Failed to establish a new connection: [Errno 111] Connection refused',))

Soy nuevo en todo esto. ¿Alguien puede decirme qué estoy haciendo mal? Estoy tratando de ejecutar el código en repl.it

La URL que está proporcionando no es válida, ¿está ejecutando un nodo local?
¡Gracias por tu respuesta! No, no lo soy. Este es un código de muestra que encontré en línea. Solo estoy tratando de averiguar cómo ejecutarlo. Soy nuevo en web3.py y ethereum en su conjunto. ¿Cómo ejecuto un nodo local?

Respuestas (1)

Necesita tener acceso a un nodo. Puede acceder a los nodos de infura que son de libre acceso:

web3 = Web3(HTTPProvider('https://mainnet.infura.io/kjbuiysuidygasdy'))
web3.eth.getBlock('latest').number

Puede obtener su clave personal de infura que puede usar en lugar de kjbuiysuidygasdyregistrarse gratis en Infura

Espero que esto ayude.