func GetStorageHashForPath(path ...[]byte) chainhash.Hash {
	if len(path) == 0 {
		return chainhash.HashH([]byte{})
	} else if len(path) == 1 {
		return chainhash.HashH(path[0])
	} else {
		subHash := GetStorageHashForPath(path[1:]...)
		return chainhash.HashH(append(path[0], subHash[:]...))
	}
}
GetStorageHashForPath gets the hash for a certain path.
package state
import (
	"bytes"
	"encoding/binary"
	"fmt"
	"math/big"
	"reflect"
	"sync"
	"github.com/phoreproject/synapse/csmt"
	"github.com/decred/dcrd/dcrec/secp256k1"
	"github.com/phoreproject/synapse/chainhash"
	"github.com/go-interpreter/wagon/exec"
	"github.com/go-interpreter/wagon/wasm"
)
type Shard struct {
	Module           *wasm.Module
	Storage          csmt.TreeTransactionAccess
	VM               *exec.VM
	ExportedFuncs    []int64
	ExecutionContext ArgumentContext
	Number           uint32
	err           error
	executionLock *sync.Mutex
}