github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/core/state/interop/write_block_to_disk.go (about)

     1  package interop
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path"
     7  
     8  	"github.com/prysmaticlabs/prysm/proto/interfaces"
     9  	"github.com/prysmaticlabs/prysm/shared/featureconfig"
    10  	"github.com/prysmaticlabs/prysm/shared/fileutil"
    11  )
    12  
    13  // WriteBlockToDisk as a block ssz. Writes to temp directory. Debug!
    14  func WriteBlockToDisk(block interfaces.SignedBeaconBlock, failed bool) {
    15  	if !featureconfig.Get().WriteSSZStateTransitions {
    16  		return
    17  	}
    18  
    19  	filename := fmt.Sprintf("beacon_block_%d.ssz", block.Block().Slot())
    20  	if failed {
    21  		filename = "failed_" + filename
    22  	}
    23  	fp := path.Join(os.TempDir(), filename)
    24  	log.Warnf("Writing block to disk at %s", fp)
    25  	enc, err := block.MarshalSSZ()
    26  	if err != nil {
    27  		log.WithError(err).Error("Failed to ssz encode block")
    28  		return
    29  	}
    30  	if err := fileutil.WriteFile(fp, enc); err != nil {
    31  		log.WithError(err).Error("Failed to write to disk")
    32  	}
    33  }