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

Add initial support for Ripple, RippleHandler #31

Closed
wants to merge 12 commits into from
Closed
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,6 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

# Local Netlify folder
.netlify
34 changes: 18 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "dlc-btc-lib",
"version": "2.2.7",
"version": "2.3.0",
"description": "This library provides a comprehensive set of interfaces and functions for minting dlcBTC tokens on supported blockchains.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand All @@ -15,7 +15,8 @@
"./models": "./dist/models/index.js",
"./bitcoin-functions": "./dist/functions/bitcoin/index.js",
"./attestor-request-functions": "./dist/functions/attestor/index.js",
"./ethereum-functions": "./dist/functions/ethereum/index.js"
"./ethereum-functions": "./dist/functions/ethereum/index.js",
"./ripple-functions": "./dist/functions/ripple/index.js"
},
"scripts": {
"clean": "rm -rf dist && rm -rf node_modules",
Expand Down Expand Up @@ -58,20 +59,21 @@
"typescript-eslint": "^7.7.0"
},
"dependencies": {
"@ledgerhq/hw-app-btc": "^10.2.4",
"@noble/hashes": "^1.4.0",
"@scure/base": "^1.1.6",
"@scure/btc-signer": "^1.3.1",
"@types/ramda": "^0.30.1",
"bip32": "^4.0.0",
"bitcoinjs-lib": "^6.1.5",
"chalk": "^5.3.0",
"decimal.js": "^10.4.3",
"@ledgerhq/hw-app-btc": "10.4.1",
"@noble/hashes": "1.4.0",
"@scure/base": "1.1.8",
"@scure/btc-signer": "1.3.2",
"@types/ramda": "0.30.1",
"bip32": "4.0.0",
"bitcoinjs-lib": "6.1.6",
"chalk": "5.3.0",
"decimal.js": "10.4.3",
"ethers": "5.7.2",
"ledger-bitcoin": "^0.2.3",
"prompts": "^2.4.2",
"ramda": "^0.30.1",
"scure": "^1.6.0",
"tiny-secp256k1": "^2.2.3"
"ledger-bitcoin": "0.2.3",
"prompts": "2.4.2",
"ramda": "0.30.1",
"scure": "1.6.0",
"tiny-secp256k1": "2.2.3",
"xrpl": "4.0.0"
}
}
1 change: 1 addition & 0 deletions src/constants/ripple.constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const TRANSACTION_SUCCESS_CODE = 'tesSUCCESS';
14 changes: 13 additions & 1 deletion src/functions/attestor/attestor-request.functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,19 @@ import {
WithdrawDepositTXAttestorInfo,
} from '../../models/attestor.models.js';
import { AttestorError } from '../../models/errors.js';
import { sendRequest } from '../request/request.functions.js';
import { sendGetRequest, sendRequest } from '../request/request.functions.js';

export async function submitSetupXRPLVaultRequest(
coordinatorURL: string,
userXRPLAddress: string
): Promise<void> {
const requestBody = JSON.stringify({ user_xrpl_address: userXRPLAddress });
return sendRequest(`${coordinatorURL}/app/setup-xrpl-vault`, requestBody);
}

export async function getAttestorExtendedGroupPublicKey(coordinatorURL: string): Promise<string> {
return sendGetRequest(`${coordinatorURL}/tss/get-extended-group-publickey`);
}

export async function submitFundingPSBT(
attestorRootURLs: string[],
Expand Down
2 changes: 2 additions & 0 deletions src/functions/attestor/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export {
submitFundingPSBT,
submitWithdrawDepositPSBT,
getAttestorExtendedGroupPublicKey,
submitSetupXRPLVaultRequest,
} from '../attestor/attestor-request.functions.js';
4 changes: 3 additions & 1 deletion src/functions/bitcoin/bitcoin-request-functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ export async function fetchBitcoinTransaction(
const response = await fetch(bitcoinBlockchainAPITransactionEndpoint);

if (!response.ok)
throw new Error(`Bitcoin Network Transaction Response was not OK: ${response.statusText}`);
throw new Error(
`Bitcoin Network Transaction Response was not OK: ${response.statusText} - btc tx id: ${txID}`
);

return await response.json();
} catch (error) {
Expand Down
17 changes: 16 additions & 1 deletion src/functions/request/request.functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,21 @@ export async function sendRequest(url: string, body: string): Promise<void> {
});

if (!response.ok) {
throw new Error(`Response ${url} was not OK: ${response.statusText}`);
const errorMessage = await response.text();
throw new Error(`Request to ${url} failed: ${response.statusText} - ${errorMessage}`);
}
}

export async function sendGetRequest(url: string): Promise<string> {
const response = await fetch(url, {
method: 'GET',
headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' },
});

if (!response.ok) {
const errorMessage = await response.text();
throw new Error(`Request to ${url} failed: ${response.statusText} - ${errorMessage}`);
}

return response.text();
}
1 change: 1 addition & 0 deletions src/functions/ripple/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './ripple.functions.js';
Loading
Loading