Skip to content

Instantly share code, notes, and snippets.

@aemet93
Created February 19, 2022 11:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aemet93/252ed5479d5db74b3da5cc0b608b4d57 to your computer and use it in GitHub Desktop.
Save aemet93/252ed5479d5db74b3da5cc0b608b4d57 to your computer and use it in GitHub Desktop.
func (c *Client) SendTx() {
wallet, err := c.wallet.Key.GetWallet(hdwallet.CoinType(hdwallet.BTCTestnet), hdwallet.AddressIndex(3))
if err != nil {
log.Fatal(err)
}
var am int64 = 4691
var fee int64 = 300
var total = am - fee
key := wallet.GetKey()
log.Print(wallet.GetAddress())
senders := []*hd_wallet.UTXO{{
Key: wallet.GetKey(), Hash: "690059e82dcee13678c45f2c583207d357af254624f5037b4d4d12b39caf74ca", Index: 0, Amount: total},
}
receivers := []*hd_wallet.Receiver{
{Net: key.Opt.Params, Address: c.wallet.ColdWallet, Amount: total},
}
tx := wire.NewMsgTx(wire.TxVersion)
for _, s := range senders {
in, err := s.ToTxIn()
if err != nil {
log.Printf("err toTxIn: %v", err)
continue
//return "", errors.Wrap(err, "failed to convert tx in")
}
tx.AddTxIn(in)
}
for _, r := range receivers {
out, err := r.ToTxOut()
if err != nil {
log.Printf("err toTxOut: %v", err)
continue
//return "", errors.Wrap(err, "failed to convert tx out")
}
tx.AddTxOut(out)
}
for i, s := range senders {
if err := s.Signature(tx, i); err != nil {
log.Printf("sender signature failed: %v", err)
return
//return "", errors.Wrap(err, "sender signature failed")
}
}
buf := bytes.NewBuffer(make([]byte, 0, tx.SerializeSize()))
if err := tx.Serialize(buf); err != nil {
log.Printf("failed to serialize tx: %v", err)
return
//return "", errors.Wrap(err, "failed to serialize tx")
}
log.Print(hex.EncodeToString(buf.Bytes()))
ha, err := c.SendRawTransaction(tx, true)
if err != nil {
log.Print("error: ", err)
return
}
log.Print(ha)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment