Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SEP-11 (txrep) support for protocol 13 changes #618

Closed
pselden opened this issue May 18, 2020 · 8 comments
Closed

SEP-11 (txrep) support for protocol 13 changes #618

pselden opened this issue May 18, 2020 · 8 comments
Labels

Comments

@pselden
Copy link
Contributor

pselden commented May 18, 2020

When testing and adding support for protocol 13 in https://github.com/stellarguard/txrep, I realized that there's currently no way to handle the the following:

  1. Differentiating between a v1 transaction and a v0 transaction from a txrep. Maybe for practical purposes this isn't a necessity and no one cares as long as the end result of the transaction is the same, but currently there's no way to differentiate between v1 and v0 transactions at the txrep level. There's a tx.ext.v field, but currently it is never set in any transactions I've seen (version information is instead at the envelope level, not the transaction itself). So as it stands now, a v1 transaction gets converted to txrep, which when converted back to a transaction becomes a v0 transaction (because there is no way to determine which one to use).

  2. There is no way to handle FeeBumpTransactions. txrep specification needs a way to encode information about the outer transaction, otherwise there's just no way to serialize the FeeBumpTransaction to txrep.

  3. Muxed accounts -- I could probably figure this out on my own just by playing with them enough and reading code, but explicitly specifying what changes need to be made to support muxed accounts in txrep would be useful.

@Synesso
Copy link
Contributor

Synesso commented Jun 14, 2020

Further to point 1: txRep exposes the structure of the transaction. With the definition of a v0 transactions changing in protocol 13, how should parsers handle tx.sourceAccount in a backwards compatible way? That field no longer exists. Would we possibly expect to see backwards compatibility shim-rules being constructed as the protocol evolves?

@stanford-scs
Copy link
Contributor

We ideally wouldn't have to type v0 and v1 before every transaction. So should we special-case TransactionEnvelope? Or special-case union tags named v[0-9]+? I'd appreciate opinions or suggestions on the question before updating the txrep spec.

@leighmcculloch
Copy link
Member

If we allow the tags to be omitted do we assume backwards consistency and default to v0 or forward consistency and use the latest version?

If we go with the former then txrep and XDR encoding to and from will be consistent across XDR changes, but also we'll be building old transaction versions for new txreps.

If we go with the latter then a txrep written a year ago will generate different XDR with a new version won't it?

In principle should a Txrep I write today encode to the exact same XDR one year from now, or should it encode only to a conceptually consistent transaction that may not be byte for byte equality?

My expectation would be that txrep is only for temporary representation of a transaction and long term storage should be in XDR format, which would mean going with the latter and assuming the latest version.

@pselden
Copy link
Contributor Author

pselden commented Jun 15, 2020

I'm with @leighmcculloch -- I feel that txrep should represent the meaning behind the transaction, not necessarily the exact bytes of the XDR.

Taking that stance however means that any signatures stored in the txrep might be worthless.

@leighmcculloch
Copy link
Member

leighmcculloch commented Jun 15, 2020

I'd go as far as saying that any implementation of txrep should only guarantee that an XDR message decoded into txrep must re-encode back into the same XDR message inside a single execution of the program, but outside of a single execution of a program that can't be guaranteed. So short term should be short term in memory.

If there are uses beyond that maybe we could specify a way to generate verbose txrep that included the tag and would be stable?

@stanford-scs
Copy link
Contributor

So to be clear, I'm not advocating introducing any ambiguities. The discriminant would still be there, but the branch name would be omitted. This doesn't capture all of XDR in the event that you have nested unions with the same discriminant name. But we could say it only works for non-unions inside unions.

More concretely, a transaction in txrep now looks like this, where type defaults to 0 (ENVELOPE_TYPE_TX) when not specified, which allows for backwards compatibility:

type: ENVELOPE_TYPE_TX
tx.sourceAccount: GAWPMNIGPHVW4QFX3V7T242RPV3T3VZN3RIUPEM4KFKNWG4DRQA3CAWY
tx.fee: 100
tx.seqNum: 3224627086098433
tx.timeBounds._present: false
tx.memo.type: MEMO_NONE
tx.operations.len: 1
tx.operations[0].sourceAccount._present: false
tx.operations[0].body.type: PAYMENT
tx.operations[0].body.paymentOp.destination: GAWPMNIGPHVW4QFX3V7T242RPV3T3VZN3RIUPEM4KFKNWG4DRQA3CAWY
tx.operations[0].body.paymentOp.asset: TestXLM
tx.operations[0].body.paymentOp.amount: 10000000 (1e7)
tx.ext.v: 0
signatures.len: 1
signatures[0].hint: 838c01b1 (GAWPMNIGPHVW4QFX3V7T242RPV3T3VZN3RIUPEM4KFKNWG4DRQA3CAWY)
signatures[0].signature: a889829efd909b9b6db8b740e7fc37bc603dd2163c9a0bc5e4181ca963cc4a980267992159d00a925b63713ddf49d6031d80fd636b70f6977fd5baf7defcdd06

