Thursday, 3 May 2018

CMake 3.10.1 bootstrap fails on Mac OS X 10.8.5 with "Cannot find a C++ compiler supporting C++11 on this system."

my error was exactly the same as this

edit cmake.rb
(somewhere in usr/local/Homebrew/Library/taps/homebrew/homebrew-core/Formula)

ENV["CXXFLAGS"] = "-std=c++11 -stdlib=libc+

before the execution of bootstrap.

Sunday, 29 April 2018

The following packages have unmet dependencies: nodejs : Conflicts: nodejs-legacy

while setting up an iquidus explorer i just hacked my way to nodejs-legacy installing freedom through sheer elan ... maybe

after being given access to someone elses pre-loved server,
was getting error whilst trying to install nodejs-legacy
The following packages have unmet dependencies:
 nodejs : Conflicts: nodejs-legacy

not entirely which bit was the real magic but after an extended duration of getting constant rejections this is hopefully the bare basics,
possibly it's more than everything necessary.
remove nodejs, install nodejs from nodesource, change package manager priority to ubuntu servers, upgrade nodejs, install nodejs-legacy

remove current nodejs
# apt-get remove nodejs

update etc
# apt install -f
# apt update
# apt dist-upgrade

install nodejs v10 from the horses mouth (ie nodesource itself)
# curl -sL | sudo -E bash -
# apt-get install nodejs -y


# nodejs -v

adjust priority to ubuntu servers and upgrade to v10.25
# apt-cache policy nodejs
  Installed: 10.0.0-1nodesource1
  Candidate: 10.0.0-1nodesource1
  Version table:
 *** 10.0.0-1nodesource1 0
        500 trusty/main amd64 Packages
        100 /var/lib/dpkg/status
     0.10.25~dfsg2-2ubuntu1 0

        500 trusty/universe amd64 Packages
nano /etc/apt/preferences.d/nodejs

.. in my case i gave a higher value by adding the following
Package: *
Pin: origin
Pin-Priority: 1002

# apt-cache policy nodejs
  Installed: 10.0.0-1nodesource1
  Candidate: 0.10.25~dfsg2-2ubuntu1
  Version table:
 *** 10.0.0-1nodesource1 0
        500 trusty/main amd64 Packages
        100 /var/lib/dpkg/status
     0.10.25~dfsg2-2ubuntu1 0
       1002 trusty/universe amd64 Packages

re-install and success !!
# apt-get install --reinstall nodejs 

.. updates nodejs ..

# apt-get install nodejs-legacy

discussion on raising the package priority

Tuesday, 10 April 2018

updating TLS protocol for git on Mountain Lion using Macports

apparently github has deprecated older TLS protocols,
when attempting to use git geting error

fatal: unable to access '': error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

seemingly the answer is to upgrade curl (which also updates openssl), and git

$ curl --version
curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz 

$ sudo port install curl is downloading and installing etc etc etc ...

open new window
$ curl --version
curl 7.59.0 (x86_64-apple-darwin12.6.0) libcurl/7.59.0 OpenSSL/1.0.2o zlib/1.2.11 libidn2/2.0.4 libpsl/0.20.1 (+libidn2/2.0.4)
Release-Date: 2018-03-14
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy PSL

also necessary seems to be updating git, the latest available for Mountain Lion is too old

$ git --version
git version 2.3.5

so it becomes necessary for downloading, going into such directory and making

$ /Volumes/whereever/new/version/is/git --version
git version 2.17.GIT

using this newly made version is now succesful for such as cloning

$ /Volumes/whereever/new/version/is/git clone

installing via command line is not effective ($ make install), the version of git is not updated in this case.
so i will have to sort that out later ..

Saturday, 3 March 2018

Importing your address into a new wallet-qt.

For whatever reason, there are times you need to import your address into another wallet. 

This post will go through three steps, your situation may not match these steps so please pick and choose your information as necessary.

1. exporting your private key

2. creating a new empty wallet

3. importing your private key

These steps will be addressed very simply and will require some prior knowledge, please see this post which includes much more information about similar material

1. get your address, dump private key

