fix(tests): more unit tests

This commit is contained in:
Javi
2020-11-06 10:44:46 +01:00
parent c7e08378ac
commit fd0f64fe54
35 changed files with 429 additions and 22 deletions

View File

@@ -64,7 +64,7 @@
"doctoc": "doctoc docs/index.md --title '# RippleAPI Reference' --github --maxlevel 2",
"docgen": "node --harmony scripts/build_docs.js",
"prepublish": "yarn clean && yarn build",
"test": "TS_NODE_PROJECT=src/tsconfig.json nyc mocha --exit -g 'creates a ticket successfully with another ticket'",
"test": "TS_NODE_PROJECT=src/tsconfig.json nyc mocha --exit -g 'sets sequence to 0 if a ticketSequence is passed'",
"test:watch": "TS_NODE_PROJECT=src/tsconfig.json mocha --watch --reporter dot",
"format": "prettier --write '{src,test}/**/*.ts'",
"lint": "eslint 'src/**/*.ts' 'test/*-test.{ts,js}'",

View File

@@ -56,10 +56,8 @@ function signWithKeypair(
keypair.privateKey
)
}
const serialized = binaryCodec.encode(txToSignAndEncode)
checkTxSerialization(serialized, tx)
return {
signedTransaction: serialized,
id: computeBinaryTransactionHash(serialized)

View File

@@ -1,6 +1,7 @@
import requests from '../../fixtures/requests'
import responses from '../../fixtures/responses'
import {assertResultMatch, TestSuite} from '../../utils'
const instructionsWithMaxLedgerVersionOffset = {maxLedgerVersionOffset: 100}
/**
* Every test suite exports their tests in the default object.
@@ -8,11 +9,25 @@ import {assertResultMatch, TestSuite} from '../../utils'
* - Check out "test/api/index.ts" for more information about the test runner.
*/
export default <TestSuite>{
prepareCheckCancel: async (api, address) => {
'prepareCheckCancel': async (api, address) => {
const result = await api.prepareCheckCancel(
address,
requests.prepareCheckCancel.normal
)
assertResultMatch(result, responses.prepareCheckCancel.normal, 'prepare')
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareCheckCancel(
address,
requests.prepareCheckCancel.normal,
localInstructions
)
assertResultMatch(result, responses.prepareCheckCancel.ticket, 'prepare')
}
}

View File

@@ -1,6 +1,7 @@
import requests from '../../fixtures/requests'
import responses from '../../fixtures/responses'
import {assertResultMatch, TestSuite} from '../../utils'
const instructionsWithMaxLedgerVersionOffset = {maxLedgerVersionOffset: 100}
/**
* Every test suite exports their tests in the default object.
@@ -22,5 +23,19 @@ export default <TestSuite>{
requests.prepareCheckCash.deliverMin
)
assertResultMatch(result, responses.prepareCheckCash.deliverMin, 'prepare')
}
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareCheckCash(
address,
requests.prepareCheckCash.amount,
localInstructions
)
assertResultMatch(result, responses.prepareCheckCash.ticket, 'prepare')
},
}

View File

@@ -28,5 +28,19 @@ export default <TestSuite>{
requests.prepareCheckCreate.full
)
assertResultMatch(result, responses.prepareCheckCreate.full, 'prepare')
},
'prepareCheckCreate with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareCheckCreate(
address,
requests.prepareCheckCreate.normal,
localInstructions
)
assertResultMatch(result, responses.prepareCheckCreate.ticket, 'prepare')
}
}

View File

@@ -32,5 +32,23 @@ export default <TestSuite>{
responses.prepareEscrowCancellation.memos,
'prepare'
)
}
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareEscrowCancellation(
address,
requests.prepareEscrowCancellation.normal,
localInstructions
)
assertResultMatch(
result,
responses.prepareEscrowCancellation.ticket,
'prepare'
)
},
}

View File

@@ -45,5 +45,19 @@ export default <TestSuite>{
api.errors.ValidationError,
'instance.escrowCreation requires property "amount"'
)
}
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000396',
ticketSequence: 23
}
const result = await api.prepareEscrowCreation(
address,
requests.prepareEscrowCreation.normal,
localInstructions
)
assertResultMatch(result, responses.prepareEscrowCreation.ticket, 'prepare')
},
}

View File

@@ -56,5 +56,23 @@ export default <TestSuite>{
api.errors.ValidationError,
'"condition" and "fulfillment" fields on EscrowFinish must only be specified together.'
)
}
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000396',
ticketSequence: 23
}
const result = await api.prepareEscrowExecution(
address,
requests.prepareEscrowExecution.normal,
localInstructions
)
assertResultMatch(
result,
responses.prepareEscrowExecution.ticket,
'prepare'
)
},
}

View File

@@ -48,5 +48,20 @@ export default <TestSuite>{
api.errors.ValidationError,
'instance.order requires property "direction"'
)
}
},
'with ticket': async (api, address) => {
const request = requests.prepareOrder.sell
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareOrder(
address,
request,
localInstructions
)
assertResultMatch(result, responses.prepareOrder.ticket, 'prepare')
},
}

View File

@@ -55,5 +55,24 @@ export default <TestSuite>{
api.errors.ValidationError,
'instance.orderCancellation requires property "orderSequence"'
)
}
},
'with ticket': async (api, address) => {
const request = requests.prepareOrderCancellation.simple
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareOrderCancellation(
address,
request,
localInstructions
)
assertResultMatch(
result,
responses.prepareOrderCancellation.ticket,
'prepare'
)
},
}

View File

@@ -51,6 +51,20 @@ export default <TestSuite>{
assertResultMatch(response, RESPONSE_FIXTURES.close, 'prepare')
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const response = await api.preparePaymentChannelClaim(
address,
REQUEST_FIXTURES.normal,
localInstructions
)
assertResultMatch(response, RESPONSE_FIXTURES.ticket, 'prepare')
},
'rejects Promise on preparePaymentChannelClaim with renew and close': async (
api,
address

View File

@@ -43,5 +43,23 @@ export default <TestSuite>{
responses.preparePaymentChannelCreate.full,
'prepare'
)
},
'preparePaymentChannelCreate with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.preparePaymentChannelCreate(
address,
requests.preparePaymentChannelCreate.normal,
localInstructions
)
assertResultMatch(
result,
responses.preparePaymentChannelCreate.ticket,
'prepare'
)
}
}

View File

@@ -36,5 +36,23 @@ export default <TestSuite>{
responses.preparePaymentChannelFund.full,
'prepare'
)
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.preparePaymentChannelFund(
address,
requests.preparePaymentChannelFund.normal,
localInstructions
)
assertResultMatch(
result,
responses.preparePaymentChannelFund.ticket,
'prepare'
)
}
}

View File

@@ -251,5 +251,18 @@ export default <TestSuite>{
api.sign(result.txJSON, secret),
responses.prepareSettings.signed
)
}
},
'prepare settings with ticket': async (api, address) => {
const instructions = {
ticketSequence: 23,
maxLedgerVersion: 8820051,
fee: '0.000012'
}
const response = await api.prepareSettings(
address,
requests.prepareSettings.domain,
instructions
)
assertResultMatch(response, responses.prepareSettings.ticket, 'prepare')
},
}

View File

@@ -1240,5 +1240,61 @@ export default <TestSuite>{
responses.preparePaymentChannelClaim.close,
'prepare'
)
},
'rejects Promise if both sequence and ticketSecuence are set': async (
api,
address
) => {
const localInstructions = {
ticketSequence: 23,
sequence: 23
}
const txJSON = {
TransactionType: 'DepositPreauth',
Account: address,
Authorize: 'rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo',
Fee: '16'
}
await assertRejects(
api.prepareTransaction(txJSON, localInstructions),
ValidationError,
'instance is of prohibited type [object Object]'
)
},
'sets sequence to 0 if a ticketSequence is passed': async (
api,
address
) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const txJSON = {
TransactionType: 'Payment',
Account: address,
Destination: 'rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo',
Amount: {
currency: 'USD',
issuer: 'rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM',
value: '0.01'
},
SendMax: {
currency: 'USD',
issuer: 'rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM',
value: '0.01'
},
Flags: 0
}
const response = await api.prepareTransaction(txJSON, localInstructions)
assertResultMatch(
response,
responses.preparePayment.ticket,
'prepare'
)
}
}

View File

@@ -48,5 +48,19 @@ export default <TestSuite>{
api.errors.ValidationError,
'instance.trustline requires property "limit"'
)
}
},
'with ticket': async (api, address) => {
const localInstructions = {
...instructionsWithMaxLedgerVersionOffset,
maxFee: '0.000012',
ticketSequence: 23
}
const result = await api.prepareTrustline(
address,
requests.prepareTrustline.simple,
localInstructions
)
assertResultMatch(result, responses.prepareTrustline.ticket, 'prepare')
},
}

View File

@@ -330,5 +330,12 @@ export default <TestSuite>{
assert.deepEqual(result, expectedResponse)
schemaValidator.schemaValidate('sign', result)
}
},
'sign with ticket': async (api, address) => {
const secret = 'sn7n5R1cR5Y3fRFkuWXA94Ts1frVJ'
const result = api.sign(REQUEST_FIXTURES.ticket.txJSON, secret)
assert.deepEqual(result, RESPONSE_FIXTURES.ticket)
schemaValidator.schemaValidate('sign', result)
},
}

View File

@@ -76,6 +76,7 @@ module.exports = {
},
sign: {
normal: require('./sign'),
ticket: require('./sign-ticket'),
escrow: require('./sign-escrow.json'),
signAs: require('./sign-as')
},

View File

@@ -0,0 +1,9 @@
{
"txJSON": "{\"TransactionType\": \"TicketCreate\", \"TicketCount\": 1, \"Account\": \"r4SDqUD1ZcfoZrhnsZ94XNFKxYL4oHYJyA\", \"Sequence\": 0, \"TicketSequence\": 23, \"Fee\": \"10000\"}",
"instructions": {
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -94,16 +94,19 @@ module.exports = {
},
prepareOrder: {
buy: require('./prepare-order.json'),
ticket: require('./prepare-order-ticket.json'),
sell: require('./prepare-order-sell.json'),
expiration: require('./prepare-order-expiration')
},
prepareOrderCancellation: {
normal: require('./prepare-order-cancellation.json'),
ticket: require('./prepare-order-cancellation-ticket.json'),
withMemos: require('./prepare-order-cancellation-memos.json'),
noInstructions: require('./prepare-order-cancellation-no-instructions.json')
},
preparePayment: {
normal: require('./prepare-payment.json'),
ticket: require('./prepare-payment-ticket'),
minAmountXRP: require('./prepare-payment-min-amount-xrp.json'),
minAmountXRPXRP: require('./prepare-payment-min-amount-xrp-xrp.json'),
allOptions: require('./prepare-payment-all-options.json'),
@@ -115,6 +118,7 @@ module.exports = {
regularKey: require('./prepare-settings-regular-key.json'),
removeRegularKey: require('./prepare-settings-remove-regular-key.json'),
flags: require('./prepare-settings.json'),
ticket: require('./prepare-settings-ticket.json'),
flagsMultisign: require('./prepare-settings-multisign.json'),
flagSet: require('./prepare-settings-flag-set.json'),
flagClear: require('./prepare-settings-flag-clear.json'),
@@ -131,54 +135,65 @@ module.exports = {
},
prepareCheckCreate: {
normal: require('./prepare-check-create'),
ticket: require('./prepare-check-create-ticket'),
full: require('./prepare-check-create-full')
},
prepareCheckCash: {
amount: require('./prepare-check-cash-amount'),
ticket: require('./prepare-check-cash-ticket'),
deliverMin: require('./prepare-check-cash-delivermin')
},
prepareCheckCancel: {
normal: require('./prepare-check-cancel')
normal: require('./prepare-check-cancel'),
ticket: require('./prepare-check-cancel-ticket')
},
prepareEscrowCreation: {
normal: require('./prepare-escrow-creation'),
ticket: require('./prepare-escrow-creation-ticket'),
full: require('./prepare-escrow-creation-full')
},
prepareEscrowExecution: {
normal: require('./prepare-escrow-execution'),
ticket: require('./prepare-escrow-execution-ticket'),
simple: require('./prepare-escrow-execution-simple')
},
prepareEscrowCancellation: {
normal: require('./prepare-escrow-cancellation'),
ticket: require('./prepare-escrow-cancellation-ticket'),
memos: require('./prepare-escrow-cancellation-memos')
},
preparePaymentChannelCreate: {
normal: require('./prepare-payment-channel-create'),
ticket: require('./prepare-payment-channel-create-ticket'),
full: require('./prepare-payment-channel-create-full')
},
preparePaymentChannelFund: {
normal: require('./prepare-payment-channel-fund'),
ticket: require('./prepare-payment-channel-fund-ticket'),
full: require('./prepare-payment-channel-fund-full')
},
preparePaymentChannelClaim: {
normal: require('./prepare-payment-channel-claim'),
ticket: require('./prepare-payment-channel-claim-ticket'),
renew: require('./prepare-payment-channel-claim-renew'),
close: require('./prepare-payment-channel-claim-close')
},
prepareTrustline: {
simple: require('./prepare-trustline-simple.json'),
frozen: require('./prepare-trustline-frozen.json'),
complex: require('./prepare-trustline.json')
simple: require('./prepare-trustline-simple'),
ticket: require('./prepare-trustline-ticket'),
frozen: require('./prepare-trustline-frozen'),
complex: require('./prepare-trustline')
},
sign: {
normal: require('./sign.json'),
escrow: require('./sign-escrow.json'),
normal: require('./sign'),
ticket: require('./sign-ticket'),
escrow: require('./sign-escrow'),
signAs: require('./sign-as')
},
signPaymentChannelClaim: require('./sign-payment-channel-claim'),
combine: {
single: require('./combine.json')
single: require('./combine')
},
submit: require('./submit.json'),
ledgerEvent: require('./ledger-event.json')
submit: require('./submit'),
ledgerEvent: require('./ledger-event')
};

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"CheckCancel\",\"CheckID\":\"49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"CheckCash\",\"CheckID\":\"838766BA2B995C00744175F69A1B11E32C3DBC40E64801A4056FCBD657F57334\",\"Amount\":\"1000000\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Sequence\":0,\"TicketSequence\":23,\"Fee\":\"12\"}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"CheckCreate\",\"Destination\":\"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW\",\"SendMax\":\"1000000\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Sequence\":0,\"TicketSequence\":23,\"Fee\":\"12\"}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"EscrowCancel\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"Owner\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"OfferSequence\":1234,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"EscrowCreate\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"Destination\":\"rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo\",\"Amount\":\"10000\",\"CancelAfter\":536544000,\"FinishAfter\":464908910,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"EscrowFinish\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"Owner\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"OfferSequence\":1234,\"Condition\":\"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100\",\"Fulfillment\":\"A0028000\",\"LastLedgerSequence\":8820051,\"Fee\":\"396\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000396",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"OfferCancel\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"OfferSequence\":23,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"TransactionType\":\"OfferCreate\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TakerGets\":{\"currency\":\"USD\",\"issuer\":\"rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM\",\"value\":\"10.1\"},\"TakerPays\":\"2000000\",\"Flags\":2148139008,\"Memos\":[{\"Memo\":{\"MemoData\":\"7465787465642064617461\",\"MemoType\":\"74657374\",\"MemoFormat\":\"746578742F706C61696E\"}}],\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23,\"OfferSequence\":12345}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"PaymentChannelClaim\",\"Channel\":\"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON":"{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"PaymentChannelCreate\",\"Amount\":\"1000000\",\"Destination\":\"rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW\",\"SettleDelay\":86400,\"PublicKey\":\"32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON":"{\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"TransactionType\":\"PaymentChannelFund\",\"Channel\":\"C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198\",\"Amount\":\"1000000\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"Payment\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"Destination\":\"rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo\",\"Amount\":{\"value\":\"0.01\",\"currency\":\"USD\",\"issuer\":\"rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM\"},\"SendMax\":{\"value\":\"0.01\",\"currency\":\"USD\",\"issuer\":\"rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM\"},\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"TransactionType\":\"AccountSet\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"Memos\":[{\"Memo\":{\"MemoData\":\"7465787465642064617461\",\"MemoType\":\"74657374\",\"MemoFormat\":\"746578742F706C61696E\"}}],\"Domain\":\"726970706C652E636F6D\",\"Flags\":2147483648,\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,8 @@
{
"txJSON": "{\"Flags\":2147483648,\"TransactionType\":\"TrustSet\",\"Account\":\"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59\",\"LimitAmount\":{\"value\":\"0.1\",\"currency\":\"BTC\",\"issuer\":\"rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM\"},\"LastLedgerSequence\":8820051,\"Fee\":\"12\",\"Sequence\":0,\"TicketSequence\":23}",
"instructions": {
"fee": "0.000012",
"ticketSequence": 23,
"maxLedgerVersion": 8820051
}
}

View File

@@ -0,0 +1,4 @@
{
"signedTransaction": "12000A2400000000202800000001202900000017684000000000002710732103E985C55BDCE4171394A0521AA84C71F81425680A7CE510AEF49662CF5A78D38674473045022100A77F102B632779C0E3F25B8715CB8FF2A15A702F3A39D1E6416C981B604D2E0302207E1DB8418D547E8AE322F49585E1C554E8759C0FBF7B88158BE3D0EE6B2E4E0A8114EB1FC04FDA0248FB6DE5BA4235425773D61DF0F3",
"id": "9F1002A8DB9D06D5F3AB2070387F17E12421DCE8444EED13E5F6928291EB4F43"
}