Copyright (c) 2014-2020 The Dash Core developers
Copyright (c) 2020-2021 The Xazab Core developers
Xazabs gives its users a faster means of transferring crypto with the use of x11 algorithm based on dash technology. Cryptocurrencies have played a vital role in empowering power with various opportunities particularly technologies which have been driving the world economy. Businesses are now implementing various crypto technologies to boost their diverse opportunities where opportunities are profitable in both the rural and urban communities. Xazab comes into play here to take its own opportunity in the digital space where crypto is driving the present economy directly and indirectly. Xazab uses the technology of Duff that is Dash because it follows our own ideas of what a cryptocurrency features should look like. We are separately going to build off our own from this technology just as we have started. Xazab transactions are faster, easier and transactions can be privately sent if you so want. The unique features have been built on this platform just like what dash did from litecoin. Our foundations and services range in different sections which range from providing the world with latest technologies to advertising your platforms in our XAZAB world class advertising platforms. Our wallets range from all platforms including androids and IOS devices which you can download from the Android play stores etc. Xazab utilizes a decentralized system to provide a peer-to-peer connection between people and business owners. For our services, we will only want to be paid in xazab.
Two platforms we will launch are masternode monitor and our major dynamic website were you can sell your products with the use of xazab
- Staying with Core types from Dash
Users will have the ability to register a personalized username of their choice. It will also be possible to set a display name, bio info and profile picture.
Users will be able to request contacts by username and create a list of users they want to transact with.
Users can exchange Dash with friends, family and merchants by username or cryptographic address.
Users will be able to sponsor registrations for new users using the invitations process.
Establishing consensus between L1 and L2 chains based on height of L1.
Implementation and rotation of quorums used for consensus on L2 chain.
Storage of data state in Merkle trees for use with light clients.
Inclusion of BLS signatures in L2 blocks.
Ability to fund identities without ability to double spend.
XAZAB SPECIFICATION
- Name: Xazab
- Ticker: XAZAB
- Algorithm: X11
- Supply: 21 million
- P2P: 30303
- RPC: 31313
- Block Time: 60 seconds
- Reward: 4 XAZAB [ 1.948 Miners + 2.052 for Masternodes]
- Premine blocks: 578,000 (from block height 2 and block height 3)
- Confirmation: 100 blocks
Period 1: 51.3% X 4 = 2.05 XAZAB
Period 2: 52.6% X 4 = 2.104 XAZAB
Period 3: 53.3% X 4 = 2.132 XAZAB
Period 4: 54% X 4 = 2.16 XAZAB
Period 5: 54.6% X 4 = 2.184 XAZAB
Period 6: 55.2% X 4 = 2.208 XAZAB
Period 7: 55.7% X 4 = 2.228 XAZAB
Period 8: 56.2% X 4 = 2.248 XAZAB
Period 9: 56.7% X 4 = 2.268 XAZAB
Period 10: 57.2% X 4 = 2.288 XAZAB
Period 11: 57.7% X 4 = 2.308 XAZAB
Period 12: 58.2% X 4 = 2.328 XAZAB
Period 13: 58.5% X 4 = 2.34 XAZAB
Period 14: 58.8% X 4 = 2.352 XAZAB
Period 15: 59.1% X 4 = 2.364 XAZAB
Period 16: 59.4% X 4 = 2.376 XAZAB
Period 17: 59.7% X 4 = 2.388 XAZAB
Period 18: 59.9% X 4 = 2.396 XAZAB
Period 19: 60% X 4 = 2.40 XAZAB
e6fe1ef39be62d976d3d03bf2b7989ecf3ed3317df9d903879d247a57b189235 xazabcore-0.17.0.1-win64.zip
19d2078b1578293197d3a29006a6f838508f3764d33604d82251ce858b100840 xazabcore-0.17.0.1-osx.dmg
b81eaf197e5649baadb6afda95abedc1b2a3f33ffd2f5119f9b126cb19e20829 xazabcore-0.17.0.1-osx64.tar.gz
06a5dbfeeb6dafbb2236d91559d5b4f8de61a1f9657a312e81dfb8e10133cadb xazabcore-0.17.0.1-x86_64-linux-gnu.tar.gz
8a23c7fe68fa04fc0a825ca5d3203c7dd77b27e3055afac3d060a068fc58024b xazabcore-0.17.0.1-aarch64-linux-gnu.tar.gz
74030f884dc3ca72851671b740be56961f1009bea322116d1df7995238f916dc xazabcore-0.17.0-win64-setup.exe
6b825789c050d7eb9149ff7ec47c2bd77c697bd8dd06c128882db2f75c6dc4ec xazabcore-0.17.0.1-i686-pc-linux-gnu.tar.gz
47283ec48c9a80f2ffc00fd67dab5709a8e6d6b477a7b7bb582e37184ed0cd91 xazabcore-0.17.0.1-arm-linux-gnueabihf.tar.gz
1a095d0c915174ab188dbddcf2a529734ac37d9092ad2aea38ba561895fe44d8 xazabcore-0.17.0-win32-setup.exe
8d7ba2ba5fdd9277ccf59deedf219e1f72ebaf9819715cfbab5e3a32fe18b9cb xazabcore-0.17.0.1-win32.zip
64-bit windows binaries zip file
32-bit windows binaries Installer
32-bit windows binaries zip file
Xazab Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
The master
branch is meant to be stable. Development is normally done in separate branches.
Tags are created to indicate new official,
stable release versions of Xazab Core.
The contribution workflow is described in CONTRIBUTING.md.
To set up a xazab masternode you need 1000 XAZAB, VPS and s Xazab wallet.
- Go to the Desktop wallet Click Tools > Debug console and enter the command into the console section
getnewaddress
From the address generated above send 1000 XAZAB to the address and wait for 15 confirmation
Check the masternode output with this command
masternode outputs
With a vps, linux operating system, login to your user terminal with
ssh root@your-vps-ip
Once you are login, create two new users, one to administer the server and one to run the xazabd
service.
useradd -m -c xazab xazab -s /bin/bash
useradd -m -c "Xazab Admin" xazabadmin -s /bin/bash -G sudo,xazab
NOTE: # The xazab user password can be very long and you are not expected to remember it since we will not use it
< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-32};echo
passwd xazab
For the xazabadmin user, choose a long password and write it down, this is the password you will use from now on to login into the VPS and administer the masternode.
passwd xazabadmin
Once you are done with the above, simply close the terminal by typing exit
which will automatically close the window. Log again into the terminal and use
use whoami
to check that you are login in to the admin user account.
Next is to total disable root login for security purposes. Use the below code to do it. just copy and pass it in the terminal at once. Do not copy one at a time but paste all at once.
``NOTE:``` Do not run it in the root user but in the xazab admin user
if [ `id -u` -ne 0 ]; then
sudo bash -c \
"grep -q \".*PermitRootLogin [ny][oe].*\" /etc/ssh/sshd_config &&\
sed -i 's/.*PermitRootLogin [ny][oe].*/PermitRootLogin no/g' /etc/ssh/sshd_config||\
echo \"PermitRootLogin no\">>/etc/ssh/sshd_config"
else echo "Only run this block as your xazabadmin user, not root."; fi
Now update the system and install other needed packages. Copy all and paste at once into the terminal
sudo apt update -y \
sudo apt upgrade -y \
sudo apt install ufw python virtualenv git unzip pv speedtest-cli -y
Configure a firewall. Copy all and paste at once into the terminal
sudo ufw allow ssh/tcp &&\
sudo ufw limit ssh/tcp &&\
sudo ufw allow 30303/tcp &&\
sudo ufw logging on &&\
sudo ufw enable
if [ $(free -m|grep Swap|awk '{print $2}') -lt 2048 ]
then
echo "Adding 2GB swap..."
sudo bash -c "fallocate -l 2G /var/swapfile&&\
chmod 600 /var/swapfile&&\
mkswap /var/swapfile&&\
swapon /var/swapfile&&\
grep -q \"^/var/swapfile.none.swap.sw.0.0\" /etc/fstab ||\
echo -e \"/var/swapfile\tnone\tswap\tsw\t0\t0\" >>/etc/fstab"
else
echo "You already have enough swap space."
fi
Change the default login port of 22 to any port number your like and kindly remember the new port, this is to add more security to your server. Open the ssh port file with the nano or vi
sudo /etc/ssh/sshd_config
Locate the line where you see
#Port 22
Remove the leading character #
and and remove the 22
and change it to a new port you can remember, lets say i want port 11212 it will now look like this
Port 11212
After changing the above port like that, restart the ssh with the below command
systemctl restart sshd
IMPORTANT: Make sure you allow your new port if not you will be lock out of your server. Use
sudo ufw allow 11212
To allow the VM to use memory more effectively and prevent crashes due to low memory. Run the below to set this parameter.
sudo bash -c "echo \"vm.overcommit_memory=1\">>/etc/sysctl.conf"
Now after the above steps is completed reboot your system with the below method
sudo reboot
After few seconds kindly log back to your xazabadmin panel and check to see if you are now login. Remember that root login is disabled so you cannot login again into the terminal.
ssh xazabadmin@your-vps-ip -p your-new-vps-port
Download the xazab wallet with the below command. Copy the below code at once and paste it in your terminal
cd /tmp/ &&
wget https://github.com/xazab/xazab/releases/download/v0.16.0.0/xazabcore-0.16.0.1-x86_64-linux-gnu.tar.gz
Install the xazab wallet with the below command
sudo bash -c "cd /opt&& rm -f xazab 2>/dev/null;tar xvf /tmp/xazabcore-0.16.0.1-x86_64-linux-gnu.tar.gz&& ln -s xazabcore-0.16.0 xazab"
Xazab package comes with user manuals, run the below command.
sudo bash -c "echo -e \"MANPATH_MAP\t/opt/xazab/bin\t\t/opt/xazab/share/man\">>/etc/manpath.config"
Configure the PATH environment variable for the xazab user so it can run xazab commands, eg xazabd
and xazab-cli
etc
sudo bash -c "echo 'PATH=/opt/xazab/bin:\$PATH'>>/home/xazab/.profile"
Configure the xazab.conf file by running this code on your terminal and remeber to enter your own masternodeblsprivkey=XXXXXXXXX gotten from above.
sudo -u xazab bash -c "mkdir -p /home/xazab/.xazabcore&&cat >/home/xazab/.xazabcore/xazab.conf<<\"EOF\"
#----
rpcuser=rpcuser$(< /dev/urandom tr -dc A-Za-z0-9 | head -c${8};echo)
rpcpassword=rpcpassword$(< /dev/urandom tr -dc A-Za-z0-9 | head -c${8};echo)
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
#----
masternodeblsprivkey=XXXXXXXXXXXXXXXXXXXXXX
externalip=$(curl http://ipecho.net/plain)
#----
EOF"
sudo -i -u xazab bash -c "nano ~/.xazabcore/xazab.conf"
Register the xazabd
deamon as a system process so that is starts automatically when the VPS boots and shutdown automatically when the VPS shutsdown, it will also restart the process if it should crash for some reason.
sudo mkdir -p /etc/systemd/system&&\
sudo bash -c "cat >/etc/systemd/system/xazabd.service<<\"EOF\"
[Unit]
Description=Xazab Core Daemon
After=syslog.target network-online.target
# Notes:
#
# Watch the daemon service actions in the syslog journal with:
# sudo journalctl -u xazabd.service -f
[Service]
Type=forking
User=xazab
Group=xazab
# Make xazabd less likely to be killed when RAM is low.
OOMScoreAdjust=-1000
ExecStart=/opt/xazab/bin/xazabd -pid=/home/xazab/.xazabcore/xazabd.pid
# Time that systemd gives a process to start before shooting it in the head
TimeoutStartSec=10m
# If ExecStop is not set, systemd sends a SIGTERM, which is \"okay\", just not ideal
ExecStop=/opt/xazab/bin/xazab-cli stop
# Time that systemd gives a process to stop before shooting it in the head
TimeoutStopSec=120
Restart=on-failure
# If something triggers an auto-restart, let's wait a bit before taking further action
# Note: This value is in addition to the stop sleep time
RestartSec=120
# In this interval span of time, we allow systemd to start xazabd "burst" number
# of times. With Xazab we really only want one instance started, so... let's
# really limit this. But we want to give systemd some room to attempt to
# correct things. To be honest, I think the way things are configured between
# these settings and TimeoutStartSec, only one instance will be initiated.
StartLimitInterval=300
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
EOF"
The next thing to do is to enable xazabd
sudo systemctl daemon-reload &&\
sudo systemctl enable xazabd &&\
sudo systemctl start xazabd &&\
echo "Xazab is now installed as a system service and initializing..."
systemctl status xazabd.service
sudo journalctl -u dashd.service -f
View the xazabd logs, issue the below command CTRL+C to quit, the logs should be streaming past very quickly.
sudo tail -300f ~/../xazab/.xazabcore/debug.log
To see that xazabd is running correctly, we need to configure and run top
The below steps for configuring top
are optional, but if you do it will make the UI much more user friendly. Copy & paste the block below into the terminal.
echo "H4sICKY9SFsCAy50b3ByYwCt01tv0zAUB/Dn+lP4ibUQRhMnoYNmG2vVXVjHZRuXcQle4qQecRPZ
iRo+EGziCWlD1VoKQ7TfCwdVcvbYiZfoHCU+/v90lDROlgRsxf2AhrBDIwKru7Sf5TDhsUeEIAIO
aNqTj74fD0QNbPsPqAa7sU9cHKXC40593lJO80Q4ugbbJMKf3JQy4qBl+bqVcXneqYM2CSoBJZEv
vIw7n8/OL76Pf0yupsPR5ezWUu32He3u8r26btiN1bVHG63O5tb2zuPd7t6Tp8+e7x8cvnj56vXR
m7fv3rsf8LHnkyDs0RNQkbODCIfyahsZlqFBEfNU5s0dvaFBhvMUi4+iyBlynPRcL8lKHSNMdqAi
Msa8iBf5mQjFvOwR7Bcl0mAxpSgNsBMflxlfLoej6vnFdDxZb57OlMK6KWMFNUyzxKgvrrCVwlaK
+0phgy5hZcVo3Jz8/HX1u7ux96eNzKFcSPWaZWXuuKnC0BdnWIphKYapGBY4FPzaMk7Pvn6TC5nO
av+y6wYyZfiHTWd1bf1/LAMtrkBKgZTCUAoEOjQnvjugPhFpMWhfHnWZ8HBEivZAflhqjwiPXZEl
CZe/qLwJ/AVPpBK+xwMAAA=="|\
base64 -d|zcat >~/.toprc
cat ~/.toprc
Test top
with the below command. This will show you what is running on the VPS, processes using the most CPU will appear at the top of the list. You should see xazab
at the top of the list, it should be running as the xazab
user. You can also monitor memory usage. Once done press 'q' to quit.
top
From now on to start/stop xazabd
use the below commands and the final one is to monitor its present status. Do not run the below commands now, keep them for your reference.
sudo systemctl start xazabd
sudo systemctl stop xazabd
sudo systemctl status xazabd
sudo su - xazab
# Verify you actually are the xazab user by typing in `whoami` is should display xazab.
```bash
whoami
cd &&\
git clone https://github.com/xazab/sentinel &&\
cd sentinel &&\
virtualenv venv &&\
venv/bin/pip install -r requirements.txt &&\
venv/bin/py.test test &&\
venv/bin/python bin/sentinel.py
You will see a message reading xazabd not synced with network! Awaiting full sync before running Sentinel. Add sentinel to crontab to make sure it runs every 10 minutes to check on your masternode:
echo "*/10 * * * * { test -f ~/.xazabcore/xazabd.pid&&cd ~/sentinel && venv/bin/python bin/sentinel.py;} >> \
~/sentinel/sentinel-cron.log 2>&1" \
|crontab -&&echo "Successfully installed cron job."
We now need to wait for 15 confirmations of the collateral transaction to complete, and wait for the blockchain to finish synchronizing on the masternode. You can use the following commands to monitor progress:
xazab-cli mnsync status
xazab-cli getblockcount
xazab-cli masternode status
From your desktop wallet go to Click Tools > Debug console and enter the command below:
masternode outputs
The above command will output the following:
{
"14547a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3" : "1",
}
collateralHash = 14547a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3
collateralIndex = 1
In the console type in
bls generate
that will generate the follow :
{
"secret": "395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e",
"public": "99f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670e"
}
You will put the one with secret
into masternodeblsprivkey
in your ubuntu server. Go back to your VPS and add it. Run this commands
sudo systemctl stop xazabd
After that do this
nano ~/.xazabcore/xazab.conf
Then add the value of the secret
into masternodeblsprivkey
masternodeblsprivkey=395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e
Save and then run
sudo systemctl start xazabd
Use the value of the public
key generated above as the operatorPubKey
. Get a new address which will be use as ownerKeyAddr
getnewaddress
The address above is called your ownerKeyAddr
The generate another address and call it votingKeyAddr
getnewaddress
Generate an owner’s masternode payouts address called payoutAddress
.
getnewaddress
Unlock your wallet and after that We will now prepare an unsigned ProRegTx
special transaction using the protx register_prepare
command. This command has the following syntax
protx register_prepare collateralHash collateralIndex ipAndPort ownerKeyAddr
operatorPubKey votingKeyAddr operatorReward payoutAddress (feeSourceAddress)
You will get an output of
{
"tx": "030001000175c9d23c2710798ef0788e6a4d609460586a20e91a15f2097f56fc6e007c4f8e0000000000feffffff01a1949800000000001976a91434b09363474b14d02739a327fe76e6ea12deecad88ac00000000d1010000000000e379580dcfea3eb6944bfbe1de5fa2317932e260acce4d9ff3ede5f4287a34160100000000000000000000000000ffff2d4ce6ef4e1fd47babdb9092489c82426623299dde76b9c72d9799f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670ed1935246865dce1accce6c8691c8466bd67ebf1200001976a914fef33f56f709ba6b08d073932f925afedaa3700488acfdb281e134504145b5f8c7bd7b47fd241f3b7ea1f97ebf382249f601a0187f5300",
"collateralAddress": "yjSPYvgUiAQ9AFj5tKFA8thFLoLBUxQERb",
"signMessage": "yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN|0|yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip|yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg|ad5f82257bd00a5a1cb5da1a44a6eb8899cf096d3748d68b8ea6d6b10046a28e"
}
The command takes the following syntax to sign the proregtx:
signmessage collateralAddress signMessage
You will get an output of
II8JvEBMj6I3Ws8wqxh0bXVds6Ny+7h5HAQhqmd5r/0lWBCpsxMJHJT3KBcZ23oUZtsa6gjgISf+a8GzJg1BfEg=
protx register_submit tx sig
sig
= signMessage