From cc12c87b4ac0f11365bfaf55aa467173262187e9 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Thu, 28 Mar 2024 04:07:27 +0200 Subject: [PATCH 01/14] use new wallet provider --- package-lock.json | 142 ++++++++++++++++------- package.json | 2 +- src/App.tsx | 82 ++++++------- src/components/sendBitcoin.tsx | 4 +- src/components/signMessage.tsx | 5 +- src/components/signTransaction/index.tsx | 4 +- src/utils.ts | 25 ++-- 7 files changed, 158 insertions(+), 106 deletions(-) diff --git a/package-lock.json b/package-lock.json index d974b9d..e41ab89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0", + "sats-connect": "2.1.0-a2cd352", "typescript": "^4.9.5" } }, @@ -3338,6 +3338,25 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, + "node_modules/@sats-connect/core": { + "version": "0.0.2-7d8cb11", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.2-7d8cb11.tgz", + "integrity": "sha512-v0fiGZ89Yxg8dQjKFx558yUHHxbkxBWvtF0QtiX37roRtXasp9WphV61Q39+8FriUJQpTbgobzmuePpMl30FKA==", + "dependencies": { + "bitcoin-address-validation": "2.2.3", + "buffer": "6.0.3", + "jsontokens": "4.0.1", + "lodash.omit": "4.5.0" + } + }, + "node_modules/@sats-connect/ui": { + "version": "0.0.2-fa73f78", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.2-fa73f78.tgz", + "integrity": "sha512-vIQZFldQjVVe393XpLZlYZa6P9YbQZ2F1XPqebzDGjzShIqiAB4YP6HBmUws4qq0Cw2x9gOk5lyRjiYfqUmZkQ==", + "dependencies": { + "@sats-connect/core": "pr-1" + } + }, "node_modules/@scure/base": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", @@ -5130,6 +5149,14 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" }, + "node_modules/base58-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/base58-js/-/base58-js-1.0.5.tgz", + "integrity": "sha512-LkkAPP8Zu+c0SVNRTRVDyMfKVORThX+rCViget00xdgLRrKkClCTz1T7cIrpr69ShwV5XJuuoZvMvJ43yURwkA==", + "engines": { + "node": ">= 8" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5154,6 +5181,11 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, "node_modules/bfj": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", @@ -5185,6 +5217,16 @@ "node": ">=8" } }, + "node_modules/bitcoin-address-validation": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/bitcoin-address-validation/-/bitcoin-address-validation-2.2.3.tgz", + "integrity": "sha512-1uGCGl26Ye8JG5qcExtFLQfuib6qEZWNDo1ZlLlwp/z7ygUFby3IxolgEfgMGaC+LG9csbVASLcH8fRLv7DIOg==", + "dependencies": { + "base58-js": "^1.0.0", + "bech32": "^2.0.0", + "sha256-uint8array": "^0.10.3" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5325,6 +5367,29 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -8699,6 +8764,25 @@ "node": ">=4" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -8805,21 +8889,6 @@ "node": ">= 10" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -11646,6 +11715,11 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -13879,14 +13953,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14826,13 +14892,12 @@ } }, "node_modules/sats-connect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.1.0.tgz", - "integrity": "sha512-HCPG3L0GModbC2g4uk+ezpSUr8kfCw1y5kv6LC9N8ZNNSRFTTK/CX9eSStV7bBGk5po+euaLsRy4YlLihRcnnw==", + "version": "2.1.0-a2cd352", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.1.0-a2cd352.tgz", + "integrity": "sha512-M5hLtO/MsKGeOupT3zNmJzDdwhJrt92mum4k6+wDpJQXYNZbaVe8tt1g+m11RX3eDR7+l4Kiq47cGLTALwBI0w==", "dependencies": { - "jsontokens": "^4.0.1", - "process": "^0.11.10", - "util": "^0.12.4" + "@sats-connect/core": "0.0.2-7d8cb11", + "@sats-connect/ui": "0.0.2-fa73f78" } }, "node_modules/sax": { @@ -15073,6 +15138,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/sha256-uint8array": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/sha256-uint8array/-/sha256-uint8array-0.10.7.tgz", + "integrity": "sha512-1Q6JQU4tX9NqsDGodej6pkrUVQVNapLZnvkwIhddH/JqzBZF1fSaxSWNY6sziXBE8aEa2twtGkXUrwzGeZCMpQ==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -16349,18 +16419,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 970d565..828e4bf 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0", + "sats-connect": "2.1.0-a2cd352", "typescript": "^4.9.5" }, "scripts": { diff --git a/src/App.tsx b/src/App.tsx index 1a14ff6..273e69d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import type { Capability } from "sats-connect"; -import { +import WalletProvider, { AddressPurpose, BitcoinNetworkType, getAddress, @@ -92,10 +92,10 @@ function App() { !!paymentAddress && !!paymentPublicKey && !!ordinalsAddress && - !!ordinalsPublicKey && - !!stacksAddress; + !!ordinalsPublicKey; const onWalletDisconnect = () => { + WalletProvider.disconnect(); setPaymentAddress(undefined); setPaymentPublicKey(undefined); setOrdinalsAddress(undefined); @@ -105,7 +105,7 @@ function App() { const handleGetInfo = async () => { try { - const response = await request("getInfo", null); + const response = await WalletProvider.request("getInfo", null); if (response.status === "success") { alert("Success. Check console for response"); @@ -165,12 +165,15 @@ function App() { }; const onConnectAccountClick = async () => { - const response = await request('getAccounts', { - purposes: [AddressPurpose.Ordinals, AddressPurpose.Payment, AddressPurpose.Stacks], - message: 'SATS Connect Demo', + const response = await WalletProvider.request("getAccounts", { + purposes: [ + AddressPurpose.Ordinals, + AddressPurpose.Payment, + AddressPurpose.Stacks, + ], + message: "SATS Connect Demo", }); - console.log("getAccounts ~ response:", response) - if (response.status === 'success') { + if (response.status === "success") { const paymentAddressItem = response.result.find( (address) => address.purpose === AddressPurpose.Payment ); @@ -194,7 +197,7 @@ function App() { console.error(response.error); } } - } + }; const capabilityMessage = capabilityState === "loading" @@ -221,21 +224,6 @@ function App() {

Sats Connect Test App - {network}

Please connect your wallet to continue
-

Available Wallets

-
- {providers - ? providers.map((provider) => ( - - )) - : null} -
-
@@ -310,32 +301,35 @@ function App() {
+ {stacksAddress && ( + <> +

Stacks

+
+

Stacks Address: {stacksAddress}

+

Stacks PubKey: {stacksPublicKey}

+
-

Stacks

-
-

Stacks Address: {stacksAddress}

-

Stacks PubKey: {stacksPublicKey}

-
+ - + - + - + - + - + - + - - - -
+ +
+ + )} ); } diff --git a/src/components/sendBitcoin.tsx b/src/components/sendBitcoin.tsx index 4792042..8457e55 100644 --- a/src/components/sendBitcoin.tsx +++ b/src/components/sendBitcoin.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import type { Capability } from "sats-connect"; -import { +import WalletProvider, { BitcoinNetworkType, RpcErrorCode, request, @@ -41,7 +41,7 @@ const SendBitcoin = ({ network, address, capabilities }: Props) => { const onSendBtcRpc = async () => { try { - const response = await request("sendTransfer", { + const response = await WalletProvider.request("sendTransfer", { recipients: [ { address: recipient, diff --git a/src/components/signMessage.tsx b/src/components/signMessage.tsx index 67b9eb2..083a1f4 100644 --- a/src/components/signMessage.tsx +++ b/src/components/signMessage.tsx @@ -1,9 +1,8 @@ import { useState } from "react"; import type { Capability } from "sats-connect"; -import { +import WalletProvider, { BitcoinNetworkType, RpcErrorCode, - request, signMessage, } from "sats-connect"; @@ -36,7 +35,7 @@ const SignMessage = ({ network, address, capabilities }: Props) => { const onSignMessageRpcClick = async () => { try { - const response = await request("signMessage", { + const response = await WalletProvider.request("signMessage", { address, message, }); diff --git a/src/components/signTransaction/index.tsx b/src/components/signTransaction/index.tsx index 6a0ca03..57d9a40 100644 --- a/src/components/signTransaction/index.tsx +++ b/src/components/signTransaction/index.tsx @@ -1,5 +1,5 @@ import type { Capability } from "sats-connect"; -import { +import WalletProvider, { BitcoinNetworkType, RpcErrorCode, request, @@ -94,7 +94,7 @@ const SignTransaction = ({ } try { - const response = await request("signPsbt", { + const response = await WalletProvider.request("signPsbt", { psbt: psbtBase64, allowedSignHash: btc.SigHash.SINGLE | btc.SigHash.DEFAULT_ANYONECANPAY, signInputs: { diff --git a/src/utils.ts b/src/utils.ts index dcdc0bd..c9449d5 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -45,7 +45,7 @@ export const createPSBT = async ( const ordinalOutput = ordinalsUnspentOutputs[0]; const paymentPublicKey = hex.decode(paymentPublicKeyString); - const ordinalPublicKey = hex.decode(ordinalsPublicKeyString); + const ordinalPublicKey = hex.decode(ordinalsPublicKeyString.slice(2)); const tx = new btc.Transaction({ allowUnknownOutputs: true, @@ -67,17 +67,17 @@ export const createPSBT = async ( BigInt(paymentOutput.value) + BigInt(ordinalOutput.value) - total - fee; // payment input - tx.addInput({ - txid: paymentOutput.txid, - index: paymentOutput.vout, - witnessUtxo: { - script: p2sh.script ? p2sh.script : Buffer.alloc(0), - amount: BigInt(paymentOutput.value), - }, - redeemScript: p2sh.redeemScript ? p2sh.redeemScript : Buffer.alloc(0), - witnessScript: p2sh.witnessScript, - sighashType: btc.SignatureHash.SINGLE | btc.SignatureHash.ANYONECANPAY, - }); + // tx.addInput({ + // txid: paymentOutput.txid, + // index: paymentOutput.vout, + // witnessUtxo: { + // script: p2sh.script ? p2sh.script : Buffer.alloc(0), + // amount: BigInt(paymentOutput.value), + // }, + // redeemScript: p2sh.redeemScript ? p2sh.redeemScript : Buffer.alloc(0), + // witnessScript: p2sh.witnessScript, + // sighashType: btc.SignatureHash.SINGLE | btc.SignatureHash.ANYONECANPAY, + // }); // ordinals input tx.addInput({ @@ -106,5 +106,6 @@ export const createPSBT = async ( const psbt = tx.toPSBT(0); const psbtB64 = base64.encode(psbt); + console.log(psbtB64); return psbtB64; }; From 327db3cfc5ae2cf12b950656b8ee687a33aa4b64 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Wed, 3 Apr 2024 19:47:23 +0200 Subject: [PATCH 02/14] update sats-connect version --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- src/utils.ts | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index e41ab89..7636b20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0-a2cd352", + "sats-connect": "2.1.0-440ffac", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.2-7d8cb11", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.2-7d8cb11.tgz", - "integrity": "sha512-v0fiGZ89Yxg8dQjKFx558yUHHxbkxBWvtF0QtiX37roRtXasp9WphV61Q39+8FriUJQpTbgobzmuePpMl30FKA==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.3.tgz", + "integrity": "sha512-XRSQFXaWLWLPXUWsbwhtXOVPlafz4lpW80rhHfWeMQJSxRnmX0Kgw6BoO/KMa5Q9Ic544oSU1OWasbUAJe/dCw==", "dependencies": { "bitcoin-address-validation": "2.2.3", "buffer": "6.0.3", @@ -3350,9 +3350,9 @@ } }, "node_modules/@sats-connect/ui": { - "version": "0.0.2-fa73f78", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.2-fa73f78.tgz", - "integrity": "sha512-vIQZFldQjVVe393XpLZlYZa6P9YbQZ2F1XPqebzDGjzShIqiAB4YP6HBmUws4qq0Cw2x9gOk5lyRjiYfqUmZkQ==", + "version": "0.0.2-42ab886", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.2-42ab886.tgz", + "integrity": "sha512-c5qC29soJbnECU9UGqOgCW9VrHZRb3LzPmU9py9cbvwaHULlaPvOxanUfiwADkxFvJy1HDz3GT/5vXmj+ETXAw==", "dependencies": { "@sats-connect/core": "pr-1" } @@ -14892,12 +14892,12 @@ } }, "node_modules/sats-connect": { - "version": "2.1.0-a2cd352", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.1.0-a2cd352.tgz", - "integrity": "sha512-M5hLtO/MsKGeOupT3zNmJzDdwhJrt92mum4k6+wDpJQXYNZbaVe8tt1g+m11RX3eDR7+l4Kiq47cGLTALwBI0w==", + "version": "2.1.0-440ffac", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.1.0-440ffac.tgz", + "integrity": "sha512-QG/9JIqcVYafuk8qs/wWxDejO05tEcAMDWKvqG7EyC8lIb0WL5T1zKWa/IdSYxAfBrXCdL49/JKqBk3RJPf55w==", "dependencies": { - "@sats-connect/core": "0.0.2-7d8cb11", - "@sats-connect/ui": "0.0.2-fa73f78" + "@sats-connect/core": "0.0.3", + "@sats-connect/ui": "0.0.2-42ab886" } }, "node_modules/sax": { diff --git a/package.json b/package.json index 828e4bf..1fd5e94 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0-a2cd352", + "sats-connect": "2.1.0-440ffac", "typescript": "^4.9.5" }, "scripts": { diff --git a/src/utils.ts b/src/utils.ts index c9449d5..a83e00a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -45,15 +45,15 @@ export const createPSBT = async ( const ordinalOutput = ordinalsUnspentOutputs[0]; const paymentPublicKey = hex.decode(paymentPublicKeyString); - const ordinalPublicKey = hex.decode(ordinalsPublicKeyString.slice(2)); + const ordinalPublicKey = hex.decode(ordinalsPublicKeyString); const tx = new btc.Transaction({ allowUnknownOutputs: true, }); // create segwit spend - const p2wpkh = btc.p2wpkh(paymentPublicKey, network); - const p2sh = btc.p2sh(p2wpkh, network); + // const p2wpkh = btc.p2wpkh(paymentPublicKey, network); + // const p2sh = btc.p2sh(p2wpkh, network); // create taproot spend const p2tr = btc.p2tr(ordinalPublicKey, undefined, network); From 25a2745dc8896d517ae60f14853ae7cd4c070b02 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 9 Apr 2024 11:38:54 +0200 Subject: [PATCH 03/14] update sats-connect version --- package-lock.json | 61 ++++++++++++++++++++++++++++++++++------------- package.json | 2 +- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7636b20..c6c13f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0-440ffac", + "sats-connect": "^2.2.0", "typescript": "^4.9.5" } }, @@ -3339,10 +3339,11 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.3.tgz", - "integrity": "sha512-XRSQFXaWLWLPXUWsbwhtXOVPlafz4lpW80rhHfWeMQJSxRnmX0Kgw6BoO/KMa5Q9Ic544oSU1OWasbUAJe/dCw==", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4.tgz", + "integrity": "sha512-v+u49OXku8S5Mh9wzQ6pSdNU4MppMjjUyXy/ZBE6KxqgP7Nnnz3N2VmaBSIGQx/EEy4O3L8SnJZyAwQ7QfOf7g==", "dependencies": { + "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", "buffer": "6.0.3", "jsontokens": "4.0.1", @@ -3350,11 +3351,11 @@ } }, "node_modules/@sats-connect/ui": { - "version": "0.0.2-42ab886", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.2-42ab886.tgz", - "integrity": "sha512-c5qC29soJbnECU9UGqOgCW9VrHZRb3LzPmU9py9cbvwaHULlaPvOxanUfiwADkxFvJy1HDz3GT/5vXmj+ETXAw==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.3.tgz", + "integrity": "sha512-IzK63qgwyrha/ngTHfwj4vwr518eYs45mrXQYamvridGX7VpbLksZlAl4McX/blq+t9DnnAK2apBk5ut441ovg==", "dependencies": { - "@sats-connect/core": "pr-1" + "@sats-connect/core": "0.0.4" } }, "node_modules/@scure/base": { @@ -4851,6 +4852,29 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -7907,9 +7931,9 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -14013,6 +14037,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14892,12 +14921,12 @@ } }, "node_modules/sats-connect": { - "version": "2.1.0-440ffac", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.1.0-440ffac.tgz", - "integrity": "sha512-QG/9JIqcVYafuk8qs/wWxDejO05tEcAMDWKvqG7EyC8lIb0WL5T1zKWa/IdSYxAfBrXCdL49/JKqBk3RJPf55w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0.tgz", + "integrity": "sha512-r4i69aD7284KkD44IWMhMyLCuizWUfujZVkxhoFX1vLmkzLgGO1jrZBrqUlQv068yDeY+lHJgv7Qm36tt0wybQ==", "dependencies": { - "@sats-connect/core": "0.0.3", - "@sats-connect/ui": "0.0.2-42ab886" + "@sats-connect/core": "0.0.4", + "@sats-connect/ui": "0.0.3" } }, "node_modules/sax": { diff --git a/package.json b/package.json index 1fd5e94..2133898 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.1.0-440ffac", + "sats-connect": "^2.2.0", "typescript": "^4.9.5" }, "scripts": { From ef98edcfe996f662e76de375c12c8eb5387393a6 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 9 Apr 2024 11:40:54 +0200 Subject: [PATCH 04/14] update import name --- src/App.tsx | 9 ++++----- src/components/sendBitcoin.tsx | 4 ++-- src/components/signMessage.tsx | 4 ++-- src/components/signTransaction/index.tsx | 4 ++-- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 273e69d..4b13154 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,11 +1,10 @@ import type { Capability } from "sats-connect"; -import WalletProvider, { +import Wallet, { AddressPurpose, BitcoinNetworkType, getAddress, getCapabilities, getProviders, - request, } from "sats-connect"; import CreateFileInscription from "./components/createFileInscription"; @@ -95,7 +94,7 @@ function App() { !!ordinalsPublicKey; const onWalletDisconnect = () => { - WalletProvider.disconnect(); + Wallet.disconnect(); setPaymentAddress(undefined); setPaymentPublicKey(undefined); setOrdinalsAddress(undefined); @@ -105,7 +104,7 @@ function App() { const handleGetInfo = async () => { try { - const response = await WalletProvider.request("getInfo", null); + const response = await Wallet.request("getInfo", null); if (response.status === "success") { alert("Success. Check console for response"); @@ -165,7 +164,7 @@ function App() { }; const onConnectAccountClick = async () => { - const response = await WalletProvider.request("getAccounts", { + const response = await Wallet.request("getAccounts", { purposes: [ AddressPurpose.Ordinals, AddressPurpose.Payment, diff --git a/src/components/sendBitcoin.tsx b/src/components/sendBitcoin.tsx index 8457e55..bed3b5a 100644 --- a/src/components/sendBitcoin.tsx +++ b/src/components/sendBitcoin.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import type { Capability } from "sats-connect"; -import WalletProvider, { +import Wallet, { BitcoinNetworkType, RpcErrorCode, request, @@ -41,7 +41,7 @@ const SendBitcoin = ({ network, address, capabilities }: Props) => { const onSendBtcRpc = async () => { try { - const response = await WalletProvider.request("sendTransfer", { + const response = await Wallet.request("sendTransfer", { recipients: [ { address: recipient, diff --git a/src/components/signMessage.tsx b/src/components/signMessage.tsx index 083a1f4..9f1a95a 100644 --- a/src/components/signMessage.tsx +++ b/src/components/signMessage.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import type { Capability } from "sats-connect"; -import WalletProvider, { +import Wallet, { BitcoinNetworkType, RpcErrorCode, signMessage, @@ -35,7 +35,7 @@ const SignMessage = ({ network, address, capabilities }: Props) => { const onSignMessageRpcClick = async () => { try { - const response = await WalletProvider.request("signMessage", { + const response = await Wallet.request("signMessage", { address, message, }); diff --git a/src/components/signTransaction/index.tsx b/src/components/signTransaction/index.tsx index 57d9a40..5318553 100644 --- a/src/components/signTransaction/index.tsx +++ b/src/components/signTransaction/index.tsx @@ -1,5 +1,5 @@ import type { Capability } from "sats-connect"; -import WalletProvider, { +import Wallet, { BitcoinNetworkType, RpcErrorCode, request, @@ -94,7 +94,7 @@ const SignTransaction = ({ } try { - const response = await WalletProvider.request("signPsbt", { + const response = await Wallet.request("signPsbt", { psbt: psbtBase64, allowedSignHash: btc.SigHash.SINGLE | btc.SigHash.DEFAULT_ANYONECANPAY, signInputs: { From 4a27ff519978e6ae64a885e1d28436815d29a7e0 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Mon, 15 Apr 2024 14:30:53 +0200 Subject: [PATCH 05/14] update sats-connect version --- package-lock.json | 91 +++++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 77 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6c13f6..6c89a42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "^2.2.0", + "sats-connect": "2.2.0-6d1c867", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4.tgz", - "integrity": "sha512-v+u49OXku8S5Mh9wzQ6pSdNU4MppMjjUyXy/ZBE6KxqgP7Nnnz3N2VmaBSIGQx/EEy4O3L8SnJZyAwQ7QfOf7g==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.5.tgz", + "integrity": "sha512-eyAoxjs3vuJP037/XKuhjIDUrOlCHIdcvw2D1DFpzhTRzyiXptiE2A0n46loDIBCUhOuXl4vsn8cc+yC2jzGCg==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -3351,12 +3351,9 @@ } }, "node_modules/@sats-connect/ui": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.3.tgz", - "integrity": "sha512-IzK63qgwyrha/ngTHfwj4vwr518eYs45mrXQYamvridGX7VpbLksZlAl4McX/blq+t9DnnAK2apBk5ut441ovg==", - "dependencies": { - "@sats-connect/core": "0.0.4" - } + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.4.tgz", + "integrity": "sha512-gmfsqPn44vsJubQC7KuK7zGnBgpLvDzadMlyCwsaBsASV7u8AxNdNas0xVEy6eIBa0Eim7AGcGNTulBFI8YRnA==" }, "node_modules/@scure/base": { "version": "1.1.5", @@ -5327,6 +5324,11 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -14921,12 +14923,71 @@ } }, "node_modules/sats-connect": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0.tgz", - "integrity": "sha512-r4i69aD7284KkD44IWMhMyLCuizWUfujZVkxhoFX1vLmkzLgGO1jrZBrqUlQv068yDeY+lHJgv7Qm36tt0wybQ==", + "version": "2.2.0-6d1c867", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-6d1c867.tgz", + "integrity": "sha512-apAkwkkZozkOKwMG4EloOu9JwcMqo2MRZcxKfOEjVxpfMxUTqWdkcrkIchlGqbJpXg8Px+34m4OkE1r+sb1Ecg==", + "dependencies": { + "@sats-connect/core": "0.0.5", + "@sats-connect/make-default-provider-config": "0.0.1", + "@sats-connect/ui": "0.0.4" + } + }, + "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.1.tgz", + "integrity": "sha512-Hb1ZbpJ3DnRM7vRUvNepUs6/SVAeH4CdeDsTllXrzOG9jAG4HI+jG7WGDLavFHc6vQCSfTBPH4c/L7S74hMZMg==", + "dependencies": { + "@sats-connect/core": "0.0.4-caef0cb", + "@sats-connect/ui": "0.0.3-07f4874", + "bowser": "2.11.0" + }, + "peerDependencies": { + "typescript": "5.4.4" + } + }, + "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/core": { + "version": "0.0.4-caef0cb", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4-caef0cb.tgz", + "integrity": "sha512-M/yxUgnYF6JVhfLxMj0pLYZFiJfwkd7C3GYI43aVbaIVhqoSBianEEj2duIiSDAQLC03Scqbt2LXUu42dPs1fA==", + "dependencies": { + "axios": "1.6.8", + "bitcoin-address-validation": "2.2.3", + "buffer": "6.0.3", + "jsontokens": "4.0.1", + "lodash.omit": "4.5.0" + } + }, + "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui": { + "version": "0.0.3-07f4874", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.3-07f4874.tgz", + "integrity": "sha512-H1rj4qOGr72M2pSFtgtFk9TjFHRhTt4vm2ct0iBJaLF4RLIa9EvPkFTMwBYhGBYNcuBpN36eYUBN7hRydfCopg==", + "dependencies": { + "@sats-connect/core": "0.0.4" + } + }, + "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui/node_modules/@sats-connect/core": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4.tgz", + "integrity": "sha512-v+u49OXku8S5Mh9wzQ6pSdNU4MppMjjUyXy/ZBE6KxqgP7Nnnz3N2VmaBSIGQx/EEy4O3L8SnJZyAwQ7QfOf7g==", "dependencies": { - "@sats-connect/core": "0.0.4", - "@sats-connect/ui": "0.0.3" + "axios": "1.6.8", + "bitcoin-address-validation": "2.2.3", + "buffer": "6.0.3", + "jsontokens": "4.0.1", + "lodash.omit": "4.5.0" + } + }, + "node_modules/sats-connect/node_modules/typescript": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", + "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, "node_modules/sax": { diff --git a/package.json b/package.json index 2133898..4bd1a9a 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "^2.2.0", + "sats-connect": "2.2.0-6d1c867", "typescript": "^4.9.5" }, "scripts": { From 22bd1f6cf58a6a931a614b8d808ac6c2b2b44f89 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Mon, 15 Apr 2024 16:51:58 +0200 Subject: [PATCH 06/14] update sats-connect version --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c89a42..571e2d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-6d1c867", + "sats-connect": "2.2.0-898483a", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.5.tgz", - "integrity": "sha512-eyAoxjs3vuJP037/XKuhjIDUrOlCHIdcvw2D1DFpzhTRzyiXptiE2A0n46loDIBCUhOuXl4vsn8cc+yC2jzGCg==", + "version": "0.0.6-47b5ced", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.6-47b5ced.tgz", + "integrity": "sha512-JpZBJsRDmBzJgQZ4AwSgcgcaXm35LTNdnjdLUo5mag62M2UCx9NsRbViaVXOvrRp+vV7xKINtRm4RrFXnOaq6w==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -14923,11 +14923,11 @@ } }, "node_modules/sats-connect": { - "version": "2.2.0-6d1c867", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-6d1c867.tgz", - "integrity": "sha512-apAkwkkZozkOKwMG4EloOu9JwcMqo2MRZcxKfOEjVxpfMxUTqWdkcrkIchlGqbJpXg8Px+34m4OkE1r+sb1Ecg==", + "version": "2.2.0-898483a", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-898483a.tgz", + "integrity": "sha512-kBD+Ah0m19EeWjbgIFasC2gqlqRie0bkyB2DTBsmRAzODl0xL9CHB5lBN+qisUHSLf0aoEUpFRuGoyRj2ULIoA==", "dependencies": { - "@sats-connect/core": "0.0.5", + "@sats-connect/core": "0.0.6-47b5ced", "@sats-connect/make-default-provider-config": "0.0.1", "@sats-connect/ui": "0.0.4" } diff --git a/package.json b/package.json index 4bd1a9a..468d163 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-6d1c867", + "sats-connect": "2.2.0-898483a", "typescript": "^4.9.5" }, "scripts": { From 5f222b54e40ba1de83ed193cbafd57f27f9fa353 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 16 Apr 2024 07:35:10 +0200 Subject: [PATCH 07/14] disable capabilityMessage --- src/App.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 4b13154..6b25065 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -209,14 +209,14 @@ function App() { ? "Something went wrong with getting capabilities" : undefined; - if (capabilityMessage) { - return ( -
-

Sats Connect Test App - {network}

-
{capabilityMessage}
-
- ); - } + // if (capabilityMessage) { + // return ( + //
+ //

Sats Connect Test App - {network}

+ //
{capabilityMessage}
+ //
+ // ); + // } if (!isReady) { return ( From b86b4a900d4b95a7c4652ab4ce5c5d2429b3d2b1 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 16 Apr 2024 08:16:23 +0200 Subject: [PATCH 08/14] update sats-connect --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 571e2d9..2b40c6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-898483a", + "sats-connect": "2.2.0-a57e941", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.6-47b5ced", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.6-47b5ced.tgz", - "integrity": "sha512-JpZBJsRDmBzJgQZ4AwSgcgcaXm35LTNdnjdLUo5mag62M2UCx9NsRbViaVXOvrRp+vV7xKINtRm4RrFXnOaq6w==", + "version": "0.0.6-92acf81", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.6-92acf81.tgz", + "integrity": "sha512-GeM5MLM1RaeisNfNyUHdJipjzKLTYQ1PMicPwhKAzpHEswX+j+RaDVhFhGgpvi9RNYnbjRzShrsMb/1GCcTr0Q==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -14923,11 +14923,11 @@ } }, "node_modules/sats-connect": { - "version": "2.2.0-898483a", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-898483a.tgz", - "integrity": "sha512-kBD+Ah0m19EeWjbgIFasC2gqlqRie0bkyB2DTBsmRAzODl0xL9CHB5lBN+qisUHSLf0aoEUpFRuGoyRj2ULIoA==", + "version": "2.2.0-a57e941", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-a57e941.tgz", + "integrity": "sha512-X17zU7LpY4I9bxbblOKN9HiQhFJuHflW+R2RR5zrB5BEpoCvANDFvG6uuF/gqwr94DuSVD9EuAsVFZ68MICpMg==", "dependencies": { - "@sats-connect/core": "0.0.6-47b5ced", + "@sats-connect/core": "0.0.6-92acf81", "@sats-connect/make-default-provider-config": "0.0.1", "@sats-connect/ui": "0.0.4" } diff --git a/package.json b/package.json index 468d163..0f3e294 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-898483a", + "sats-connect": "2.2.0-a57e941", "typescript": "^4.9.5" }, "scripts": { From d3440468bdbfc611f040988aef7d129ed5d1fc68 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 16 Apr 2024 08:46:46 +0200 Subject: [PATCH 09/14] fix crash --- src/App.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/App.tsx b/src/App.tsx index 6b25065..c1e14ed 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -88,6 +88,7 @@ function App() { }, [network]); const isReady = + !!capabilities && !!paymentAddress && !!paymentPublicKey && !!ordinalsAddress && From e33110703e6ff900b64eeb55a3354e86f7d9bfcc Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Mon, 6 May 2024 22:16:02 +0300 Subject: [PATCH 10/14] revert signPsbt changes --- package-lock.json | 62 ++++++++---------------- package.json | 2 +- src/components/signTransaction/index.tsx | 4 +- src/utils.ts | 26 +++++----- 4 files changed, 37 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b40c6f..482825e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-a57e941", + "sats-connect": "2.3.0", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.6-92acf81", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.6-92acf81.tgz", - "integrity": "sha512-GeM5MLM1RaeisNfNyUHdJipjzKLTYQ1PMicPwhKAzpHEswX+j+RaDVhFhGgpvi9RNYnbjRzShrsMb/1GCcTr0Q==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.8.tgz", + "integrity": "sha512-vb7drnd8lFfO4ahCzaVAFkX1eHF1J7jheJl2V/JuuJd5f1sy6nHeNzKMp1zmiuql8uNwe0Sx1WrK1I+4tUmDHg==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -3351,9 +3351,9 @@ } }, "node_modules/@sats-connect/ui": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.4.tgz", - "integrity": "sha512-gmfsqPn44vsJubQC7KuK7zGnBgpLvDzadMlyCwsaBsASV7u8AxNdNas0xVEy6eIBa0Eim7AGcGNTulBFI8YRnA==" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.5.tgz", + "integrity": "sha512-skGV6NaD708/k40AFmyphP1WLAYYhCj2t6dZY6Hb7F6qQg9ROP7yFn0g3CE0gFpA5Mtr3of/jmAMKv2p8e+j0Q==" }, "node_modules/@scure/base": { "version": "1.1.5", @@ -14923,22 +14923,22 @@ } }, "node_modules/sats-connect": { - "version": "2.2.0-a57e941", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.2.0-a57e941.tgz", - "integrity": "sha512-X17zU7LpY4I9bxbblOKN9HiQhFJuHflW+R2RR5zrB5BEpoCvANDFvG6uuF/gqwr94DuSVD9EuAsVFZ68MICpMg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.0.tgz", + "integrity": "sha512-4iRyXwyX60rnFs6EW+19MR27YEEOo1Hq2SfcRfN0Xugowme29fWi56oDEUGV33y8inWrKd+LPxnr4ynhPBxWKw==", "dependencies": { - "@sats-connect/core": "0.0.6-92acf81", - "@sats-connect/make-default-provider-config": "0.0.1", - "@sats-connect/ui": "0.0.4" + "@sats-connect/core": "0.0.8", + "@sats-connect/make-default-provider-config": "0.0.2", + "@sats-connect/ui": "0.0.5" } }, "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.1.tgz", - "integrity": "sha512-Hb1ZbpJ3DnRM7vRUvNepUs6/SVAeH4CdeDsTllXrzOG9jAG4HI+jG7WGDLavFHc6vQCSfTBPH4c/L7S74hMZMg==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.2.tgz", + "integrity": "sha512-kuJdHa0J6KYDMTkQN1Hy92t2trT+Xql76ZEDMJICfIZzflyQlErK75z87TYNtKJujV9uGzEYEYxUguxmcldNdQ==", "dependencies": { - "@sats-connect/core": "0.0.4-caef0cb", - "@sats-connect/ui": "0.0.3-07f4874", + "@sats-connect/core": "0.0.7", + "@sats-connect/ui": "0.0.5", "bowser": "2.11.0" }, "peerDependencies": { @@ -14946,29 +14946,9 @@ } }, "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/core": { - "version": "0.0.4-caef0cb", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4-caef0cb.tgz", - "integrity": "sha512-M/yxUgnYF6JVhfLxMj0pLYZFiJfwkd7C3GYI43aVbaIVhqoSBianEEj2duIiSDAQLC03Scqbt2LXUu42dPs1fA==", - "dependencies": { - "axios": "1.6.8", - "bitcoin-address-validation": "2.2.3", - "buffer": "6.0.3", - "jsontokens": "4.0.1", - "lodash.omit": "4.5.0" - } - }, - "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui": { - "version": "0.0.3-07f4874", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.3-07f4874.tgz", - "integrity": "sha512-H1rj4qOGr72M2pSFtgtFk9TjFHRhTt4vm2ct0iBJaLF4RLIa9EvPkFTMwBYhGBYNcuBpN36eYUBN7hRydfCopg==", - "dependencies": { - "@sats-connect/core": "0.0.4" - } - }, - "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui/node_modules/@sats-connect/core": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.4.tgz", - "integrity": "sha512-v+u49OXku8S5Mh9wzQ6pSdNU4MppMjjUyXy/ZBE6KxqgP7Nnnz3N2VmaBSIGQx/EEy4O3L8SnJZyAwQ7QfOf7g==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.7.tgz", + "integrity": "sha512-4m5amq+orHDbqLqCRWojvDQigKAys33Ntwc7U5xNtFeib4j+DpYz6lVAL/s3cay1kq03WUZ+Gil3l5rv+5bQWQ==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", diff --git a/package.json b/package.json index 0f3e294..fafd28d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.2.0-a57e941", + "sats-connect": "2.3.0", "typescript": "^4.9.5" }, "scripts": { diff --git a/src/components/signTransaction/index.tsx b/src/components/signTransaction/index.tsx index 5318553..6a0ca03 100644 --- a/src/components/signTransaction/index.tsx +++ b/src/components/signTransaction/index.tsx @@ -1,5 +1,5 @@ import type { Capability } from "sats-connect"; -import Wallet, { +import { BitcoinNetworkType, RpcErrorCode, request, @@ -94,7 +94,7 @@ const SignTransaction = ({ } try { - const response = await Wallet.request("signPsbt", { + const response = await request("signPsbt", { psbt: psbtBase64, allowedSignHash: btc.SigHash.SINGLE | btc.SigHash.DEFAULT_ANYONECANPAY, signInputs: { diff --git a/src/utils.ts b/src/utils.ts index a83e00a..88527be 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -52,8 +52,8 @@ export const createPSBT = async ( }); // create segwit spend - // const p2wpkh = btc.p2wpkh(paymentPublicKey, network); - // const p2sh = btc.p2sh(p2wpkh, network); + const p2wpkh = btc.p2wpkh(paymentPublicKey, network); + const p2sh = btc.p2sh(p2wpkh, network); // create taproot spend const p2tr = btc.p2tr(ordinalPublicKey, undefined, network); @@ -67,17 +67,17 @@ export const createPSBT = async ( BigInt(paymentOutput.value) + BigInt(ordinalOutput.value) - total - fee; // payment input - // tx.addInput({ - // txid: paymentOutput.txid, - // index: paymentOutput.vout, - // witnessUtxo: { - // script: p2sh.script ? p2sh.script : Buffer.alloc(0), - // amount: BigInt(paymentOutput.value), - // }, - // redeemScript: p2sh.redeemScript ? p2sh.redeemScript : Buffer.alloc(0), - // witnessScript: p2sh.witnessScript, - // sighashType: btc.SignatureHash.SINGLE | btc.SignatureHash.ANYONECANPAY, - // }); + tx.addInput({ + txid: paymentOutput.txid, + index: paymentOutput.vout, + witnessUtxo: { + script: p2sh.script ? p2sh.script : Buffer.alloc(0), + amount: BigInt(paymentOutput.value), + }, + redeemScript: p2sh.redeemScript ? p2sh.redeemScript : Buffer.alloc(0), + witnessScript: p2sh.witnessScript, + sighashType: btc.SignatureHash.SINGLE | btc.SignatureHash.ANYONECANPAY, + }); // ordinals input tx.addInput({ From 2736a5613c21b9c07a9c54454e5efccf97c2d266 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 7 May 2024 23:51:53 +0300 Subject: [PATCH 11/14] added runes balance method example --- package-lock.json | 51 +++++++++++++------------------ package.json | 2 +- src/App.tsx | 2 ++ src/components/getRuneBalance.tsx | 27 ++++++++++++++++ 4 files changed, 52 insertions(+), 30 deletions(-) create mode 100644 src/components/getRuneBalance.tsx diff --git a/package-lock.json b/package-lock.json index 482825e..5a88f49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.0", + "sats-connect": "2.3.0-62f4a23", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.8.tgz", - "integrity": "sha512-vb7drnd8lFfO4ahCzaVAFkX1eHF1J7jheJl2V/JuuJd5f1sy6nHeNzKMp1zmiuql8uNwe0Sx1WrK1I+4tUmDHg==", + "version": "0.0.9-7e4d74e", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.9-7e4d74e.tgz", + "integrity": "sha512-571EdC05ZFK6SW+v7KOrumBYjHwHNRGFmBO0PU2BEA0nak6yg+bIVcJrpyQgE1aGoy2CMpkEZMMoYSwl/vUm5g==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -3351,9 +3351,9 @@ } }, "node_modules/@sats-connect/ui": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.5.tgz", - "integrity": "sha512-skGV6NaD708/k40AFmyphP1WLAYYhCj2t6dZY6Hb7F6qQg9ROP7yFn0g3CE0gFpA5Mtr3of/jmAMKv2p8e+j0Q==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.6.tgz", + "integrity": "sha512-H3bFFhr9CcY1oNosNi/QJszmMHSht4U19bUWfM3vzayAKgV4ebY6iUnRK5g3p2rVLLWVzlpaw1J9m+7JWwyBfA==" }, "node_modules/@scure/base": { "version": "1.1.5", @@ -14923,39 +14923,32 @@ } }, "node_modules/sats-connect": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.0.tgz", - "integrity": "sha512-4iRyXwyX60rnFs6EW+19MR27YEEOo1Hq2SfcRfN0Xugowme29fWi56oDEUGV33y8inWrKd+LPxnr4ynhPBxWKw==", + "version": "2.3.0-62f4a23", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.0-62f4a23.tgz", + "integrity": "sha512-qFoRorCypFZrm1rCbrIJt5TzXYDi1oB8/DpxXEjPWWeDPPWTcdaBiuKEccaNP2Zn4IAb/dj6CAqDn/cPAsuYLg==", "dependencies": { - "@sats-connect/core": "0.0.8", - "@sats-connect/make-default-provider-config": "0.0.2", - "@sats-connect/ui": "0.0.5" + "@sats-connect/core": "0.0.9-7e4d74e", + "@sats-connect/make-default-provider-config": "0.0.4-c8a439c", + "@sats-connect/ui": "0.0.6" } }, "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.2.tgz", - "integrity": "sha512-kuJdHa0J6KYDMTkQN1Hy92t2trT+Xql76ZEDMJICfIZzflyQlErK75z87TYNtKJujV9uGzEYEYxUguxmcldNdQ==", + "version": "0.0.4-c8a439c", + "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.4-c8a439c.tgz", + "integrity": "sha512-t1LXn0/RcxpaIYs0LtL+v8nw/00mS1dYpyYZZHwAKZophE6vbC62KqIz3PQc0ctFUJI6fLo5qA8Zd/EWAiSyZA==", "dependencies": { - "@sats-connect/core": "0.0.7", - "@sats-connect/ui": "0.0.5", + "@sats-connect/core": "^0.0.9-7e4d74e", + "@sats-connect/ui": "0.0.5-c661c02", "bowser": "2.11.0" }, "peerDependencies": { "typescript": "5.4.4" } }, - "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/core": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.7.tgz", - "integrity": "sha512-4m5amq+orHDbqLqCRWojvDQigKAys33Ntwc7U5xNtFeib4j+DpYz6lVAL/s3cay1kq03WUZ+Gil3l5rv+5bQWQ==", - "dependencies": { - "axios": "1.6.8", - "bitcoin-address-validation": "2.2.3", - "buffer": "6.0.3", - "jsontokens": "4.0.1", - "lodash.omit": "4.5.0" - } + "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui": { + "version": "0.0.5-c661c02", + "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.5-c661c02.tgz", + "integrity": "sha512-6MUXFDGTapBhZAxb6deAdqKuB64GOe6k927gGww5JYwVnOUCaHGDcfaZ/lwexzYL45u8RJof12I4np7MgS+Bwg==" }, "node_modules/sats-connect/node_modules/typescript": { "version": "5.4.4", diff --git a/package.json b/package.json index fafd28d..01e9321 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.0", + "sats-connect": "2.3.0-62f4a23", "typescript": "^4.9.5" }, "scripts": { diff --git a/src/App.tsx b/src/App.tsx index c1e14ed..fb5662c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -29,6 +29,7 @@ import { useEffect, useMemo, useState } from "react"; import "./App.css"; import CreateRepeatInscriptions from "./components/createRepeatInscriptions"; import SignBulkTransaction from "./components/signBulkTransaction"; +import GetRunesBalance from "./components/getRuneBalance"; function App() { const [paymentAddress, setPaymentAddress] = useLocalStorage("paymentAddress"); @@ -291,6 +292,7 @@ function App() { network={network} capabilities={capabilities!} /> + diff --git a/src/components/getRuneBalance.tsx b/src/components/getRuneBalance.tsx new file mode 100644 index 0000000..89e555d --- /dev/null +++ b/src/components/getRuneBalance.tsx @@ -0,0 +1,27 @@ +import Wallet from "sats-connect"; + +const GetRunesBalance = () => { + const getBalance = async () => { + try { + const response = await Wallet.request("runes_getBalance", null); + if (response.status === "success") { + alert("Success. Check console for response"); + console.log(response.result); + } else { + alert("Error getting runes balance. Check console for error logs"); + console.error(response.error); + } + } catch (err) { + console.log(err); + } + }; + + + return ( +
+ +
+ ); +}; + +export default GetRunesBalance; \ No newline at end of file From 2a90c470df4ecb52e638bb87249e564cbfd51118 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 14 May 2024 23:02:11 +0300 Subject: [PATCH 12/14] update sats-connect version --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a88f49..1c5a828 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.0-62f4a23", + "sats-connect": "2.3.1-23b2d68", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.9-7e4d74e", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.9-7e4d74e.tgz", - "integrity": "sha512-571EdC05ZFK6SW+v7KOrumBYjHwHNRGFmBO0PU2BEA0nak6yg+bIVcJrpyQgE1aGoy2CMpkEZMMoYSwl/vUm5g==", + "version": "0.0.9-c7cae71", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.9-c7cae71.tgz", + "integrity": "sha512-YOTaXpVAfE2uTk4KZ64asT4BCo0XyAvARimZTT0ebYbd+/FYBzSTV9/8Ge/BgpTQTRf09IpiBgV9Mma4hqsmBg==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -14923,25 +14923,25 @@ } }, "node_modules/sats-connect": { - "version": "2.3.0-62f4a23", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.0-62f4a23.tgz", - "integrity": "sha512-qFoRorCypFZrm1rCbrIJt5TzXYDi1oB8/DpxXEjPWWeDPPWTcdaBiuKEccaNP2Zn4IAb/dj6CAqDn/cPAsuYLg==", + "version": "2.3.1-23b2d68", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.1-23b2d68.tgz", + "integrity": "sha512-C0s4Ybk4MV0uBm8ygA8xwCvRLHw31sFvA7PdiKTpa0PXJ8WnnekXhlxjHn0l5SgvBSEWGczKS8FYkekSexBfdA==", "dependencies": { - "@sats-connect/core": "0.0.9-7e4d74e", - "@sats-connect/make-default-provider-config": "0.0.4-c8a439c", + "@sats-connect/core": "0.0.9-c7cae71", + "@sats-connect/make-default-provider-config": "0.0.4-6c69517", "@sats-connect/ui": "0.0.6" } }, "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config": { - "version": "0.0.4-c8a439c", - "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.4-c8a439c.tgz", - "integrity": "sha512-t1LXn0/RcxpaIYs0LtL+v8nw/00mS1dYpyYZZHwAKZophE6vbC62KqIz3PQc0ctFUJI6fLo5qA8Zd/EWAiSyZA==", + "version": "0.0.4-6c69517", + "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.4-6c69517.tgz", + "integrity": "sha512-tvxWfrq5fz0vWsixuVQHtKsSsfj0f2E3kacSLw7OzFLa2dm+afFg7A533uiR740y3mf87uiP7AZT6DepeEqhcg==", "dependencies": { - "@sats-connect/core": "^0.0.9-7e4d74e", "@sats-connect/ui": "0.0.5-c661c02", "bowser": "2.11.0" }, "peerDependencies": { + "@sats-connect/core": "*", "typescript": "5.4.4" } }, diff --git a/package.json b/package.json index 01e9321..df4416b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.0-62f4a23", + "sats-connect": "2.3.1-23b2d68", "typescript": "^4.9.5" }, "scripts": { From 8481180c931693d41f42281c916c53525a704e14 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Tue, 21 May 2024 12:17:30 +0300 Subject: [PATCH 13/14] update sats-connect version --- package-lock.json | 31 +++++++++++++------------------ package.json | 2 +- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c5a828..6d95181 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.1-23b2d68", + "sats-connect": "2.3.1-c01c240", "typescript": "^4.9.5" } }, @@ -3339,9 +3339,9 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sats-connect/core": { - "version": "0.0.9-c7cae71", - "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.9-c7cae71.tgz", - "integrity": "sha512-YOTaXpVAfE2uTk4KZ64asT4BCo0XyAvARimZTT0ebYbd+/FYBzSTV9/8Ge/BgpTQTRf09IpiBgV9Mma4hqsmBg==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@sats-connect/core/-/core-0.0.9.tgz", + "integrity": "sha512-7/hY7VF9OqNDYcXlADluMKCTDu9f4OENWkWWO8K1LqanuyZhepu3fBRQKSCT6Xr/3KorvSH/e8sSTcJCzuVOAA==", "dependencies": { "axios": "1.6.8", "bitcoin-address-validation": "2.2.3", @@ -14923,21 +14923,21 @@ } }, "node_modules/sats-connect": { - "version": "2.3.1-23b2d68", - "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.1-23b2d68.tgz", - "integrity": "sha512-C0s4Ybk4MV0uBm8ygA8xwCvRLHw31sFvA7PdiKTpa0PXJ8WnnekXhlxjHn0l5SgvBSEWGczKS8FYkekSexBfdA==", + "version": "2.3.1-c01c240", + "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-2.3.1-c01c240.tgz", + "integrity": "sha512-2E3oHbWmUagZxyDZZg0t3lG9orm3oAqdLeVFBs0sWmASDWyudSKXCenRxOio0aMijSFSz6hbuP7kZmSzOb11HA==", "dependencies": { - "@sats-connect/core": "0.0.9-c7cae71", - "@sats-connect/make-default-provider-config": "0.0.4-6c69517", + "@sats-connect/core": "0.0.9", + "@sats-connect/make-default-provider-config": "0.0.5", "@sats-connect/ui": "0.0.6" } }, "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config": { - "version": "0.0.4-6c69517", - "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.4-6c69517.tgz", - "integrity": "sha512-tvxWfrq5fz0vWsixuVQHtKsSsfj0f2E3kacSLw7OzFLa2dm+afFg7A533uiR740y3mf87uiP7AZT6DepeEqhcg==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@sats-connect/make-default-provider-config/-/make-default-provider-config-0.0.5.tgz", + "integrity": "sha512-b/v4IeDEde5DqFOdMbMmf3B0t/lxlKnY04f3YIUWe1khOg3S6VdcK9Mqva+WUOsJHBTIA5b4hK7CqfMjx1Ic+w==", "dependencies": { - "@sats-connect/ui": "0.0.5-c661c02", + "@sats-connect/ui": "0.0.6", "bowser": "2.11.0" }, "peerDependencies": { @@ -14945,11 +14945,6 @@ "typescript": "5.4.4" } }, - "node_modules/sats-connect/node_modules/@sats-connect/make-default-provider-config/node_modules/@sats-connect/ui": { - "version": "0.0.5-c661c02", - "resolved": "https://registry.npmjs.org/@sats-connect/ui/-/ui-0.0.5-c661c02.tgz", - "integrity": "sha512-6MUXFDGTapBhZAxb6deAdqKuB64GOe6k927gGww5JYwVnOUCaHGDcfaZ/lwexzYL45u8RJof12I4np7MgS+Bwg==" - }, "node_modules/sats-connect/node_modules/typescript": { "version": "5.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", diff --git a/package.json b/package.json index df4416b..4d75669 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "sats-connect": "2.3.1-23b2d68", + "sats-connect": "2.3.1-c01c240", "typescript": "^4.9.5" }, "scripts": { From f43a7e61f61f4b73f76b9456f42e747b693af435 Mon Sep 17 00:00:00 2001 From: Mahmoud Aboelenein Date: Fri, 15 Nov 2024 14:23:21 +0200 Subject: [PATCH 14/14] airdrop --- package-lock.json | 308 +++++++++++++++++++++++++++++- package.json | 1 + src/App.tsx | 31 ++- src/components/stacks/airdrop.tsx | 87 +++++++++ tsconfig.json | 1 + 5 files changed, 420 insertions(+), 8 deletions(-) create mode 100644 src/components/stacks/airdrop.tsx diff --git a/package-lock.json b/package-lock.json index 6d95181..4c87715 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@scure/base": "^1.1.1", "@scure/btc-signer": "1.1.0", + "@stacks/connect": "^7.8.0", "@stacks/transactions": "^6.12.0", "@types/node": "^20.4.9", "@types/react": "^18.2.20", @@ -3363,6 +3364,32 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, "node_modules/@scure/btc-signer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@scure/btc-signer/-/btc-signer-1.1.0.tgz", @@ -3398,10 +3425,38 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@stacks/auth": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-7.0.0.tgz", + "integrity": "sha512-p0/FJy5jRRgtsVzGpWDgNE0fi/ioPCL3S1tZHRsvdKO7moquHWnTlBV/9yVkGbd+V0kD95Sd0euX5pwWA82MhA==", + "dependencies": { + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^7.0.0", + "@stacks/encryption": "^7.0.0", + "@stacks/network": "^7.0.0", + "@stacks/profile": "^7.0.0", + "cross-fetch": "^3.1.5", + "jsontokens": "^4.0.1" + } + }, + "node_modules/@stacks/auth/node_modules/@stacks/common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/common/-/common-7.0.0.tgz", + "integrity": "sha512-/BKBK9S9GEuGjbnc2fBAwsG21f8cfNekG/9mXLSMwBqnh4qaQY2hxK+6wRI2YXJgpkXrpZilpZy2sdPGlVUdQA==" + }, + "node_modules/@stacks/auth/node_modules/@stacks/network": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-7.0.0.tgz", + "integrity": "sha512-4diddT0ii85BQ4PW6ww3l4cS7Oo0a5VIsJ7umBcCPAArIc4Sm/MIOEXIg9joKK8fVHLnWyh1p4D+febJQFfa+Q==", + "dependencies": { + "@stacks/common": "^7.0.0", + "cross-fetch": "^3.1.5" + } + }, "node_modules/@stacks/common": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.10.0.tgz", - "integrity": "sha512-6x5Z7AKd9/kj3+DYE9xIDIkFLHihBH614i2wqrZIjN02WxVo063hWSjIlUxlx8P4gl6olVzlOy5LzhLJD9OP0A==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.16.0.tgz", + "integrity": "sha512-PnzvhrdGRMVZvxTulitlYafSK4l02gPCBBoI9QEoTqgSnv62oaOXhYAUUkTMFKxdHW1seVEwZsrahuXiZPIAwg==", "dependencies": { "@types/bn.js": "^5.1.0", "@types/node": "^18.0.4" @@ -3415,15 +3470,169 @@ "undici-types": "~5.26.4" } }, + "node_modules/@stacks/connect": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@stacks/connect/-/connect-7.8.0.tgz", + "integrity": "sha512-whwHygS69XyY/LMvlyp0Whu4mkWkFoJ4Z/Bva9aO1xLLyEVDbKLZnslGWmPs1Io/y76oGEorqVEh0MeLymTIjg==", + "dependencies": { + "@stacks/auth": "^7.0.0-next.70", + "@stacks/common": "^7.0.0-next.70", + "@stacks/connect-ui": "6.5.0", + "@stacks/network": "^7.0.0-next.70", + "@stacks/network-v6": "npm:@stacks/network@^6.16.0", + "@stacks/profile": "^7.0.0-next.70", + "@stacks/transactions": "^7.0.0-next.70", + "@stacks/transactions-v6": "npm:@stacks/transactions@^6.16.0", + "jsontokens": "^4.0.1" + } + }, + "node_modules/@stacks/connect-ui": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@stacks/connect-ui/-/connect-ui-6.5.0.tgz", + "integrity": "sha512-iXSpl2NxrjERBqtGgkZp0tX1uJgdWZXmsNo3I0cJYYTTbieSAE/Al9nTYc1wLTPW5w5oVvZEkQKo90WIrHR8Rw==", + "dependencies": { + "@stencil/core": "^2.17.1" + } + }, + "node_modules/@stacks/connect/node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@stacks/connect/node_modules/@stacks/common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/common/-/common-7.0.0.tgz", + "integrity": "sha512-/BKBK9S9GEuGjbnc2fBAwsG21f8cfNekG/9mXLSMwBqnh4qaQY2hxK+6wRI2YXJgpkXrpZilpZy2sdPGlVUdQA==" + }, + "node_modules/@stacks/connect/node_modules/@stacks/network": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-7.0.0.tgz", + "integrity": "sha512-4diddT0ii85BQ4PW6ww3l4cS7Oo0a5VIsJ7umBcCPAArIc4Sm/MIOEXIg9joKK8fVHLnWyh1p4D+febJQFfa+Q==", + "dependencies": { + "@stacks/common": "^7.0.0", + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@stacks/connect/node_modules/@stacks/transactions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-7.0.0.tgz", + "integrity": "sha512-9kGTnJLwRQPugLzbdJ8MmFED+eRhlJKIXpz2mshyy238hvBc4T0jynsoJMi4qGqvJYzsiRYCLDPJVkkUde85vA==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^7.0.0", + "@stacks/network": "^7.0.0", + "c32check": "^2.0.0", + "lodash.clonedeep": "^4.5.0" + } + }, + "node_modules/@stacks/encryption": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-7.0.0.tgz", + "integrity": "sha512-kQhiurn8s0DV6OALqEy2Aqwp2DNJUD41S1bnD/+UESyEDD5XRqL84MEo7mCL8pTPr+FVdhT+diEIPeAfEtbTPQ==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@scure/bip39": "1.1.0", + "@stacks/common": "^7.0.0", + "base64-js": "^1.5.1", + "bs58": "^5.0.0", + "ripemd160-min": "^0.0.6", + "varuint-bitcoin": "^1.1.2" + } + }, + "node_modules/@stacks/encryption/node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@stacks/encryption/node_modules/@stacks/common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/common/-/common-7.0.0.tgz", + "integrity": "sha512-/BKBK9S9GEuGjbnc2fBAwsG21f8cfNekG/9mXLSMwBqnh4qaQY2hxK+6wRI2YXJgpkXrpZilpZy2sdPGlVUdQA==" + }, "node_modules/@stacks/network": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.11.3.tgz", - "integrity": "sha512-c4ClCU/QUwuu8NbHtDKPJNa0M5YxauLN3vYaR0+S4awbhVIKFQSxirm9Q9ckV1WBh7FtD6u2S0x+tDQGAODjNg==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.17.0.tgz", + "integrity": "sha512-numHbfKjwco/rbkGPOEz8+FcJ2nBnS/tdJ8R422Q70h3SiA9eqk9RjSzB8p4JP8yW1SZvW+eihADHfMpBuZyfw==", "dependencies": { - "@stacks/common": "^6.10.0", + "@stacks/common": "^6.16.0", + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@stacks/network-v6": { + "name": "@stacks/network", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.17.0.tgz", + "integrity": "sha512-numHbfKjwco/rbkGPOEz8+FcJ2nBnS/tdJ8R422Q70h3SiA9eqk9RjSzB8p4JP8yW1SZvW+eihADHfMpBuZyfw==", + "dependencies": { + "@stacks/common": "^6.16.0", "cross-fetch": "^3.1.5" } }, + "node_modules/@stacks/profile": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-7.0.0.tgz", + "integrity": "sha512-E9RDodVgcLBs6ZiV88lVQyDjA8ZDVPswbPpLNHeAA+evJ2GwRKMJrNnirjydMI37aWm3ZpYOEMLMbqdi38VR7w==", + "dependencies": { + "@stacks/common": "^7.0.0", + "@stacks/network": "^7.0.0", + "@stacks/transactions": "^7.0.0", + "jsontokens": "^4.0.1", + "schema-inspector": "^2.0.2", + "zone-file": "^2.0.0-beta.3" + } + }, + "node_modules/@stacks/profile/node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@stacks/profile/node_modules/@stacks/common": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/common/-/common-7.0.0.tgz", + "integrity": "sha512-/BKBK9S9GEuGjbnc2fBAwsG21f8cfNekG/9mXLSMwBqnh4qaQY2hxK+6wRI2YXJgpkXrpZilpZy2sdPGlVUdQA==" + }, + "node_modules/@stacks/profile/node_modules/@stacks/network": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-7.0.0.tgz", + "integrity": "sha512-4diddT0ii85BQ4PW6ww3l4cS7Oo0a5VIsJ7umBcCPAArIc4Sm/MIOEXIg9joKK8fVHLnWyh1p4D+febJQFfa+Q==", + "dependencies": { + "@stacks/common": "^7.0.0", + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@stacks/profile/node_modules/@stacks/transactions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-7.0.0.tgz", + "integrity": "sha512-9kGTnJLwRQPugLzbdJ8MmFED+eRhlJKIXpz2mshyy238hvBc4T0jynsoJMi4qGqvJYzsiRYCLDPJVkkUde85vA==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^7.0.0", + "@stacks/network": "^7.0.0", + "c32check": "^2.0.0", + "lodash.clonedeep": "^4.5.0" + } + }, "node_modules/@stacks/transactions": { "version": "6.12.0", "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.12.0.tgz", @@ -3437,6 +3646,31 @@ "lodash.clonedeep": "^4.5.0" } }, + "node_modules/@stacks/transactions-v6": { + "name": "@stacks/transactions", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.17.0.tgz", + "integrity": "sha512-FUah2BRgV66ApLcEXGNGhwyFTRXqX5Zco3LpiM3essw8PF0NQlHwwdPgtDko5RfrJl3LhGXXe/30nwsfNnB3+g==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^6.16.0", + "@stacks/network": "^6.17.0", + "c32check": "^2.0.0", + "lodash.clonedeep": "^4.5.0" + } + }, + "node_modules/@stacks/transactions-v6/node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, "node_modules/@stacks/transactions/node_modules/@noble/hashes": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", @@ -3448,6 +3682,18 @@ } ] }, + "node_modules/@stencil/core": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.22.3.tgz", + "integrity": "sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=12.10.0", + "npm": ">=6.0.0" + } + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -5385,6 +5631,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -14735,6 +14989,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160-min": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", + "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", + "engines": { + "node": ">=8" + } + }, "node_modules/rollup": { "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", @@ -14982,6 +15244,22 @@ "loose-envify": "^1.1.0" } }, + "node_modules/schema-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/schema-inspector/-/schema-inspector-2.1.0.tgz", + "integrity": "sha512-3bmQVhbA01/EW8cZin4vIpqlpNU2SIy4BhKCfCgogJ3T/L76dLx3QAE+++4o+dNT33sa+SN9vOJL7iHiHFjiNg==", + "dependencies": { + "async": "~2.6.3" + } + }, + "node_modules/schema-inspector/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -16535,6 +16813,14 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, + "node_modules/varuint-bitcoin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -17506,6 +17792,14 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zone-file": { + "version": "2.0.0-beta.3", + "resolved": "https://registry.npmjs.org/zone-file/-/zone-file-2.0.0-beta.3.tgz", + "integrity": "sha512-6tE3PSRcpN5lbTTLlkLez40WkNPc9vw/u1J2j6DBiy0jcVX48nCkWrx2EC+bWHqC2SLp069Xw4AdnYn/qp/W5g==", + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index 4d75669..1911595 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "dependencies": { "@scure/base": "^1.1.1", "@scure/btc-signer": "1.1.0", + "@stacks/connect": "^7.8.0", "@stacks/transactions": "^6.12.0", "@types/node": "^20.4.9", "@types/react": "^18.2.20", diff --git a/src/App.tsx b/src/App.tsx index fb5662c..755732a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -30,6 +30,8 @@ import "./App.css"; import CreateRepeatInscriptions from "./components/createRepeatInscriptions"; import SignBulkTransaction from "./components/signBulkTransaction"; import GetRunesBalance from "./components/getRuneBalance"; +import Airdrop from "./components/stacks/airdrop"; +import { AppConfig, showConnect, UserSession } from "@stacks/connect"; function App() { const [paymentAddress, setPaymentAddress] = useLocalStorage("paymentAddress"); @@ -220,6 +222,26 @@ function App() { // ); // } + const handleConnectStacks = async () => { + const appConfig = new AppConfig(['store_write', 'publish_data']); + const userSession = new UserSession({ appConfig }); + const appDetails = { + name: "Sats Connect Test App", + icon: "", + } + + showConnect({ + appDetails, + userSession, + onFinish: () => { + window.location.reload(); + }, + onCancel: () => { + console.log('oops'); + }, + }); + }; + if (!isReady) { return (
@@ -240,6 +262,13 @@ function App() { > Connect Account + +
); @@ -310,7 +339,7 @@ function App() {

Stacks Address: {stacksAddress}

Stacks PubKey: {stacksPublicKey}


- + diff --git a/src/components/stacks/airdrop.tsx b/src/components/stacks/airdrop.tsx new file mode 100644 index 0000000..00b7f25 --- /dev/null +++ b/src/components/stacks/airdrop.tsx @@ -0,0 +1,87 @@ +import { BitcoinNetworkType, request } from "sats-connect"; + +import { + AnchorMode, + listCV, + makeContractCall, + PostConditionMode, + stringUtf8CV, +} from "@stacks/transactions"; + +import nakamotoAirdrop from "./xverse_nakamoto_airdrop.json"; + +import { openContractCall } from "@stacks/connect"; +import { useEffect, useState } from "react"; + +const AIRDROP_CONTRACT = + "SP3F7GQ48JY59521DZEE6KABHBF4Q33PEYJ823ZXQ"; +const CONTRACT_NAME = "xverse-nakamoto"; +function splitArray(array: T[], maxLength: number): [T[], T[]] { + const firstArray = array.slice(0, maxLength); + const secondArray = array.slice(maxLength, maxLength * 2); + return [firstArray, secondArray]; +} + +type Props = { + network: BitcoinNetworkType; +}; + +function Airdrop({ network }: Props) { + const [airdropAddresses, setAirdropAddresses] = useState([]); + + useEffect(() => { + const addresses = nakamotoAirdrop.map( + (item: any) => Object.values(item)[0] + ); + setAirdropAddresses(addresses as any); + }, []); + const handleWebBtcCallContractClick = async () => { + const [firstChunk, secondChunk] = splitArray(airdropAddresses, 4999); + const addressList1 = listCV( + firstChunk.map((address) => stringUtf8CV(address)) + ); + const addressList2 = listCV( + secondChunk.map((address) => stringUtf8CV(address)) + ); + openContractCall({ + network: network === BitcoinNetworkType.Mainnet ? "mainnet" : "testnet", + anchorMode: AnchorMode.Any, + + contractAddress: AIRDROP_CONTRACT, + contractName: CONTRACT_NAME, + functionName: "airdrop", + functionArgs: [addressList1, addressList2, listCV([])], + postConditionMode: PostConditionMode.Allow, // whether the tx should fail when unexpected assets are transferred + onFinish: (response) => { + // WHEN user confirms pop-up + console.log(response); + }, + onCancel: () => { + // WHEN user cancels/closes pop-up + }, + }); + }; + + return ( +
+

Call contract

+
+ + +
+
+ ); +} + +export default Airdrop; diff --git a/tsconfig.json b/tsconfig.json index d57b9cb..033e5fe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "target": "ES2022", "module": "commonjs", "moduleResolution": "node", + "resolveJsonModule": true, "jsx": "react-jsx", "baseUrl": ".", "rootDir": "src",