]> Git Repo - VerusCoin.git/blame - README.md
Merge pull request #1 from jl777/dev
[VerusCoin.git] / README.md
CommitLineData
3c8d5534
T
1## Komodo with Bitcore
2This version of Komodo contains Bitcore support for komodo and all its assetchains.
20e0bc85 3
78192246 4## Komodod
5This software is Komodo client, generally you will use this if you want to mine KMD or setup a full node.
6It downloads and stores the entire history of Komodo transactions; depending on the speed of your computer and network connection, the synchronization process could take a day or more once the blockchain has reached a significant size.
20e0bc85 7
78192246 8## Development Resources
9- Komodo Web: [https://komodoplatform.com/](https://komodoplatform.com/)
20e0bc85
S
10- Organization web: [https://komodoplatform.com/](https://komodoplatform.com/)
11- Forum: [https://forum.komodoplatform.com/](https://forum.komodoplatform.com/)
12- Mail: [[email protected]](mailto:[email protected])
13- Support: [https://support.komodoplatform.com/support/home](https://support.komodoplatform.com/support/home)
14- Knowledgebase & How-to: [https://komodoplatform.atlassian.net/wiki/spaces/KPSD/pages](https://komodoplatform.atlassian.net/wiki/spaces/KPSD/pages)
78192246 15- API references: [http://docs.supernet.org/](http://docs.supernet.org/) #Not up to date.
20e0bc85 16- Whitepaper: [Komodo Whitepaper](https://komodoplatform.com/wp-content/uploads/2018/03/2018-03-12-Komodo-White-Paper-Full.pdf)
78192246 17- Komodo Platform public material: [Komodo Platform public material](https://docs.google.com/document/d/1AbhWrtagu4vYdkl-vsWz-HSNyNvK-W-ZasHCqe7CZy0)
20e0bc85 18
78192246 19## List of Komodo Platform Technologies
20e0bc85
S
20- Delayed Proof of Work (dPoW) - Additional security layer.
21- zk-SNARKs - Komodo Platform's privacy technology
22- Jumblr - Decentralized tumbler for KMD and other cryptocurrencies
23- Assetchains - Easy way to fork Komodo coin
24- Pegged Assets - Chains that maintain a peg to fiat currencies
25- Peerchains - Scalability solution where sibling chains form a network of blockchains
26- More in depth covered [here](https://docs.google.com/document/d/1AbhWrtagu4vYdkl-vsWz-HSNyNvK-W-ZasHCqe7CZy0)
27- Also note you receive 5% APR on your holdings.
28[See this article for more details](https://komodoplatform.atlassian.net/wiki/spaces/KPSD/pages/20480015/Claim+KMD+Interest+in+Agama)
29
78192246 30## Tech Specification
20e0bc85
S
31- Max Supply: 200 million KMD.
32- Block Time: 1M 2s
33- Block Reward: 3KMD
34- Mining Algorithm: Equihash
35
78192246 36## About this Project
da925f78 37Komodo is based on Zcash and has been by our innovative consensus algorithm called dPoW which utilizes Bitcoin's hashrate to store Komodo blockchain information into the Bitcoin blockchain. Other new and native Komodo features are the privacy technology called JUMBLR or our assetchain capabilities (one click plug and play blockchain solutions). More details are available under https://komodoplatform.com/.
20e0bc85 38
78192246 39## Getting started
d7426190 40Dependencies
41------------
78192246 42
20e0bc85 43```shell
d7426190 44#The following packages are needed:
e8131126 45sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget libcurl4-openssl-dev bsdmainutils automake curl
d7426190 46```
78192246 47
d7426190 48Komodo
49------
a08b1ae8 50We have a release process that goes through several stages before it reaches master. This allows the most conservative users just use the master branch, which is only updated after the other branches have signed off on a release.
51
5299% of the activity is in the dev branch, this is where I am testing each change one by one and there are literally thousands of updates. Only use this branch if you really want to be on the bleeding edge. I try to keep things stable, but there are times where necessarily there are bugs in the dev branch, since I am actively developing and debugging here. A good rule is to wait for at least 4 hours from the last update before using the dev branch (unless you know what you are doing)
53
54After things look good in the dev branch, it is propagated to the beta branch, this is the version the notary nodes use. They are knowledegable command line server guys and so they have a keen eye for anything that wasnt caught during the dev cycle.
55
56After the notary nodes verify things are working and the latest release is deemed stable, it is propagated to the dPoW branch. From here an automated Jenkins process builds it for all OS, and since the notary nodes are all unix, it is possible for some issues to be caught at this stage. The dPoW branch is what goes into the GUI installers.
57
58After the GUI are updated and released and it is verified that no significant support issues were created, the master branch is finally updated.
59
60Master branch: exchanges and users that build from the repo without changing branches
61dPoW branch: autobuild into GUI installers, unix, osx, windows
62beta branch: notary nodes, command line unix
63dev branch: bleeding edge, possibly wont even compile, multiple updates per hour
78192246 64
20e0bc85 65```shell
f3ae714c 66git clone https://github.com/jl777/komodo
67cd komodo
a08b1ae8 68#you might want to: git checkout <branch>; git pull
f3ae714c 69./zcutil/fetch-params.sh
6c4dfa1c 70# -j8 uses 8 threads - replace 8 with number of threads you want to use
71./zcutil/build.sh -j8
d7426190 72#This can take some time.
73```
3bb1d82c 74
9000990c 75**komodo is experimental and a work-in-progress.** Use at your own risk.
666a401f 76
ce7e7caf
NW
77Deprecation Policy
78------------------
79
9000990c 80This release is considered deprecated one year after the release day. There
e895b863 81is an automatic deprecation shutdown feature which will halt the node some
9000990c 82time after this one year period. The automatic feature is based on block
e895b863 83height and can be explicitly disabled.
ce7e7caf 84
9000990c 85
20e0bc85
S
86# to update an existing version, `git checkout dPoW` if not on that branch already
87```shell
3bb1d82c 88git pull
3bb1d82c 89./zcutil/fetch-params.sh
3bb1d82c 90./zcutil/build.sh -j8
20e0bc85
S
91```
92To reset the blockchain, from *~/.komodo* `rm -rf blocks chainstate debug.log komodostate db.log`
93
d7426190 94Create komodo.conf
95------------------
78192246 96
d7426190 97```
98cd ~
99mkdir .komodo
100cd .komodo
8aeb7db1 101pico komodo.conf
d7426190 102#Add the following lines to the komodo.conf file:
f3ae714c 103rpcuser=bitcoinrpc
0032bbb5 104rpcpassword=password
a0413d6a 105txindex=1
8aeb7db1 106addnode=5.9.102.210
107addnode=78.47.196.146
108addnode=178.63.69.164
109addnode=88.198.65.74
110addnode=5.9.122.241
111addnode=144.76.94.38
67e8ca1c 112addnode=89.248.166.91
d7426190 113```
78192246 114
d7426190 115Start mining
116------------
78192246 117
20e0bc85 118```shell
870e3556 119#iguana documentation shows how to get the btcpubkey and wifstrs that need to be used
870e3556 120#bitcoin also need to be installed with txindex=1 and with rpc enabled
d7426190 121cd ~
122cd komodo
c6444836 123#This will return your pubkey eg. "0259e137e5594cf8287195d13aed816af75bd5c04ae673296b51f66e7e8346e8d8" for your address
67e8ca1c 124./src/komodo-cli validateaddress <yourwalletaddres>
67e8ca1c
Y
125#This will give the privkey of your wallet address
126./src/komodo-cli dumpprivkey <yourwalletaddres>
67e8ca1c
Y
127#This will import the privkey to be sure the mined coins are placed into your wallet address
128./src/komodo-cli importprivkey <yourwalletprivkey>
d5a5f0f3 129#To stop the daemon:
af7b3566 130./src/komodo-cli stop
67e8ca1c 131#This starts komodo notary - replace genproclimit with number of threads you want to use and add your pubkey
c6444836 132./src/komodod -gen -genproclimit=2 -notary -pubkey="0259e137e5594cf8287195d13aed816af75bd5c04ae673296b51f66e7e8346e8d8" &
8aeb7db1 133#This will get the stats:
134./src/komodo-cli getinfo
d7426190 135#To view the process:
8aeb7db1 136ps -ef | grep komodod
d2438574 137#To stop the daemon:
af7b3566 138./src/komodo-cli stop
78192246 139
d7426190 140#To view komodod output:
aae8f281 141tail -f ~/.komodo/debug.log
67e8ca1c
Y
142#To view all command
143./src/komodo-cli help
9fc60fe3 144ASSETCHAINS: -ac_name=name -ac_supply=nnnnn
78192246 145Both komodod and komodo-cli recognize -ac_name=option so you can create fork from the commandline
0032bbb5 146```
30853e4a 147=======
666a401f 148**Zcash is unfinished and highly experimental.** Use at your own risk.
20e0bc85 149
666a401f
DH
150Where do I begin?
151-----------------
473ed951
CB
152We have a guide for joining the main Zcash network:
153https://github.com/zcash/zcash/wiki/1.0-User-Guide
20e0bc85 154
666a401f 155### Need Help?
666a401f 156* See the documentation at the [Zcash Wiki](https://github.com/zcash/zcash/wiki)
78192246 157for help and more information.
666a401f 158* Ask for help on the [Zcash](https://forum.z.cash/) forum.
666a401f
DH
159Participation in the Zcash project is subject to a
160[Code of Conduct](code_of_conduct.md).
20e0bc85 161
666a401f
DH
162Building
163--------
666a401f 164Build Zcash along with most dependencies from source by running
20e0bc85
S
165`./zcutil/build.sh`. Currently only Linux is officially supported.
166
20d59455
CD
167License
168-------
666a401f 169For license information see the file [COPYING](COPYING).
20e0bc85
S
170
171**NOTE TO EXCHANGES:**
a35f7eee 172https://bitcointalk.org/index.php?topic=1605144.msg17732151#msg17732151
173There is a small chance that an outbound transaction will give an error due to mismatched values in wallet calculations. There is a -exchange option that you can run komodod with, but make sure to have the entire transaction history under the same -exchange mode. Otherwise you will get wallet conflicts.
20e0bc85
S
174
175**To change modes:**
176
177a) backup all privkeys (launch komodod with `-exportdir=<path>` and `dumpwallet`)
178
179b) start a totally new sync including `wallet.dat`, launch with same `exportdir`
180
181c) stop it before it gets too far and import all the privkeys from a) using `komodo-cli importwallet filename`
182
a35f7eee 183d) resume sync till it gets to chaintip
20e0bc85 184
c9ef1c89 185For example:
20e0bc85 186```shell
c9ef1c89 187./komodod -exportdir=/tmp &
188./komodo-cli dumpwallet example
189./komodo-cli stop
190mv ~/.komodo ~/.komodo.old && mkdir ~/.komodo && cp ~/.komodo.old/komodo.conf ~/.komodo.old/peers.dat ~/.komodo
191./komodod -exchange -exportdir=/tmp &
02b02173 192./komodo-cli importwallet /tmp/example
20e0bc85
S
193```
194
195## JUMBLR
196komodod now has `jumblr_deposit` and `jumblr_secret` RPC calls.
197
1cacba6a 198Jumblr works like described previously where all the nodes with jumblr active synchronize their tx activity during the same block to maximize the mixing effect. However, unlike all other mixers/tumblers, you never give up control of your coins to anybody else. JUMBLR uses a one to many allocation of funds, ie. one deposit address and many secret addresses. You can always run multiple komodod daemons to get multiple active deposit addresses.
20e0bc85 199
1cacba6a 200JUMBLR implements t -> z, z -> z and z -> t transactions to maximize privacy of the destination t (transparent) address. So while it is transparent, its first activity is funds coming from an untracable z address.
20e0bc85 201
78192246 202Which of the three stages is done is randomly selected at each turn. Also when there is more than one possible transaction at the selected stage, a random one is selected. This randomization prevents analyzing incoming z ->t transactions by its size to correlate it to the originating address.
20e0bc85
S
203
204`jumblr_deposit <depositaddr>` designates the deposit address as the jumblr deposit address for that session. You can select an address that already has funds in it and it will immediately start jumblr process. If there are no funds, it will wait until you send funds to it.
205
206There are three sizes of a jumblr transaction: 10 KMD, 100 KMD and 1000 KMD. There is also a fixed interval of blocks where all jumblr nodes are active. Currently it is set to be 10, but this is subject to change. Only during every 10*10 blocks are the largest 1000 KMD transactions processed, so this concentrates all the large transactions every N*N blocks.
207
208`jumblr_secret <secretaddress>` notifies JUMBLR where to send the final z -> t transactions. In order to allow larger accounts to obtain privacy, up to 777 secret addresses are supported. Whenever a z -> t stage is activated, a random secret address from the list of the then active secret addresses is selected.
209
210#### Practical Advice:
78192246 211Obtaining privacy used to be very difficult. JUMBLR makes it as simple as issuing two command line calls. Higher level layers can be added to help manage the addresses, ie. linking them at the passphrase level. Such matters are left to each implementation.
20e0bc85 212
1cacba6a 213Once obtained, it is very easy to lose all the privacy. With a single errant transaction that combines some previously used address and the secretaddress, well, the secretaddress is no longer so private.
20e0bc85 214
1cacba6a 215The advice is to setup a totally separate node!
20e0bc85 216
1cacba6a 217This might seem a bit drastic, but if you want to maintain privacy, it is best to make it look like all the transactions are coming from a different node. The easiest way for most people to do this is to actually have a different node.
20e0bc85
S
218
219It can be a dedicated laptop (recommended) or a VPS (for smaller amounts) with a totally fresh komodod wallet. Generate an address on this wallet and use that as the jumblr_secret address on your main node. As the JUMBLR operates funds will teleport into your secret node's address. If you are careful and never use the same IP address for both your nodes, you will be able to maintain very good privacy.
220
78192246 221Of course, don't send emails that link the two accounts together! Dont use secret address funds for home delivery purchases! Etc. There are many ways to lose the privacy, just think about what linkages can be dont at the IP and blockchain level and that should be a useful preparation.
20e0bc85 222
1cacba6a 223What if you have 100,000 KMD and you dont want others to know you are such a whale?
1cacba6a 224Instead of generating 1 secret address, generate 100 and make a script file with:
20e0bc85 225```shell
1cacba6a 226./komodo-cli jumblr_secret <addr0>
227./komodo-cli jumblr_secret <addr1>
228...
229./komodo-cli jumblr_secret <addr99>
20e0bc85 230```
1cacba6a 231And make sure to delete all traces of this when the JUMBLR is finished. You will end up with 100 addresses that have an average of 1000 KMD each. So as long as you are careful and dont do a 10,000 KMD transaction (that will link 10 of your secret addresses together), you can appear as 100 different people each with 1000 KMD.
232
c9ef1c89 233
20e0bc85 234
This page took 0.227105 seconds and 4 git commands to generate.