// MutateTransaction for ManageOfferBuilder causes the underylying // ManageData to be added to the operation list for the provided // transaction func (m ManageOfferBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } if m.PassiveOffer { m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeCreatePassiveOffer, m.PO) o.TX.Operations = append(o.TX.Operations, m.O) } else { m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeManageOffer, m.MO) o.TX.Operations = append(o.TX.Operations, m.O) } return m.Err }
// MutateTransaction for PaymentBuilder causes the underylying PaymentOp // or PathPaymentOp to be added to the operation list for the provided transaction func (m PaymentBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } if m.PathPayment { m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypePathPayment, m.PP) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypePayment, m.P) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// MutateTransaction for AllowTrustBuilder causes the underylying AllowTrustOp // to be added to the operation list for the provided transaction func (m AllowTrustBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeAllowTrust, m.AT) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// MutateTransaction for AccountMergeBuilder causes the underylying Destination // to be added to the operation list for the provided transaction func (m AccountMergeBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeAccountMerge, m.Destination) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// MutateTransaction for SetOptionsBuilder causes the underylying // SetOptionsOp to be added to the operation list for the provided // transaction func (m SetOptionsBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeSetOptions, m.SO) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// MutateTransaction for ManageDataBuilder causes the underylying // ManageData to be added to the operation list for the provided // transaction func (m ManageDataBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeManageData, m.MD) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// MutateTransaction for CreateAccountBuilder causes the underylying // CreateAccountOp to be added to the operation list for the provided // transaction func (m CreateAccountBuilder) MutateTransaction(o *TransactionBuilder) error { if m.Err != nil { return m.Err } m.O.Body, m.Err = xdr.NewOperationBody(xdr.OperationTypeCreateAccount, m.CA) o.TX.Operations = append(o.TX.Operations, m.O) return m.Err }
// ExampleLowLevelTransaction creates and signs a simple transaction, and then // encodes it into a hex string capable of being submitted to stellar-core. // // It uses the low-level xdr facilities to create the transaction. func ExampleLowLevelTransaction() { skp := keypair.MustParse("SA26PHIKZM6CXDGR472SSGUQQRYXM6S437ZNHZGRM6QA4FOPLLLFRGDX") dkp := keypair.MustParse("SBQHO2IMYKXAYJFCWGXC7YKLJD2EGDPSK3IUDHVJ6OOTTKLSCK6Z6POM") asset, err := xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) if err != nil { panic(err) } var destination xdr.AccountId err = destination.SetAddress(dkp.Address()) if err != nil { panic(err) } op := xdr.PaymentOp{ Destination: destination, Asset: asset, Amount: 50 * 10000000, } memo, err := xdr.NewMemo(xdr.MemoTypeMemoNone, nil) var source xdr.AccountId err = source.SetAddress(skp.Address()) if err != nil { panic(err) } body, err := xdr.NewOperationBody(xdr.OperationTypePayment, op) if err != nil { panic(err) } tx := xdr.Transaction{ SourceAccount: source, Fee: 10, SeqNum: xdr.SequenceNumber(1), Memo: memo, Operations: []xdr.Operation{ {Body: body}, }, } var txBytes bytes.Buffer _, err = xdr.Marshal(&txBytes, tx) if err != nil { panic(err) } txHash := hash.Hash(txBytes.Bytes()) signature, err := skp.Sign(txHash[:]) if err != nil { panic(err) } ds := xdr.DecoratedSignature{ Hint: skp.Hint(), Signature: xdr.Signature(signature[:]), } txe := xdr.TransactionEnvelope{ Tx: tx, Signatures: []xdr.DecoratedSignature{ds}, } var txeBytes bytes.Buffer _, err = xdr.Marshal(&txeBytes, txe) if err != nil { panic(err) } txeB64 := base64.StdEncoding.EncodeToString(txeBytes.Bytes()) fmt.Printf("tx base64: %s", txeB64) // Output: tx base64: AAAAAAU08yUQ8sHqhY8j9mXWwERfHC/3cKFSe/spAr0rGtO2AAAACgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAA+fnTe7/v4whpBUx96oj92jfZPz7S00l3O2xeyeqWIA0AAAAAAAAAAB3NZQAAAAAAAAAAASsa07YAAABAieruUIGcQH6RlQ+prYflPFU3nED2NvWhtaC+tgnKsqgiKURK4xo/W7EgH0+I6aQok52awbE+ksOxEQ5MLJ9eAw== }