Я использовал следующий скрипт для генерации моего личного ключа и соответствующего адреса сегвита.
Затем, чтобы проверить его, я отправил средства на адрес и импортировал закрытый ключ на кошелек блокчейна;
РЕЗУЛЬТАТ: В закрытом ключе нет средств, и отображаемый адрес - это не адрес сегвита, а просто другой адрес P2PKH.
В чем проблема?
import random,ecdsa,hashlib,base58
private_key=(random.getrandbits(256)).to_bytes(32,byteorder="little",signed=False)
signed_key=ecdsa.SigningKey.from_string(private_key,curve=ecdsa.SECP256k1)
verifying_key=signed_key.get_verifying_key()
x_cor=bytes.fromhex(verifying_key.to_string().hex())[:32]
y_cor=bytes.fromhex(verifying_key.to_string().hex())[32:]
if int.from_bytes(y_cor,byteorder="big",signed=True)%2==0:
public_key = bytes.fromhex(f'02{x_cor.hex()}')
else:
public_key = bytes.fromhex(f'03{x_cor.hex()}')
sha256_key = hashlib.sha256(public_key)
ripemd160_key = hashlib.new("ripemd160")
ripemd160_key.update(sha256_key.digest())
key_hash=ripemd160_key.digest()
P2WPKH_V0 = bytes.fromhex(f'0014{key_hash.hex()}')
sha256_P2WPKH_V0 = hashlib.sha256(public_key)
ripemd160_P2WPKH_V0 = hashlib.new("ripemd160")
ripemd160_P2WPKH_V0.update(sha256_P2WPKH_V0.digest())
script_hash=ripemd160_key.digest()
P2SH_P2WPKH_V0 = bytes.fromhex(f'a9{script_hash.hex()}87')
flagged_scripthash = bytes.fromhex(f'05{script_hash.hex()}')
checksum = hashlib.sha256(hashlib.sha256(flagged_scripthash).digest()).digest()[:4]
bin_addr = flagged_scripthash + checksum
nested_address = base58.b58encode(bin_addr)
compressed_private_key = private_key + '01'
wifcomp1 = bitcoin.encode_privkey(bitcoin.decode_privkey(private_key, 'hex'), \
'wif_compressed')
print("Private key: "+ private_key.hex())
print("WIF key: "+ wifcomp1)
print("Nested Address: " + nested_address.decode())