diff --git a/.gitignore b/.gitignore index 55f5c799a..70e70d75d 100644 --- a/.gitignore +++ b/.gitignore @@ -153,3 +153,4 @@ cmake-build-debug vitae-qt.pro src/config/vitae-config.h src/config/vitae-config.h.in +*.tmp diff --git a/configure.ac b/configure.ac index 6b5a2aac7..0bab4221a 100755 --- a/configure.ac +++ b/configure.ac @@ -344,7 +344,7 @@ case $host in fi AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"]) - CPPFLAGS="$CPPFLAGS -DMAC_OSX" + CPPFLAGS="$CPPFLAGS -DMAC_OSX -DOBJC_OLD_DISPATCH_PROTOTYPES=0" ;; *linux*) TARGET_OS=linux @@ -792,13 +792,7 @@ else fi fi -AC_CHECK_LIB([crypto],[RAND_egd],[],[ - AC_ARG_WITH([libressl], - [AS_HELP_STRING([--with-libressl],[Build with system LibreSSL (default is no; DANGEROUS; NOT SUPPORTED)])], - [AC_MSG_WARN([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])], - [AC_MSG_ERROR([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])] - ) -]) + dnl univalue check @@ -1065,7 +1059,7 @@ if test x$system_univalue = xno; then AC_CONFIG_SUBDIRS([src/univalue]) fi -ac_configure_args="${ac_configure_args} --disable-shared --with-pic" +ac_configure_args="${ac_configure_args} --disable-shared --with-pic --enable-module-recovery" AC_CONFIG_SUBDIRS([src/secp256k1]) AC_OUTPUT diff --git a/contrib/debian/examples/vitae.conf b/contrib/debian/examples/vitae.conf index 4f7e76781..b575c5915 100755 --- a/contrib/debian/examples/vitae.conf +++ b/contrib/debian/examples/vitae.conf @@ -1,7 +1,7 @@ ## ## vitae.conf configuration file. Lines beginning with # are comments. ## - + # Network-related settings: # Run on the test network instead of the real vitae network. @@ -62,8 +62,8 @@ #rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593 # How many seconds vitae will wait for a complete RPC HTTP request. -# after the HTTP connection is established. -#rpctimeout=30 +# after the HTTP connection is established. +#rpcclienttimeout=30 # By default, only RPC connections from localhost are allowed. # Specify as many rpcallowip= settings as you like to allow connections from other hosts, @@ -73,7 +73,7 @@ # because the rpcpassword is transmitted over the network unencrypted. # server=1 tells Vitae-QT to accept JSON-RPC commands. -# it is also read by vitaed to determine if RPC should be enabled +# it is also read by vitaed to determine if RPC should be enabled #rpcallowip=10.1.1.34/255.255.255.0 #rpcallowip=1.2.3.4/24 #rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96 @@ -85,16 +85,6 @@ # running on another host using this option: #rpcconnect=127.0.0.1 -# Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate -# with Vitae -server or vitaed -#rpcssl=1 - -# OpenSSL settings used when rpcssl=1 -#rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH -#rpcsslcertificatechainfile=server.cert -#rpcsslprivatekeyfile=server.pem - - # Miscellaneous options # Pre-generate this many public/private key pairs, so wallet backups will be valid for diff --git a/contrib/debian/manpages/pivx-qt.1 b/contrib/debian/manpages/vitae-qt.1 similarity index 92% rename from contrib/debian/manpages/pivx-qt.1 rename to contrib/debian/manpages/vitae-qt.1 index 27c68a306..a32774c85 100755 --- a/contrib/debian/manpages/pivx-qt.1 +++ b/contrib/debian/manpages/vitae-qt.1 @@ -178,19 +178,6 @@ Set maximum block size in bytes (default: 250000) .HP \fB\-blockprioritysize=\fR Set maximum size of high\-priority/low\-fee transactions in bytes (default: 27000) .PP -SSL options: (see the Bitcoin Wiki for SSL setup instructions) -.TP -\fB\-rpcssl\fR -Use OpenSSL (https) for JSON\-RPC connections -.TP -\fB\-rpcsslcertificatechainfile=\fR -Server certificate file (default: server.cert) -.TP -\fB\-rpcsslprivatekeyfile=\fR -Server private key (default: server.pem) -.TP -\fB\-rpcsslciphers=\fR -Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) .SS "UI options:" .TP \fB\-lang=\fR diff --git a/contrib/debian/manpages/pivx.conf.5 b/contrib/debian/manpages/vitae.conf.5 similarity index 89% rename from contrib/debian/manpages/pivx.conf.5 rename to contrib/debian/manpages/vitae.conf.5 index c64a5b618..03a342766 100755 --- a/contrib/debian/manpages/pivx.conf.5 +++ b/contrib/debian/manpages/vitae.conf.5 @@ -46,16 +46,6 @@ Listen for RPC connections on this TCP port. \fBrpcconnect=\fR\fI'127.0.0.1'\fR You can use *vitae* or *vitaed(1)* to send commands to *vitae*/*vitaed(1)* running on another host using this option. .TP -\fBrpcssl=\fR\fI'1'\fR -Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate with *vitae* '\-server' or *vitaed(1)*. Example of OpenSSL settings used when *rpcssl*='1': -.TP -\fB\-rpcsslciphers=\fR -Acceptable ciphers (default: TLSv1+HIGH:\:!SSLv2:\:!aNULL:\:!eNULL:\:!AH:\:!3DES:\:@STRENGTH) -.TP -\fBrpcsslcertificatechainfile=\fR\fI'server.cert'\fR -.TP -\fBrpcsslprivatekeyfile=\fR\fI'server.pem'\fR -.TP .SH MISCELLANEOUS OPTIONS .TP \fBgen=\fR[\fI'0'\fR|\fI'1'\fR] @@ -86,4 +76,3 @@ vitaed(1) This manual page was written by Micah Anderson for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL. - diff --git a/contrib/debian/manpages/pivxd.1 b/contrib/debian/manpages/vitaed.1 similarity index 94% rename from contrib/debian/manpages/pivxd.1 rename to contrib/debian/manpages/vitaed.1 index 24e587c63..281323fda 100755 --- a/contrib/debian/manpages/pivxd.1 +++ b/contrib/debian/manpages/vitaed.1 @@ -62,20 +62,6 @@ Allow JSON\-RPC connections from specified IP address .TP \fB\-rpcconnect=\fR Send commands to node running on -.PP -SSL options: (see the Bitcoin Wiki for SSL setup instructions) -.TP -\fB\-rpcssl\fR=\fI1\fR -Use OpenSSL (https) for JSON\-RPC connections -.TP -\fB\-rpcsslcertificatchainfile=\fR -Server certificate file (default: server.cert) -.TP -\fB\-rpcsslprivatekeyfile=\fR -Server private key (default: server.pem) -.TP -\fB\-rpcsslciphers=\fR -Acceptable ciphers (default: TLSv1+HIGH:\:!SSLv2:\:!aNULL:\:!eNULL:\:!AH:\:!3DES:\:@STRENGTH) .TP \-? This help message @@ -206,4 +192,3 @@ vitae.conf(5) This manual page was written by Micah Anderson for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL. - diff --git a/contrib/debian/pivx-qt.desktop b/contrib/debian/vitae-qt.desktop similarity index 100% rename from contrib/debian/pivx-qt.desktop rename to contrib/debian/vitae-qt.desktop diff --git a/contrib/debian/pivx-qt.install b/contrib/debian/vitae-qt.install similarity index 100% rename from contrib/debian/pivx-qt.install rename to contrib/debian/vitae-qt.install diff --git a/contrib/debian/pivx-qt.lintian-overrides b/contrib/debian/vitae-qt.lintian-overrides similarity index 100% rename from contrib/debian/pivx-qt.lintian-overrides rename to contrib/debian/vitae-qt.lintian-overrides diff --git a/contrib/debian/pivxd.bash-completion b/contrib/debian/vitaed.bash-completion similarity index 100% rename from contrib/debian/pivxd.bash-completion rename to contrib/debian/vitaed.bash-completion diff --git a/contrib/debian/pivxd.examples b/contrib/debian/vitaed.examples similarity index 100% rename from contrib/debian/pivxd.examples rename to contrib/debian/vitaed.examples diff --git a/contrib/debian/pivxd.install b/contrib/debian/vitaed.install similarity index 100% rename from contrib/debian/pivxd.install rename to contrib/debian/vitaed.install diff --git a/contrib/debian/pivxd.lintian-overrides b/contrib/debian/vitaed.lintian-overrides similarity index 100% rename from contrib/debian/pivxd.lintian-overrides rename to contrib/debian/vitaed.lintian-overrides diff --git a/contrib/debian/pivxd.manpages b/contrib/debian/vitaed.manpages similarity index 100% rename from contrib/debian/pivxd.manpages rename to contrib/debian/vitaed.manpages diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index 6831c313f..836614fb6 100644 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -22,10 +22,10 @@ def setup(): else: programs += ['apt-cacher-ng', 'lxc', 'debootstrap'] subprocess.check_call(['sudo', 'apt-get', 'install', '-qq'] + programs) - if not os.path.isdir('gitian.sigs'): - subprocess.check_call(['git', 'clone', 'https://github.com/pivx-Project/gitian.sigs.git']) - if not os.path.isdir('pivx-detached-sigs'): - subprocess.check_call(['git', 'clone', 'https://github.com/pivx-Project/pivx-detached-sigs.git']) + if not os.path.isdir('vitae-gitian.sigs'): + subprocess.check_call(['git', 'clone', 'https://github.com/VitaeTeam/gitian.sigs.git']) + if not os.path.isdir('vitae-detached-sigs'): + subprocess.check_call(['git', 'clone', 'https://github.com/VitaeTeam/vitae-detached-sigs.git']) if not os.path.isdir('gitian-builder'): subprocess.check_call(['git', 'clone', 'https://github.com/devrandom/gitian-builder.git']) if not os.path.isdir('vitae'): @@ -60,20 +60,20 @@ def build(): if args.linux: print('\nCompiling ' + args.version + ' Linux') subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'vitae='+args.commit, '--url', 'vitae='+args.url, '../vitae/contrib/gitian-descriptors/gitian-linux.yml']) - subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-linux', '--destination', '../gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-linux.yml']) + subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-linux', '--destination', '../vitae-gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-linux.yml']) subprocess.check_call('mv build/out/vitae-*.tar.gz build/out/src/vitae-*.tar.gz ../vitae-binaries/'+args.version, shell=True) if args.windows: print('\nCompiling ' + args.version + ' Windows') subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'vitae='+args.commit, '--url', 'vitae='+args.url, '../vitae/contrib/gitian-descriptors/gitian-win.yml']) - subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-unsigned', '--destination', '../gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-win.yml']) + subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-unsigned', '--destination', '../vitae-gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-win.yml']) subprocess.check_call('mv build/out/vitae-*-win-unsigned.tar.gz inputs/', shell=True) subprocess.check_call('mv build/out/vitae-*.zip build/out/vitae-*.exe build/out/src/vitae-*.tar.gz ../vitae-binaries/'+args.version, shell=True) if args.macos: print('\nCompiling ' + args.version + ' MacOS') subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'vitae='+args.commit, '--url', 'vitae='+args.url, '../vitae/contrib/gitian-descriptors/gitian-osx.yml']) - subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-unsigned', '--destination', '../gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-osx.yml']) + subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-unsigned', '--destination', '../vitae-gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-osx.yml']) subprocess.check_call('mv build/out/vitae-*-osx-unsigned.tar.gz inputs/', shell=True) subprocess.check_call('mv build/out/vitae-*.tar.gz build/out/vitae-*.dmg build/out/src/vitae-*.tar.gz ../vitae-binaries/'+args.version, shell=True) @@ -81,7 +81,7 @@ def build(): if args.commit_files: print('\nCommitting '+args.version+' Unsigned Sigs\n') - os.chdir('gitian.sigs') + os.chdir('vitae-gitian.sigs') subprocess.check_call(['git', 'add', args.version+'-linux/'+args.signer]) subprocess.check_call(['git', 'add', args.version+'-win-unsigned/'+args.signer]) subprocess.check_call(['git', 'add', args.version+'-osx-unsigned/'+args.signer]) @@ -96,7 +96,7 @@ def sign(): print('\nSigning ' + args.version + ' Windows') subprocess.check_call('cp inputs/vitae-' + args.version + '-win-unsigned.tar.gz inputs/vitae-win-unsigned.tar.gz', shell=True) subprocess.check_call(['bin/gbuild', '--skip-image', '--upgrade', '--commit', 'signature='+args.commit, '../vitae/contrib/gitian-descriptors/gitian-win-signer.yml']) - subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', '--destination', '../gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-win-signer.yml']) + subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', '--destination', '../vitae-gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call('mv build/out/vitae-*win64-setup.exe ../vitae-binaries/'+args.version, shell=True) subprocess.check_call('mv build/out/vitae-*win32-setup.exe ../vitae-binaries/'+args.version, shell=True) @@ -104,14 +104,14 @@ def sign(): print('\nSigning ' + args.version + ' MacOS') subprocess.check_call('cp inputs/vitae-' + args.version + '-osx-unsigned.tar.gz inputs/vitae-osx-unsigned.tar.gz', shell=True) subprocess.check_call(['bin/gbuild', '--skip-image', '--upgrade', '--commit', 'signature='+args.commit, '../vitae/contrib/gitian-descriptors/gitian-osx-signer.yml']) - subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', '--destination', '../gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-osx-signer.yml']) + subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', '--destination', '../vitae-gitian.sigs/', '../vitae/contrib/gitian-descriptors/gitian-osx-signer.yml']) subprocess.check_call('mv build/out/vitae-osx-signed.dmg ../vitae-binaries/'+args.version+'/vitae-'+args.version+'-osx.dmg', shell=True) os.chdir(workdir) if args.commit_files: print('\nCommitting '+args.version+' Signed Sigs\n') - os.chdir('gitian.sigs') + os.chdir('vitae-gitian.sigs') subprocess.check_call(['git', 'add', args.version+'-win-signed/'+args.signer]) subprocess.check_call(['git', 'add', args.version+'-osx-signed/'+args.signer]) subprocess.check_call(['git', 'commit', '-a', '-m', 'Add '+args.version+' signed binary sigs for '+args.signer]) @@ -123,27 +123,27 @@ def verify(): os.chdir('gitian-builder') print('\nVerifying v'+args.version+' Linux\n') - if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-linux', '../vitae/contrib/gitian-descriptors/gitian-linux.yml']): + if subprocess.call(['bin/gverify', '-v', '-d', '../vitae-gitian.sigs/', '-r', args.version+'-linux', '../vitae/contrib/gitian-descriptors/gitian-linux.yml']): print('Verifying v'+args.version+' Linux FAILED\n') rc = 1 print('\nVerifying v'+args.version+' Windows\n') - if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-unsigned', '../vitae/contrib/gitian-descriptors/gitian-win.yml']): + if subprocess.call(['bin/gverify', '-v', '-d', '../vitae-gitian.sigs/', '-r', args.version+'-win-unsigned', '../vitae/contrib/gitian-descriptors/gitian-win.yml']): print('Verifying v'+args.version+' Windows FAILED\n') rc = 1 print('\nVerifying v'+args.version+' MacOS\n') - if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-signed', '../vitae/contrib/gitian-descriptors/gitian-osx.yml']): + if subprocess.call(['bin/gverify', '-v', '-d', '../vitae-gitian.sigs/', '-r', args.version+'-win-signed', '../vitae/contrib/gitian-descriptors/gitian-osx.yml']): print('Verifying v'+args.version+' MacOS FAILED\n') rc = 1 print('\nVerifying v'+args.version+' Signed Windows\n') - if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-signed', '../vitae/contrib/gitian-descriptors/gitian-win-signer.yml']): + if subprocess.call(['bin/gverify', '-v', '-d', '../vitae-gitian.sigs/', '-r', args.version+'-win-signed', '../vitae/contrib/gitian-descriptors/gitian-win-signer.yml']): print('Verifying v'+args.version+' Signed Windows FAILED\n') rc = 1 print('\nVerifying v'+args.version+' Signed MacOS\n') - if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-osx-signed', '../vitae/contrib/gitian-descriptors/gitian-osx-signer.yml']): + if subprocess.call(['bin/gverify', '-v', '-d', '../vitae-gitian.sigs/', '-r', args.version+'-osx-signed', '../vitae/contrib/gitian-descriptors/gitian-osx-signer.yml']): print('Verifying v'+args.version+' Signed MacOS FAILED\n') rc = 1 @@ -253,7 +253,7 @@ def main(): sign() if args.verify: - os.chdir('gitian.sigs') + os.chdir('vitae-gitian.sigs') subprocess.check_call(['git', 'pull']) os.chdir(workdir) sys.exit(verify()) diff --git a/contrib/pivxd.bash-completion b/contrib/pivxd.bash-completion index 68424e472..47cdf371a 100755 --- a/contrib/pivxd.bash-completion +++ b/contrib/pivxd.bash-completion @@ -96,7 +96,7 @@ _vitaed() { esac case "$cur" in - -conf=*|-pid=*|-loadblock=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) + -conf=*|-pid=*|-loadblock=*|-wallet=*) cur="${cur#*=}" _filedir return 0 diff --git a/doc/README.md b/doc/README.md index bab28114b..d769d767a 100755 --- a/doc/README.md +++ b/doc/README.md @@ -36,7 +36,7 @@ Building --------------------- The following are developer notes on how to build VITAE on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. -- [OSX Build Notes](build-osx.md) +- [macOS Build Notes](build-macos.md) - [Unix Build Notes](build-unix.md) - [Gitian Building Guide](gitian-building.md) diff --git a/doc/REST-interface.md b/doc/REST-interface.md index 27b2e41b4..f90e94716 100755 --- a/doc/REST-interface.md +++ b/doc/REST-interface.md @@ -5,23 +5,88 @@ The REST API can be enabled with the `-rest` option. Supported API ------------- -`GET /rest/tx/TX-HASH.{bin|hex|json}` -Given a transaction hash, -Returns a transaction, in binary, hex-encoded binary or JSON formats. +####Transactions +`GET /rest/tx/.` -`GET /rest/block/BLOCK-HASH.{bin|hex|json}` -`GET /rest/block/notxdetails/BLOCK-HASH.{bin|hex|json}` +Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats. -Given a block hash, -Returns a block, in binary, hex-encoded binary or JSON formats. +For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option. (enabled by default) -The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 2.66MB (1 MB max block, plus hex encoding) per request. +####Blocks +`GET /rest/block/.` +`GET /rest/block/notxdetails/.` + +Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats. + +The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 4.66MB (2 MB max block, plus hex encoding) per request. With the /notxdetails/ option JSON response will only contain the transaction hash instead of the complete transaction details. The option only affects the JSON response. -For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option. +####Blockheaders +`GET /rest/headers//.` + +Given a block hash: returns amount of blockheaders in upward direction. + +####Chaininfos +`GET /rest/chaininfo.json` + +Returns various state info regarding block chain processing. +Only supports JSON as output format. +* chain : (string) current network name as defined in BIP70 (main, test, regtest) +* blocks : (numeric) the current number of blocks processed in the server +* headers : (numeric) the current number of headers we have validated +* bestblockhash : (string) the hash of the currently best block +* difficulty : (numeric) the current difficulty +* verificationprogress : (numeric) estimate of verification progress [0..1] +* chainwork : (string) total amount of work in active chain, in hexadecimal + +####Query UTXO set +`GET /rest/getutxos//-/-/.../-.` + +The getutxo command allows querying of the UTXO set given a set of outpoints. +See BIP64 for input and output serialisation: +https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki + +Example: +``` +$ curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp +{ + "chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb", + "chainHeight" : 325347, + "utxos" : [ + { + "scriptPubKey" : { + "addresses" : [ + "mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD" + ], + "type" : "pubkeyhash", + "hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac", + "reqSigs" : 1, + "asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG" + }, + "value" : 8.8687, + "height" : 2147483647, + "txvers" : 1 + } + ], + "bitmap" : "1" +} +``` + +####Memory pool +`GET /rest/mempool/info.json` + +Returns various information about the TX mempool. +Only supports JSON as output format. +* size : (numeric) the number of transactions in the TX mempool +* bytes : (numeric) size of the TX mempool in bytes + +`GET /rest/mempool/contents.json` + +Returns transactions in the TX mempool. +Only supports JSON as output format. Risks ------------- -Running a webbrowser on the same node with a REST enabled vitaed can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `