Browse Source

main - > Starwels MAI

0.16
DATSEC 4 years ago committed by SHI
parent
commit
3251043c0c
  1. 12
      contrib/debian/examples/starwels.conf
  2. 2
      contrib/linearize/README.md
  3. 12
      contrib/linearize/example-linearize.cfg
  4. 2
      contrib/linearize/linearize-hashes.py
  5. 2
      contrib/qos/README.md
  6. 10
      contrib/qos/tc.sh
  7. 18
      contrib/rpm/starwels.spec
  8. 4
      contrib/seeds/generate-seeds.py
  9. 12
      contrib/seeds/nodes_main.txt
  10. 6
      contrib/seeds/nodes_test.txt
  11. 2
      contrib/starwels-cli.bash-completion
  12. 2
      contrib/testgen/gen_base58_test_vectors.py
  13. 12
      contrib/zmq/zmq_sub.py
  14. 12
      contrib/zmq/zmq_sub3.4.py
  15. 2
      depends/packages/qt.mk
  16. 8
      doc/REST-interface.md
  17. 8
      doc/developer-notes.md
  18. 4
      doc/man/starwels-cli.1
  19. 14
      doc/man/starwels-qt.1
  20. 2
      doc/man/starwels-tx.1
  21. 14
      doc/man/starwelsd.1
  22. 2
      doc/release-notes/release-notes-0.15.1.md
  23. 2
      doc/release-process.md
  24. 8
      doc/tor.md
  25. 2
      doc/zmq.md
  26. 4
      share/setup.nsi.in
  27. 2
      src/Makefile.qt.include
  28. 4
      src/base58.cpp
  29. 130
      src/chainparams.cpp
  30. 2
      src/chainparams.h
  31. 20
      src/chainparamsbase.cpp
  32. 4
      src/chainparamsbase.h
  33. 16
      src/chainparamsseeds.h
  34. 16
      src/init.cpp
  35. 2
      src/miner.cpp
  36. 2
      src/pow.cpp
  37. 2
      src/qt/guiconstants.h
  38. 10
      src/qt/guiutil.cpp
  39. 8
      src/qt/locale/starwels_af.ts
  40. 4
      src/qt/locale/starwels_ar.ts
  41. 4
      src/qt/locale/starwels_be_BY.ts
  42. 4
      src/qt/locale/starwels_bg.ts
  43. 16
      src/qt/locale/starwels_ca.ts
  44. 12
      src/qt/locale/starwels_ca@valencia.ts
  45. 12
      src/qt/locale/starwels_ca_ES.ts
  46. 16
      src/qt/locale/starwels_cs.ts
  47. 4
      src/qt/locale/starwels_cs_CZ.ts
  48. 4
      src/qt/locale/starwels_cy.ts
  49. 16
      src/qt/locale/starwels_da.ts
  50. 16
      src/qt/locale/starwels_de.ts
  51. 4
      src/qt/locale/starwels_el_GR.ts
  52. 10
      src/qt/locale/starwels_en.ts
  53. 16
      src/qt/locale/starwels_en_GB.ts
  54. 4
      src/qt/locale/starwels_eo.ts
  55. 16
      src/qt/locale/starwels_es.ts
  56. 10
      src/qt/locale/starwels_es_CL.ts
  57. 4
      src/qt/locale/starwels_es_DO.ts
  58. 12
      src/qt/locale/starwels_es_ES.ts
  59. 2
      src/qt/locale/starwels_es_UY.ts
  60. 4
      src/qt/locale/starwels_et.ts
  61. 2
      src/qt/locale/starwels_et_EE.ts
  62. 4
      src/qt/locale/starwels_eu_ES.ts
  63. 2
      src/qt/locale/starwels_fa.ts
  64. 4
      src/qt/locale/starwels_fa_IR.ts
  65. 16
      src/qt/locale/starwels_fi.ts
  66. 12
      src/qt/locale/starwels_fr.ts
  67. 4
      src/qt/locale/starwels_fr_FR.ts
  68. 4
      src/qt/locale/starwels_gl.ts
  69. 6
      src/qt/locale/starwels_he.ts
  70. 2
      src/qt/locale/starwels_hi_IN.ts
  71. 4
      src/qt/locale/starwels_hr.ts
  72. 2
      src/qt/locale/starwels_hu.ts
  73. 6
      src/qt/locale/starwels_hu_HU.ts
  74. 4
      src/qt/locale/starwels_id_ID.ts
  75. 16
      src/qt/locale/starwels_it.ts
  76. 14
      src/qt/locale/starwels_ja.ts
  77. 4
      src/qt/locale/starwels_ja_JP.ts
  78. 4
      src/qt/locale/starwels_ka.ts
  79. 10
      src/qt/locale/starwels_ko_KR.ts
  80. 4
      src/qt/locale/starwels_la.ts
  81. 2
      src/qt/locale/starwels_lt.ts
  82. 4
      src/qt/locale/starwels_lv_LV.ts
  83. 16
      src/qt/locale/starwels_nb.ts
  84. 16
      src/qt/locale/starwels_nl.ts
  85. 4
      src/qt/locale/starwels_pam.ts
  86. 12
      src/qt/locale/starwels_pl.ts
  87. 4
      src/qt/locale/starwels_pl_PL.ts
  88. 16
      src/qt/locale/starwels_pt_BR.ts
  89. 8
      src/qt/locale/starwels_pt_PT.ts
  90. 16
      src/qt/locale/starwels_ro_RO.ts
  91. 10
      src/qt/locale/starwels_sk.ts
  92. 4
      src/qt/locale/starwels_sl_SI.ts
  93. 2
      src/qt/locale/starwels_sq.ts
  94. 4
      src/qt/locale/starwels_sr.ts
  95. 12
      src/qt/locale/starwels_sv.ts
  96. 4
      src/qt/locale/starwels_th_TH.ts
  97. 14
      src/qt/locale/starwels_tr.ts
  98. 12
      src/qt/locale/starwels_uk.ts
  99. 4
      src/qt/locale/starwels_uz@Cyrl.ts
  100. 16
      src/qt/locale/starwels_vi.ts
  101. Some files were not shown because too many files have changed in this diff Show More

12
contrib/debian/examples/starwels.conf vendored

@ -4,10 +4,10 @@ @@ -4,10 +4,10 @@
# Network-related settings:
# Run on the test network instead of the real starwels network.
#testnet=0
# Run on the ai network instead of the real starwels network.
#ai=0
# Run a regression test network
# Run a regression ai network
#regtest=0
# Connect via a SOCKS5 proxy
@ -44,11 +44,11 @@ @@ -44,11 +44,11 @@
# Use as many addnode= settings as you like to connect to specific peers
#addnode=69.164.218.197
#addnode=10.0.0.2:8353
#addnode=10.0.0.2:8343
# Alternatively use as many connect= settings as you like to connect ONLY to specific peers
#connect=69.164.218.197
#connect=10.0.0.1:8353
#connect=10.0.0.1:8343
# Listening mode, enabled by default except when 'connect' is being used
#listen=1
@ -110,7 +110,7 @@ @@ -110,7 +110,7 @@
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
# Listen for RPC connections on this TCP port:
#rpcport=8352
#rpcport=8342
# You can use Starwels or starwelsd to send commands to Starwels/starwelsd
# running on another host using this option:

2
contrib/linearize/README.md