But what we choose affects, for instance, how feebump transactions are represented.

@christian-rogobete
Copy link
Contributor

Hi @pselden, the latest version of the Stellar transaction compiler stc supports fee bump transactions and muxed accounts. The flutter sdk also supports them. I think that this issue can be closed. This is the txrep generated by stc for a fee bump transaction having a muxed account as fee source:

type: ENVELOPE_TYPE_TX_FEE_BUMP
feeBump.tx.feeSource: MAAAAAAAAAA23MCBGBOSY6X224I36QV7C7WWL3JNKS6DITO5WSVO62TTF2HS5ASFTODPI
feeBump.tx.fee: 1515 (0.0001515e7)
feeBump.tx.innerTx.type: ENVELOPE_TYPE_TX
feeBump.tx.innerTx.tx.sourceAccount: GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.fee: 1400
feeBump.tx.innerTx.tx.seqNum: 1102902109202
feeBump.tx.innerTx.tx.timeBounds._present: true
feeBump.tx.innerTx.tx.timeBounds.minTime: 1595282368 (Mon Jul 20 23:59:28 CEST 2020)
feeBump.tx.innerTx.tx.timeBounds.maxTime: 1595284000 (Tue Jul 21 00:26:40 CEST 2020)
feeBump.tx.innerTx.tx.memo.type: MEMO_TEXT
feeBump.tx.innerTx.tx.memo.text: "Enjoy this transaction"
feeBump.tx.innerTx.tx.operations.len: 14
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: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[0].body.createAccountOp.startingBalance: 9223372036854775807 (922,337,203,685.4775807e7)
feeBump.tx.innerTx.tx.operations[1].sourceAccount._present: true
feeBump.tx.innerTx.tx.operations[1].sourceAccount: GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[1].body.type: PAYMENT
feeBump.tx.innerTx.tx.operations[1].body.paymentOp.destination: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[1].body.paymentOp.asset: XLM
feeBump.tx.innerTx.tx.operations[1].body.paymentOp.amount: 9223372036854775807 (922,337,203,685.4775807e7)
feeBump.tx.innerTx.tx.operations[2].sourceAccount._present: true
feeBump.tx.innerTx.tx.operations[2].sourceAccount: GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[2].body.type: PAYMENT
feeBump.tx.innerTx.tx.operations[2].body.paymentOp.destination: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[2].body.paymentOp.asset: USD:GAZFEVBSEGJJ63WPVVIWXLZLWN2JYZECECGT6GUNP4FJDVZVNXWQWMYI
feeBump.tx.innerTx.tx.operations[2].body.paymentOp.amount: 9223372036854775807 (922,337,203,685.4775807e7)
feeBump.tx.innerTx.tx.operations[3].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[3].body.type: PATH_PAYMENT_STRICT_RECEIVE
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.sendAsset: IOM:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.sendMax: 20000000 (2e7)
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.destination: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.destAsset: MOON:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.destAmount: 80000000 (8e7)
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.path.len: 2
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.path[0]: ECO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[3].body.pathPaymentStrictReceiveOp.path[1]: ASTRO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[4].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[4].body.type: PATH_PAYMENT_STRICT_SEND
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.sendAsset: IOM:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.sendAmount: 4000000000 (400e7)
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.destination: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.destAsset: MOON:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.destMin: 12000000000 (1,200e7)
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.path.len: 2
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.path[0]: ECO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[4].body.pathPaymentStrictSendOp.path[1]: ASTRO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[5].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[5].body.type: SET_OPTIONS
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.inflationDest._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.inflationDest: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.clearFlags._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.clearFlags: 2
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.setFlags._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.setFlags: 4
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.masterWeight._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.masterWeight: 122
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.lowThreshold._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.lowThreshold: 10
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.medThreshold._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.medThreshold: 50
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.highThreshold._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.highThreshold: 122
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.homeDomain._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.homeDomain: "https://www.soneso.com/blubber"
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.signer._present: true
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.signer.key: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[5].body.setOptionsOp.signer.weight: 50
feeBump.tx.innerTx.tx.operations[6].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[6].body.type: MANAGE_SELL_OFFER
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.selling: ECO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.buying: XLM
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.amount: 82820000000 (8,282e7)
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.price.n: 7
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.price.d: 10
feeBump.tx.innerTx.tx.operations[6].body.manageSellOfferOp.offerID: 9298298398333 (929,829.8398333e7)
feeBump.tx.innerTx.tx.operations[7].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[7].body.type: CREATE_PASSIVE_SELL_OFFER
feeBump.tx.innerTx.tx.operations[7].body.createPassiveSellOfferOp.selling: ASTRO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[7].body.createPassiveSellOfferOp.buying: MOON:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[7].body.createPassiveSellOfferOp.amount: 28280000000 (2,828e7)
feeBump.tx.innerTx.tx.operations[7].body.createPassiveSellOfferOp.price.n: 1
feeBump.tx.innerTx.tx.operations[7].body.createPassiveSellOfferOp.price.d: 2
feeBump.tx.innerTx.tx.operations[8].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[8].body.type: CHANGE_TRUST
feeBump.tx.innerTx.tx.operations[8].body.changeTrustOp.line: ASTRO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[8].body.changeTrustOp.limit: 100000000000 (10,000e7)
feeBump.tx.innerTx.tx.operations[9].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[9].body.type: ALLOW_TRUST
feeBump.tx.innerTx.tx.operations[9].body.allowTrustOp.trustor: GCPKA6PHZ4GSLQ5P72HKHMLCCOR5TCWNURUMGVYROXW5UUDM5LOTQXMH
feeBump.tx.innerTx.tx.operations[9].body.allowTrustOp.asset: MOON
feeBump.tx.innerTx.tx.operations[9].body.allowTrustOp.authorize: 1
feeBump.tx.innerTx.tx.operations[10].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[10].body.type: ACCOUNT_MERGE
feeBump.tx.innerTx.tx.operations[10].body.destination: MAAAAAAAHQZYYVU6UB46PTYNEXB277UOUOYWEE5D3GFM3JDIYNLRC5PN3JIGZ2W5HDZCM
feeBump.tx.innerTx.tx.operations[11].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[11].body.type: MANAGE_DATA
feeBump.tx.innerTx.tx.operations[11].body.manageDataOp.dataName: "Sommer"
feeBump.tx.innerTx.tx.operations[11].body.manageDataOp.dataValue._present: true
feeBump.tx.innerTx.tx.operations[11].body.manageDataOp.dataValue: 446965204df662656c2073696e6420686569df21
feeBump.tx.innerTx.tx.operations[12].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[12].body.type: BUMP_SEQUENCE
feeBump.tx.innerTx.tx.operations[12].body.bumpSequenceOp.bumpTo: 1102902109211
feeBump.tx.innerTx.tx.operations[13].sourceAccount._present: false
feeBump.tx.innerTx.tx.operations[13].body.type: MANAGE_BUY_OFFER
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.selling: MOON:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.buying: ECO:GABE52BI4DQBT4JC6LDOYS4D733NP3XHFNCSP3K54LFLQGUP5ILPZBYI
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.buyAmount: 120000000 (12e7)
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.price.n: 1
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.price.d: 5
feeBump.tx.innerTx.tx.operations[13].body.manageBuyOfferOp.offerID: 9298298398334 (929,829.8398334e7)
feeBump.tx.innerTx.tx.ext.v: 0
feeBump.tx.innerTx.signatures.len: 1
feeBump.tx.innerTx.signatures[0].hint: 8fea16fc (bad signature/unknown key/main is wrong network)
feeBump.tx.innerTx.signatures[0].signature: a286b2307e0f504912a60c3fab699e09544469c953f47ae34281ecd5b27d55e0ba834d7846f9b3be91c836c7ed5fe8f0b01c548b2bf1f7bfb53653146c9b8f0c
feeBump.tx.ext.v: 0
feeBump.signatures.len: 1
feeBump.signatures[0].hint: 2e82459b (bad signature/unknown key/main is wrong network)
feeBump.signatures[0].signature: 2be59f14f8ff20d6a73f5eaf3d5896b651f824e86744898cdf99623359924c559916a551b1bb16f33c984c7e6c783c4cd06ab49eeece60af6709693a0bd60002

XDR:

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

@github-actions
Copy link

This issue is stale because it has been open for 30 days with no activity. It will be closed in 5 days unless the stale label is removed, or a comment is posted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants