### SEP-0011 - Txrep: human-readable low-level representation of Stellar transactions Txrep: human-readable low-level representation of Stellar transactions is described in [SEP-0011](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0011.md). The following examples show how to generate Txrep from transaction envelopes (base64 encoded xdr) and how to parse and convert Txrep back to transaction envelopes. ### Generate Txrep from transaction envelope ```swift let envelope = "AAAAAgAAAAArFkuQQ4QuQY6SkLc5xxSdwpFOvl7VqKVvrfkPSqB+0AAAAGQApSmNAAAAAQAAAAEAAAAAW4nJgAAAAABdav0AAAAAAQAAABZFbmpveSB0aGlzIHRyYW5zYWN0aW9uAAAAAAABAAAAAAAAAAEAAAAAQF827djPIu+/gHK5hbakwBVRw03TjBN6yNQNQCzR97QAAAABVVNEAAAAAAAyUlQyIZKfbs+tUWuvK7N0nGSCII0/Go1/CpHXNW3tCwAAAAAX15OgAAAAAAAAAAFKoH7QAAAAQN77Tx+tHCeTJ7Va8YT9zd9z9Peoy0Dn5TSnHXOgUSS6Np23ptMbR8r9EYWSJGqFdebCSauU7Ddo3ttikiIc5Qw=" let txRep = try TxRep.toTxRep(transactionEnvelope:envelope) print(txRep) ``` **Result:** ``` type: ENVELOPE_TYPE_TX tx.sourceAccount: GAVRMS4QIOCC4QMOSKILOOOHCSO4FEKOXZPNLKFFN6W7SD2KUB7NBPLN tx.fee: 100 tx.seqNum: 46489056724385793 tx.cond.type: PRECOND_TIME tx.cond.timeBounds.minTime: 1535756672 tx.cond.timeBounds.maxTime: 1567292672 tx.memo.type: MEMO_TEXT tx.memo.text: "Enjoy this transaction" tx.operations.len: 1 tx.operations[0].sourceAccount._present: false tx.operations[0].body.type: PAYMENT tx.operations[0].body.paymentOp.destination: GBAF6NXN3DHSF357QBZLTBNWUTABKUODJXJYYE32ZDKA2QBM2H33IK6O tx.operations[0].body.paymentOp.asset: USD:GAZFEVBSEGJJ63WPVVIWXLZLWN2JYZECECGT6GUNP4FJDVZVNXWQWMYI tx.operations[0].body.paymentOp.amount: 400004000 tx.ext.v: 0 signatures.len: 1 signatures[0].hint: 4aa07ed0 signatures[0].signature: defb4f1fad1c279327b55af184fdcddf73f4f7a8cb40e7e534a71d73a05124ba369db7a6d31b47cafd118592246a8575e6c249ab94ec3768dedb6292221ce50c ``` ### Transaction envelope containing a fee bump transaction ```swift let envelope = "AAAABQAAAABkfT0dQuoYYNgStwXg4RJV62+W1uApFc4NpBdc2iHu6AAAAAAAAAGQAAAAAgAAAAAx5Qe+wF5jJp3kYrOZ2zBOQOcTHjtRBuR/GrBTLYydyQAAAGQAAVlhAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVoZWxsbwAAAAAAAAEAAAAAAAAAAAAAAABkfT0dQuoYYNgStwXg4RJV62+W1uApFc4NpBdc2iHu6AAAAAAL68IAAAAAAAAAAAEtjJ3JAAAAQFzU5qFDIaZRUzUxf0BrRO2abx0PuMn3WKM7o8NXZvmB7K0zvS+HBlmDo2P/M3IZpF5Riax21neE0N9/WiHRuAoAAAAAAAAAAdoh7ugAAABARiKZWxfy8ZOPRj6yZRTKXAp1Aw6SoEn5OvnFbOmVztZtSRUaVOaCnBpdDWFBNJ6xBwsm7lMxvomMaOyNM3T/Bg==" let txRep = try TxRep.toTxRep(transactionEnvelope:envelope) print(txRep) ``` **Result:** ``` type: ENVELOPE_TYPE_TX_FEE_BUMP feeBump.tx.feeSource: GBSH2PI5ILVBQYGYCK3QLYHBCJK6W34W23QCSFOOBWSBOXG2EHXOQIV3 feeBump.tx.fee: 400 feeBump.tx.innerTx.type: ENVELOPE_TYPE_TX feeBump.tx.innerTx.tx.sourceAccount: GAY6KB56YBPGGJU54RRLHGO3GBHEBZYTDY5VCBXEP4NLAUZNRSO4SSMH feeBump.tx.innerTx.tx.fee: 100 feeBump.tx.innerTx.tx.seqNum: 379748123410433 feeBump.tx.innerTx.tx.cond.type: PRECOND_TIME feeBump.tx.innerTx.tx.cond.timeBounds.minTime: 0 feeBump.tx.innerTx.tx.cond.timeBounds.maxTime: 0 feeBump.tx.innerTx.tx.memo.type: MEMO_TEXT feeBump.tx.innerTx.tx.memo.text: "hello" feeBump.tx.innerTx.tx.operations.len: 1 feeBump.tx.innerTx.tx.operations[0].sourceAccount._present: false feeBump.tx.innerTx.tx.operations[0].body.type: CREATE_ACCOUNT feeBump.tx.innerTx.tx.operations[0].body.createAccountOp.destination: GBSH2PI5ILVBQYGYCK3QLYHBCJK6W34W23QCSFOOBWSBOXG2EHXOQIV3 feeBump.tx.innerTx.tx.operations[0].body.createAccountOp.startingBalance: 200000000 feeBump.tx.innerTx.tx.ext.v: 0 feeBump.tx.innerTx.signatures.len: 1 feeBump.tx.innerTx.signatures[0].hint: 2d8c9dc9 feeBump.tx.innerTx.signatures[0].signature: 5cd4e6a14321a6515335317f406b44ed9a6f1d0fb8c9f758a33ba3c35766f981ecad33bd2f87065983a363ff337219a45e5189ac76d67784d0df7f5a21d1b80a feeBump.tx.ext.v: 0 feeBump.signatures.len: 1 feeBump.signatures[0].hint: da21eee8 feeBump.signatures[0].signature: 4622995b17f2f1938f463eb26514ca5c0a75030e92a049f93af9c56ce995ced66d49151a54e6829c1a5d0d6141349eb1070b26ee5331be898c68ec8d3374ff06 ``` ### Txrep to transaction enevelope ```swift let txRep = """ type: ENVELOPE_TYPE_TX tx.sourceAccount: GAVRMS4QIOCC4QMOSKILOOOHCSO4FEKOXZPNLKFFN6W7SD2KUB7NBPLN tx.fee: 100 tx.seqNum: 46489056724385793 tx.cond.type: PRECOND_TIME tx.cond.timeBounds.minTime: 1535756672 (Sat Sep 1 01:04:32 CEST 2018) tx.cond.timeBounds.maxTime: 1567292672 (Sun Sep 1 01:04:32 CEST 2019) tx.memo.type: MEMO_TEXT tx.memo.text: "Enjoy this transaction" tx.operations.len: 1 tx.operations[0].sourceAccount._present: false tx.operations[0].body.type: PAYMENT tx.operations[0].body.paymentOp.destination: GBAF6NXN3DHSF357QBZLTBNWUTABKUODJXJYYE32ZDKA2QBM2H33IK6O tx.operations[0].body.paymentOp.asset: USD:GAZFEVBSEGJJ63WPVVIWXLZLWN2JYZECECGT6GUNP4FJDVZVNXWQWMYI tx.operations[0].body.paymentOp.amount: 400004000 (40.0004e7) tx.ext.v: 0 signatures.len: 1 signatures[0].hint: 4aa07ed0 (GAVRMS4QIOCC4QMOSKILOOOHCSO4FEKOXZPNLKFFN6W7SD2KUB7NBPLN) signatures[0].signature: defb4f1fad1c279327b55af184fdcddf73f4f7a8cb40e7e534a71d73a05124ba369db7a6d31b47cafd118592246a8575e6c249ab94ec3768dedb6292221ce50c """ let envelope = try TxRep.fromTxRep(txRep:txRep); print(envelope) // AAAAAgAAAAArFkuQQ4QuQY6SkLc5xxSdwpFOvl7VqKVvrfkPSqB+0AAAAGQApSmNAAAAAQAAAAEAAAAAW4nJgAAAAABdav0AAAAAAQAAABZFbmpveSB0aGlzIHRyYW5zYWN0aW9uAAAAAAABAAAAAAAAAAEAAAAAQF827djPIu+/gHK5hbakwBVRw03TjBN6yNQNQCzR97QAAAABVVNEAAAAAAAyUlQyIZKfbs+tUWuvK7N0nGSCII0/Go1/CpHXNW3tCwAAAAAX15OgAAAAAAAAAAFKoH7QAAAAQN77Tx+tHCeTJ7Va8YT9zd9z9Peoy0Dn5TSnHXOgUSS6Np23ptMbR8r9EYWSJGqFdebCSauU7Ddo3ttikiIc5Qw= ```