diff --git a/core/types/transaction.go b/core/types/transaction.go
index 86948b5b744745f5b5e6314fe85554e729cbfb3d..ee2f25b52c63bdaa393623e1c585eb4906b51c96 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -40,7 +40,7 @@ var (
 // deriveSigner makes a *best* guess about which signer to use.
 func deriveSigner(V *big.Int) Signer {
 	if V.Sign() != 0 && isProtectedV(V) {
-		return EIP155Signer{chainId: deriveChainId(V)}
+		return NewEIP155Signer(deriveChainId(V))
 	} else {
 		return HomesteadSigner{}
 	}