@ -12,7 +12,7 @@ Required configuration file settings for linearize-hashes: @@ -12,7 +12,7 @@ Required configuration file settings for linearize-hashes:
Optional config file setting for linearize-hashes:
* RPC: `host` (Default: `127.0.0.1`)
* RPC: `port` (Default: `8352`)
* RPC: `port` (Default: `8342`)
* Blockchain: `min_height`, `max_height`
* `rev_hash_bytes`: If true, the written block hash list will be
byte-reversed. (In other words, the hash returned by getblockhash will have its

12
contrib/linearize/example-linearize.cfg

@ -5,10 +5,10 @@ rpcpassword=somepassword @@ -5,10 +5,10 @@ rpcpassword=somepassword
host=127.0.0.1
#mainnet default
port=8352
port=8342
#testnet default
#port=18352
#ai default
#port=8332
#regtest default
#port=18443
@ -23,10 +23,10 @@ netmagic=f9beb4d9 @@ -23,10 +23,10 @@ netmagic=f9beb4d9
genesis=000000003d69a915e9da53348c5c272978bb743442e3a6341c11061c125811a2
input=/home/example/.starwels/blocks
# testnet
# ai
#netmagic=0b110907
#genesis=00000000c5a2df98ed0b29d576af8b99b3c6b65052614da34292aa4a109b3004
#input=/home/example/.starwels/testnet3/blocks
#genesis=000000003d69a915e9da53348c5c272978bb743442e3a6341c11061c125811a2
#input=/home/example/.starwels/ai/blocks
# "output" option causes blockchain files to be written to the given location,
# with "output_file" ignored. If not used, "output_file" is used instead.

2
contrib/linearize/linearize-hashes.py

@ -125,7 +125,7 @@ if __name__ == '__main__': @@ -125,7 +125,7 @@ if __name__ == '__main__':
if 'host' not in settings:
settings['host'] = '127.0.0.1'
if 'port' not in settings:
settings['port'] = 8352
settings['port'] = 8342
if 'min_height' not in settings:
settings['min_height'] = 0
if 'max_height' not in settings:

2
contrib/qos/README.md

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
### QoS (Quality of service) ###
This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Starwels network. It limits outbound TCP traffic with a source or destination port of 8353, but not if the destination IP is within a LAN.
This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Starwels network. It limits outbound TCP traffic with a source or destination port of 8343, but not if the destination IP is within a LAN.
This means one can have an always-on starwelsd instance running, and another local starwelsd/starwels-qt instance which connects to this node and receives blocks from it.

10
contrib/qos/tc.sh

@ -44,16 +44,16 @@ fi @@ -44,16 +44,16 @@ fi
# ret=$?
#done
#limit outgoing traffic to and from port 8353. but not when dealing with a host on the local network
#limit outgoing traffic to and from port 8343. but not when dealing with a host on the local network
# (defined by $LOCALNET_V4 and $LOCALNET_V6)
# --set-mark marks packages matching these criteria with the number "2" (v4)
# --set-mark marks packages matching these criteria with the number "4" (v6)
# these packets are filtered by the tc filter with "handle 2"
# this filter sends the packages into the 1:11 class, and this class is limited to ${LIMIT}
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8353 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8353 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8343 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8343 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
if [ ! -z "${LOCALNET_V6}" ] ; then
ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8353 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8353 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8343 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8343 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
fi

18
contrib/rpm/starwels.spec

@ -194,7 +194,7 @@ touch -a -m -t 201504280000 %{buildroot}%{_tmpfilesdir}/starwels.conf @@ -194,7 +194,7 @@ touch -a -m -t 201504280000 %{buildroot}%{_tmpfilesdir}/starwels.conf
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
cat <<EOF > %{buildroot}%{_sysconfdir}/sysconfig/starwels
# Provide options to the starwels daemon here, for example
# OPTIONS="-testnet -disable-wallet"
# OPTIONS="-ai -disable-wallet"
OPTIONS=""
@ -332,10 +332,10 @@ if [ `%{_sbindir}/sestatus |grep -c "disabled"` -eq 0 ]; then @@ -332,10 +332,10 @@ if [ `%{_sbindir}/sestatus |grep -c "disabled"` -eq 0 ]; then
for selinuxvariant in %{selinux_variants}; do
%{_sbindir}/semodule -s ${selinuxvariant} -i %{_datadir}/selinux/${selinuxvariant}/starwels.pp &> /dev/null || :
done
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8352
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8353
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 18352
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 18353
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8342
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8343
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8332
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 8333
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 18443
%{_sbindir}/semanage port -a -t starwels_port_t -p tcp 18444
%{_sbindir}/fixfiles -R starwels-server restore &> /dev/null || :
@ -353,10 +353,10 @@ fi @@ -353,10 +353,10 @@ fi
# SELinux
if [ $1 -eq 0 ]; then
if [ `%{_sbindir}/sestatus |grep -c "disabled"` -eq 0 ]; then
%{_sbindir}/semanage port -d -p tcp 8352
%{_sbindir}/semanage port -d -p tcp 8353
%{_sbindir}/semanage port -d -p tcp 18352
%{_sbindir}/semanage port -d -p tcp 18353
%{_sbindir}/semanage port -d -p tcp 8342
%{_sbindir}/semanage port -d -p tcp 8343
%{_sbindir}/semanage port -d -p tcp 8332
%{_sbindir}/semanage port -d -p tcp 8333
%{_sbindir}/semanage port -d -p tcp 18443
%{_sbindir}/semanage port -d -p tcp 18444
for selinuxvariant in %{selinux_variants}; do

4
contrib/seeds/generate-seeds.py

@ -127,10 +127,10 @@ def main(): @@ -127,10 +127,10 @@ def main():
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
g.write(' */\n')
with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_main', 8353)
process_nodes(g, f, 'pnSeed6_main', 8343)
g.write('\n')
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_test', 18353)
process_nodes(g, f, 'pnSeed6_test', 8333)
g.write('#endif // STARWELS_CHAINPARAMSSEEDS_H\n')
if __name__ == '__main__':

12
contrib/seeds/nodes_main.txt

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
83.240.44.87:8353
91.240.86.126:8353
94.102.26.117:8353
94.130.90.229:8353
109.68.161.188:8353
165.227.118.61:8353
83.240.44.87:8343
91.240.86.126:8343
94.102.26.117:8343
94.130.90.229:8343
109.68.161.188:8343
165.227.118.61:8343

6
contrib/seeds/nodes_test.txt

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
# List of fixed seed nodes for testnet
# List of fixed seed nodes for ai
91.240.86.126:18353
94.102.26.117:18353
91.240.86.126:8333
94.102.26.117:8333
# Onion nodes

2
contrib/starwels-cli.bash-completion

@ -9,7 +9,7 @@ _starwels_rpc() { @@ -9,7 +9,7 @@ _starwels_rpc() {
local rpcargs=()
for i in ${COMP_LINE}; do
case "$i" in
-conf=*|-datadir=*|-regtest|-rpc*|-testnet)
-conf=*|-datadir=*|-regtest|-rpc*|-ai)
rpcargs=( "${rpcargs[@]}" "$i" )
;;
esac

2
contrib/testgen/gen_base58_test_vectors.py

@ -25,7 +25,7 @@ SCRIPT_ADDRESS_TEST = 196 @@ -25,7 +25,7 @@ SCRIPT_ADDRESS_TEST = 196
PRIVKEY = 128
PRIVKEY_TEST = 239
metadata_keys = ['isPrivkey', 'isTestnet', 'addrType', 'isCompressed']
metadata_keys = ['isPrivkey', 'isAi', 'addrType', 'isCompressed']
# templates for valid sequences
templates = [
# prefix, payload_size, suffix, metadata

12
contrib/zmq/zmq_sub.py

@ -7,11 +7,11 @@ @@ -7,11 +7,11 @@
ZMQ example using python3's asyncio
Starwels should be started with the command line arguments:
starwelsd -testnet -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28352 \
-zmqpubrawblock=tcp://127.0.0.1:28352 \
-zmqpubhashtx=tcp://127.0.0.1:28352 \
-zmqpubhashblock=tcp://127.0.0.1:28352
starwelsd -ai -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28342 \
-zmqpubrawblock=tcp://127.0.0.1:28342 \
-zmqpubhashtx=tcp://127.0.0.1:28342 \
-zmqpubhashblock=tcp://127.0.0.1:28342
We use the asyncio library here. `self.handle()` installs itself as a
future at the end of the function. Since it never returns with the event
@ -34,7 +34,7 @@ if not (sys.version_info.major >= 3 and sys.version_info.minor >= 5): @@ -34,7 +34,7 @@ if not (sys.version_info.major >= 3 and sys.version_info.minor >= 5):
print("This example only works with Python 3.5 and greater")
sys.exit(1)
port = 28352
port = 28342
class ZMQHandler():
def __init__(self):

12
contrib/zmq/zmq_sub3.4.py

@ -7,11 +7,11 @@ @@ -7,11 +7,11 @@
ZMQ example using python3's asyncio
Starwels should be started with the command line arguments:
starwelsd -testnet -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28352 \
-zmqpubrawblock=tcp://127.0.0.1:28352 \
-zmqpubhashtx=tcp://127.0.0.1:28352 \
-zmqpubhashblock=tcp://127.0.0.1:28352
starwelsd -ai -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28342 \
-zmqpubrawblock=tcp://127.0.0.1:28342 \
-zmqpubhashtx=tcp://127.0.0.1:28342 \
-zmqpubhashblock=tcp://127.0.0.1:28342
We use the asyncio library here. `self.handle()` installs itself as a
future at the end of the function. Since it never returns with the event
@ -38,7 +38,7 @@ if not (sys.version_info.major >= 3 and sys.version_info.minor >= 4): @@ -38,7 +38,7 @@ if not (sys.version_info.major >= 3 and sys.version_info.minor >= 4):
print("This example only works with Python 3.4 and greater")
sys.exit(1)
port = 28352
port = 28342
class ZMQHandler():
def __init__(self):

2
depends/packages/qt.mk

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
PACKAGE=qt
$(package)_version=5.7.1
$(package)_download_path=http://download.qt.io/official_releases/qt/5.7/$($(package)_version)/submodules
$(package)_download_path=http://download.qt.io/archive/qt/5.7/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=95f83e532d23b3ddbde7973f380ecae1bac13230340557276f75f2e37984e410

8
doc/REST-interface.md

@ -3,7 +3,7 @@ Unauthenticated REST Interface @@ -3,7 +3,7 @@ Unauthenticated REST Interface
The REST API can be enabled with the `-rest` option.
The interface runs on the same port as the JSON-RPC interface, by default port 8352 for mainnet, port 18352 for testnet,
The interface runs on the same port as the JSON-RPC interface, by default port 8342 for mainnet, port 8332 for ai,
and port 18443 for regtest.
Supported API
@ -36,7 +36,7 @@ Given a block hash: returns <COUNT> amount of blockheaders in upward direction. @@ -36,7 +36,7 @@ Given a block hash: returns <COUNT> amount of blockheaders in upward direction.
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)
* chain : (string) current network name as defined in BIP70 (main, ai, 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
@ -58,7 +58,7 @@ https://github.com/starwels/bips/blob/master/bip-0064.mediawiki @@ -58,7 +58,7 @@ https://github.com/starwels/bips/blob/master/bip-0064.mediawiki
Example:
```
$ curl localhost:18352/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
$ curl localhost:8332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
{
"chainHeight" : 325347,
"chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
@ -100,4 +100,4 @@ Only supports JSON as output format. @@ -100,4 +100,4 @@ Only supports JSON as output format.
Risks
-------------
Running a web browser on the same node with a REST enabled starwelsd can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8352/rest/tx/1234567890.json">` which might break the nodes privacy.
Running a web browser on the same node with a REST enabled starwelsd can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8342/rest/tx/1234567890.json">` which might break the nodes privacy.

8
doc/developer-notes.md

@ -151,9 +151,9 @@ on all categories (and give you a very large debug.log file). @@ -151,9 +151,9 @@ on all categories (and give you a very large debug.log file).
The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt
to see it.
**testnet and regtest modes**
**ai and regtest modes**
Run with the -testnet option to run with "play starwelss" on the test network, if you
Run with the -ai option to run with "play starwelss" on the ai network, if you
are testing multi-machine code that needs to operate across the internet.
If you are testing something that can run on one machine, run with the -regtest option.
@ -228,7 +228,7 @@ Threads @@ -228,7 +228,7 @@ Threads
- ThreadMapPort : Universal plug-and-play startup/shutdown
- ThreadSocketHandler : Sends/Receives data from peers on port 8353.
- ThreadSocketHandler : Sends/Receives data from peers on port 8343.
- ThreadOpenAddedConnections : Opens network connections to added nodes.
@ -240,7 +240,7 @@ Threads @@ -240,7 +240,7 @@ Threads
- ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms.
- ThreadRPCServer : Remote procedure call handler, listens on port 8352 for connections and services them.
- ThreadRPCServer : Remote procedure call handler, listens on port 8342 for connections and services them.
- StarwelsMiner : Generates starwelss (if wallet is enabled).

4
doc/man/starwels-cli.1

@ -36,7 +36,7 @@ be as of a different block from the chain state reported) @@ -36,7 +36,7 @@ be as of a different block from the chain state reported)
.PP
Chain selection options:
.HP
\fB\-testnet\fR
\fB\-ai\fR
.IP
Use the test chain
.HP
@ -56,7 +56,7 @@ Send commands to node running on <ip> (default: 127.0.0.1) @@ -56,7 +56,7 @@ Send commands to node running on <ip> (default: 127.0.0.1)
.HP
\fB\-rpcport=\fR<port>
.IP
Connect to JSON\-RPC on <port> (default: 8352 or testnet: 18352)
Connect to JSON\-RPC on <port> (default: 8342 or ai: 8332)
.HP
\fB\-rpcwait\fR
.IP

