diff --git a/blockdag/dag.go b/blockdag/dag.go index 86d73a398..d8702f01b 100644 --- a/blockdag/dag.go +++ b/blockdag/dag.go @@ -1575,6 +1575,9 @@ func (dag *BlockDAG) SelectedParentHash(blockHash *daghash.Hash) (*daghash.Hash, } + if node.selectedParent == nil { + return nil, nil + } return node.selectedParent.hash, nil } diff --git a/rpcmodel/rpc_results.go b/rpcmodel/rpc_results.go index cb6e4c105..c273ade50 100644 --- a/rpcmodel/rpc_results.go +++ b/rpcmodel/rpc_results.go @@ -48,7 +48,7 @@ type GetBlockVerboseResult struct { Bits string `json:"bits"` Difficulty float64 `json:"difficulty"` ParentHashes []string `json:"parentHashes"` - SelectedParentHash string `json:"selectedParentHash"` + SelectedParentHash string `json:"selectedParentHash,omitempty"` NextHashes []string `json:"nextHashes,omitempty"` } diff --git a/server/rpc/common.go b/server/rpc/common.go index 3b871c278..0c2f68749 100644 --- a/server/rpc/common.go +++ b/server/rpc/common.go @@ -245,6 +245,10 @@ func buildGetBlockVerboseResult(s *Server, block *util.Block, isVerboseTx bool) context := "Could not get block selected parent" return nil, internalRPCError(err.Error(), context) } + selectedParentHashStr := "" + if selectedParentHash != nil { + selectedParentHashStr = selectedParentHash.String() + } isChainBlock := s.cfg.DAG.IsInSelectedParentChain(hash) @@ -256,7 +260,7 @@ func buildGetBlockVerboseResult(s *Server, block *util.Block, isVerboseTx bool) AcceptedIDMerkleRoot: blockHeader.AcceptedIDMerkleRoot.String(), UTXOCommitment: blockHeader.UTXOCommitment.String(), ParentHashes: daghash.Strings(blockHeader.ParentHashes), - SelectedParentHash: selectedParentHash.String(), + SelectedParentHash: selectedParentHashStr, Nonce: blockHeader.Nonce, Time: blockHeader.Timestamp.Unix(), Confirmations: blockConfirmations,