whoSignedThisTransaction::Transaction->Maybe Address -- Signatures can be malformed, hence the Maybe
whoSignedThisTransaction t = 
    fmap pubKey2Address $ getPubKeyFromSignature xSignature theHash
        where
          xSignature = ExtendedSignature (Signature (fromInteger $ transactionR t) (fromInteger $ transactionS t)) (0x1c == transactionV t)
          SHA theHash = hash $ rlpSerialize $ partialRLPEncode t
whoSignedThisTransaction::Transaction->Maybe Address
whoSignedThisTransaction t = 
    fmap pubKey2Address $ getPubKeyFromSignature xSignature theHash
        where
          xSignature = ExtendedSignature (Signature (fromInteger $ transactionR t) (fromInteger $ transactionS t)) (0x1c == transactionV t)
          SHA theHash = hash $ rlpSerialize $ partialRLPEncode t
whoSignedThisTransaction t = 
    fmap pubKey2Address $ getPubKeyFromSignature xSignature theHash
        where
          xSignature = ExtendedSignature (Signature (fromInteger $ transactionR t) (fromInteger $ transactionS t)) (0x1c == transactionV t)
          SHA theHash = hash $ rlpSerialize $ partialRLPEncode t