14
doc/man/starwels-qt.1

@ -32,9 +32,9 @@ block hash) @@ -32,9 +32,9 @@ block hash)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000002a47ec40e87c18501786717cbebb96efa3bb05505e1c24cce51689e,
testnet:
00000000bf9f221b2acc9bd6ae001ccd5640615a5e4d9ed94bbb3564d3e372bd)
00000000764077b29d13e1cb2484f028a24ef2a44486b6e5d3cb17eb4716c465,
ai:
00000000d7674ad1e7703e7ba02b7611c12fe74de27b6a414cf6e906cc3599e9)
.HP
\fB\-conf=\fR<file>
.IP
@ -213,7 +213,7 @@ Support filtering of blocks and transaction with bloom filters (default: @@ -213,7 +213,7 @@ Support filtering of blocks and transaction with bloom filters (default:
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port> (default: 8353 or testnet: 18353)
Listen for connections on <port> (default: 8343 or ai: 8333)
.HP
\fB\-proxy=\fR<ip:port>
.IP
@ -424,7 +424,7 @@ Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR) @@ -424,7 +424,7 @@ Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
.PP
Chain selection options:
.HP
\fB\-testnet\fR
\fB\-ai\fR
.IP
Use the test chain
.PP
@ -521,8 +521,8 @@ option can be specified multiple times @@ -521,8 +521,8 @@ option can be specified multiple times
.HP
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8352 or testnet:
18352)
Listen for JSON\-RPC connections on <port> (default: 8342 or ai:
8332)
.HP
\fB\-rpcallowip=\fR<ip>
.IP

