diff --git a/index.html b/index.html
index a33a875..b9aba21 100644
--- a/index.html
+++ b/index.html
@@ -321,7 +321,7 @@
mempool: [],
utxos: {},
addresses: {},
- relays: [ "wss://nostrue.com" ],
+ relays: [ "wss://no.str.cr" ],
blocks_relayed: [],
addykind: "testnet",
hexToBytes: hex => Uint8Array.from( hex.match( /.{1,2}/g ).map( byte => parseInt( byte, 16 ) ) ),
@@ -2444,14 +2444,14 @@
if ( !skip_validation ) {
if ( !txhex || typeof txhex === "object" ) txhex = $( '.tx_broadcaster' ).value;
var tx_array = txhex.split( "," );
- if ( tx_array.length > 2 ) return alert( `too many txs in this package -- only 2 are allowed` );
+ if ( tx_array.length > 2 ) return `too many txs in this package -- only 2 are allowed`;
if ( tx_array.length > 1 ) {
var allow_zero_fee = true;
var first_tx_is_invalid = await testnet_generator.validateTx( tx_array[ 0 ], allow_zero_fee );
- if ( first_tx_is_invalid ) return alert( first_tx_is_invalid );
+ if ( first_tx_is_invalid ) return first_tx_is_invalid;
var allow_zero_fee = false;
var second_tx_is_invalid = await testnet_generator.validateTx( tx_array[ 1 ], allow_zero_fee, tx_array[ 0 ] );
- if ( second_tx_is_invalid ) return console.log( second_tx_is_invalid );
+ if ( second_tx_is_invalid ) return second_tx_is_invalid;
var parent_tx = tapscript.Tx.decode( tx_array[ 0 ] );
var sum_of_parent_inputs = 0;
var all_parents_confirmed = true;
@@ -2462,7 +2462,7 @@
var amnt = input_to_work_with.amnt;
sum_of_parent_inputs = sum_of_parent_inputs + amnt;
});
- if ( !all_parents_confirmed ) return alert( 'you cannot broadcast this package because it tries to spend an unconfirmed output, which is not allowed' );
+ if ( !all_parents_confirmed ) return 'you cannot broadcast this package because it tries to spend an unconfirmed output, which is not allowed';
var sum_of_parent_outputs = 0;
parent_tx.vout.forEach( output => sum_of_parent_outputs = sum_of_parent_outputs + Number( output[ "value" ] ) );
var parent_tx_fee_in_sats = sum_of_parent_inputs - sum_of_parent_outputs;
@@ -2488,14 +2488,14 @@
var total_fee = parent_tx_fee_in_sats + child_tx_fee_in_sats;
var total_size = parent_tx_size + child_tx_size;
var effective_fee_rate = total_fee / total_size;
- if ( effective_fee_rate < 1 ) return alert( 'the effective fee rate was less than 1 sat per byte, try again with a child that pays a larger fee' );
+ if ( effective_fee_rate < 1 ) return 'the effective fee rate was less than 1 sat per byte, try again with a child that pays a larger fee';
var skip_validation = true;
- await testnet_generator.broadcast( tapscript.Tx.encode( parent_tx ).hex, skip_validation );
+ var txid = await testnet_generator.broadcast( tapscript.Tx.encode( parent_tx ).hex, skip_validation );
testnet_generator.broadcast( tapscript.Tx.encode( child_tx ).hex, skip_validation );
- return;
+ return txid;
}
var reason_why_tx_is_invalid = await testnet_generator.validateTx( txhex );
- if ( reason_why_tx_is_invalid ) return alert( reason_why_tx_is_invalid );
+ if ( reason_why_tx_is_invalid ) return reason_why_tx_is_invalid;
}
testnet_generator.mempool.push( txhex );
var txid = tapscript.Tx.util.getTxid( txhex );
@@ -2508,6 +2508,7 @@
testnet_generator.showSoloTx( txid, txhex, 1 );
};
testnet_generator.processTxhex( txhex );
+ return txid;
},
showBlock: ( num, count ) => {
var div = document.createElement( "div" );
@@ -2754,7 +2755,7 @@
}
},
}
- var sendMoney = () => {
+ var sendMoney = async () => {
var destino = prompt( `enter the address you want to send money to` );
if ( !destino ) return;
var amnt = Number( prompt( `enter an amount of sats you want to send there` ) );
@@ -2783,7 +2784,8 @@
txdata.vin[ i ].witness = [ sig ];
}
var txhex = tapscript.Tx.encode( txdata ).hex;
- testnet_generator.broadcast( txhex );
+ var error = await testnet_generator.broadcast( txhex );
+ if ( error.length !== 64 || !testnet_generator.isValidHex( error ) ) return alert( error );
//highlight the mempool count label
$( '.txs_in_mempool_label' ).style.backgroundColor = "pink";
setTimeout( () => {
@@ -2833,7 +2835,11 @@
$( '.wallet' ).style.display = "none";
$( '.txs_in_mempool_label' ).style.display = "none";
}
- $( '.broadcast_btn' ).onclick = testnet_generator.broadcast;
+ $( '.broadcast_btn' ).onclick = async () => {
+ var txhex = $( '.tx_broadcaster' ).value;
+ var error = await testnet_generator.broadcast( txhex );
+ if ( error.length !== 64 || !testnet_generator.isValidHex( error ) ) return alert( error );
+ }
if ( $( '.auto_generate' ) ) $( '.auto_generate' ).onchange = () => {
autogen_value = $( '.auto_generate' ).value;
if ( autogen_value.includes( "---" ) ) $( '.auto_go' ).disabled = true;
@@ -2914,6 +2920,39 @@
}
await testnet_generator.waitSomeTime( 1_000 );
testnet_generator.processExistingBlocks();
+ var listenFunction = async socket => {
+ var subId = super_nostr.bytesToHex( crypto.getRandomValues( new Uint8Array( 8 ) ) );
+ var filter = {}
+ filter.kinds = [ 4 ];
+ filter.since = Math.floor( Date.now() / 1000 );
+ var subscription = [ "REQ", subId, filter ];
+ socket.send( JSON.stringify( subscription ) );
+ }
+ var handleFunction = async message => {
+ var [ type, subId, event ] = JSON.parse( message.data );
+ if ( !event || event === true ) return;
+ var content = await super_nostr.alt_decrypt( privkey, event.pubkey, event.content );
+ var json = JSON.parse( content );
+ if ( json.msg_type === "broadcast" ) {
+ var txhex = json.msg_value;
+ var txid_or_error = await testnet_generator.broadcast( txhex );
+ var recipient = event.pubkey;
+ var relay = testnet_generator.relays[ 0 ];
+ var message = JSON.stringify({
+ msg_type: "broadcast_reply",
+ msg_value: txid_or_error,
+ });
+ var emsg = await super_nostr.alt_encrypt( privkey, recipient, message );
+ var event = await super_nostr.prepEvent( privkey, emsg, 4, [ [ "p", recipient ] ] );
+ super_nostr.sendEvent( event, relay );
+ }
+ }
+ var connection_id = await super_nostr.newPermanentConnection( testnet_generator.relays[ 0 ], listenFunction, handleFunction );
+ console.log( 'connected!', connection_id );
+ console.log( 'users can talk to me at this pubkey:' );
+ console.log( pubkey );
+ console.log( 'and this relay:' );
+ console.log( testnet_generator.relays[ 0 ] );
}
if ( !$( '.auto_generate' ) ) {
window.scrollTo( 0, 0 );
@@ -2926,7 +2965,7 @@
})();