diff --git a/rpc/api/personal.go b/rpc/api/personal.go
index 1b0dea330a1aa9b91ab98b7de08f86206e57d9d3..1fb412612b1dbe9d7e54beec27a4838245d33f00 100644
--- a/rpc/api/personal.go
+++ b/rpc/api/personal.go
@@ -110,7 +110,7 @@ func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error)
 		return nil, shared.NewDecodeParamError(err.Error())
 	}
 
-	if len(args.Passphrase) == 0 {
+	if args.Passphrase == nil {
 		fe := self.xeth.Frontend()
 		if fe == nil {
 			return false, fmt.Errorf("No password provided")
@@ -121,6 +121,6 @@ func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error)
 	am := self.ethereum.AccountManager()
 	addr := common.HexToAddress(args.Address)
 
-	err := am.TimedUnlock(addr, args.Passphrase, time.Duration(args.Duration)*time.Second)
+	err := am.TimedUnlock(addr, *args.Passphrase, time.Duration(args.Duration)*time.Second)
 	return err == nil, err
 }
diff --git a/rpc/api/personal_args.go b/rpc/api/personal_args.go
index 89419029bd4f0f2acd860c0254fbbd33297cbcf8..73dc6285ef7c425eb2c7589bd310dab036e21981 100644
--- a/rpc/api/personal_args.go
+++ b/rpc/api/personal_args.go
@@ -46,7 +46,7 @@ func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) {
 
 type UnlockAccountArgs struct {
 	Address    string
-	Passphrase string
+	Passphrase *string
 	Duration   int
 }
 
@@ -70,7 +70,7 @@ func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) {
 
 	if len(obj) >= 2 && obj[1] != nil {
 		if passphrasestr, ok := obj[1].(string); ok {
-			args.Passphrase = passphrasestr
+			args.Passphrase = &passphrasestr
 		} else {
 			return shared.NewInvalidTypeError("passphrase", "not a string")
 		}