github.com/aychain/blockbook@v0.1.1-0.20181121092459-6d1fc7e07c5b/static/test.html (about)

     1  <!doctype html>
     2  <html lang="en">
     3  
     4  <head>
     5      <meta charset="utf-8">
     6      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     7      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
     8      <style>
     9          .row {
    10              margin-top: 1%;
    11          }
    12      </style>
    13      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.4/socket.io.js"></script>
    14      <title>Test socket.io</title>
    15      <script>
    16          var socket;
    17          function connect(server) {
    18              socket = io(server, { transports: ['websocket'] });
    19              socket.on('connect', function () {
    20                  console.log('socket connected');
    21                  document.getElementById('connectionStatus').innerText = "connected";
    22              });
    23          }
    24  
    25          function getAddressTxids() {
    26              var addresses = document.getElementById('getAddressTxidsAddresses').value.split(",");
    27              addresses = addresses.map(s => s.trim());
    28              var mempool = document.getElementById("getAddressTxidsMempool").checked;
    29              lookupTransactionsIdsMempool(addresses, mempool, 20000000, 0, function (result) {
    30                  console.log('getAddressTxids sent successfully');
    31                  console.log(result);
    32                  document.getElementById('getAddressTxidsResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
    33              });
    34          }
    35  
    36          function lookupTransactionsIdsMempool(addresses, mempool, start, end, f) {
    37              const method = 'getAddressTxids';
    38              const rangeParam = mempool ? {
    39                  start,
    40                  end,
    41                  queryMempoolOnly: true,
    42              } : {
    43                      start,
    44                      end,
    45                      queryMempol: false,
    46                  };
    47              const params = [
    48                  addresses,
    49                  rangeParam,
    50              ];
    51              return socket.send({ method, params }, f);
    52          }
    53  
    54          function getAddressHistory() {
    55              var addresses = document.getElementById('getAddressHistoryAddresses').value.split(",");
    56              addresses = addresses.map(s => s.trim());
    57              var mempool = document.getElementById("getAddressHistoryMempool").checked;
    58              var from = parseInt(document.getElementById("getAddressHistoryFrom").value);
    59              var to = parseInt(document.getElementById("getAddressHistoryTo").value);
    60              lookupAddressHistories(addresses, from, to, mempool, 90000000, 0, function (result) {
    61                  console.log('getAddressHistory sent successfully');
    62                  console.log(result);
    63                  document.getElementById('getAddressHistoryResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
    64              });
    65          }
    66  
    67          function lookupAddressHistories(addresses, from, to, mempool, start, end, f) {
    68              const method = 'getAddressHistory';
    69              const opts = mempool ? {
    70                  start, // needed for older bitcores (so we don't load all history if bitcore-node < 3.1.3)
    71                  end,
    72                  queryMempoolOnly: true,
    73              } : {
    74                      start,
    75                      end,
    76                      queryMempol: false,
    77                  };
    78              const params = [
    79                  addresses,
    80                  {
    81                      ...opts,
    82                      from,
    83                      to,
    84                  },
    85              ];
    86              return socket.send({ method, params }, f);
    87          }
    88  
    89          function lookupTransactionsIdsMempool(addresses, mempool, start, end, f) {
    90              const method = 'getAddressTxids';
    91              const opts = mempool ? {
    92                  start,
    93                  end,
    94                  queryMempoolOnly: true,
    95              } : {
    96                      start,
    97                      end,
    98                      queryMempol: false,
    99                  };
   100              const params = [
   101                  addresses,
   102                  opts,
   103              ];
   104              return socket.send({ method, params }, f);
   105          }
   106  
   107          function getBlockHeader() {
   108              var param = document.getElementById('getBlockHeaderParam').value.trim();
   109              lookupBlockHash(isHash(param) ? param : parseInt(param), function (result) {
   110                  console.log('getBlockHeader sent successfully');
   111                  console.log(result);
   112                  document.getElementById('getBlockHeaderResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   113              });
   114          }
   115  
   116          function isHash(str) {
   117              var re = /[0-9A-Fa-f]{64}/g;
   118              return re.test(str);
   119          }
   120  
   121          function lookupBlockHash(heightOrHash, f) {
   122              const method = 'getBlockHeader';
   123              const params = [heightOrHash];
   124              return socket.send({ method, params }, f);
   125          }
   126  
   127          function estimateSmartFee() {
   128              var blocks = document.getElementById('estimateSmartFeeBlocks').value.trim();
   129              var conservative = document.getElementById("estimateSmartFeeConservative").checked;
   130              estimateSmartTxFee(parseInt(blocks), conservative, function (result) {
   131                  console.log('estimateSmartFee sent successfully');
   132                  console.log(result);
   133                  document.getElementById('estimateSmartFeeResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   134              });
   135          }
   136  
   137          function estimateSmartTxFee(blocks, conservative, f) {
   138              const method = 'estimateSmartFee';
   139              const params = [blocks, conservative];
   140              return socket.send({ method, params }, f);
   141          }
   142  
   143          function estimateFee() {
   144              var blocks = document.getElementById('estimateFeeBlocks').value.trim();
   145              estimateTxFee(parseInt(blocks), function (result) {
   146                  console.log('estimateFee sent successfully');
   147                  console.log(result);
   148                  document.getElementById('estimateFeeResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   149              });
   150          }
   151  
   152          function estimateTxFee(blocks, f) {
   153              const method = 'estimateFee';
   154              const params = [blocks];
   155              return socket.send({ method, params }, f);
   156          }
   157  
   158          function getInfo() {
   159              lookupSyncStatus(function (result) {
   160                  console.log('getInfo sent successfully');
   161                  console.log(result);
   162                  document.getElementById('getInfoResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   163              });
   164          }
   165  
   166          function lookupSyncStatus(f) {
   167              const method = 'getInfo';
   168              const params = [];
   169              return socket.send({ method, params }, f);
   170          }
   171  
   172          function getDetailedTransaction() {
   173              var hash = document.getElementById('getDetailedTransactionHash').value.trim();
   174              lookupDetailedTransaction(hash, function (result) {
   175                  console.log('getDetailedTransaction sent successfully');
   176                  console.log(result);
   177                  document.getElementById('getDetailedTransactionResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   178              });
   179          }
   180  
   181          function lookupDetailedTransaction(hash, f) {
   182              const method = 'getDetailedTransaction';
   183              var params = [
   184                  hash,
   185              ];
   186              return socket.send({ method, params }, f);
   187          }
   188  
   189          function sendTransaction() {
   190              var tx = document.getElementById('sendTransactionHex').value.trim();
   191              sendTransactionF(tx, function (result) {
   192                  console.log('sendTransaction sent successfully');
   193                  console.log(result);
   194                  document.getElementById('sendTransactionResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   195              });
   196          }
   197  
   198          function sendTransactionF(hex, f) {
   199              const method = 'sendTransaction';
   200              const params = [
   201                  hex,
   202              ];
   203              return socket.send({ method, params }, f);
   204          }
   205  
   206          function subscribeHashBlock() {
   207              socket.emit('subscribe', "bitcoind/hashblock", function (result) {
   208                  console.log('subscribe bitcoind/hashblock sent successfully');
   209                  console.log(result);
   210              });
   211              socket.on("bitcoind/hashblock", function (result) {
   212                  console.log('on bitcoind/hashblock');
   213                  console.log(result);
   214                  document.getElementById('subscribeHashBlockResult').innerText += JSON.stringify(result).replace(/,/g, ", ") + "\n";
   215              });
   216          }
   217  
   218          function subscribeAddressTxid() {
   219              var addresses = document.getElementById('subscribeAddressTxidAddresses').value.split(",");
   220              addresses = addresses.map(s => s.trim());
   221              socket.emit('subscribe', "bitcoind/addresstxid", addresses, function (result) {
   222                  console.log('subscribe bitcoind/addresstxid sent successfully');
   223                  console.log(result);
   224              });
   225              socket.on("bitcoind/addresstxid", function (result) {
   226                  console.log('on bitcoind/addresstxid');
   227                  console.log(result);
   228                  document.getElementById('subscribeAddressTxidResult').innerText += JSON.stringify(result).replace(/,/g, ", ") + "\n";
   229              });
   230          }
   231  
   232          function getMempoolEntry() {
   233              var hash = document.getElementById('getMempoolEntryHash').value.trim();
   234              lookupMempoolEntry(hash, function (result) {
   235                  console.log('getMempoolEntry sent successfully');
   236                  console.log(result);
   237                  document.getElementById('getMempoolEntryResult').innerText = JSON.stringify(result).replace(/,/g, ", ");
   238              });
   239          }
   240  
   241          function lookupMempoolEntry(hash, f) {
   242              const method = 'getMempoolEntry';
   243              const params = [
   244                  hash,
   245              ];
   246              return socket.send({ method, params }, f);
   247          }
   248      </script>
   249  </head>
   250  
   251  <body>
   252      <div class="container">
   253          <div class="row justify-content-center">
   254              <h1>Socket.io tester</h1>
   255          </div>
   256          <div class="row">
   257              <div class="col">
   258                  <input class="btn btn-secondary" type="button" value="Login" onclick="connect(document.getElementById('serverAddress').value)">
   259              </div>
   260              <div class="col-8">
   261                  <input type="text" class="form-control" id="serverAddress" value="">
   262              </div>
   263              <div class="col form-inline">
   264                  <label id="connectionStatus">not connected</label>
   265              </div>
   266          </div>
   267          <div class="row">
   268              <div class="col">
   269                  <input class="btn btn-secondary" type="button" value="getAddressTxids" onclick="getAddressTxids()">
   270              </div>
   271              <div class="col-8">
   272                  <input type="text" class="form-control" id="getAddressTxidsAddresses" value="2N4Q5FhU2497BryFfUgbqkAJE87aKHUhXMp,2Mt7P2BAfE922zmfXrdcYTLyR7GUvbwSEns">
   273              </div>
   274              <div class="col form-inline">
   275                  <input type="checkbox" id="getAddressTxidsMempool">&nbsp;
   276                  <label>only mempool</label>
   277              </div>
   278          </div>
   279          <div class="row">
   280              <div class="col" id="getAddressTxidsResult">
   281              </div>
   282          </div>
   283          <div class="row">
   284              <div class="col">
   285                  <input class="btn btn-secondary" type="button" value="getAddressHistory" onclick="getAddressHistory()">
   286              </div>
   287              <div class="col-8">
   288                  <div class="row" style="margin: 0;">
   289                      <input type="text" style="width: 84%" class="form-control" id="getAddressHistoryAddresses" value="2N4Q5FhU2497BryFfUgbqkAJE87aKHUhXMp,2Mt7P2BAfE922zmfXrdcYTLyR7GUvbwSEns">
   290                      <input type="text" style="width: 7%; margin-left: 5px; margin-right: 5px;" class="form-control" id="getAddressHistoryFrom" value="0">
   291                      <input type="text" style="width: 7%" class="form-control" id="getAddressHistoryTo" value="5">
   292                  </div>
   293              </div>
   294              <div class="col form-inline">
   295                  <input type="checkbox" id="getAddressHistoryMempool">&nbsp;
   296                  <label>only mempool</label>
   297              </div>
   298          </div>
   299          <div class="row">
   300              <div class="col" id="getAddressHistoryResult">
   301              </div>
   302          </div>
   303          <div class="row">
   304              <div class="col">
   305                  <input class="btn btn-secondary" type="button" value="getBlockHeader" onclick="getBlockHeader()">
   306              </div>
   307              <div class="col-8">
   308                  <input type="text" class="form-control" id="getBlockHeaderParam" value="0">
   309              </div>
   310              <div class="col">
   311              </div>
   312          </div>
   313          <div class="row">
   314              <div class="col" id="getBlockHeaderResult">
   315              </div>
   316          </div>
   317          <div class="row">
   318              <div class="col">
   319                  <input class="btn btn-secondary" type="button" value="estimateSmartFee" onclick="estimateSmartFee()">
   320              </div>
   321              <div class="col-8">
   322                  <input type="text" class="form-control" id="estimateSmartFeeBlocks" value="20">
   323              </div>
   324              <div class="col form-inline">
   325                  <input type="checkbox" id="estimateSmartFeeConservative" checked>&nbsp;
   326                  <label>conservative</label>
   327              </div>
   328          </div>
   329          <div class="row">
   330              <div class="col" id="estimateSmartFeeResult">
   331              </div>
   332          </div>
   333          <div class="row">
   334              <div class="col">
   335                  <input class="btn btn-secondary" type="button" value="estimateFee" onclick="estimateFee()">
   336              </div>
   337              <div class="col-8">
   338                  <input type="text" class="form-control" id="estimateFeeBlocks" value="20">
   339              </div>
   340              <div class="col"></div>
   341          </div>
   342          <div class="row">
   343              <div class="col" id="estimateFeeResult">
   344              </div>
   345          </div>
   346          <div class="row">
   347              <div class="col">
   348                  <input class="btn btn-secondary" type="button" value="getInfo" onclick="getInfo()">
   349              </div>
   350              <div class="col-10" id="getInfoResult">
   351              </div>
   352          </div>
   353          <div class="row">
   354              <div class="col">
   355                  <input class="btn btn-secondary" type="button" value="getDetailedTransaction" onclick="getDetailedTransaction()">
   356              </div>
   357              <div class="col-8">
   358                  <input type="text" class="form-control" id="getDetailedTransactionHash" value="474e6795760ebe81cb4023dc227e5a0efe340e1771c89a0035276361ed733de7">
   359              </div>
   360              <div class="col"></div>
   361          </div>
   362          <div class="row">
   363              <div class="col" id="getDetailedTransactionResult">
   364              </div>
   365          </div>
   366          <div class="row">
   367              <div class="col">
   368                  <input class="btn btn-secondary" type="button" value="sendTransaction" onclick="sendTransaction()">
   369              </div>
   370              <div class="col-8">
   371                  <input type="text" class="form-control" id="sendTransactionHex" value="010000000001019d64f0c72a0d206001decbffaa722eb1044534c74eee7a5df8318e42a4323ec10000000017160014550da1f5d25a9dae2eafd6902b4194c4c6500af6ffffffff02809698000000000017a914cd668d781ece600efa4b2404dc91fd26b8b8aed8870553d7360000000017a914246655bdbd54c7e477d0ea2375e86e0db2b8f80a8702473044022076aba4ad559616905fa51d4ddd357fc1fdb428d40cb388e042cdd1da4a1b7357022011916f90c712ead9a66d5f058252efd280439ad8956a967e95d437d246710bc9012102a80a5964c5612bb769ef73147b2cf3c149bc0fd4ecb02f8097629c94ab013ffd00000000">
   372              </div>
   373              <div class="col">
   374              </div>
   375          </div>
   376          <div class="row">
   377              <div class="col" id="sendTransactionResult">
   378              </div>
   379          </div>
   380          <div class="row">
   381              <div class="col">
   382                  <input class="btn btn-secondary" type="button" value="subscribe hashblock" onclick="subscribeHashBlock()">
   383              </div>
   384          </div>
   385          <div class="row">
   386              <div class="col" id="subscribeHashBlockResult">
   387              </div>
   388          </div>
   389          <div class="row">
   390              <div class="col">
   391                  <input class="btn btn-secondary" type="button" value="subscribe addresstxid" onclick="subscribeAddressTxid()">
   392              </div>
   393              <div class="col-8">
   394                  <input type="text" class="form-control" id="subscribeAddressTxidAddresses" value="2MzTmvPJLZaLzD9XdN3jMtQA5NexC3rAPww,2NAZRJKr63tSdcTxTN3WaE9ZNDyXy6PgGuv">
   395              </div>
   396              <div class="col">
   397              </div>
   398          </div>
   399          <div class="row">
   400              <div class="col" id="subscribeAddressTxidResult">
   401              </div>
   402          </div>
   403          <div class="row">
   404              <div class="col">
   405                  <input class="btn btn-secondary" type="button" value="getMempoolEntry" onclick="getMempoolEntry()">
   406              </div>
   407              <div class="col-8">
   408                  <input type="text" class="form-control" id="getMempoolEntryHash" value="">
   409              </div>
   410              <div class="col">
   411              </div>
   412          </div>
   413          <div class="row">
   414              <div class="col" id="getMempoolEntryResult">
   415              </div>
   416          </div>
   417      </div>
   418  </body>
   419  <script>
   420      document.getElementById('serverAddress').value = window.location.protocol.replace("http", "ws") + "//" + window.location.host;
   421  </script>
   422  
   423  </html>