I will assume you already know your address,  this post will use the address B8QX8peKA9LvDb4Ya5GaMWwwLQoukV2aRY
so now you go into the debug/console
please enter command (using your address
> dumpprivkey B8QX8peKA9LvDb4Ya5GaMWwwLQoukV2aRY

you will need to copy the output somewhere safe, you will need this to import into a new wallet.
the private key in this case is

now close your wallet-qt

2. enter your datadirectory, the bumbacoin datadirectory on my computer looks like this

you will notice i have a highlighted file, wallet.datBAK and a wallet.dat, in this case wallet.datBAK is a prior backup i have made, and wallet.dat is the file that currently holds my address,
i now need to delete or rename the file wallet.dat
then when the wallet-qt starts it will generate a new empty wallet.dat file.

3. open the wallet-qt, it will now create an empty wallet,
once again open the debug/console, this time you will import the private key from step 1.
at this point you can give the address an optional name, 

> importprivkey Pe69Ten35qDWqc5cHbGEZfG5bq9npRtY8WkjXAvfGGaJiUQMFo63 newaddress

this will take some time as it scans the database for transactions. please wait.

you have now imported the key, congratulations ;)


it is possible that the wallet did not pick up all transactions and you are missing some, you can repeate the process as many times as you like and it should work.

alternatively, if you have 1000's of transactions, it may be better to start up with -rescan
or re-sync the entire chain and let it pick up each transaction.
that is a different post though

Tuesday, 26 September 2017

useful crypto links

The following is a list of some prefixes which are in use in the reference Bitcoin codebase.
Base58 leading prefixes for coin addresses

universal paper wallet generator.

python script to generate burn addresses

scripts to auto-compile linux wallets etc

Tuesday, 22 August 2017

guide to staking,

The blockchain is a succesion of generated blocks, each block contains a number of transaction informations.

Proof of Work requires some computing power to generate these blocks, as the difficulty increases the computing power necessary increases, only some form of hardware (computing power) is required. A high difficulty network requires a large amount of computing power.

Proof of Stake also requires some computing power, but also requires some coins to be held. This requirement of holding coins creates a process which is far less computing intensive, even on a high difficulty network generic computers are sufficient.

Proof of Work can require substantial investment in computing power.
Proof of Stake can require substantial investment in purchasing coins.

A simple explanation to Proof of Stake : if you hold coins in your wallet whilst leaving it open, unlocked and online, your wallet will occasionally mine/stake/generate a block, this is added to the blockchain and you will receive a reward.

When a coin wallet is mining using Proof of Stake it needs to be online, unlocked, and have eligible coins available.

Inputs : Every transaction creates inputs and outputs, deposits are inputs and withdrawls are outputs, the inputs are the coins that are in your wallet. Also known as UTxO's

Eligibility : each PoS currency will have a Minimum Stake Age, (ExclusiveCoin is 24 hours, PeerCoin is 30 days) once an input is that old it will become eligible to stake.

Mining : Whilst staking your computer is doing work, similar to Proof of Work mining but vastly reduced,
each second all available inputs are hashed to create an output which is compared against the current network difficulty, if the hash is a good number your wallet will create a block and send it to the network.

Probability : each input has a probability of a succesful hash, the probability is based on the input characteristics.
ExclusiveCoin uses the input size (how many coins) and it's age, the greater those numbers the greater the probability and the more likely you are to generate a block.

Orphans : when you generate a block, it is possible that another block will be accepted by the network in preference to yours, your block then becomes an orphan and will appear in your wallet greyed out and with 0 confirmations.

Block creation : when you create a block the wallet will automaticatlly do a number of things, including adding all the unconfirmed transactions from the network, and creating a new transaction which is the stake/minting transaction.

Split/Combine stake transaction : the wallet is programmed with values of a target size for staking inputs, what this means is that it will modify each staking input to fit within the programmed values.
If the current input is lower, it will combine with other staking inputs, and if it is lower, it will split in half.

i withdraw 250 EXCL coins from an exchange to my wallet, 
when that transaction is included in the blockchain, that transaction will become my staking input.
EXCL has a minimum stake age of 24 hours, so my wallet will start attempting to stake/mine a block after 24 hours has passed.
as my staking input gets older, it gets more likely to succesfully stake.
when my input stakes, the wallet will compare the input size to the target size for staking inputs.
my input is 250 coins, and the target size is 100 - 200 coins, obviously larger, so my input will split into two inputs of 125 coins and 125.5 coins (only one of the inputs gets the 0.5 coins reward).
the wallet will now wait until it has an eligible input that is older than 24 hours, and repeat the process.

