diff options
| author | Adam Soltys <[email protected]> | 2025-10-09 23:34:28 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-10-09 23:34:28 -0700 |
| commit | 7b92e73ba082b290cb3a9caef9d906dd4d3c0b50 (patch) | |
| tree | 947bdd901712eb13627b8707036d8b8615982067 | |
| parent | 7ad5ebcef4bbb1376d476b8bd64012ad75897660 (diff) | |
| download | coinos-ui-ark.tar.gz coinos-ui-ark.zip | |
wipark
| -rw-r--r-- | bun.lock | 17 | ||||
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | src/routes/(app)/ark/+page.svelte | 73 |
3 files changed, 91 insertions, 0 deletions
@@ -4,6 +4,7 @@ "": { "name": "coinos", "dependencies": { + "@arkade-os/sdk": "^0.2.3", "@capacitor/status-bar": "^7.0.3", "@tailwindcss/postcss": "^4.1.13", "@tailwindcss/vite": "^4.1.13", @@ -72,6 +73,8 @@ "packages": { "@alloc/quick-lru": ["@alloc/[email protected]", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + "@arkade-os/sdk": ["@arkade-os/[email protected]", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@noble/secp256k1": "2.2.3", "@scure/base": "1.2.6", "@scure/btc-signer": "1.8.1", "bip68": "1.0.4" } }, "sha512-N2O39qu410wtGFzvddKBYuvXf5DGHzWYO/MdHbI4j502bkd2pFG24S3D8eiFpTJTvx2ji/jxMHL9MZIWkLYdWA=="], + "@babel/code-frame": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/helper-validator-identifier": ["@babel/[email protected]", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], @@ -208,6 +211,8 @@ "@noble/hashes": ["@noble/[email protected]", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@noble/secp256k1": ["@noble/[email protected]", "", {}, "sha512-l7r5oEQym9Us7EAigzg30/PQAvynhMt2uoYtT3t26eGDVm9Yii5mZ5jWSWmZ/oSIR2Et0xfc6DXrG0bZ787V3w=="], + "@nodelib/fs.scandir": ["@nodelib/[email protected]", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], "@nodelib/fs.stat": ["@nodelib/[email protected]", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], @@ -438,6 +443,8 @@ "bip21": ["[email protected]", "", { "dependencies": { "query-string": "^9.0.0" } }, "sha512-uJ3opZiOUs9x+Q+D6ezcIQje3ymIXyFFEbx1C8wRVSERxQ0rXTG4FJuj8neYUDNJhwsvTy9f2dYMaUMq+3/fIw=="], + "bip68": ["[email protected]", "", {}, "sha512-O1htyufFTYy3EO0JkHg2CLykdXEtV2ssqw47Gq9A0WByp662xpJnMEB9m43LZjsSDjIAOozWRExlFQk2hlV1XQ=="], + "bitcoin-address-validation": ["[email protected]", "", { "dependencies": { "base58-js": "^3.0.2", "bech32": "^2.0.0", "sha256-uint8array": "^0.10.3" } }, "sha512-R1X1c9EdgjgjTpjshjk5e16TbgF7HYasxBcu7l5ScWMxVs53845vMUg5PvnQ/R/3h8Grly6Y52DgH6/77gazLQ=="], "bl": ["[email protected]", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], @@ -1244,6 +1251,12 @@ "zxing-wasm": ["[email protected]", "", { "dependencies": { "@types/emscripten": "^1.40.1", "type-fest": "^4.41.0" } }, "sha512-RyHxVaAHsLSDzmwcAG05IF8sVOE5Ta2JT1dRDh0mzVZOIiDXZstsjkqvKHasN1n4lvFSbX7ngkHDufnt/XI07Q=="], + "@arkade-os/sdk/@noble/curves": ["@noble/[email protected]", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], + + "@arkade-os/sdk/@scure/base": ["@scure/[email protected]", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + + "@arkade-os/sdk/@scure/btc-signer": ["@scure/[email protected]", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5", "micro-packed": "~0.7.3" } }, "sha512-8nX9T++dFyKpvqksNHfSi9CgRsGnHAQtCdIQ1y1GmbCGLpV97v4MUyemUUT6uDumKL3oo3m4niyY6A32nmdLuQ=="], + "@capacitor/assets/@capacitor/cli": ["@capacitor/[email protected]", "", { "dependencies": { "@ionic/cli-framework-output": "^2.2.5", "@ionic/utils-fs": "^3.1.6", "@ionic/utils-subprocess": "^2.1.11", "@ionic/utils-terminal": "^2.3.3", "commander": "^9.3.0", "debug": "^4.3.4", "env-paths": "^2.2.0", "kleur": "^4.1.4", "native-run": "^2.0.0", "open": "^8.4.0", "plist": "^3.0.5", "prompts": "^2.4.2", "rimraf": "^4.4.1", "semver": "^7.3.7", "tar": "^6.1.11", "tslib": "^2.4.0", "xml2js": "^0.5.0" }, "bin": { "cap": "bin/capacitor", "capacitor": "bin/capacitor" } }, "sha512-qN8LDlREMhrYhOvVXahoJVNkP8LP55/YPRJrzTAFrMqlNJC18L3CzgWYIblFPnuwfbH/RxbfoZT/ydkwgVpMrw=="], "@capacitor/cli/commander": ["[email protected]", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], @@ -1436,6 +1449,10 @@ "xml2js/xmlbuilder": ["[email protected]", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + "@arkade-os/sdk/@scure/btc-signer/@noble/curves": ["@noble/[email protected]", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="], + + "@arkade-os/sdk/@scure/btc-signer/micro-packed": ["[email protected]", "", { "dependencies": { "@scure/base": "~1.2.5" } }, "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg=="], + "@capacitor/assets/@capacitor/cli/@ionic/utils-subprocess": ["@ionic/[email protected]", "", { "dependencies": { "@ionic/utils-array": "2.1.6", "@ionic/utils-fs": "3.1.7", "@ionic/utils-process": "2.1.11", "@ionic/utils-stream": "3.1.6", "@ionic/utils-terminal": "2.3.4", "cross-spawn": "^7.0.3", "debug": "^4.0.0", "tslib": "^2.0.1" } }, "sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg=="], "@capacitor/assets/@capacitor/cli/commander": ["[email protected]", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], diff --git a/package.json b/package.json index a0c110cb..9898e250 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ }, "type": "module", "dependencies": { + "@arkade-os/sdk": "^0.2.3", "@capacitor/status-bar": "^7.0.3", "@tailwindcss/postcss": "^4.1.13", "@tailwindcss/vite": "^4.1.13", diff --git a/src/routes/(app)/ark/+page.svelte b/src/routes/(app)/ark/+page.svelte new file mode 100644 index 00000000..c9bd69e0 --- /dev/null +++ b/src/routes/(app)/ark/+page.svelte @@ -0,0 +1,73 @@ +<script> + import { bytesToHex, randomBytes } from "@noble/hashes/utils"; + import { Ramps, SingleKey, Wallet } from "@arkade-os/sdk"; + import { onMount } from "svelte"; + + let boardingAddress = $state(); + let wallet; + + onMount(async () => { + // const secret = bytesToHex(randomBytes(32)); + const secret = + "35fe135be231e9cac13835853ab07c4a11b8b745c575755df53a3bf5dd146ca1"; + const identity = SingleKey.fromHex(secret); + + // create a wallet instance + wallet = await Wallet.create({ + identity, + arkServerUrl: "https://mutinynet.arkade.sh", + }); + + // You can receive bitcoin offchain instantly! No inbound liquidity! + const address = await wallet.getAddress(); + console.log("Ark Address:", address); + + const balance = await wallet.getBalance(); + // total is spendable in settlement + console.log("Total :", balance.total); + // available is spendable in offchain transactions + console.log("Available :", balance.available); + + const vtxos = await wallet.getVtxos(); + console.log("Number of VTXOs:", vtxos.length); + + // Log important information about each VTXO + vtxos.forEach((vtxo, index) => { + console.log(`VTXO #${index + 1}:`); + console.log(` ID: ${vtxo.txid}:${vtxo.vout}`); + console.log(` Amount: ${vtxo.value} sats`); + console.log(` Batch ID: ${vtxo.virtualStatus.batchTxID}`); + console.log(` Status: ${vtxo.virtualStatus.state}`); // "preconfirmed" | "settled" | "swept" | "spent"; + }); + + // Get boarding UTXOs + const boardingUtxos = await wallet.getBoardingUtxos(); + console.log("Number of boarding UTXOs:", boardingUtxos.length); + + // Log important information about each boarding UTXO + boardingUtxos.forEach((utxo, index) => { + console.log(`Boarding UTXO #${index + 1}:`); + console.log(` TXID: ${utxo.txid}`); + console.log(` Output Index: ${utxo.vout}`); + console.log(` Amount: ${utxo.value} sats`); + console.log( + ` Status: ${utxo.status.confirmed ? "Confirmed" : "Unconfirmed"}`, + ); + }); + + // Get a boarding address + boardingAddress = await wallet.getBoardingAddress(); + console.log("Boarding Address:", boardingAddress); + }); + + const board = async () => { + console.log("BOARDING"); + const commitmentTxid = await new Ramps(wallet).onboard(); + + console.log("Commitment transaction ID:", commitmentTxid); + }; +</script> + +{boardingAddress} + +<button onclick={board}>Board</button> |
