func deserializeTx(b []byte) (tx coin.Transaction, err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf("%v", r) } }() tx = coin.TransactionDeserialize(b) return }
//Implement func injectTransaction(gateway *daemon.Gateway) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { wh.Error405(w, "") return } // get the rawtransaction v := struct { Rawtx string `json:"rawtx"` }{} if err := json.NewDecoder(r.Body).Decode(&v); err != nil { logger.Error("bad request: %v", err) wh.Error400(w, err.Error()) return } b, err := hex.DecodeString(v.Rawtx) if err != nil { logger.Error("%v", err) wh.Error400(w, err.Error()) return } txn := coin.TransactionDeserialize(b) if err := visor.VerifyTransactionFee(gateway.D.Visor.Visor.Blockchain, &txn); err != nil { wh.Error400(w, err.Error()) return } t, err := gateway.D.Visor.InjectTransaction(txn, gateway.D.Pool) if err != nil { wh.Error400(w, fmt.Sprintf("inject tx failed:%v", err)) return } wh.SendOr404(w, t.Hash().Hex()) } }