2
doc/man/starwels-tx.1

@ -31,7 +31,7 @@ Output only the hex\-encoded transaction id of the resultant transaction. @@ -31,7 +31,7 @@ Output only the hex\-encoded transaction id of the resultant transaction.
.PP
Chain selection options:
.HP
\fB\-testnet\fR
\fB\-ai\fR
.IP
Use the test chain
.HP

14
doc/man/starwelsd.1

@ -33,9 +33,9 @@ block hash) @@ -33,9 +33,9 @@ block hash)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000002a47ec40e87c18501786717cbebb96efa3bb05505e1c24cce51689e,
testnet:
00000000bf9f221b2acc9bd6ae001ccd5640615a5e4d9ed94bbb3564d3e372bd)
00000000764077b29d13e1cb2484f028a24ef2a44486b6e5d3cb17eb4716c465,
ai:
00000000d7674ad1e7703e7ba02b7611c12fe74de27b6a414cf6e906cc3599e9)
.HP
\fB\-conf=\fR<file>
.IP
@ -218,7 +218,7 @@ Support filtering of blocks and transaction with bloom filters (default: @@ -218,7 +218,7 @@ Support filtering of blocks and transaction with bloom filters (default:
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port> (default: 8353 or testnet: 18353)
Listen for connections on <port> (default: 8343 or ai: 8333)
.HP
\fB\-proxy=\fR<ip:port>
.IP
@ -429,7 +429,7 @@ Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR) @@ -429,7 +429,7 @@ Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
.PP
Chain selection options:
.HP
\fB\-testnet\fR
\fB\-ai\fR
.IP
Use the test chain
.PP
@ -526,8 +526,8 @@ option can be specified multiple times @@ -526,8 +526,8 @@ option can be specified multiple times
.HP
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8352 or testnet:
18352)
Listen for JSON\-RPC connections on <port> (default: 8342 or ai:
8332)
.HP
\fB\-rpcallowip=\fR<ip>
.IP

2
doc/release-notes/release-notes-0.15.1.md

@ -159,7 +159,7 @@ Low-level RPC changes @@ -159,7 +159,7 @@ Low-level RPC changes
### P2P protocol and network code
- #11397 `27e861a` Improve and document SOCKS code (laanwj)
- #11252 `0fe2a9a` When clearing addrman clear mapInfo and mapAddr (instagibbs)
- #11527 `a2bd86a` Remove my testnet DNS seed (schildbach)
- #11527 `a2bd86a` Remove my ai DNS seed (schildbach)
- #10756 `0a5477c` net processing: swap out signals for an interface class (theuni)
- #11531 `55b7abf` Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)
- #11560 `49bf090` Connect to a new outbound peer if our tip is stale (sdaftuar)

2
doc/release-process.md

@ -15,7 +15,7 @@ Before every minor and major release: @@ -15,7 +15,7 @@ Before every minor and major release:
* Update `src/chainparams.cpp` nMinimumChainWork with information from the getblockchaininfo rpc.
* Update `src/chainparams.cpp` defaultAssumeValid with information from the getblockhash rpc.
- The selected value must not be orphaned so it may be useful to set the value two blocks back from the tip.
- Testnet should be set some tens of thousands back from the tip due to reorgs there.
- Ai should be set some tens of thousands back from the tip due to reorgs there.
- This update should be reviewed with a reindex-chainstate with assumevalid=0 to catch any defect
that causes rejection of blocks in the past history.

8
doc/tor.md

@ -42,11 +42,11 @@ reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equiv @@ -42,11 +42,11 @@ reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equiv
config file):
HiddenServiceDir /var/lib/tor/starwels-service/
HiddenServicePort 8353 127.0.0.1:8353
HiddenServicePort 18353 127.0.0.1:18353
HiddenServicePort 8343 127.0.0.1:8343
HiddenServicePort 8333 127.0.0.1:8333
The directory can be different of course, but (both) port numbers should be equal to
your starwelsd's P2P listen port (8353 by default).
your starwelsd's P2P listen port (8343 by default).
-externalip=X You can tell starwels about its publicly reachable address using
this option, and this can be a .onion address. Given the above
@ -81,7 +81,7 @@ as well, use `discover` instead: @@ -81,7 +81,7 @@ as well, use `discover` instead:
./starwelsd ... -discover
and open port 8353 on your firewall (or use -upnp).
and open port 8343 on your firewall (or use -upnp).
If you only want to use Tor to reach onion addresses, but not use it as a proxy
for normal IPv4/IPv6 communication, use:

2
doc/zmq.md

@ -66,7 +66,7 @@ address. The same address can be used in more than one notification. @@ -66,7 +66,7 @@ address. The same address can be used in more than one notification.
For instance:
$ starwelsd -zmqpubhashtx=tcp://127.0.0.1:28352 \
$ starwelsd -zmqpubhashtx=tcp://127.0.0.1:28342 \
-zmqpubrawtx=ipc:///tmp/starwelsd.tx.raw
Each PUB notification has a topic and body, where the header

4
share/setup.nsi.in

@ -93,7 +93,7 @@ Section -post SEC0001 @@ -93,7 +93,7 @@ Section -post SEC0001
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory $SMPROGRAMS\$StartMenuGroup
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\@STARWELS_GUI_NAME@@EXEEXT@
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (testnet, @WINDOWS_BITS@-bit).lnk" "$INSTDIR\@STARWELS_GUI_NAME@@EXEEXT@" "-testnet" "$INSTDIR\@STARWELS_GUI_NAME@@EXEEXT@" 1
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (ai, @WINDOWS_BITS@-bit).lnk" "$INSTDIR\@STARWELS_GUI_NAME@@EXEEXT@" "-ai" "$INSTDIR\@STARWELS_GUI_NAME@@EXEEXT@" 1
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe
!insertmacro MUI_STARTMENU_WRITE_END
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
@ -137,7 +137,7 @@ Section -un.post UNSEC0001 @@ -137,7 +137,7 @@ Section -un.post UNSEC0001
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (testnet, @WINDOWS_BITS@-bit).lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (ai, @WINDOWS_BITS@-bit).lnk"
Delete /REBOOTOK "$SMSTARTUP\Starwels.lnk"
Delete /REBOOTOK $INSTDIR\uninstall.exe
Delete /REBOOTOK $INSTDIR\debug.log

2
src/Makefile.qt.include

@ -271,7 +271,7 @@ RES_ICONS = \ @@ -271,7 +271,7 @@ RES_ICONS = \
qt/res/icons/about.png \
qt/res/icons/about_qt.png \
qt/res/icons/starwels.ico \
qt/res/icons/starwels_testnet.ico \
qt/res/icons/starwels_ai.ico \
qt/res/icons/starwels.png \
qt/res/icons/chevron.png \
qt/res/icons/clock1.png \

4
src/base58.cpp

