code: func (cmd *fetchBlockCmd) Execute(args []string) error {
  	// Setup the global config options and ensure they are valid.
  	if err := setupGlobalConfig(); err != nil {
  		return err
  	}
  
  	if len(args) < 1 {
  		return errors.New("required block hash parameter not specified")
  	}
  	blockHash, err := chainhash.NewHashFromStr(args[0])
  	if err != nil {
  		return err
  	}
  
  	// Load the block database.
  	db, err := loadBlockDB()
  	if err != nil {
  		return err
  	}
  	defer db.Close()
  
  	return db.View(func(tx database.Tx) error {
  		log.Infof("Fetching block %s", blockHash)
  		startTime := time.Now()
  		blockBytes, err := tx.FetchBlock(blockHash)
  		if err != nil {
  			return err
  		}
  		log.Infof("Loaded block in %v", time.Since(startTime))
  		log.Infof("Block Hex: %s", hex.EncodeToString(blockBytes))
  		return nil
  	})
  }
docs: // Execute is the main entry point for the command.  It's invoked by the parser.