예제 #1
0
파일: web3.py 프로젝트: onyb/microraiden
        def sender_property_patched(self: Transaction):
            if self._sender:
                return self._sender

            if self.v and self.v >= 35:
                v = bytes([self.v])
                r = self.r.to_bytes(32, byteorder='big')
                s = self.s.to_bytes(32, byteorder='big')
                raw_tx = Transaction(self.nonce, self.gasprice, self.startgas,
                                     self.to, self.value, self.data,
                                     (self.v - 35) // 2, 0, 0)
                msg = keccak256(rlp.encode(raw_tx))
                self._sender = decode_hex(addr_from_sig(r + s + v, msg))
                return self._sender
            else:
                return sender_property_original(self)
def test_sign_v0():
    msg = sha3('hello v=0')
    sig = sign(SENDER_PRIVATE_KEY, msg)
    assert sig[-1] == 1
    assert addr_from_sig(sig, msg) == SENDER_ADDR