@ -270,14 +270,14 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par @@ -270,14 +270,14 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
uint160 hash;
if (DecodeBase58Check(str, data)) {
// base58-encoded Starwels addresses.
// Public-key-hash-addresses have version 0 (or 111 testnet).
// Public-key-hash-addresses have version 0 (or 111 ai).
// The data vector contains RIPEMD160(SHA256(pubkey)), where pubkey is the serialized public key.
const std::vector<unsigned char>& pubkey_prefix = params.Base58Prefix(CChainParams::PUBKEY_ADDRESS);
if (data.size() == hash.size() + pubkey_prefix.size() && std::equal(pubkey_prefix.begin(), pubkey_prefix.end(), data.begin())) {
std::copy(data.begin() + pubkey_prefix.size(), data.end(), hash.begin());
return CKeyID(hash);
}
// Script-hash-addresses have version 5 (or 196 testnet).
// Script-hash-addresses have version 5 (or 196 ai).
// The data vector contains RIPEMD160(SHA256(cscript)), where cscript is the serialized redemption script.
const std::vector<unsigned char>& script_prefix = params.Base58Prefix(CChainParams::SCRIPT_ADDRESS);
if (data.size() == hash.size() + script_prefix.size() && std::equal(script_prefix.begin(), script_prefix.end(), data.begin())) {

130
src/chainparams.cpp

@ -66,35 +66,35 @@ public: @@ -66,35 +66,35 @@ public:
consensus.nSubsidyHalvingInterval = 210000;
consensus.BIP16Height = 173805;
consensus.BIP34Height = 227931;
consensus.BIP34Hash = uint256S("0x00");
consensus.BIP34Hash = uint256S("0x00000000ac6a39893714f4240301f40abff1afcdcaf51d2f40ce6675a73f0961");
consensus.BIP65Height = 388381;
consensus.BIP66Height = 363725;
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
consensus.nPowTargetSpacing = 10 * 60;
consensus.nPowTargetTimespan = 2 * 24 * 84;
consensus.nPowTargetSpacing = 2; // 2 second
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1493596800; // May 1 Monday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1525132800; // May 1 Tuesday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1498867200; // July 1 Saturday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1530403200; // July 1 Sunday, 2018
// Deployment of BIP68, BIP112, and BIP113.
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].bit = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1496275200; // June 1 Thursday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1527811200; // June 1 Friday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1501545600; // August 1 Tuesday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1533081600; // August 1 Wednesday, 2018
// Deployment of SegWit (BIP141, BIP143, and BIP147)
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1498867200; // July 1 Saturday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1530403200; // July 1 Sunday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1504224000; // September 1 Friday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1535760000; // September 1 Saturday, 2018
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000010c410c410c4");
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000100110011001");
// By default assume that the signatures in ancestors of this block are valid.
consensus.defaultAssumeValid = uint256S("0x0000000002a47ec40e87c18501786717cbebb96efa3bb05505e1c24cce51689e"); //4096
consensus.defaultAssumeValid = uint256S("0x00000000764077b29d13e1cb2484f028a24ef2a44486b6e5d3cb17eb4716c465"); // 262144
/**
* The message start string is designed to be unlikely to occur in normal data.
@ -105,7 +105,7 @@ public: @@ -105,7 +105,7 @@ public:
pchMessageStart[1] = 0xbe;
pchMessageStart[2] = 0xb4;
pchMessageStart[3] = 0xd9;
nDefaultPort = 8353;
nDefaultPort = 8343;
nPruneAfterHeight = 100000;
genesis = CreateGenesisBlock(1484870400, 2121032621, 0x1d00ffff, 1, 50 * COIN);
@ -125,7 +125,7 @@ public: @@ -125,7 +125,7 @@ public:
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};
bech32_hrp = "bc";
bech32_hrp = "ai";
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
@ -137,15 +137,19 @@ public: @@ -137,15 +137,19 @@ public:
{
{1024, uint256S("0x00000000fb559851169e0d915093533d31af0d963e06a7d80a20496f9cfd2b9f")},
{2048, uint256S("0x00000000a753b360bb5d54908378d999132fbeb415279ef530b397ae249cbef4")},
{4096, uint256S("0x0000000002a47ec40e87c18501786717cbebb96efa3bb05505e1c24cce51689e")},
{8196, uint256S("0x000000001f113e4ca15ba771c7fae3b077838a8c5ecd17512c0625982df8bdae")},
{4096, uint256S("0x00000000d7674ad1e7703e7ba02b7611c12fe74de27b6a414cf6e906cc3599e9")},
{8192, uint256S("0x000000007039ae6930925c9c6297835642ea5a4d6f32cef2f6b84867e049fff8")},
{16384, uint256S("0x00000000b6b20859ba118746cb4bbe4a52adbe504fceb2105092fd1b4234afc9")},
{32768, uint256S("0x00000000cc19cff47d676ad56594e695ac96a1d2781a83a5fd1a7702b98a9a65")},
{65536, uint256S("0x00000000c6814c6715cda6f76b08b967abc0ea70aa3f8db8e8c62206477cb749")},
{131072, uint256S("0x00000000dbff9cae44489b3c02bbd556b67db5e3d21318c35cca0b6c361e6944")},
}
};
chainTxData = ChainTxData{
// Data as of block 00000000003ec9e9c4b599482c579e4d23f69b69978f0a2a95a00aa526a2b106 (height 16392).
1522012140, // * UNIX timestamp of last known number of transactions
16485, // * total number of transactions between genesis and that timestamp
// Data as of block 00000000764077b29d13e1cb2484f028a24ef2a44486b6e5d3cb17eb4716c465 (height 262144).
1530692464, // * UNIX timestamp of last known number of transactions
262230, // * total number of transactions between genesis and that timestamp
// (the tx=... number in the SetBestChain debug.log lines)
3.5 // * estimated number of transactions per second after that timestamp
};
@ -153,87 +157,89 @@ public: @@ -153,87 +157,89 @@ public:
};
/**
* Testnet (v3)
* Starwels Ai Main Network
*/
class CTestNetParams : public CChainParams {
public:
CTestNetParams() {
strNetworkID = "test";
strNetworkID = "main";
consensus.nSubsidyHalvingInterval = 210000;
consensus.BIP16Height = 514;
consensus.BIP34Height = 21111;
consensus.BIP34Hash = uint256S("0x00");
consensus.BIP65Height = 581885;
consensus.BIP66Height = 330776;
consensus.BIP16Height = 173805;
consensus.BIP34Height = 227931;
consensus.BIP34Hash = uint256S("0x00000000ac6a39893714f4240301f40abff1afcdcaf51d2f40ce6675a73f0961");
consensus.BIP65Height = 388381;
consensus.BIP66Height = 363725;
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
consensus.nPowTargetSpacing = 10 * 60;
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.nPowTargetTimespan = 2 * 24 * 84;
consensus.nPowTargetSpacing = 2; // 2 second
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1493596800; // May 1 Monday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1525132800; // May 1 Tuesday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1498867200; // July 1 Saturday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1530403200; // July 1 Sunday, 2018
// Deployment of BIP68, BIP112, and BIP113.
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].bit = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1496275200; // June 1 Thursday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1527811200; // June 1 Friday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1501545600; // August 1 Tuesday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1533081600; // August 1 Wednesday, 2018
// Deployment of SegWit (BIP141, BIP143, and BIP147)
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1498867200; // July 1 Saturday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1530403200; // July 1 Sunday, 2018
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1504224000; // September 1 Friday, 2017
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1535760000; // September 1 Saturday, 2018
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000020102010201");
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000100110011001");
// By default assume that the signatures in ancestors of this block are valid.
consensus.defaultAssumeValid = uint256S("0x00000000bf9f221b2acc9bd6ae001ccd5640615a5e4d9ed94bbb3564d3e372bd"); //512
consensus.defaultAssumeValid = uint256S("0x00000000d7674ad1e7703e7ba02b7611c12fe74de27b6a414cf6e906cc3599e9"); // 4096
pchMessageStart[0] = 0x0b;
pchMessageStart[1] = 0x11;
pchMessageStart[2] = 0x09;
pchMessageStart[3] = 0x07;
nDefaultPort = 18353;
nPruneAfterHeight = 1000;
pchMessageStart[0] = 0xf9;
pchMessageStart[1] = 0xbe;
pchMessageStart[2] = 0xb4;
pchMessageStart[3] = 0xd9;
nDefaultPort = 8343;
nPruneAfterHeight = 100000;
genesis = CreateGenesisBlock(1484956800, 2266491446, 0x1d00ffff, 1, 50 * COIN);
genesis = CreateGenesisBlock(1484870400, 2121032621, 0x1d00ffff, 1, 50 * COIN);
consensus.hashGenesisBlock = genesis.GetHash();
assert(consensus.hashGenesisBlock == uint256S("0x00000000c5a2df98ed0b29d576af8b99b3c6b65052614da34292aa4a109b3004"));
assert(consensus.hashGenesisBlock == uint256S("0x000000003d69a915e9da53348c5c272978bb743442e3a6341c11061c125811a2"));
assert(genesis.hashMerkleRoot == uint256S("0x7e2c59b1404833991962e7e6d95a1d4f81f03fffeaf79c0d25d97d24182db485"));
vFixedSeeds.clear();
vSeeds.clear();
// nodes with support for servicebits filtering should be at the top
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,0);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,128);
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};
bech32_hrp = "tb";
bech32_hrp = "ai";
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
fDefaultConsistencyChecks = false;
fRequireStandard = false;
fRequireStandard = true;
fMineBlocksOnDemand = false;
checkpointData = {
{
{256, uint256S("00000000284f483ce4d56f4f1a026363d2d0daf2c18f77cd5e8969166ca16212")},
{1024, uint256S("0x00000000fb559851169e0d915093533d31af0d963e06a7d80a20496f9cfd2b9f")},
{2048, uint256S("0x00000000a753b360bb5d54908378d999132fbeb415279ef530b397ae249cbef4")},
}
};
chainTxData = ChainTxData{
// Data as of block 00000000bf9f221b2acc9bd6ae001ccd5640615a5e4d9ed94bbb3564d3e372bd (height 512)
1518787878,
536,
0.09
// Data as of block 00000000d7674ad1e7703e7ba02b7611c12fe74de27b6a414cf6e906cc3599e9 (height 4096)
1529914513, // * UNIX timestamp of last known number of transactions
4172, // * total number of transactions between genesis and that timestamp
// (the tx=... number in the SetBestChain debug.log lines)
3.5 // * estimated number of transactions per second after that timestamp
};
}
@ -253,8 +259,8 @@ public: @@ -253,8 +259,8 @@ public:
consensus.BIP65Height = 1351; // BIP65 activated on regtest (Used in rpc activation tests)
consensus.BIP66Height = 1251; // BIP66 activated on regtest (Used in rpc activation tests)
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
consensus.nPowTargetSpacing = 10 * 60;
consensus.nPowTargetTimespan = 2 * 24 * 84;
consensus.nPowTargetSpacing = 2; // 2 second
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.fPowNoRetargeting = true;
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
@ -312,7 +318,7 @@ public: @@ -312,7 +318,7 @@ public:
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
bech32_hrp = "bcrt";
bech32_hrp = "airt";
}
};
@ -327,7 +333,7 @@ std::unique_ptr<CChainParams> CreateChainParams(const std::string& chain) @@ -327,7 +333,7 @@ std::unique_ptr<CChainParams> CreateChainParams(const std::string& chain)
{
if (chain == CBaseChainParams::MAIN)
return std::unique_ptr<CChainParams>(new CMainParams());
else if (chain == CBaseChainParams::TESTNET)
else if (chain == CBaseChainParams::AI)
return std::unique_ptr<CChainParams>(new CTestNetParams());
else if (chain == CBaseChainParams::REGTEST)
return std::unique_ptr<CChainParams>(new CRegTestParams());

2
src/chainparams.h

@ -34,7 +34,7 @@ struct ChainTxData { @@ -34,7 +34,7 @@ struct ChainTxData {
/**
* CChainParams defines various tweakable parameters of a given instance of the
* Starwels system. There are three: the main network on which people trade goods
* and services, the public test network which gets reset from time to time and
* and services, the public ai network which gets reset from time to time and
* a regression test mode which is intended for private networks only. It has
* minimal difficulty to ensure that blocks can be found instantly.
*/

20
src/chainparamsbase.cpp

@ -11,13 +11,13 @@ @@ -11,13 +11,13 @@
#include <assert.h>
const std::string CBaseChainParams::MAIN = "main";
const std::string CBaseChainParams::TESTNET = "test";
const std::string CBaseChainParams::AI = "test";
const std::string CBaseChainParams::REGTEST = "regtest";
void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp)
{
strUsage += HelpMessageGroup(_("Chain selection options:"));
strUsage += HelpMessageOpt("-testnet", _("Use the test chain"));
strUsage += HelpMessageOpt("-ai", _("Use the test chain"));
if (debugHelp) {
strUsage += HelpMessageOpt("-regtest", "Enter regression test mode, which uses a special chain in which blocks can be solved instantly. "
"This is intended for regression testing tools and app development.");
@ -32,20 +32,20 @@ class CBaseMainParams : public CBaseChainParams @@ -32,20 +32,20 @@ class CBaseMainParams : public CBaseChainParams
public:
CBaseMainParams()
{
nRPCPort = 8352;
nRPCPort = 8342;
}
};
/**
* Testnet (v3)
* Ai (v3)
*/
class CBaseTestNetParams : public CBaseChainParams
{
public:
CBaseTestNetParams()
{
nRPCPort = 18352;
strDataDir = "testnet3";
nRPCPort = 8332;
strDataDir = "ai";
}
};
@ -74,7 +74,7 @@ std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain @@ -74,7 +74,7 @@ std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain
{
if (chain == CBaseChainParams::MAIN)
return std::unique_ptr<CBaseChainParams>(new CBaseMainParams());
else if (chain == CBaseChainParams::TESTNET)
else if (chain == CBaseChainParams::AI)
return std::unique_ptr<CBaseChainParams>(new CBaseTestNetParams());
else if (chain == CBaseChainParams::REGTEST)
return std::unique_ptr<CBaseChainParams>(new CBaseRegTestParams());
@ -90,13 +90,13 @@ void SelectBaseParams(const std::string& chain) @@ -90,13 +90,13 @@ void SelectBaseParams(const std::string& chain)
std::string ChainNameFromCommandLine()
{
bool fRegTest = gArgs.GetBoolArg("-regtest", false);
bool fTestNet = gArgs.GetBoolArg("-testnet", false);
bool fTestNet = gArgs.GetBoolArg("-ai", false);
if (fTestNet && fRegTest)
throw std::runtime_error("Invalid combination of -regtest and -testnet.");
throw std::runtime_error("Invalid combination of -regtest and -ai.");
if (fRegTest)
return CBaseChainParams::REGTEST;
if (fTestNet)
return CBaseChainParams::TESTNET;
return CBaseChainParams::AI;
return CBaseChainParams::MAIN;
}

4
src/chainparamsbase.h

@ -18,7 +18,7 @@ class CBaseChainParams @@ -18,7 +18,7 @@ class CBaseChainParams
public:
/** BIP70 chain name strings (main, test or regtest) */
static const std::string MAIN;
static const std::string TESTNET;
static const std::string AI;
static const std::string REGTEST;
const std::string& DataDir() const { return strDataDir; }
@ -54,7 +54,7 @@ const CBaseChainParams& BaseParams(); @@ -54,7 +54,7 @@ const CBaseChainParams& BaseParams();
void SelectBaseParams(const std::string& chain);
/**
* Looks for -regtest, -testnet and returns the appropriate BIP70 chain name.
* Looks for -regtest, -ai and returns the appropriate BIP70 chain name.
* @return CBaseChainParams::MAX_NETWORK_TYPES if an invalid combination is given. CBaseChainParams::MAIN by default.
*/
std::string ChainNameFromCommandLine();

16
src/chainparamsseeds.h

@ -8,16 +8,16 @@ @@ -8,16 +8,16 @@
* IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.
*/
static SeedSpec6 pnSeed6_main[] = {
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x53,0xF0,0x2C,0x57}, 8353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5B,0xF0,0x56,0x7E}, 8353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x66,0x1A,0x75}, 8353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x82,0x5A,0xE5}, 8353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6D,0x44,0xA1,0xBC}, 8353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xA5,0xE3,0x76,0x3D}, 8353}
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x53,0xF0,0x2C,0x57}, 8343},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5B,0xF0,0x56,0x7E}, 8343},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x66,0x1A,0x75}, 8343},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x82,0x5A,0xE5}, 8343},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6D,0x44,0xA1,0xBC}, 8343},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xA5,0xE3,0x76,0x3D}, 8343}
};
static SeedSpec6 pnSeed6_test[] = {
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5B,0xF0,0x56,0x7E}, 18353},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x66,0x1A,0x75}, 18353}
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5B,0xF0,0x56,0x7E}, 8333},
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5E,0x66,0x1A,0x75}, 8333}
};
#endif // STARWELS_CHAINPARAMSSEEDS_H

