I’m making an attempt to implement an SPV consumer in python (for my very own studying). I wish to begin by making a easy TCP connection to a full node, however I both can not get a response to my model message, or to my verack message if the model message goes by way of. I’ve referenced this and that is the code that I’m making an attempt to run:
#Import dependencies
import socket
import time
import random
import struct
import hashlib
import binascii
import ssl
import socks
# Binary encode the sub-version
def create_sub_version():
sub_version = "/Satoshi:0.7.2/"
return b'x0F' + sub_version.encode()
# Binary encode the community addresses
def create_network_address(ip_address, port):
network_address = struct.pack('>8s16sH', b'x01',
bytearray.fromhex("00000000000000000000ffff") + socket.inet_aton(ip_address), port)
return(network_address)
# Create the TCP request object
def create_message(magic, command, payload):
checksum = hashlib.sha256(hashlib.sha256(payload).digest()).digest()[0:4]
return(struct.pack('L12sL4s', magic, command.encode(), len(payload), checksum) + payload)
# Create the "model" request payload
def create_payload_version(peer_ip_address):
model = 60002
providers = 1
timestamp = int(time.time())
addr_local = create_network_address("127.0.0.1", 8333)
addr_peer = create_network_address(peer_ip_address, 8333)
nonce = random.getrandbits(64)
start_height = 645953
payload = struct.pack('
The server I hook up with within the code is among the many solely ones that will reply to the model message, returning b’7b226a736f6e727063223a2022322e30222c20226572726f72223a207b22636f6465223a202d33323730302c20226d657373616765223a20226d65737361676573206d75737420626520656e636f64656420696e205554462d38227d2c20226964223a206e756c6c7d0a’.
I additionally tried referencing: this stack trade query and Ken Shirriff’s github code, however none appear to work, both as a result of I’m utilizing python3 or from different causes. I’m a newbie on this, so if any person might assist me perceive why I can not get my messages throughout within the above code or has one other implementation in python3, I might be grateful.

