code: func signHash(data []byte) []byte {
  	msg := fmt.Sprintf("\x19Ethereum Signed Message:\n%d%s", len(data), data)
  	return crypto.Keccak256([]byte(msg))
  }
docs: // signHash is a helper function that calculates a hash for the given message
  // that can be safely used to calculate a signature from.
  //
  // The hash is calulcated as
  //   keccak256("\x19Ethereum Signed Message:\n"${message length}${message}).
  //
  // This gives context to the signed message and prevents signing of transactions.