16
src/init.cpp

@ -320,9 +320,9 @@ void OnRPCStopped() @@ -320,9 +320,9 @@ void OnRPCStopped()
std::string HelpMessage(HelpMessageMode mode)
{
const auto defaultBaseParams = CreateBaseChainParams(CBaseChainParams::MAIN);
const auto testnetBaseParams = CreateBaseChainParams(CBaseChainParams::TESTNET);
const auto aiBaseParams = CreateBaseChainParams(CBaseChainParams::AI);
const auto defaultChainParams = CreateChainParams(CBaseChainParams::MAIN);
const auto testnetChainParams = CreateChainParams(CBaseChainParams::TESTNET);
const auto aiChainParams = CreateChainParams(CBaseChainParams::AI);
const bool showDebug = gArgs.GetBoolArg("-help-debug", false);
// When adding new options to the categories, please keep and ensure alphabetical ordering.
@ -334,7 +334,7 @@ std::string HelpMessage(HelpMessageMode mode) @@ -334,7 +334,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-blocknotify=<cmd>", _("Execute command when the best block changes (%s in cmd is replaced by block hash)"));
if (showDebug)
strUsage += HelpMessageOpt("-blocksonly", strprintf(_("Whether to operate in a blocks only mode (default: %u)"), DEFAULT_BLOCKSONLY));
strUsage +=HelpMessageOpt("-assumevalid=<hex>", strprintf(_("If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet: %s)"), defaultChainParams->GetConsensus().defaultAssumeValid.GetHex(), testnetChainParams->GetConsensus().defaultAssumeValid.GetHex()));
strUsage +=HelpMessageOpt("-assumevalid=<hex>", strprintf(_("If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, ai: %s)"), defaultChainParams->GetConsensus().defaultAssumeValid.GetHex(), aiChainParams->GetConsensus().defaultAssumeValid.GetHex()));
strUsage += HelpMessageOpt("-conf=<file>", strprintf(_("Specify configuration file (default: %s)"), STARWELS_CONF_FILENAME));
if (mode == HMM_STARWELSD)
{
@ -355,7 +355,7 @@ std::string HelpMessage(HelpMessageMode mode) @@ -355,7 +355,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-maxmempool=<n>", strprintf(_("Keep the transaction memory pool below <n> megabytes (default: %u)"), DEFAULT_MAX_MEMPOOL_SIZE));
strUsage += HelpMessageOpt("-mempoolexpiry=<n>", strprintf(_("Do not keep transactions in the mempool longer than <n> hours (default: %u)"), DEFAULT_MEMPOOL_EXPIRY));
if (showDebug) {
strUsage += HelpMessageOpt("-minimumchainwork=<hex>", strprintf("Minimum work assumed to exist on a valid chain in hex (default: %s, testnet: %s)", defaultChainParams->GetConsensus().nMinimumChainWork.GetHex(), testnetChainParams->GetConsensus().nMinimumChainWork.GetHex()));
strUsage += HelpMessageOpt("-minimumchainwork=<hex>", strprintf("Minimum work assumed to exist on a valid chain in hex (default: %s, ai: %s)", defaultChainParams->GetConsensus().nMinimumChainWork.GetHex(), aiChainParams->GetConsensus().nMinimumChainWork.GetHex()));
}
strUsage += HelpMessageOpt("-persistmempool", strprintf(_("Whether to save the mempool on shutdown and load on restart (default: %u)"), DEFAULT_PERSIST_MEMPOOL));
strUsage += HelpMessageOpt("-blockreconstructionextratxn=<n>", strprintf(_("Extra transactions to keep in memory for compact block reconstructions (default: %u)"), DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN));
@ -395,7 +395,7 @@ std::string HelpMessage(HelpMessageMode mode) @@ -395,7 +395,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-onlynet=<net>", _("Only connect to nodes in network <net> (ipv4, ipv6 or onion)"));
strUsage += HelpMessageOpt("-permitbaremultisig", strprintf(_("Relay non-P2SH multisig (default: %u)"), DEFAULT_PERMIT_BAREMULTISIG));
strUsage += HelpMessageOpt("-peerbloomfilters", strprintf(_("Support filtering of blocks and transaction with bloom filters (default: %u)"), DEFAULT_PEERBLOOMFILTERS));
strUsage += HelpMessageOpt("-port=<port>", strprintf(_("Listen for connections on <port> (default: %u or testnet: %u)"), defaultChainParams->GetDefaultPort(), testnetChainParams->GetDefaultPort()));
strUsage += HelpMessageOpt("-port=<port>", strprintf(_("Listen for connections on <port> (default: %u or ai: %u)"), defaultChainParams->GetDefaultPort(), aiChainParams->GetDefaultPort()));
strUsage += HelpMessageOpt("-proxy=<ip:port>", _("Connect through SOCKS5 proxy"));
strUsage += HelpMessageOpt("-proxyrandomize", strprintf(_("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)"), DEFAULT_PROXYRANDOMIZE));
strUsage += HelpMessageOpt("-seednode=<ip>", _("Connect to a node to retrieve peer addresses, and disconnect"));
@ -475,7 +475,7 @@ std::string HelpMessage(HelpMessageMode mode) @@ -475,7 +475,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageGroup(_("Node relay options:"));
if (showDebug) {
strUsage += HelpMessageOpt("-acceptnonstdtxn", strprintf("Relay and mine \"non-standard\" transactions (%sdefault: %u)", "testnet/regtest only; ", !testnetChainParams->RequireStandard()));
strUsage += HelpMessageOpt("-acceptnonstdtxn", strprintf("Relay and mine \"non-standard\" transactions (%sdefault: %u)", "ai/regtest only; ", !aiChainParams->RequireStandard()));
strUsage += HelpMessageOpt("-incrementalrelayfee=<amt>", strprintf("Fee rate (in %s/kB) used to define cost of relay, used for mempool limiting and BIP 125 replacement. (default: %s)", CURRENCY_UNIT, FormatMoney(DEFAULT_INCREMENTAL_RELAY_FEE)));
strUsage += HelpMessageOpt("-dustrelayfee=<amt>", strprintf("Fee rate (in %s/kB) used to defined dust, the value of an output such that it will cost more than its value in fees at this fee rate to spend it. (default: %s)", CURRENCY_UNIT, FormatMoney(DUST_RELAY_TX_FEE)));
}
@ -502,7 +502,7 @@ std::string HelpMessage(HelpMessageMode mode) @@ -502,7 +502,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-rpcuser=<user>", _("Username for JSON-RPC connections"));
strUsage += HelpMessageOpt("-rpcpassword=<pw>", _("Password for JSON-RPC connections"));
strUsage += HelpMessageOpt("-rpcauth=<userpw>", _("Username and hashed password for JSON-RPC connections. The field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A canonical python script is included in share/rpcuser. The client then connects normally using the rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This option can be specified multiple times"));
strUsage += HelpMessageOpt("-rpcport=<port>", strprintf(_("Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)"), defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort()));
strUsage += HelpMessageOpt("-rpcport=<port>", strprintf(_("Listen for JSON-RPC connections on <port> (default: %u or ai: %u)"), defaultBaseParams->RPCPort(), aiBaseParams->RPCPort()));
strUsage += HelpMessageOpt("-rpcallowip=<ip>", _("Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times"));
strUsage += HelpMessageOpt("-rpcserialversion", strprintf(_("Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)"), DEFAULT_RPC_SERIALIZE_VERSION));
strUsage += HelpMessageOpt("-rpcthreads=<n>", strprintf(_("Set the number of threads to service RPC calls (default: %d)"), DEFAULT_HTTP_THREADS));
@ -1442,7 +1442,7 @@ bool AppInitMain() @@ -1442,7 +1442,7 @@ bool AppInitMain()
}
// If the loaded chain has a wrong genesis, bail out immediately
// (we're likely using a testnet datadir, or the other way around).
// (we're likely using a ai datadir, or the other way around).
if (!mapBlockIndex.empty() && mapBlockIndex.count(chainparams.GetConsensus().hashGenesisBlock) == 0)
return InitError(_("Incorrect or no genesis block found. Wrong datadir for network?"));

2
src/miner.cpp

@ -52,7 +52,7 @@ int64_t UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParam @@ -52,7 +52,7 @@ int64_t UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParam
if (nOldTime < nNewTime)
pblock->nTime = nNewTime;
// Updating time can change work required on testnet:
// Updating time can change work required on ai:
if (consensusParams.fPowAllowMinDifficultyBlocks)
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock, consensusParams);

