public void commit(CBlockPayload block) throws Exception {
    // Superclass
    super.commit(block);

    // Insert asset
    UTILS.DB.executeUpdate(
        "INSERT INTO assets "
            + "SET adr='"
            + this.target_adr
            + "', "
            + "assetID='"
            + this.assetID
            + "', "
            + "symbol='"
            + this.symbol
            + "', "
            + "title='"
            + UTILS.BASIC.base64_encode(this.title)
            + "', "
            + "description='"
            + UTILS.BASIC.base64_encode(this.description)
            + "', "
            + "how_buy='"
            + UTILS.BASIC.base64_encode(this.how_buy)
            + "', "
            + "how_sell='"
            + UTILS.BASIC.base64_encode(this.how_sell)
            + "', "
            + "web_page='"
            + UTILS.BASIC.base64_encode(this.web_page)
            + "', "
            + "pic='"
            + UTILS.BASIC.base64_encode(this.pic)
            + "', "
            + "expire='"
            + (this.block + (1440 * this.days))
            + "', "
            + "qty='"
            + this.qty
            + "', "
            + "trans_fee_adr='"
            + this.trans_fee_adr
            + "', "
            + "trans_fee='"
            + UTILS.FORMAT_2.format(this.trans_fee)
            + "', "
            + "block='"
            + this.block
            + "'");

    // Update
    UTILS.DB.executeUpdate(
        "INSERT INTO assets_owners "
            + "SET owner='"
            + this.target_adr
            + "', "
            + "symbol='"
            + this.symbol
            + "', "
            + "qty='"
            + this.qty
            + "', "
            + "block='"
            + this.block
            + "'");
  }
  public CIssueAssetPayload(
      String adr,
      String symbol,
      String title,
      String description,
      String how_buy,
      String how_sell,
      String web_page,
      String pic,
      long days,
      long qty,
      String trans_fee_adr,
      double trans_fee)
      throws Exception {
    super(adr);

    // Symbol
    this.symbol = symbol;

    // Title
    this.title = title;

    // Description
    this.description = description;

    // How to buy
    this.how_buy = how_buy;

    // How to sell
    this.how_sell = how_sell;

    // Web page
    this.web_page = web_page;

    // Pic
    this.pic = pic;

    // Market days
    this.days = days;

    // Qty
    this.qty = qty;

    // Transaction fee address
    this.trans_fee_adr = trans_fee_adr;

    // Transaction fee
    this.trans_fee = trans_fee;

    // Asset ID
    this.assetID = UTILS.BASIC.getID();

    // Hash
    hash =
        UTILS.BASIC.hash(
            this.getHash()
                + this.assetID
                + this.symbol
                + this.title
                + this.description
                + this.how_buy
                + this.how_sell
                + this.web_page
                + this.pic
                + this.days
                + this.qty
                + this.trans_fee_adr
                + UTILS.FORMAT_2.format(this.trans_fee));

    // Sign
    this.sign();
  }
  public void check(CBlockPayload block) throws Exception {
    // Super class
    super.check(block);

    // Valid asset ID
    if (!UTILS.BASIC.validID(this.assetID))
      throw new Exception("Invalid asset ID - CIssueAssetPayload.java");

    // Symbol length
    if (!UTILS.BASIC.isSymbol(this.symbol))
      throw new Exception("Invalid symbol - CIssueAssetPayload.java");

    // Same symbol
    ResultSet rs =
        UTILS.DB.executeQuery("SELECT * " + "FROM assets " + "WHERE symbol='" + this.symbol + "'");

    if (UTILS.DB.hasData(rs))
      throw new Exception("Asset symbol already exist - CIssueAssetPayload.java");

    // Qty
    if (this.qty < 1000 || this.qty > 10000000000L)
      throw new Exception("Invalid qty - CIssueAssetPayload.java");

    // Title
    if (!UTILS.BASIC.isTitle(this.title))
      throw new Exception("Invalid title - CIssueAssetPayload.java");

    // Description
    if (!UTILS.BASIC.isDesc(this.description))
      throw new Exception("Invalid description - CIssueAssetPayload.java");

    // Web page
    if (!this.web_page.equals(""))
      if (!UTILS.BASIC.isLink(this.web_page))
        throw new Exception("Invalid web page - CIssueAssetPayload.java");

    // How buy
    if (!this.how_buy.equals(""))
      if (!UTILS.BASIC.isDesc(this.how_buy))
        throw new Exception("Invalid how to buy - CIssueAssetPayload.java");

    // How sell
    if (!this.how_sell.equals(""))
      if (!UTILS.BASIC.isDesc(this.how_sell))
        throw new Exception("Invalid to sell - CIssueAssetPayload.java");

    // Pic
    if (!this.pic.equals(""))
      if (!UTILS.BASIC.isPic(this.pic))
        throw new Exception("Invalid pic - CIssueAssetPayload.java");

    // Days
    if (this.days < 1000) throw new Exception("Invalid days - CIssueAssetPayload.java");

    // Transaction fee address
    if (!UTILS.BASIC.isAdr(this.trans_fee_adr))
      throw new Exception("Invalid transaction fee address - CIssueAssetPayload.java");

    // Transaction fee
    if (this.trans_fee < 0.01 || this.trans_fee > 10)
      throw new Exception("Invalid transaction fee - CIssueAssetPayload.java");

    // Sealed ?
    if (UTILS.BASIC.isSealed(this.target_adr))
      throw new Exception("Sealed address - CIssueAssetPayload.java");

    // Mkt address ?
    if (UTILS.BASIC.isMktAdr(this.target_adr) || UTILS.BASIC.isContractAdr(this.target_adr))
      throw new Exception("Market address - CIssueAssetPayload.java");

    // Calculates hash
    String h =
        UTILS.BASIC.hash(
            this.getHash()
                + this.assetID
                + this.symbol
                + this.title
                + this.description
                + this.how_buy
                + this.how_sell
                + this.web_page
                + this.pic
                + days
                + this.qty
                + this.trans_fee_adr
                + UTILS.FORMAT_2.format(this.trans_fee));

    // Check hash
    if (!this.hash.equals(h)) throw new Exception("Invalid hash - CIssueAssetPayload.java");
  }