Transaction

73cfdb2f41c63da4c8e6ce9c4e9ba0c55a4e3cb89c14c4db88f59a092b91502a
Timestamp (utc)
2025-12-28 15:52:36
Fee Paid
0.00001526 BSV
(
0.00001526 BSV
-
0.00000000 BSV
)
Fee Rate
100.2 sat/KB
Version
1
Confirmations
7,985
Size Stats
15,215 B

1 Output

Total Output:
0.00000000 BSV
  • j"19HxigV4QyBv3tHpQVcUEQyq1pzZVdoAutM:"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1012],{1012:function(e,t,o){o.d(t,{z:function(){return r}});class s{async detectWallets(){let e=[];{console.log("\uD83D\uDD0D Starting comprehensive wallet detection..."),["yours","YoursWallet","yoursWallet","YOURS","yoursProvider","YoursProvider","yoursBsv","YoursBSV"].some(e=>{let t=!!window[e];return t&&console.log("✅ Yours wallet detected via window.".concat(e,":"),window[e]),t})&&e.push("yours"),["handcash","HandCash","handCash","HANDCASH","handcashProvider","HandCashProvider","handcashBsv"].some(e=>{let t=!!window[e];return t&&console.log("✅ HandCash wallet detected via window.".concat(e,":"),window[e]),t})&&e.push("handcash"),["relayx","RelayX","relayX","RELAYX","relayProvider","RelayProvider","relayxBsv"].some(e=>{let t=!!window[e];return t&&console.log("✅ RelayX wallet detected via window.".concat(e,":"),window[e]),t})&&e.push("relayx"),window.bsv&&(e.push("generic-bsv"),console.log("✅ Generic BSV wallet detected"));let t=Object.keys(window).filter(e=>{let t=e.toLowerCase();return t.includes("yours")||t.includes("handcash")||t.includes("relayx")||t.includes("bsv")||t.includes("wallet")||t.includes("bitcoin")||t.includes("crypto")});console.log("\uD83D\uDD0E All potentially wallet-related window properties:",t),t.length>0&&t.forEach(e=>{let t=window[e];if(console.log("\uD83D\uDCCA window.".concat(e,":"),typeof t,t),t&&"object"==typeof t){let o=Object.keys(t).filter(e=>"function"==typeof t[e]);o.length>0&&console.log(" └─ Methods on window.".concat(e,":"),o)}}),console.log("\uD83D\uDD0D Wallet detection complete: found ".concat(e.length," wallets:"),e),0===e.length&&(console.log("❌ No BSV wallets detected. Make sure you have installed:"),console.log(" • Yours Wallet browser extension"),console.log(" • HandCash browser extension"),console.log(" • RelayX browser extension"))}return e}async connectWallet(e){try{let t,o;switch(console.log("\uD83D\uDD17 Connecting to ".concat(e," wallet...")),e){case"yours":let s=[window.yours,window.YoursWallet,window.yoursWallet,window.YOURS,window.yoursProvider,window.YoursProvider].filter(Boolean);if(0===s.length)throw Error("Yours wallet not found. Please install the Yours Wallet browser extension.");t=s[0],console.log("\uD83D\uDD17 Using Yours wallet API:",t);break;case"handcash":let r=[window.handcash,window.HandCash,window.handCash,window.HANDCASH,window.handcashProvider].filter(Boolean);if(0===r.length)throw Error("HandCash wallet not found. Please install the HandCash browser extension.");t=r[0],console.log("\uD83D\uDD17 Using HandCash wallet API:",t);break;case"relayx":let n=[window.relayx,window.RelayX,window.relayX,window.RELAYX,window.relayProvider].filter(Boolean);if(0===n.length)throw Error("RelayX wallet not found. Please install the RelayX browser extension.");t=n[0],console.log("\uD83D\uDD17 Using RelayX wallet API:",t);break;default:throw Error("Unsupported wallet provider: ".concat(e))}if("yours"===e){let e;console.log("\uD83D\uDD17 Yours wallet connection flow starting...");let s=await t.isConnected();if(console.log("\uD83D\uDD17 Initial isConnected: ".concat(s)),s)console.log("✅ Already connected to Yours wallet");else{let e;console.log("\uD83D\uDD04 Clearing any stale connection state...");try{await t.disconnect(),await new Promise(e=>setTimeout(e,200))}catch(e){}console.log("\uD83D\uDD17 Calling window.yours.connect()...");try{e=await t.connect(),console.log("✅ Yours wallet connect() returned:",e)}catch(e){throw console.error("❌ connect() failed:",e),Error('Wallet connection rejected. Please click "Connect" in your Yours wallet popup.')}await new Promise(e=>setTimeout(e,300)),s=await t.isConnected(),console.log("\uD83D\uDD17 isConnected after connect(): ".concat(s)),s||(console.log("⚠️ isConnected=false after connect(). This usually means:"),console.log(" 1. Wallet is locked - please unlock it"),console.log(" 2. Connection popup was dismissed - please try again"),console.log(" 3. Site needs approval in wallet settings"),console.log("\uD83E\uDDEA Testing if getAddresses works anyway..."))}try{console.log("\uD83D\uDCCD Calling getAddresses()..."),e=await t.getAddresses(),console.log("\uD83D\uDCCD Yours wallet addresses:",e)}catch(s){console.error("❌ getAddresses failed:",s);let o=s.message||String(s);if(o.includes("Unauthorized")||"undefined"===o){console.log("\uD83D\uDD04 Wallet API error - attempting workaround...");let o=null;try{o=await t.connect(),console.log("\uD83D\uDCCD Got pubkey from connect():",o)}catch(e){}if(o&&66===o.length){console.log("\uD83D\uDD27 Attempting to derive address from pubkey...");try{let t=await this.deriveAddressFromPubkey(o);t&&(console.log("✅ Derived address from pubkey:",t),e={bsvAddress:t,identityAddress:t})}catch(e){console.warn("⚠️ Could not derive address:",e)}}if(!e){let e="\nYours Wallet API is not responding correctly.\n\nThis appears to be a wallet extension issue. The wallet returned your public key but cannot provide addresses.\n\nPlease try:\n1. Refresh the wallet: Click the Yours extension icon and check for errors\n2. Restart browser: Close and reopen your browser\n3. Reinstall wallet: If the issue persists, try reinstalling the Yours Wallet extension\n\nYour pubkey: ".concat(o||"unknown","\n").trim();throw Error(e)}}else throw Error("Wallet error: ".concat(o,". Please try again."))}if(!e)throw Error("No addresses returned from Yours wallet. Please try again.");if(e.bsvAddress)o=e.bsvAddress,console.log("✅ Using BSV address: ".concat(o));else if(e.identityAddress)o=e.identityAddress,console.log("✅ Using identity address: ".concat(o));else if("string"==typeof e)o=e,console.log("✅ Using address (string): ".concat(o));else throw console.log("\uD83D\uDCCD Full addresses object:",JSON.stringify(e,null,2)),Error("Unexpected address format from Yours wallet: ".concat(JSON.stringify(e)))}else console.log("\uD83D\uDD17 Calling ".concat(e,".requestAccounts()...")),o=(await t.requestAccounts())[0];let l=0;if("yours"===e&&t.getBalance)try{console.log("\uD83D\uDCB0 Getting balance from Yours wallet...");let e=await t.getBalance();console.log("\uD83D\uDCB0 Yours wallet balance result:",e),l=e.satoshis||e.confirmed||e.total||0}catch(e){console.warn("⚠️ Could not get balance from Yours wallet, falling back to API:",e),l=await this.getBalance(o)}else l=await this.getBalance(o);return this.walletProvider=e,this.userAddress=o,console.log("✅ Connected to ".concat(e,":"),o),{address:o,balance:l,provider:e}}catch(t){throw console.error("Wallet connection failed:",t),Error("Failed to connect to ".concat(e,": ").concat(t instanceof Error?t.message:String(t)))}}generateDemoWallet(){return{address:"mn"+(Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)).substring(0,32),mnemonic:"abandon ability able about above absent absorb abstract absurd abuse access accident",provider:"demo"}}async getBalance(e){try{if("yours"===this.walletProvider&&window.yours)try{console.log("\uD83D\uDCB0 Getting balance from Yours wallet...");let e=await window.yours.getBalance();if(console.log("\uD83D\uDCB0 Yours wallet balance:",e),e&&e.satoshis)return console.log("✅ Using Yours wallet balance: ".concat(e.satoshis," satoshis")),e.satoshis}catch(e){console.warn("Failed to get balance from Yours wallet, falling back to API:",e)}let t=e.startsWith("1"),o=e.startsWith("m")||e.startsWith("n"),s="main";o&&(s="test"),console.log("\uD83D\uDD0D Address ".concat(e," detected as ").concat(t?"mainnet":o?"testnet":"unknown",", using ").concat(s," API"));let r=await fetch("https://api.whatsonchain.com/v1/bsv/".concat(s,"/address/").concat(e,"/balance"));if(!r.ok)return console.warn("Could not fetch balance from ".concat(s," API (").concat(r.status,"), returning 0")),0;let n=(await r.json()).confirmed||0;return console.log("✅ Balance from WhatsOnChain ".concat(s,": ").concat(n," satoshis")),n}catch(e){return console.warn("Balance fetch failed:",e),0}}async postVideoMetadata(e){try{if(this.userAddress||(console.log("\uD83D\uDD0D No wallet in memory, checking localStorage..."),this.restoreWalletFromStorage()),!this.userAddress)throw Error("Wallet not connected");if(console.log("\uD83D\uDD17 Using connected wallet: ".concat(this.userAddress," (provider: ").concat(this.walletProvider,")")),console.log("\uD83D\uDCDD Creating real BSV transaction..."),"yours"===this.walletProvider&&window.yours)try{let t;let o=window.yours;console.log("\uD83D\uDD0D Available Yours wallet methods:",Object.getOwnPropertyNames(o)),console.log("\uD83D\uDD0D Yours wallet object:",o);let s=JSON.stringify({app:"BSV_VIDEO_PLATFORM",version:1,type:"video_upload",...e});console.log("\uD83D\uDCE4 Broadcasting transaction with Yours wallet...");let r=e=>Array.from(new TextEncoder().encode(e)).map(e=>e.toString(16).padStart(2,"0")).join("");if("function"==typeof o.sendBsv)console.log("\uD83D\uDCB3 Using yoursWallet.sendBsv..."),t=await o.sendBsv([{satoshis:0,data:[r(s)]},{address:this.userAddress,satoshis:1}]);else if("function"==typeof o.send)console.log("\uD83D\uDCB3 Using yoursWallet.send..."),t=await o.send({outputs:[{address:this.userAddress,satoshis:1}],data:[r(s)]});else{let e=Object.getOwnPropertyNames(o).filter(e=>"function"==typeof o[e]);throw Error("sendBsv not available. Available methods: ".concat(e.join(", ")))}if(console.log("\uD83D\uDD17 Transaction response:",t),t&&t.txid){console.log("✅ Real BSV transaction created: ".concat(t.txid));{let o="video_metadata_".concat(t.txid);localStorage.setItem(o,JSON.stringify(e))}return t.txid}throw Error("Transaction failed - no txid returned")}catch(e){throw console.error("❌ Yours wallet transaction failed:",e),Error("Failed to create BSV transaction: ".concat(e instanceof Error?e.message:String(e)))}throw Error("Real BSV transactions require Yours wallet. Please connect your Yours wallet to create blockchain transactions.")}catch(e){throw console.error("Failed to post metadata:",e),e}}async deriveAddressFromPubkey(e){try{let t=new Uint8Array(e.match(/.{1,2}/g).map(e=>parseInt(e,16))),o=await crypto.subtle.digest("SHA-256",t),s=this.ripemd160(new Uint8Array(o)),r=new Uint8Array(21);r[0]=0,r.set(s,1);let n=await crypto.subtle.digest("SHA-256",r),l=await crypto.subtle.digest("SHA-256",n),a=new Uint8Array(l).slice(0,4),i=new Uint8Array(25);return i.set(r),i.set(a,21),this.base58Encode(i)}catch(e){return console.error("Failed to derive address from pubkey:",e),null}}ripemd160(e){let t=[0,1518500249,1859775393,2400959708,2840853838],o=[1352829926,1548603684,1836072691,2053994217,0],s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],r=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],n=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],a=(e,t)=>(e<<t|e>>>32-t)>>>0,i=(e,t,o,s)=>e<16?t^o^s:e<32?t&o|~t&s:e<48?(t|~o)^s:e<64?t&s|o&~s:t^(o|~s),c=8*e.length,d=new Uint8Array(e.length+72&-64);d.set(e),d[e.length]=128;let u=new DataView(d.buffer);u.setUint32(d.length-8,c,!0),u.setUint32(d.length-4,0,!0);let w=1732584193,g=4023233417,h=2562383102,D=271733878,y=3285377520;for(let e=0;e<d.length;e+=64){let c=[];for(let t=0;t<16;t++)c[t]=u.getUint32(e+4*t,!0);let d=w,f=g,p=h,b=D,m=y,v=w,A=g,P=h,C=D,Y=y;for(let e=0;e<80;e++){let u=Math.floor(e/16),w=d+i(e,f,p,b)+c[s[e]]+t[u]>>>0;w=a(w,n[e])+m>>>0,d=m,m=b,b=a(p,10),p=f,f=w,w=a(w=v+i(79-e,A,P,C)+c[r[e]]+o[u]>>>0,l[e])+Y>>>0,v=Y,Y=C,C=a(P,10),P=A,A=w}let S=g+p+C>>>0;g=h+b+Y>>>0,h=D+m+v>>>0,D=y+d+A>>>0,y=w+f+P>>>0,w=S}let f=new Uint8Array(20),p=new DataView(f.buffer);return p.setUint32(0,w,!0),p.setUint32(4,g,!0),p.setUint32(8,h,!0),p.setUint32(12,D,!0),p.setUint32(16,y,!0),f}base58Encode(e){let t=0;for(let o=0;o<e.length&&0===e[o];o++)t++;let o=Math.ceil(138*e.length/100)+1,s=new Uint8Array(o),r=0;for(let n=t;n<e.length;n++){let t=e[n],l=0;for(let e=o-1;e>=0&&(0!==t||l<r);e--,l++)t+=256*s[e],s[e]=t%58,t=Math.floor(t/58);r=l}let n=o-r;for(;n<o&&0===s[n];)n++;let l="1".repeat(t);for(let e=n;e<o;e++)l+="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"[s[e]];return l}getConnectedWallet(){return this.userAddress&&this.walletProvider?{address:this.userAddress,provider:this.walletProvider}:null}restoreWalletFromStorage(){try{let e=localStorage.getItem("userAddress"),t=localStorage.getItem("walletProvider");if(console.log("\uD83D\uDD0D Checking localStorage for wallet data..."),console.log(" - userAddress: ".concat(e)),console.log(" - walletProvider: ".concat(t)),e&&t)return this.userAddress=e,this.walletProvider=t,console.log("✅ Restored wallet state: ".concat(e," (").concat(t,")")),!0;return console.log("❌ No wallet data found in localStorage"),!1}catch(e){return console.warn("Failed to restore wallet from storage:",e),!1}}disconnect(){this.walletProvider=null,this.userAddress=null,localStorage.removeItem("userAddress"),localStorage.removeItem("walletProvider"),localStorage.removeItem("authToken"),console.log("\uD83D\uDD0C Wallet disconnected")}async signMessage(e){if(!this.userAddress||!this.walletProvider)throw Error("Wallet not connected");if("yours"===this.walletProvider){let t=window.yours;if(!t)throw Error("Yours wallet not found");if("function"==typeof t.signMessage){console.log("\uD83D\uDD10 Signing message with Yours wallet...");let o=await t.signMessage({message:e});return console.log("✅ Message signed:",o),o.sig||o.signature||o}throw Error("Yours wallet does not support signMessage")}throw Error("Message signing not supported for wallet provider: ".concat(this.walletProvider))}async getPublicKey(){if(!this.userAddress||!this.walletProvider)throw Error("Wallet not connected");if("yours"===this.walletProvider){let e=window.yours;if(!e)throw Error("Yours wallet not found");if("function"==typeof e.getPubKeys){console.log("\uD83D\uDD11 Getting public keys from Yours wallet...");let t=await e.getPubKeys();return console.log("✅ Public keys:",t),t.bsvPubKey||t.identityPubKey||t}if("function"==typeof e.connect)return await e.connect();throw Error("Yours wallet does not support getPubKeys")}throw Error("Public key retrieval not supported for wallet provider: ".concat(this.walletProvider))}isValidBSVAddress(e){return!!e&&!(e.length<26)&&!(e.length>35)&&(e.startsWith("1")||e.startsWith("m")||e.startsWith("n"))}constructor(){this.walletProvider=null,this.userAddress=null}}let r=new s}}]);application/javascriptbinary
    https://whatsonchain.com/tx/73cfdb2f41c63da4c8e6ce9c4e9ba0c55a4e3cb89c14c4db88f59a092b91502a