github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/txs/payload/bond_tx.go (about) 1 package payload 2 3 import ( 4 "fmt" 5 6 "github.com/hyperledger/burrow/acm/acmstate" 7 "github.com/hyperledger/burrow/crypto" 8 ) 9 10 func NewBondTx(address crypto.Address, amount uint64) *BondTx { 11 return &BondTx{ 12 Input: &TxInput{ 13 Address: address, 14 Amount: amount, 15 }, 16 } 17 } 18 19 func (tx *BondTx) Type() Type { 20 return TypeBond 21 } 22 23 func (tx *BondTx) GetInputs() []*TxInput { 24 return []*TxInput{tx.Input} 25 } 26 27 func (tx *BondTx) String() string { 28 return fmt.Sprintf("BondTx{%v}", tx.Input) 29 } 30 31 func (tx *BondTx) AddInput(st acmstate.AccountGetter, pubkey *crypto.PublicKey, amt uint64) error { 32 addr := pubkey.GetAddress() 33 acc, err := st.GetAccount(addr) 34 if err != nil { 35 return err 36 } 37 if acc == nil { 38 return fmt.Errorf("invalid address %s from pubkey %s", addr, pubkey) 39 } 40 return tx.AddInputWithSequence(pubkey, amt, acc.Sequence+uint64(1)) 41 } 42 43 func (tx *BondTx) AddInputWithSequence(pubkey *crypto.PublicKey, amt uint64, sequence uint64) error { 44 tx.Input = &TxInput{ 45 Address: pubkey.GetAddress(), 46 Amount: amt, 47 Sequence: sequence, 48 } 49 return nil 50 } 51 52 func (tx *BondTx) Any() *Any { 53 return &Any{ 54 BondTx: tx, 55 } 56 }