diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e9303e..1910501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.8.1] - 6.Jun.2024. +- soroban improvements +- add soroban support to txRep (sep-11) + ## [1.8.0] - 13.May.2024. - add protocol 21 support diff --git a/README.md b/README.md index 7b316e4..38a643b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The Soneso open source Stellar SDK for Flutter is build with Dart and provides A 1. Add the dependency to your pubspec.yaml file: ``` dependencies: - stellar_flutter_sdk: ^1.8.0 + stellar_flutter_sdk: ^1.8.1 ``` 2. Install it (command line or IDE): ``` diff --git a/lib/src/stellar_sdk.dart b/lib/src/stellar_sdk.dart index 3aa3907..cbf2a2b 100644 --- a/lib/src/stellar_sdk.dart +++ b/lib/src/stellar_sdk.dart @@ -31,7 +31,7 @@ import 'requests/liquidity_pools_request_builder.dart'; /// Main class of the flutter stellar sdk. class StellarSDK { - static const versionNumber = "1.8.0"; + static const versionNumber = "1.8.1"; static final StellarSDK PUBLIC = StellarSDK("https://horizon.stellar.org"); static final StellarSDK TESTNET = StellarSDK("https://horizon-testnet.stellar.org"); diff --git a/lib/src/transaction.dart b/lib/src/transaction.dart index 6b054cd..2d1d1d1 100644 --- a/lib/src/transaction.dart +++ b/lib/src/transaction.dart @@ -4,7 +4,6 @@ import "dart:convert"; import 'dart:typed_data'; -import 'package:stellar_flutter_sdk/stellar_flutter_sdk.dart'; import 'muxed_account.dart'; import 'key_pair.dart'; @@ -20,6 +19,8 @@ import 'xdr/xdr_transaction.dart'; import 'xdr/xdr_type.dart'; import 'xdr/xdr_memo.dart'; import 'account.dart'; +import 'invoke_host_function_operation.dart'; +import 'soroban/soroban_auth.dart'; abstract class AbstractTransaction { late List _mSignatures; diff --git a/pubspec.yaml b/pubspec.yaml index 3d8d534..f0cd843 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: stellar_flutter_sdk description: A stellar blockchain sdk that query's horizon, build, signs and submits transactions to the stellar network. -version: 1.8.0 +version: 1.8.1 homepage: https://github.com/Soneso/stellar_flutter_sdk environment: diff --git a/test/sep0011_test.dart b/test/sep0011_test.dart index aa26c60..5205f40 100644 --- a/test/sep0011_test.dart +++ b/test/sep0011_test.dart @@ -1097,551 +1097,4 @@ signatures[0].signature: bd33b8de6ca4354d653329e4cfd2f012a3c155c816bca8275721bd8 assert(deploySacWithSrcAccXdr == xdr); }); -/* - test('soroban install contract code txRep', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDBTMUPR2TKKCZDDCHVSDUCQBQAWGKZW2A7AHPP4UUCNDU4YUQMBEHSV -tx.fee: 100 -tx.seqNum: 1480762989740033 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_INSTALL_CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.function.installContractCodeArgs.code: 0061736d01000000010f0360017e017e60027e7e017e6000000219040176015f000001780138000001760134000101760136000103030200020503010001060b027f0141000b7f0141000b071d030568656c6c6f0004066d656d6f727902000873646b737461727400050c01060ac70302b20302067f027e4202100021082300220441046a2201411c6a22053f002203411074410f6a41707122064b04402003200520066b41ffff036a4180807c714110762206200320064a1b40004100480440200640004100480440000b0b0b200524002004411c360200200141046b22034100360204200341003602082003410336020c200341083602102001420037031020012008370310419c0928020041017641094b044042831010011a0b03402002419c092802004101764804402002419c092802004101764f047f417f05200241017441a0096a2f01000b220341fa004c200341304e7104402007420686210842002107200341ff017141df004604404201210705200341ff0171220441394d200441304f710440200341ff0171ad422e7d210705200341ff0171220441da004d200441c1004f710440200341ff0171ad42357d210705200341ff0171220441fa004d200441e1004f710440200341ff0171ad423b7d21070542831010011a0b0b0b0b200720088421070542831010011a0b200241016a21020c010b0b200120012903102007420886420e841002370310200120012903102000100337031020012903100b1100230104400f0b4101240141ac0924000b0b8d010600418c080b013c004198080b2f010000002800000041006c006c006f0063006100740069006f006e00200074006f006f0020006c00610072006700650041cc080b013c0041d8080b25010000001e0000007e006c00690062002f00720074002f0073007400750062002e0074007300418c090b011c004198090b11010000000a000000480065006c006c006f001e11636f6e7472616374656e766d657461763000000000000000000000002000430e636f6e747261637473706563763000000000000000000000000568656c6c6f000000000000010000000000000002746f00000000001100000001000003ea00000011 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractCode.hash: 3c2852fb06f47f4f371ac1b13472ae65ce3354c8af3001e66896cea08358b554 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 98a41812 -signatures[0].signature: 6cb05049158787df9df2019c865b618f8731498cea25b14eee7a369af2167cca7b304a0981783998685ea89a64eb3e98f52811ffa168524f7b6e67d14e18be01'''; - - String expected = - "AAAAAgAAAADDNlHx1NShZGMR6yHQUAwBYys20D4DvfylBNHTmKQYEgAAAGQABUK/AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAgAAAywAYXNtAQAAAAEPA2ABfgF+YAJ+fgF+YAAAAhkEAXYBXwAAAXgBOAAAAXYBNAABAXYBNgABAwMCAAIFAwEAAQYLAn8BQQALfwFBAAsHHQMFaGVsbG8ABAZtZW1vcnkCAAhzZGtzdGFydAAFDAEGCscDArIDAgZ/An5CAhAAIQgjACIEQQRqIgFBHGoiBT8AIgNBEHRBD2pBcHEiBksEQCADIAUgBmtB//8DakGAgHxxQRB2IgYgAyAGShtAAEEASARAIAZAAEEASARAAAsLCyAFJAAgBEEcNgIAIAFBBGsiA0EANgIEIANBADYCCCADQQM2AgwgA0EINgIQIAFCADcDECABIAg3AxBBnAkoAgBBAXZBCUsEQEKDEBABGgsDQCACQZwJKAIAQQF2SARAIAJBnAkoAgBBAXZPBH9BfwUgAkEBdEGgCWovAQALIgNB+gBMIANBME5xBEAgB0IGhiEIQgAhByADQf8BcUHfAEYEQEIBIQcFIANB/wFxIgRBOU0gBEEwT3EEQCADQf8Bca1CLn0hBwUgA0H/AXEiBEHaAE0gBEHBAE9xBEAgA0H/AXGtQjV9IQcFIANB/wFxIgRB+gBNIARB4QBPcQRAIANB/wFxrUI7fSEHBUKDEBABGgsLCwsgByAIhCEHBUKDEBABGgsgAkEBaiECDAELCyABIAEpAxAgB0IIhkIOhBACNwMQIAEgASkDECAAEAM3AxAgASkDEAsRACMBBEAPC0EBJAFBrAkkAAsLjQEGAEGMCAsBPABBmAgLLwEAAAAoAAAAQQBsAGwAbwBjAGEAdABpAG8AbgAgAHQAbwBvACAAbABhAHIAZwBlAEHMCAsBPABB2AgLJQEAAAAeAAAAfgBsAGkAYgAvAHIAdAAvAHMAdAB1AGIALgB0AHMAQYwJCwEcAEGYCQsRAQAAAAoAAABIAGUAbABsAG8AHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAAAAAAIABDDmNvbnRyYWN0c3BlY3YwAAAAAAAAAAAAAAAFaGVsbG8AAAAAAAABAAAAAAAAAAJ0bwAAAAAAEQAAAAEAAAPqAAAAEQAAAAEAAAAHPChS+wb0f083GsGxNHKuZc4zVMivMAHmaJbOoINYtVQAAAAAAAAAAAAAAAAAAAABmKQYEgAAAEBssFBJFYeH353yAZyGW2GPhzFJjOolsU7uejaa8hZ8ynswSgmBeDmYaF6ommTrPpj1KBH/oWhST3tuZ9FOGL4B"; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban create contract txRep', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDBTMUPR2TKKCZDDCHVSDUCQBQAWGKZW2A7AHPP4UUCNDU4YUQMBEHSV -tx.fee: 100 -tx.seqNum: 1480762989740034 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_CREATE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.source.type: SCCONTRACT_CODE_WASM_REF -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.source.wasm_id: 3c2852fb06f47f4f371ac1b13472ae65ce3354c8af3001e66896cea08358b554 -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.type: CONTRACT_ID_FROM_SOURCE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.salt: f08671c76d71ebe297b71ef2eedb131c1f31c3e99749289fb5f1673c8779d8bf -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractCode.hash: 3c2852fb06f47f4f371ac1b13472ae65ce3354c8af3001e66896cea08358b554 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 2941f74968f504d697365aeb36b32e3a9e771025faf7f983d7d2e18b65ea8c8f -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.auth.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 98a41812 -signatures[0].signature: 320de04c50a28cda01f49352a55a3cd0b2ae7ea05aafbdf6548bcb05148e3b20eebebae625a5e684c83f29ada9f56d35d09267f8f8d5749a7ca3e030d0fcc107'''; - - String expected = - "AAAAAgAAAADDNlHx1NShZGMR6yHQUAwBYys20D4DvfylBNHTmKQYEgAAAGQABUK/AAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAADwhnHHbXHr4pe3HvLu2xMcHzHD6ZdJKJ+18Wc8h3nYvwAAAAA8KFL7BvR/TzcawbE0cq5lzjNUyK8wAeZols6gg1i1VAAAAAEAAAAHPChS+wb0f083GsGxNHKuZc4zVMivMAHmaJbOoINYtVQAAAABAAAABilB90lo9QTWlzZa6zazLjqedxAl+vf5g9fS4Ytl6oyPAAAAFAAAAAAAAAAAAAAAAZikGBIAAABAMg3gTFCijNoB9JNSpVo80LKufqBar732VIvLBRSOOyDuvrrmJaXmhMg/Ka2p9W010JJn+PjVdJp8o+Aw0PzBBw=="; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban invoke contract txRep', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDBTMUPR2TKKCZDDCHVSDUCQBQAWGKZW2A7AHPP4UUCNDU4YUQMBEHSV -tx.fee: 100 -tx.seqNum: 1480762989740035 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_INVOKE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs.len: 3 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].bytes: 2941f74968f504d697365aeb36b32e3a9e771025faf7f983d7d2e18b65ea8c8f -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].sym: hello -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].sym: friend -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 2 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractData.contractID: 2941f74968f504d697365aeb36b32e3a9e771025faf7f983d7d2e18b65ea8c8f -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].contractCode.hash: 3c2852fb06f47f4f371ac1b13472ae65ce3354c8af3001e66896cea08358b554 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 98a41812 -signatures[0].signature: a8521e2d0b8132b5374566f76a10f5a500bb6e36c9e483ff34f429a9f4bcb5d11e8eb954b20bc605ddc1e7adff8ada27f7186df0f05ca9ced433075a2ddcc60d'''; - - String expected = - "AAAAAgAAAADDNlHx1NShZGMR6yHQUAwBYys20D4DvfylBNHTmKQYEgAAAGQABUK/AAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAMAAAANAAAAIClB90lo9QTWlzZa6zazLjqedxAl+vf5g9fS4Ytl6oyPAAAADwAAAAVoZWxsbwAAAAAAAA8AAAAGZnJpZW5kAAAAAAACAAAABilB90lo9QTWlzZa6zazLjqedxAl+vf5g9fS4Ytl6oyPAAAAFAAAAAc8KFL7BvR/TzcawbE0cq5lzjNUyK8wAeZols6gg1i1VAAAAAAAAAAAAAAAAAAAAAGYpBgSAAAAQKhSHi0LgTK1N0Vm92oQ9aUAu242yeSD/zT0Kan0vLXRHo65VLILxgXdweet/4raJ/cYbfDwXKnO1DMHWi3cxg0="; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban deploy sac with source account txRep', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDBTMUPR2TKKCZDDCHVSDUCQBQAWGKZW2A7AHPP4UUCNDU4YUQMBEHSV -tx.fee: 100 -tx.seqNum: 1480762989740037 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_CREATE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.source.type: SCCONTRACT_CODE_TOKEN -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.type: CONTRACT_ID_FROM_SOURCE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.salt: b8bcf30dd1512f076e2e0e2e53f4f1c9a75678a74e6d9034fd8440b26d77f077 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 0 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 3ac5b88be7b5b8793e02c5992e4b24f10b27351a8babf1b9f938b0fb372cb01f -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.auth.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 98a41812 -signatures[0].signature: fb76fa3f7f048d16c641c1d853d8eba9e136ecf139bab8c4eb2a5fe1494ff347ad0d3fc3189c3475ea550704169dffc871e399b7aa5c5c9a69155994d0572e07'''; - - String expected = - "AAAAAgAAAADDNlHx1NShZGMR6yHQUAwBYys20D4DvfylBNHTmKQYEgAAAGQABUK/AAAABQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAAC4vPMN0VEvB24uDi5T9PHJp1Z4p05tkDT9hECybXfwdwAAAAEAAAAAAAAAAQAAAAY6xbiL57W4eT4CxZkuSyTxCyc1Gour8bn5OLD7NyywHwAAABQAAAAAAAAAAAAAAAGYpBgSAAAAQPt2+j9/BI0WxkHB2FPY66nhNuzxObq4xOsqX+FJT/NHrQ0/wxicNHXqVQcEFp3/yHHjmbeqXFyaaRVZlNBXLgc="; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban deploy sac with asset txRep', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDMQRURGSSY2MUFGCC6YITK7MKEFX6PH7MIFZJGQF5GJXRCGAALAALQB -tx.fee: 100 -tx.seqNum: 1480793054511106 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_CREATE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.source.type: SCCONTRACT_CODE_TOKEN -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.type: CONTRACT_ID_FROM_ASSET -tx.operations[0].body.invokeHostFunctionOp.function.createContractArgs.contractID.asset: Fsdk:GDMQRURGSSY2MUFGCC6YITK7MKEFX6PH7MIFZJGQF5GJXRCGAALAALQB -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 0 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 3 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 7d2ea92d3b334b6dfc2204d26004894092b66da94637914dc41e516f01db2e71 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_VEC -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.vec._present: true -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.vec.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.vec[0].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.vec[0].sym: Admin -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.contractID: 7d2ea92d3b334b6dfc2204d26004894092b66da94637914dc41e516f01db2e71 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.type: SCV_VEC -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.vec._present: true -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.vec.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.vec[0].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.vec[0].sym: Metadata -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].contractData.contractID: 7d2ea92d3b334b6dfc2204d26004894092b66da94637914dc41e516f01db2e71 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.auth.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 46001600 -signatures[0].signature: c93d1f2cfafb0a5985cd66844c0c058cd36a1f58f6ee0afe7061b4074134e74bc94279d03dade7bc4fd1773266c2a410c17956af846f3fab71489298e337fd0e'''; - - String expected = - "AAAAAgAAAADZCNImlLGmUKYQvYRNX2KIW/nn+xBcpNAvTJvERgAWAAAAAGQABULGAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAAIAAAABRnNkawAAAADZCNImlLGmUKYQvYRNX2KIW/nn+xBcpNAvTJvERgAWAAAAAAEAAAAAAAAAAwAAAAZ9LqktOzNLbfwiBNJgBIlAkrZtqUY3kU3EHlFvAdsucQAAABAAAAABAAAAAQAAAA8AAAAFQWRtaW4AAAAAAAAGfS6pLTszS238IgTSYASJQJK2balGN5FNxB5RbwHbLnEAAAAQAAAAAQAAAAEAAAAPAAAACE1ldGFkYXRhAAAABn0uqS07M0tt/CIE0mAEiUCStm2pRjeRTcQeUW8B2y5xAAAAFAAAAAAAAAAAAAAAAUYAFgAAAABAyT0fLPr7ClmFzWaETAwFjNNqH1j27gr+cGG0B0E050vJQnnQPa3nvE/RdzJmwqQQwXlWr4RvP6txSJKY4zf9Dg=="; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban invoke auth 1', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GBAKHYCEKMHP4ZG3GJBGTQ75DMAFYN2IDEJI54QGHRZU3WP6MPOHCWCK -tx.fee: 100 -tx.seqNum: 1481510314049539 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_INVOKE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs.len: 4 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].bytes: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].sym: auth -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].type: SCV_U32 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].u32: 3 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 3 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].account.accountID: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].contractData.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[2].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[2].contractCode.hash: 185b8c6d92815faa9da6b69fdb8ec62f439bf967ffd51751b6e8c116b15edd26 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 2 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.type: SCV_LEDGER_KEY_NONCE -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.nonce_key.nonce_address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.nonce_key.nonce_address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.auth.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.nonce: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.functionName: auth -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].type: SCV_U32 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].u32: 3 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].type: SCV_MAP -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].key.sym: public_key -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].val.bytes: d5b27e662a7f6b6a8089b4efe975f48ad5d93502b30f99dfcebf3e7d509b8965 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].key.sym: signature -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].val.bytes: dca9acad3dac4d217661dd0a1221b52f1d3f7145610bd8b13ccc5c2083ce6fb0cfaba3ecdbb999e4dde5161f0434d4f1d51b34f252ce8d4404e799eae43c740c -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: fe63dc71 -signatures[0].signature: c751f2070d6f2d0adea75f216122618b3f0508114bb3888bd0bb318a98afd92aa38da37ea7787953d3b6c0d53894ef7cc54712ca851288d9d6d25b95467b9006'''; - - String expected = - "AAAAAgAAAABAo+BEUw7+ZNsyQmnD/RsAXDdIGRKO8gY8c03Z/mPccQAAAGQABUNtAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAQAAAANAAAAIHdgdu9bvHfDxFxcnz6M8RHltnfJ5AxZcTalbrBZPSyXAAAADwAAAARhdXRoAAAAEwAAAAAAAAAA1bJ+Zip/a2qAibTv6XX0itXZNQKzD5nfzr8+fVCbiWUAAAADAAAAAwAAAAMAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAABndgdu9bvHfDxFxcnz6M8RHltnfJ5AxZcTalbrBZPSyXAAAAFAAAAAcYW4xtkoFfqp2mtp/bjsYvQ5v5Z//VF1G26MEWsV7dJgAAAAIAAAAGd2B271u8d8PEXFyfPozxEeW2d8nkDFlxNqVusFk9LJcAAAATAAAAAAAAAADVsn5mKn9raoCJtO/pdfSK1dk1ArMPmd/Ovz59UJuJZQAAAAZ3YHbvW7x3w8RcXJ8+jPER5bZ3yeQMWXE2pW6wWT0slwAAABUAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAAAQAAAAEAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAAAAAAAAB3YHbvW7x3w8RcXJ8+jPER5bZ3yeQMWXE2pW6wWT0slwAAAARhdXRoAAAAAgAAABMAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAAAwAAAAMAAAAAAAAAAQAAABAAAAABAAAAAQAAABEAAAABAAAAAgAAAA8AAAAKcHVibGljX2tleQAAAAAADQAAACDVsn5mKn9raoCJtO/pdfSK1dk1ArMPmd/Ovz59UJuJZQAAAA8AAAAJc2lnbmF0dXJlAAAAAAAADQAAAEDcqaytPaxNIXZh3QoSIbUvHT9xRWEL2LE8zFwgg85vsM+ro+zbuZnk3eUWHwQ01PHVGzTyUs6NRATnmerkPHQMAAAAAAAAAAH+Y9xxAAAAQMdR8gcNby0K3qdfIWEiYYs/BQgRS7OIi9C7MYqYr9kqo42jfqd4eVPTtsDVOJTvfMVHEsqFEojZ1tJblUZ7kAY="; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban invoke auth 2', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.fee: 100 -tx.seqNum: 1481514609016833 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_INVOKE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs.len: 4 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].bytes: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].sym: auth -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].type: SCV_U32 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].u32: 3 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 2 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractData.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].contractCode.hash: 185b8c6d92815faa9da6b69fdb8ec62f439bf967ffd51751b6e8c116b15edd26 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 1 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.auth.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce._present: false -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.contractID: 776076ef5bbc77c3c45c5c9f3e8cf111e5b677c9e40c597136a56eb0593d2c97 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.functionName: auth -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].address.accountId: GDK3E7TGFJ7WW2UARG2O72LV6SFNLWJVAKZQ7GO7Z27T47KQTOEWLTJ4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].type: SCV_U32 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].u32: 3 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs.len: 0 -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 509b8965 -signatures[0].signature: 50c98146c951de3883433308925fe738699b3b911eb171f20e8c4cfcc22f97c0a16ec83c93307bf8085eb0f25440b133ed01f9e51d3ca6b97f3846e82220db0b'''; - - String expected = - "AAAAAgAAAADVsn5mKn9raoCJtO/pdfSK1dk1ArMPmd/Ovz59UJuJZQAAAGQABUNuAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAQAAAANAAAAIHdgdu9bvHfDxFxcnz6M8RHltnfJ5AxZcTalbrBZPSyXAAAADwAAAARhdXRoAAAAEwAAAAAAAAAA1bJ+Zip/a2qAibTv6XX0itXZNQKzD5nfzr8+fVCbiWUAAAADAAAAAwAAAAIAAAAGd2B271u8d8PEXFyfPozxEeW2d8nkDFlxNqVusFk9LJcAAAAUAAAABxhbjG2SgV+qnaa2n9uOxi9Dm/ln/9UXUbbowRaxXt0mAAAAAQAAAAZ3YHbvW7x3w8RcXJ8+jPER5bZ3yeQMWXE2pW6wWT0slwAAABMAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAAAQAAAAB3YHbvW7x3w8RcXJ8+jPER5bZ3yeQMWXE2pW6wWT0slwAAAARhdXRoAAAAAgAAABMAAAAAAAAAANWyfmYqf2tqgIm07+l19IrV2TUCsw+Z386/Pn1Qm4llAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAABUJuJZQAAAEBQyYFGyVHeOINDMwiSX+c4aZs7kR6xcfIOjEz8wi+XwKFuyDyTMHv4CF6w8lRAsTPtAfnlHTymuX84RugiINsL"; - - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - - test('soroban invoke auth 3', () { - String txRep = ''' -type: ENVELOPE_TYPE_TX -tx.sourceAccount: GACGE76ZI5GZK66YHK5IOZHQ6V5N5243MUYEDMBIOCCPMEDED42SEKRQ -tx.fee: 100 -tx.seqNum: 1481776602021901 -tx.cond.type: PRECOND_NONE -tx.memo.type: MEMO_NONE -tx.operations.len: 1 -tx.operations[0].sourceAccount._present: false -tx.operations[0].body.type: INVOKE_HOST_FUNCTION -tx.operations[0].body.invokeHostFunctionOp.function.type: HOST_FUNCTION_TYPE_INVOKE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs.len: 10 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[0].bytes: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[1].sym: swap -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[2].address.accountId: GBRCWMTNF7Z5GKQFHJ35GO4OKMH4I56V2THEBKRHDQ4ULGYELZX7KYPC -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[3].address.accountId: GC7ZOYTNA5PRGFU2BAP4H6CTFXPAG46Y2Z3SJV6BNRPP56ET5R7L3ZEM -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[4].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[4].bytes: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[5].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[5].bytes: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[6].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[6].i128.lo: 1000 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[6].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[7].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[7].i128.lo: 4500 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[7].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[8].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[8].i128.lo: 5000 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[8].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[9].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[9].i128.lo: 950 -tx.operations[0].body.invokeHostFunctionOp.function.invokeArgs[9].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly.len: 9 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].type: ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[0].account.accountID: GBRCWMTNF7Z5GKQFHJ35GO4OKMH4I56V2THEBKRHDQ4ULGYELZX7KYPC -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].type: ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[1].account.accountID: GC7ZOYTNA5PRGFU2BAP4H6CTFXPAG46Y2Z3SJV6BNRPP56ET5R7L3ZEM -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[2].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[2].contractData.contractID: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[2].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[3].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[3].contractData.contractID: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[3].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[3].contractData.key.sym: Authorizd -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[4].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[4].contractData.contractID: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[4].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[5].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[5].contractData.contractID: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[5].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[5].contractData.key.sym: Authorizd -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[6].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[6].contractData.contractID: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[6].contractData.key.type: SCV_LEDGER_KEY_CONTRACT_EXECUTABLE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[7].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[7].contractCode.hash: 45f7a27e1e9c33ba1ac0f13ad276a1929367624c5edd95dbdfeeba0ab959b991 -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[8].type: CONTRACT_CODE -tx.operations[0].body.invokeHostFunctionOp.footprint.readOnly[8].contractCode.hash: ff0071b0fe9460c8ffb06b993822fd121b2bcdabf76facb19852787793cfb4a0 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite.len: 6 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.contractID: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.type: SCV_LEDGER_KEY_NONCE -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.nonce_key.nonce_address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[0].contractData.key.nonce_key.nonce_address.accountId: GBRCWMTNF7Z5GKQFHJ35GO4OKMH4I56V2THEBKRHDQ4ULGYELZX7KYPC -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.contractID: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.type: SCV_LEDGER_KEY_NONCE -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.nonce_key.nonce_address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[1].contractData.key.nonce_key.nonce_address.accountId: GC7ZOYTNA5PRGFU2BAP4H6CTFXPAG46Y2Z3SJV6BNRPP56ET5R7L3ZEM -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].contractData.contractID: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[2].contractData.key.sym: Allowance -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[3].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[3].contractData.contractID: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[3].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[3].contractData.key.sym: Balance -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[4].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[4].contractData.contractID: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[4].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[4].contractData.key.sym: Allowance -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[5].type: CONTRACT_DATA -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[5].contractData.contractID: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[5].contractData.key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.footprint.readWrite[5].contractData.key.sym: Balance -tx.operations[0].body.invokeHostFunctionOp.auth.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.address.accountId: GBRCWMTNF7Z5GKQFHJ35GO4OKMH4I56V2THEBKRHDQ4ULGYELZX7KYPC -tx.operations[0].body.invokeHostFunctionOp.auth[0].addressWithNonce.nonce: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.contractID: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.functionName: swap -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args.len: 4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[0].bytes: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[1].bytes: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[2].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[2].i128.lo: 1000 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[2].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[3].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[3].i128.lo: 4500 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.args[3].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].contractID: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].functionName: incr_allow -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args.len: 3 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[0].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[0].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[0].address.accountId: GBRCWMTNF7Z5GKQFHJ35GO4OKMH4I56V2THEBKRHDQ4ULGYELZX7KYPC -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[1].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[1].address.type: SC_ADDRESS_TYPE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[1].address.contractId: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[2].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[2].i128.lo: 1000 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].args[2].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].rootInvocation.subInvocations[0].subInvocations.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].type: SCV_MAP -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].key.sym: public_key -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[0].val.bytes: 622b326d2ff3d32a053a77d33b8e530fc477d5d4ce40aa271c39459b045e6ff5 -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].key.sym: signature -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[0].signatureArgs[0].map[1].val.bytes: d65127e230b0a6c9674616e76c0aacf4e093dd75e09fb04517947828b9d0f06f5572094ff54d0fe259334b8dad9e05fe591a1b9eaa4117fa0a608e2162138300 -tx.operations[0].body.invokeHostFunctionOp.auth[1].addressWithNonce._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[1].addressWithNonce.address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[1].addressWithNonce.address.accountId: GC7ZOYTNA5PRGFU2BAP4H6CTFXPAG46Y2Z3SJV6BNRPP56ET5R7L3ZEM -tx.operations[0].body.invokeHostFunctionOp.auth[1].addressWithNonce.nonce: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.contractID: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.functionName: swap -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args.len: 4 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[0].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[0].bytes: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[1].type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[1].bytes: c94aabb0aba62c99ee266ce1196508b5408a434e23bbdf3489b469af5ba12755 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[2].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[2].i128.lo: 5000 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[2].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[3].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[3].i128.lo: 950 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.args[3].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].contractID: ff62f815e98f71375604f385753731597e2621349fabe11ad870e92306085865 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].functionName: incr_allow -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args.len: 3 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[0].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[0].address.type: SC_ADDRESS_TYPE_ACCOUNT -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[0].address.accountId: GC7ZOYTNA5PRGFU2BAP4H6CTFXPAG46Y2Z3SJV6BNRPP56ET5R7L3ZEM -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[1].type: SCV_ADDRESS -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[1].address.type: SC_ADDRESS_TYPE_CONTRACT -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[1].address.contractId: 881f144f015143d017c313e49515d2405bea95284f3b8d1cb0685349dbc45cc4 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[2].type: SCV_I128 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[2].i128.lo: 5000 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].args[2].i128.hi: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[1].rootInvocation.subInvocations[0].subInvocations.len: 0 -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs.len: 1 -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].type: SCV_MAP -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map._present: true -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map.len: 2 -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[0].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[0].key.sym: public_key -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[0].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[0].val.bytes: bf97626d075f13169a081fc3f8532dde0373d8d67724d7c16c5efef893ec7ebd -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[1].key.type: SCV_SYMBOL -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[1].key.sym: signature -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[1].val.type: SCV_BYTES -tx.operations[0].body.invokeHostFunctionOp.auth[1].signatureArgs[0].map[1].val.bytes: 5981d9e83fab51b2e991e833aae20a9c514bdcef8553a0dd4da9d13ceb55ce85afa7e625b37c2591712dc3029ca552ed097e614e6ecb242c7accc1861a29190f -tx.ext.v: 0 -signatures.len: 1 -signatures[0].hint: 641f3522 -signatures[0].signature: e81c489735c9b165b7cbacdffe38dc1ff70da1994b2d555480071ffee8b319dc44610963676b25c90af3b84d6b3a67bafee2635180fe6b4cb43501f830f6bb09'''; - - String expected = - "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"; - - String transactionEnvelopeXdrBase64 = - TxRep.transactionEnvelopeXdrBase64FromTxRep(txRep); - assert(expected == transactionEnvelopeXdrBase64); - String txRepRes = - TxRep.fromTransactionEnvelopeXdrBase64(transactionEnvelopeXdrBase64); - assert(txRepRes == txRep); - }); - */ }