i withdraw a further 50 coins from the exchange to my wallet, now i have three inputs of 125 and 125.5, and 50.
when my input of 50 coins succesfully stakes, because it is lower than the target threshold the wallet will want to combine it with one or more inputs.
assuming i still have those three inputs, it will combine the 50 coin input with the 125 coin inputs.
now my wallet has two inputs, the new one of 175.5 (including reward) and 125.5

upon my next stake, those two inputs are within the target range and will not be split or combined.
but when one of those inputs receives enough rewards to go over the target threshold it will be split.
and if I withdraw more coins from the exchange, the new input will possibly be split or combined.

there are differing forms of PoS available, this article is usefully targetted toward Exclusive Coin.
for example, some forms do not use input size (or amount) as a probability modifier.

Thursday, 11 May 2017

run masternodes under ubuntu command line

how to run a remote masternode using ubuntu command line

nerd level 6.

please ensure you have a working knowledge of masternode setup before attempting this and a controller wallet configured.

refer to

in this guide you will be modifying the exclusivecoin.conf file for remote masternode ability.


i have pre-compiled the ubuntu daemon so it's a matter of fetching it,
setting up the .conf file, syncing it, setting up the masternode file and starting masternodes.

all files are available here


#get daemon from github

#rename for ease of use
mv exclusivecoind-ubuntu-v1200 exclusivecoind

#change permissions so you can run the daemon
chmod +x exclusivecoind

#create and modify datadirectory and conf file, you need to be in home or ~ directory
mkdir .exclusivecoin
touch .exclusivecoin/exclusivecoin.conf
nano .exclusivecoin/exclusivecoin.conf

### now you're in a text editor you want to add
port=your port number
rpcport=your rpcport number
masternodeprivkey=from your controller setup
masternodeaddr=ip address of this wallet:port

setting a port value is only required while running multiple wallets on the same system (otherwise they will attempt to use the same ports)
otherwise you can omit those lines and use default port of 23230

#then to quit

#now you can start the daemon and let it sync
./exclusivecoind &

#you need to stop/restart the daemon to enable the masternode.conf
./exclusivecoind stop
./exclusivecoind &

#to check that you are synced
./exclusivecoind getinfo

#then compare blocks to height at

#when the wallet is succesfully synced start/register the masternode from your controller
it should pick up the registration automatically and start running.

#for confirmation of success it can be useful to check your masternode for entry in the masternode list via command, please exclude your port number when entering IP
./exclusivecoind masternode list full yourIP

this should output any entries with your ip.
the very last number is a time stamp, the second last number is your rating, it should be greater than 0,1

also you can monitor the output of the debug.log for lines containing something similar to

2017-07-18 02:28:38 CActiveMasternode::EnableHotColdMasterNode() - Enabled! You may shut down the cold daemon.

#also there is a bootstrap available here

#handy daemon commands, the daemon is a command line version of the wallet,

#start daemon, the & symbol is necessary to free up the command line
./exclusivecoind &

#stop daemon
./exclusivecoind stop

#gives information regarding client and blockchain
./exclusivecoind getinfo

    "version" : "v1.2.0.0-61404",
    "protocolversion" : 61404,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "darksend_balance" : 0.00000000,
    "newmint" : 0.00000000,
    "stake" : 0.00000000,
    "blocks" : 26671,
    "timeoffset" : 0,
    "moneysupply" : 3674200.00000000,
    "connections" : 21,
    "proxy" : "",
    "ip" : "",
    "difficulty" : 1458.01970256,
    "testnet" : false,
    "keypoololdest" : 1494518106,
    "keypoolsize" : 1001,
    "paytxfee" : 0.00010000,
    "mininput" : 0.00000000,
    "errors" : ""

#list of masternodes has various levels
./exclusivecoind masternode list

./exclusivecoind masternode list full

to specifically check an IP
./exclusivecoind masternode list full particularIPaddress

you can also filter the output using grep for any information eg transaction
./exclusivecoind masternode list | grep transactionID

#to get list of possible useful commands
./exclusivecoind help

possible issues,

if not successful you might have port issues, ensure your port is open by entering
netstat -ntlp | grep yourport#

if you get no output, it's not open
have you installed a firewall?

nano is a text editor, it might need to be installed
it's far more noob friendly than vim.

apt-get install nano

possibly default editor is already vim (or other), so to open use

EDITOR=nano crontab -e

donations welcome
excl EcHku6jM9sWpFadRZH1XFfUWBBbG6kWjtg