mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-21 12:45:50 +00:00
remove: remove old sidechain design features (#2060)
* remove federator_info RPC * remove util * update history * fix merge issues
This commit is contained in:
@@ -10,6 +10,9 @@ Subscribe to [the **xrpl-announce** mailing list](https://groups.google.com/g/xr
|
|||||||
* Fixed `ServerState.transitions` typing, it is now a string instead of a number. (Only used in return from `server_state` request)
|
* Fixed `ServerState.transitions` typing, it is now a string instead of a number. (Only used in return from `server_state` request)
|
||||||
* Added `destination_amount` to `PathOption` which is returned as part of a `path_find` request
|
* Added `destination_amount` to `PathOption` which is returned as part of a `path_find` request
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
* RPCs and utils related to the old sidechain design
|
||||||
|
|
||||||
## 2.7.0 (2023-03-08)
|
## 2.7.0 (2023-03-08)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -1,78 +0,0 @@
|
|||||||
import { BaseRequest, BaseResponse } from './baseMethod'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The `federator_info` command asks the federator for information
|
|
||||||
* about the door account and other bridge-related information. This
|
|
||||||
* method only exists on sidechain federators. Expects a response in
|
|
||||||
* the form of a {@link FederatorInfoResponse}.
|
|
||||||
*
|
|
||||||
* @category Requests
|
|
||||||
*/
|
|
||||||
export interface FederatorInfoRequest extends BaseRequest {
|
|
||||||
command: 'federator_info'
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Response expected from a {@link FederatorInfoRequest}.
|
|
||||||
*
|
|
||||||
* @category Responses
|
|
||||||
*/
|
|
||||||
export interface FederatorInfoResponse extends BaseResponse {
|
|
||||||
result: {
|
|
||||||
info: {
|
|
||||||
mainchain: {
|
|
||||||
door_status: {
|
|
||||||
initialized: boolean
|
|
||||||
status: 'open' | 'opening' | 'closed' | 'closing'
|
|
||||||
}
|
|
||||||
last_transaction_sent_seq: number
|
|
||||||
listener_info: {
|
|
||||||
state: 'syncing' | 'normal'
|
|
||||||
}
|
|
||||||
pending_transactions: Array<{
|
|
||||||
amount: string
|
|
||||||
destination_account: string
|
|
||||||
signatures: Array<{
|
|
||||||
public_key: string
|
|
||||||
seq: number
|
|
||||||
}>
|
|
||||||
}>
|
|
||||||
sequence: number
|
|
||||||
tickets: {
|
|
||||||
initialized: boolean
|
|
||||||
tickets: Array<{
|
|
||||||
status: 'taken' | 'available'
|
|
||||||
ticket_seq: number
|
|
||||||
}>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public_key: string
|
|
||||||
sidechain: {
|
|
||||||
door_status: {
|
|
||||||
initialized: boolean
|
|
||||||
status: 'open' | 'opening' | 'closed' | 'closing'
|
|
||||||
}
|
|
||||||
last_transaction_sent_seq: number
|
|
||||||
listener_info: {
|
|
||||||
state: 'syncing' | 'normal'
|
|
||||||
}
|
|
||||||
pending_transactions: Array<{
|
|
||||||
amount: string
|
|
||||||
destination_account: string
|
|
||||||
signatures: Array<{
|
|
||||||
public_key: string
|
|
||||||
seq: number
|
|
||||||
}>
|
|
||||||
}>
|
|
||||||
sequence: number
|
|
||||||
tickets: {
|
|
||||||
initialized: boolean
|
|
||||||
tickets: Array<{
|
|
||||||
status: 'taken' | 'available'
|
|
||||||
ticket_seq: number
|
|
||||||
}>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -23,7 +23,6 @@ import {
|
|||||||
DepositAuthorizedRequest,
|
DepositAuthorizedRequest,
|
||||||
DepositAuthorizedResponse,
|
DepositAuthorizedResponse,
|
||||||
} from './depositAuthorized'
|
} from './depositAuthorized'
|
||||||
import { FederatorInfoRequest, FederatorInfoResponse } from './federatorInfo'
|
|
||||||
import { FeeRequest, FeeResponse } from './fee'
|
import { FeeRequest, FeeResponse } from './fee'
|
||||||
import {
|
import {
|
||||||
GatewayBalancesRequest,
|
GatewayBalancesRequest,
|
||||||
@@ -121,8 +120,6 @@ type Request =
|
|||||||
// NFT methods
|
// NFT methods
|
||||||
| NFTBuyOffersRequest
|
| NFTBuyOffersRequest
|
||||||
| NFTSellOffersRequest
|
| NFTSellOffersRequest
|
||||||
// sidechain methods
|
|
||||||
| FederatorInfoRequest
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @category Responses
|
* @category Responses
|
||||||
@@ -171,8 +168,6 @@ type Response =
|
|||||||
// NFT methods
|
// NFT methods
|
||||||
| NFTBuyOffersResponse
|
| NFTBuyOffersResponse
|
||||||
| NFTSellOffersResponse
|
| NFTSellOffersResponse
|
||||||
// sidechain methods
|
|
||||||
| FederatorInfoResponse
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Request,
|
Request,
|
||||||
@@ -268,7 +263,4 @@ export {
|
|||||||
NFTBuyOffersResponse,
|
NFTBuyOffersResponse,
|
||||||
NFTSellOffersRequest,
|
NFTSellOffersRequest,
|
||||||
NFTSellOffersResponse,
|
NFTSellOffersResponse,
|
||||||
// sidechain methods
|
|
||||||
FederatorInfoRequest,
|
|
||||||
FederatorInfoResponse,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
import { XrplError } from '../errors'
|
|
||||||
import { Payment } from '../models'
|
|
||||||
import { Memo } from '../models/common'
|
|
||||||
|
|
||||||
import { convertStringToHex } from './stringConversion'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a cross-chain payment transaction.
|
|
||||||
*
|
|
||||||
* @param payment - The initial payment transaction. If the transaction is
|
|
||||||
* signed, then it will need to be re-signed. There must be no more than 2
|
|
||||||
* memos, since one memo is used for the sidechain destination account. The
|
|
||||||
* destination must be the sidechain's door account.
|
|
||||||
* @param destAccount - the destination account on the sidechain.
|
|
||||||
* @returns A cross-chain payment transaction, where the mainchain door account
|
|
||||||
* is the `Destination` and the destination account on the sidechain is encoded
|
|
||||||
* in the memos.
|
|
||||||
* @throws XrplError - if there are more than 2 memos.
|
|
||||||
* @category Utilities
|
|
||||||
*/
|
|
||||||
export default function createCrossChainPayment(
|
|
||||||
payment: Payment,
|
|
||||||
destAccount: string,
|
|
||||||
): Payment {
|
|
||||||
const destAccountHex = convertStringToHex(destAccount)
|
|
||||||
const destAccountMemo: Memo = { Memo: { MemoData: destAccountHex } }
|
|
||||||
|
|
||||||
const memos = payment.Memos ?? []
|
|
||||||
if (memos.length > 2) {
|
|
||||||
throw new XrplError(
|
|
||||||
'Cannot have more than 2 memos in a cross-chain transaction.',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
const newMemos = [destAccountMemo, ...memos]
|
|
||||||
|
|
||||||
const newPayment = { ...payment, Memos: newMemos }
|
|
||||||
delete newPayment.TxnSignature
|
|
||||||
|
|
||||||
return newPayment
|
|
||||||
}
|
|
||||||
@@ -22,7 +22,6 @@ import { Response } from '../models/methods'
|
|||||||
import { PaymentChannelClaim } from '../models/transactions/paymentChannelClaim'
|
import { PaymentChannelClaim } from '../models/transactions/paymentChannelClaim'
|
||||||
import { Transaction } from '../models/transactions/transaction'
|
import { Transaction } from '../models/transactions/transaction'
|
||||||
|
|
||||||
import createCrossChainPayment from './createCrossChainPayment'
|
|
||||||
import { deriveKeypair, deriveAddress, deriveXAddress } from './derive'
|
import { deriveKeypair, deriveAddress, deriveXAddress } from './derive'
|
||||||
import getBalanceChanges from './getBalanceChanges'
|
import getBalanceChanges from './getBalanceChanges'
|
||||||
import getNFTokenID from './getNFTokenID'
|
import getNFTokenID from './getNFTokenID'
|
||||||
@@ -220,6 +219,5 @@ export {
|
|||||||
encodeForSigning,
|
encodeForSigning,
|
||||||
encodeForSigningClaim,
|
encodeForSigningClaim,
|
||||||
getNFTokenID,
|
getNFTokenID,
|
||||||
createCrossChainPayment,
|
|
||||||
parseNFTokenID,
|
parseNFTokenID,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
import { assert } from 'chai'
|
|
||||||
|
|
||||||
import { createCrossChainPayment, convertStringToHex, Payment } from '../../src'
|
|
||||||
|
|
||||||
describe('createCrossChainPayment', function () {
|
|
||||||
it('successful xchain payment creation', function () {
|
|
||||||
const payment: Payment = {
|
|
||||||
TransactionType: 'Payment',
|
|
||||||
Account: 'rRandom',
|
|
||||||
Destination: 'rRandom2',
|
|
||||||
Amount: '3489303',
|
|
||||||
}
|
|
||||||
const sidechainAccount = 'rSidechain'
|
|
||||||
|
|
||||||
const expectedPayment = {
|
|
||||||
...payment,
|
|
||||||
Memos: [
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: convertStringToHex(sidechainAccount),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
const resultPayment = createCrossChainPayment(payment, sidechainAccount)
|
|
||||||
assert.deepEqual(resultPayment, expectedPayment)
|
|
||||||
|
|
||||||
// ensure that the original object wasn't modified
|
|
||||||
assert.notDeepEqual(resultPayment, payment)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('successful xchain payment creation with memo', function () {
|
|
||||||
const memo = {
|
|
||||||
Memo: {
|
|
||||||
MemoData: 'deadbeef',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
const payment: Payment = {
|
|
||||||
TransactionType: 'Payment',
|
|
||||||
Account: 'rRandom',
|
|
||||||
Destination: 'rRandom2',
|
|
||||||
Amount: '3489303',
|
|
||||||
Memos: [memo],
|
|
||||||
}
|
|
||||||
const sidechainAccount = 'rSidechain'
|
|
||||||
|
|
||||||
const expectedPayment = {
|
|
||||||
...payment,
|
|
||||||
Memos: [
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: convertStringToHex(sidechainAccount),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
memo,
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
const resultPayment = createCrossChainPayment(payment, sidechainAccount)
|
|
||||||
assert.deepEqual(resultPayment, expectedPayment)
|
|
||||||
|
|
||||||
// ensure that the original object wasn't modified
|
|
||||||
assert.notDeepEqual(resultPayment, payment)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('removes TxnSignature', function () {
|
|
||||||
const payment: Payment = {
|
|
||||||
TransactionType: 'Payment',
|
|
||||||
Account: 'rRandom',
|
|
||||||
Destination: 'rRandom2',
|
|
||||||
Amount: '3489303',
|
|
||||||
TxnSignature: 'asodfiuaosdfuaosd',
|
|
||||||
}
|
|
||||||
const sidechainAccount = 'rSidechain'
|
|
||||||
|
|
||||||
const expectedPayment = {
|
|
||||||
...payment,
|
|
||||||
Memos: [
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: convertStringToHex(sidechainAccount),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
delete expectedPayment.TxnSignature
|
|
||||||
|
|
||||||
const resultPayment = createCrossChainPayment(payment, sidechainAccount)
|
|
||||||
assert.deepEqual(resultPayment, expectedPayment)
|
|
||||||
|
|
||||||
// ensure that the original object wasn't modified
|
|
||||||
assert.notDeepEqual(resultPayment, payment)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('fails with 3 memos', function () {
|
|
||||||
const payment: Payment = {
|
|
||||||
TransactionType: 'Payment',
|
|
||||||
Account: 'rRandom',
|
|
||||||
Destination: 'rRandom2',
|
|
||||||
Amount: '3489303',
|
|
||||||
Memos: [
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: '2934723843ace',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: '2934723843ace',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Memo: {
|
|
||||||
MemoData: '2934723843ace',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
assert.throws(() => {
|
|
||||||
createCrossChainPayment(payment, 'rSidechain')
|
|
||||||
}, /Cannot have more than 2 memos/u)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
Reference in New Issue
Block a user