2
src/pow.cpp

@ -20,7 +20,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead @@ -20,7 +20,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
{
if (params.fPowAllowMinDifficultyBlocks)
{
// Special difficulty rule for testnet:
// Special difficulty rule for ai:
// If the new block's timestamp is more than 2* 10 minutes
// then allow mining of a min-difficulty block.
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*2)

2
src/qt/guiconstants.h

@ -51,6 +51,6 @@ static const int MAX_URI_LENGTH = 255; @@ -51,6 +51,6 @@ static const int MAX_URI_LENGTH = 255;
#define QAPP_ORG_NAME "Starwels"
#define QAPP_ORG_DOMAIN "github.com/starwels"
#define QAPP_APP_NAME_DEFAULT "Starwels-Qt"
#define QAPP_APP_NAME_TESTNET "Starwels-Qt-testnet"
#define QAPP_APP_NAME_AI "Starwels-Qt-ai"
#endif // STARWELS_QT_GUICONSTANTS_H

10
src/qt/guiutil.cpp

@ -616,8 +616,8 @@ fs::path static StartupShortcutPath() @@ -616,8 +616,8 @@ fs::path static StartupShortcutPath()
std::string chain = ChainNameFromCommandLine();
if (chain == CBaseChainParams::MAIN)
return GetSpecialFolderPath(CSIDL_STARTUP) / "Starwels.lnk";
if (chain == CBaseChainParams::TESTNET) // Remove this special case when CBaseChainParams::TESTNET = "testnet4"
return GetSpecialFolderPath(CSIDL_STARTUP) / "Starwels (testnet).lnk";
if (chain == CBaseChainParams::AI) // Remove this special case when CBaseChainParams::AI = "ai4"
return GetSpecialFolderPath(CSIDL_STARTUP) / "Starwels (ai).lnk";
return GetSpecialFolderPath(CSIDL_STARTUP) / strprintf("Starwels (%s).lnk", chain);
}
@ -650,8 +650,8 @@ bool SetStartOnSystemStartup(bool fAutoStart) @@ -650,8 +650,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
// Start client minimized
QString strArgs = "-min";
// Set -testnet /-regtest options
strArgs += QString::fromStdString(strprintf(" -testnet=%d -regtest=%d", gArgs.GetBoolArg("-testnet", false), gArgs.GetBoolArg("-regtest", false)));
// Set -ai /-regtest options
strArgs += QString::fromStdString(strprintf(" -ai=%d -regtest=%d", gArgs.GetBoolArg("-ai", false), gArgs.GetBoolArg("-regtest", false)));
#ifdef UNICODE
boost::scoped_array<TCHAR> args(new TCHAR[strArgs.length() + 1]);
@ -761,7 +761,7 @@ bool SetStartOnSystemStartup(bool fAutoStart) @@ -761,7 +761,7 @@ bool SetStartOnSystemStartup(bool fAutoStart)
optionFile << "Name=Starwels\n";
else
optionFile << strprintf("Name=Starwels (%s)\n", chain);
optionFile << "Exec=" << pszExePath << strprintf(" -min -testnet=%d -regtest=%d\n", gArgs.GetBoolArg("-testnet", false), gArgs.GetBoolArg("-regtest", false));
optionFile << "Exec=" << pszExePath << strprintf(" -min -ai=%d -regtest=%d\n", gArgs.GetBoolArg("-ai", false), gArgs.GetBoolArg("-regtest", false));
optionFile << "Terminal=false\n";
optionFile << "Hidden=false\n";
optionFile.close();

8
src/qt/locale/starwels_af.ts

@ -1990,12 +1990,12 @@ @@ -1990,12 +1990,12 @@
<translation>(standaard: %s)</translation>
</message>
<message>
<source>Listen for JSON-RPC connections on &lt;port&gt; (default: %u or testnet: %u)</source>
<translation>Luister vir JSON-RPC konneksies op &lt;port&gt; (verstek: %u of testnet: %u)</translation>
<source>Listen for JSON-RPC connections on &lt;port&gt; (default: %u or ai: %u)</source>
<translation>Luister vir JSON-RPC konneksies op &lt;port&gt; (verstek: %u of ai: %u)</translation>
</message>
<message>
<source>Listen for connections on &lt;port&gt; (default: %u or testnet: %u)</source>