diff --git a/core/chain_manager.go b/core/chain_manager.go
index 308e958fe9d1242047f6460dbba30508f1bb5914..54f1ced8cad4b16e5b1697071a742eafc1158ce6 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -168,7 +168,7 @@ func (bc *ChainManager) NewBlock(coinbase []byte) *types.Block {
 	var root []byte
 	parentHash := ZeroHash256
 
-	if bc.CurrentBlock != nil {
+	if bc.currentBlock != nil {
 		root = bc.currentBlock.Header().Root
 		parentHash = bc.lastBlockHash
 	}
diff --git a/crypto/secp256k1/secp256.go b/crypto/secp256k1/secp256.go
index c1e37629e0c386bf0bdd9ee8af1369ce99762a09..4864e8d09a98e3178cee89a2b93350da4a5bfa2f 100644
--- a/crypto/secp256k1/secp256.go
+++ b/crypto/secp256k1/secp256.go
@@ -15,8 +15,9 @@ import "C"
 import (
 	"bytes"
 	"errors"
-	"github.com/ethereum/go-ethereum/crypto/randentropy"
 	"unsafe"
+
+	"github.com/ethereum/go-ethereum/crypto/randentropy"
 )
 
 //#define USE_FIELD_5X64
@@ -85,6 +86,10 @@ func GenerateKeyPair() ([]byte, []byte) {
 }
 
 func GeneratePubKey(seckey []byte) ([]byte, error) {
+	if err := VerifySeckeyValidity(seckey); err != nil {
+		return nil, err
+	}
+
 	pubkey_len := C.int(65)
 	const seckey_len = 32
 
diff --git a/p2p/server.go b/p2p/server.go
index e510be521be2cf70aa8b27b6fc5e46963f907990..35b584a273160abd60487ad47d357fba97d0f69c 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -436,15 +436,15 @@ func (self *BlacklistMap) Exists(pubkey []byte) (ok bool) {
 }
 
 func (self *BlacklistMap) Put(pubkey []byte) error {
-	self.lock.RLock()
-	defer self.lock.RUnlock()
+	self.lock.Lock()
+	defer self.lock.Unlock()
 	self.blacklist[string(pubkey)] = true
 	return nil
 }
 
 func (self *BlacklistMap) Delete(pubkey []byte) error {
-	self.lock.RLock()
-	defer self.lock.RUnlock()
+	self.lock.Lock()
+	defer self.lock.Unlock()
 	delete(self.blacklist, string(pubkey))
 	return nil
 }
diff --git a/rpc/args.go b/rpc/args.go
index 84b076d4adc7f952829b86738b7f3ef19d9fd467..12e3103bcf8b1100113ace0f1a2b3683f2ae319e 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -43,7 +43,7 @@ type PushTxArgs struct {
 
 func (obj *PushTxArgs) UnmarshalJSON(b []byte) (err error) {
 	arg0 := ""
-	if err = json.Unmarshal(b, arg0); err == nil {
+	if err = json.Unmarshal(b, &arg0); err == nil {
 		obj.Tx = arg0
 		return
 	}
@@ -82,7 +82,7 @@ type GetStateArgs struct {
 
 func (obj *GetStateArgs) UnmarshalJSON(b []byte) (err error) {
 	arg0 := ""
-	if err = json.Unmarshal(b, arg0); err == nil {
+	if err = json.Unmarshal(b, &arg0); err == nil {
 		obj.Address = arg0
 		return
 	}
@@ -114,7 +114,7 @@ type GetTxCountArgs struct {
 
 func (obj *GetTxCountArgs) UnmarshalJSON(b []byte) (err error) {
 	arg0 := ""
-	if err = json.Unmarshal(b, arg0); err == nil {
+	if err = json.Unmarshal(b, &arg0); err == nil {
 		obj.Address = arg0
 		return
 	}
diff --git a/rpc/http/server.go b/rpc/http/server.go
index 10c8fa8138d95a42b6c4a3d157d611c606bb0dfd..dd6ba68e3231e32922a12f7ca137fd3e284000e0 100644
--- a/rpc/http/server.go
+++ b/rpc/http/server.go
@@ -30,7 +30,7 @@ var rpchttplogger = logger.NewLogger("RPC-HTTP")
 var JSON rpc.JsonWrapper
 
 func NewRpcHttpServer(pipe *xeth.XEth, port int) (*RpcHttpServer, error) {
-	sport := fmt.Sprintf(":%d", port)
+	sport := fmt.Sprintf("127.0.0.1:%d", port)
 	l, err := net.Listen("tcp", sport)
 	if err != nil {
 		return nil, err
diff --git a/rpc/packages.go b/rpc/packages.go
index ac3127356a5fda220a248c047a4cb910976d17d9..ef31ff1e1100cc18378b4445a0b7a7ad0ef6680e 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -109,8 +109,8 @@ func (self *EthereumApi) NewFilterString(args string, reply *interface{}) error
 }
 
 func (self *EthereumApi) FilterChanged(id int, reply *interface{}) error {
-	self.logMut.RLock()
-	defer self.logMut.RUnlock()
+	self.logMut.Lock()
+	defer self.logMut.Unlock()
 
 	*reply = toLogs(self.logs[id])
 
@@ -309,8 +309,8 @@ func (p *EthereumApi) NewWhisperFilter(args *xeth.Options, reply *interface{}) e
 }
 
 func (self *EthereumApi) MessagesChanged(id int, reply *interface{}) error {
-	self.messagesMut.RLock()
-	defer self.messagesMut.RUnlock()
+	self.messagesMut.Lock()
+	defer self.messagesMut.Unlock()
 
 	*reply = self.messages[id]