code: func ComposeEntryCommit(e *Entry, ec *ECAddress) (*JSON2Request, error) {
  	buf := new(bytes.Buffer)
  
  	// 1 byte version
  	buf.Write([]byte{0})
  
  	// 6 byte milliTimestamp (truncated unix time)
  	buf.Write(milliTime())
  
  	// 32 byte Entry Hash
  	buf.Write(e.Hash())
  
  	// 1 byte number of entry credits to pay
  	if c, err := EntryCost(e); err != nil {
  		return nil, err
  	} else {
  		buf.WriteByte(byte(c))
  	}
  
  	// 32 byte Entry Credit Address Public Key + 64 byte Signature
  	sig := ec.Sign(buf.Bytes())
  	buf.Write(ec.PubBytes())
  	buf.Write(sig[:])
  
  	params := messageRequest{Message: hex.EncodeToString(buf.Bytes())}
  	req := NewJSON2Request("commit-entry", APICounter(), params)
  
  	return req, nil
  }
docs: // ComposeEntryCommit creates a JSON2Request to commit a new Entry via the
  // factomd web api. The request includes the marshaled MessageRequest with the
  // Entry Credit Signature.