]> Git Repo - VerusCoin.git/blob - README.md
Merge pull request #1 from jl777/dev
[VerusCoin.git] / README.md
1 ## Komodo with Bitcore
2 This version of Komodo contains Bitcore support for komodo and all its assetchains.
3
4 ## Komodod
5 This software is Komodo client, generally you will use this if you want to mine KMD or setup a full node.
6 It 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.
7
8 ## Development Resources
9 - Komodo Web: [https://komodoplatform.com/](https://komodoplatform.com/)
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)
15 - API references: [http://docs.supernet.org/](http://docs.supernet.org/) #Not up to date.
16 - Whitepaper: [Komodo Whitepaper](https://komodoplatform.com/wp-content/uploads/2018/03/2018-03-12-Komodo-White-Paper-Full.pdf)
17 - Komodo Platform public material: [Komodo Platform public material](https://docs.google.com/document/d/1AbhWrtagu4vYdkl-vsWz-HSNyNvK-W-ZasHCqe7CZy0)
18
19 ## List of Komodo Platform Technologies
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
30 ## Tech Specification
31 - Max Supply: 200 million KMD.
32 - Block Time: 1M 2s
33 - Block Reward: 3KMD
34 - Mining Algorithm: Equihash 
35
36 ## About this Project
37 Komodo 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/. 
38
39 ## Getting started
40 Dependencies
41 ------------
42
43 ```shell
44 #The following packages are needed:
45 sudo 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
46 ```
47
48 Komodo
49 ------
50 We 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
52 99% 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
54 After 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
56 After 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
58 After the GUI are updated and released and it is verified that no significant support issues were created, the master branch is finally updated.
59
60 Master branch: exchanges and users that build from the repo without changing branches
61 dPoW branch: autobuild into GUI installers, unix, osx, windows
62 beta branch: notary nodes, command line unix
63 dev branch: bleeding edge, possibly wont even compile, multiple updates per hour
64
65 ```shell
66 git clone https://github.com/jl777/komodo
67 cd komodo
68 #you might want to: git checkout <branch>; git pull
69 ./zcutil/fetch-params.sh
70 # -j8 uses 8 threads - replace 8 with number of threads you want to use
71 ./zcutil/build.sh -j8
72 #This can take some time.
73 ```
74
75 **komodo is experimental and a work-in-progress.** Use at your own risk.
76
77 Deprecation Policy
78 ------------------
79
80 This release is considered deprecated one year after the release day. There
81 is an automatic deprecation shutdown feature which will halt the node some
82 time after this one year period. The automatic feature is based on block
83 height and can be explicitly disabled.
84
85
86 # to update an existing version, `git checkout dPoW` if not on that branch already
87 ```shell
88 git pull
89 ./zcutil/fetch-params.sh
90 ./zcutil/build.sh -j8
91 ```
92 To reset the blockchain, from *~/.komodo* `rm -rf blocks chainstate debug.log komodostate db.log`
93
94 Create komodo.conf
95 ------------------
96
97 ```
98 cd ~
99 mkdir .komodo
100 cd .komodo
101 pico komodo.conf
102 #Add the following lines to the komodo.conf file:
103 rpcuser=bitcoinrpc
104 rpcpassword=password
105 txindex=1
106 addnode=5.9.102.210
107 addnode=78.47.196.146
108 addnode=178.63.69.164
109 addnode=88.198.65.74
110 addnode=5.9.122.241
111 addnode=144.76.94.38
112 addnode=89.248.166.91
113 ```
114
115 Start mining
116 ------------
117
118 ```shell
119 #iguana documentation shows how to get the btcpubkey and wifstrs that need to be used
120 #bitcoin also need to be installed with txindex=1 and with rpc enabled
121 cd ~
122 cd komodo
123 #This will return your pubkey eg. "0259e137e5594cf8287195d13aed816af75bd5c04ae673296b51f66e7e8346e8d8" for your address
124 ./src/komodo-cli validateaddress <yourwalletaddres>
125 #This will give the privkey of your wallet address
126 ./src/komodo-cli dumpprivkey <yourwalletaddres>
127 #This will import the privkey to be sure the mined coins are placed into your wallet address
128 ./src/komodo-cli importprivkey <yourwalletprivkey>
129 #To stop the daemon:
130 ./src/komodo-cli stop
131 #This starts komodo notary - replace genproclimit with number of threads you want to use and add your pubkey
132 ./src/komodod -gen -genproclimit=2 -notary -pubkey="0259e137e5594cf8287195d13aed816af75bd5c04ae673296b51f66e7e8346e8d8" &
133 #This will get the stats:
134 ./src/komodo-cli getinfo
135 #To view the process:
136 ps -ef | grep komodod
137 #To stop the daemon:
138 ./src/komodo-cli stop 
139
140 #To view komodod output:
141 tail -f ~/.komodo/debug.log
142 #To view all command
143 ./src/komodo-cli help
144 ASSETCHAINS: -ac_name=name -ac_supply=nnnnn
145 Both komodod and komodo-cli recognize -ac_name=option so you can create fork from the commandline
146 ```
147 =======
148 **Zcash is unfinished and highly experimental.** Use at your own risk.
149
150 Where do I begin?
151 -----------------
152 We have a guide for joining the main Zcash network:
153 https://github.com/zcash/zcash/wiki/1.0-User-Guide
154
155 ### Need Help?
156 * See the documentation at the [Zcash Wiki](https://github.com/zcash/zcash/wiki)
157 for help and more information.
158 * Ask for help on the [Zcash](https://forum.z.cash/) forum.
159 Participation in the Zcash project is subject to a
160 [Code of Conduct](code_of_conduct.md).
161
162 Building
163 --------
164 Build Zcash along with most dependencies from source by running
165 `./zcutil/build.sh`. Currently only Linux is officially supported.
166
167 License
168 -------
169 For license information see the file [COPYING](COPYING).
170
171 **NOTE TO EXCHANGES:**
172 https://bitcointalk.org/index.php?topic=1605144.msg17732151#msg17732151
173 There 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.
174
175 **To change modes:**
176
177 a) backup all privkeys (launch komodod with `-exportdir=<path>` and `dumpwallet`)
178   
179 b) start a totally new sync including `wallet.dat`, launch with same `exportdir`
180
181 c) stop it before it gets too far and import all the privkeys from a) using `komodo-cli importwallet filename`
182
183 d) resume sync till it gets to chaintip
184
185 For example:
186 ```shell
187 ./komodod -exportdir=/tmp &
188 ./komodo-cli dumpwallet example
189 ./komodo-cli stop
190 mv ~/.komodo ~/.komodo.old && mkdir ~/.komodo && cp ~/.komodo.old/komodo.conf ~/.komodo.old/peers.dat ~/.komodo
191 ./komodod -exchange -exportdir=/tmp &
192 ./komodo-cli importwallet /tmp/example
193 ```
194
195 ## JUMBLR
196 komodod now has `jumblr_deposit` and `jumblr_secret` RPC calls.
197
198 Jumblr 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.
199
200 JUMBLR 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.
201
202 Which 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.
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   
206 There 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:
211 Obtaining 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.
212
213 Once 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.
214
215 The advice is to setup a totally separate node!
216
217 This 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.
218
219 It 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
221 Of 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.
222
223 What if you have 100,000 KMD and you dont want others to know you are such a whale?
224 Instead of generating 1 secret address, generate 100 and make a script file with:
225 ```shell
226 ./komodo-cli jumblr_secret <addr0>
227 ./komodo-cli jumblr_secret <addr1>
228 ...
229 ./komodo-cli jumblr_secret <addr99>
230 ```
231 And 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
233
234
This page took 0.034842 seconds and 4 git commands to generate.