DCIPs/assets/eip-6404/tests/sign_transaction.py

29 lines
1.2 KiB
Python

from secp256k1 import PrivateKey
from create_transactions import *
if __name__ == '__main__':
privkey = PrivateKey()
for tx_index, encoded_signed_tx in enumerate(encoded_signed_txs):
eip2718_type = encoded_signed_tx[0]
if eip2718_type == 0x05:
sig_hash = compute_eip4844_sig_hash(
BlobTransactionNetworkWrapper.decode_bytes(encoded_signed_tx[1:]).tx)
elif eip2718_type == 0x02:
sig_hash = compute_eip1559_sig_hash(
decode(encoded_signed_tx[1:], EIP1559SignedTransaction))
elif eip2718_type == 0x01:
sig_hash = compute_eip2930_sig_hash(
decode(encoded_signed_tx[1:], EIP2930SignedTransaction))
elif 0xc0 <= eip2718_type <= 0xfe:
sig_hash = compute_legacy_sig_hash(
decode(encoded_signed_tx, LegacySignedTransaction))
else:
assert False
raw_sig = privkey.ecdsa_sign_recoverable(sig_hash, raw=True)
sig, y_parity = privkey.ecdsa_recoverable_serialize(raw_sig)
print(f'{tx_index}')
print(f'y_parity = {y_parity}')
print(f'r = 0x{sig[0:32].hex()}')
print(f's = 0x{sig[32:64].hex()}')