message: Derive Clone, Default, Debug, and PartialEq where possible
diff: use serde::{Deserialize, Serialize};
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct Params {
  pub block: BlockInfo,
  pub message: MessageInfo,
  pub contract: ContractInfo,
  }
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct BlockInfo {
  pub height: i64,
  // time is seconds since epoch begin (Jan. 1, 1970)
  @@ -15,27 +15,27 @@ pub struct BlockInfo {
  pub chain_id: String,
  }
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct MessageInfo {
  pub signer: String,
  // go likes to return null for empty array, make sure we can parse it (use option)
  pub sent_funds: Option<Vec<Coin>>,
  }
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct ContractInfo {
  pub address: String,
  // go likes to return null for empty array, make sure we can parse it (use option)
  pub balance: Option<Vec<Coin>>,
  }
  -#[derive(Serialize, Deserialize, Clone)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct Coin {
  pub denom: String,
  pub amount: String,
  }
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
  #[serde(rename_all = "lowercase")]
  pub enum CosmosMsg {
  // this moves tokens in the underlying sdk
  @@ -57,7 +57,7 @@ pub enum CosmosMsg {
  },
  }
  -#[derive(Serialize, Deserialize)]
  +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
  #[serde(rename_all = "lowercase")]
  pub enum ContractResult {
  Ok(Response),
  @@ -81,7 +81,7 @@ impl ContractResult {
  }
  }
  -#[derive(Serialize, Deserialize, Default)]
  +#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
  pub struct Response {
  // let's make the positive case a struct, it contrains Msg: {...}, but also Data, Log, maybe later Events, etc.
  pub messages: Vec<CosmosMsg>,
  