Skip to content

Commit 0c8fa56

Browse files
committed
All latest updates, smart contracts, including oracle from KMD/jl777
2 parents 0f92550 + 8dc4196 commit 0c8fa56

File tree

156 files changed

+13702
-1129
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+13702
-1129
lines changed

.github/ISSUE_TEMPLATE.md

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
<!--- Remove text and sections that do not apply -->
22

3-
This issue tracker is only for technical issues related to zcashd.
3+
This issue tracker is only for technical issues related to komodod
44

5-
General Zcash questions and/or support requests and are best directed to the [Zcash Forums](https://forum.z.cash) or [Community Rocket.Chat](https://chat.zcashcommunity.com).
6-
7-
For reporting security vulnerabilities or for sensitive discussions with our security team, please contact [[email protected]](mailto:[email protected]). You can use the [GPG key](https://z.cash/gpg-pubkeys/security.asc) (fingerprint: `AF85 0445 546C 18B7 86F9 2C62 88FB 8B86 D8B5 A68C`) to send an encrypted message. The key and fingerprint are duplicated on our [Public Keys page](https://z.cash/support/pubkeys.html).
5+
General Komodo questions and/or support requests and are best directed to [Discord](https://komodoplatform.com/discord)
86

97
### Describe the issue
108
Please provide a general summary of the issue you're experiencing
@@ -21,8 +19,8 @@ Tell us what should happen
2119
### Actual behaviour + errors
2220
Tell us what happens instead including any noticable error output (any messages displayed on-screen when e.g. a crash occurred)
2321

24-
### The version of Zcash you were using:
25-
Run `zcashd --version` to find out
22+
### The version of Komodo you were using:
23+
Run `komodod --version` to find out
2624

2725
### Machine specs:
2826
- OS name + version:
@@ -34,9 +32,9 @@ Run `zcashd --version` to find out
3432
- Compiler version (gcc -version):
3533

3634
### Any extra information that might be useful in the debugging process.
37-
This includes the relevant contents of `~/.zcash/debug.log`. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site.
35+
This includes the relevant contents of `~/.komodo/debug.log`. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site.
3836
Please also include any non-standard things you did during compilation (extra flags, dependency version changes etc.) if applicable.
3937

40-
### Do you have a backup of `~/.zcash` directory and/or take a VM snapshot?
41-
- Backing up / making a copy of the `~/.zcash` directory might help make the problem reproducible. Please redact appropriately.
38+
### Do you have a backup of `~/.komodo` directory and/or take a VM snapshot?
39+
- Backing up / making a copy of the `~/.komodo` directory might help make the problem reproducible. Please redact appropriately.
4240
- Taking a VM snapshot is really helpful for interactively testing fixes

.travis.yml

+41-62
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,46 @@
1-
sudo: required
2-
os: linux
3-
dist: xenial
41
language: cpp
5-
compiler:
6-
- gcc
7-
env:
8-
global:
9-
- CCACHE_SIZE=100M
10-
- CCACHE_TEMPDIR=/tmp/.ccache-temp
11-
- CCACHE_COMPRESS=1
12-
- STORAGE_DEST=gs://$BUCKET/$PROJECT/$TRAVIS_BRANCH/
13-
cache:
14-
apt: true
15-
directories:
16-
- depends/built
17-
- depends/sdk-sources
18-
- "$HOME/google-cloud-sdk/"
19-
- "$HOME/.ccache"
2+
203
matrix:
21-
fast_finish: true
224
include:
23-
- compiler: ": Linux"
24-
env: BUILD_SCRIPT=build.sh
25-
PACKAGES="build-essential pkg-config libc6-dev m4 g++-multilib
26-
autoconf libtool ncurses-dev unzip python zlib1g-dev wget bsdmainutils automake
27-
libssl-dev libprotobuf-dev protobuf-compiler libqrencode-dev libdb++-dev software-properties-common
28-
libcurl4-openssl-dev curl"
29-
PACKAGE_NAME=verus-cli-linux.tar.gz
30-
PACKAGING_MATRIX="cp src/komodod src/komodo-cli kmd/linux/verus-cli && chmod +x kmd/linux/verus-cli/komodod && chmod +x kmd/linux/verus-cli/komodo-cli && cd kmd/linux && tar -czf $PACKAGE_NAME verus-cli && ls"
31-
- compiler: ": Windows"
32-
env: RUST_TARGET=x86_64-pc-windows-gnu
33-
BUILD_SCRIPT=build-win.sh
34-
PACKAGES="build-essential pkg-config libcurl3-gnutls-dev
35-
libc6-dev libevent-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git
36-
python zlib1g-dev wget bsdmainutils automake libssl-dev libprotobuf-dev protobuf-compiler
37-
libdb++-dev ntp ntpdate mingw-w64 wine bc"
38-
PACKAGE_NAME=verus-cli-windows.zip
39-
PACKAGING_MATRIX="cp src/komodod.exe src/komodo-cli.exe src/komodo-tx.exe kmd/windows/verus-cli &&
40-
cd kmd/windows && zip -r9 $PACKAGE_NAME verus-cli && ls"
41-
exclude:
42-
- compiler: gcc
43-
install:
44-
- sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list
45-
- travis_retry sudo apt-get -y update && travis_retry sudo apt-get -y install -qq $PACKAGES
46-
- if [ -n "$RUST_TARGET" ]; then curl -sSf https://build.travis-ci.org/files/rustup-init.sh
47-
| sh -s -- --default-toolchain stable -y && export PATH=$PATH:$HOME/.cargo/bin:$PATH && rustup target add $RUST_TARGET; fi
48-
before_script:
49-
- unset CC; unset CXX
5+
- os: linux
6+
dist: xenial
7+
sudo: required
8+
- os: osx
9+
osx_image: xcode8
10+
compiler:
11+
- gcc
12+
before_install:
13+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa; fi
14+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update -qq; fi
15+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libgnutls28-dev; fi
16+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install build-essential pkg-config libcurl3-gnutls-dev libc6-dev libevent-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python zlib1g-dev wget bsdmainutils automake libssl-dev libprotobuf-dev protobuf-compiler libdb++-dev ntp ntpdate; fi
17+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm '/usr/local/include/c++'; fi
18+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
19+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install gcc@6; fi
20+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew link --overwrite gcc@6; fi
5021
script:
51-
- "./zcutil/fetch-params.sh"
52-
- "./zcutil/$BUILD_SCRIPT -j2"
53-
after_script:
54-
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then eval "${PACKAGING_MATRIX}" &&
55-
gsutil cp $PACKAGE_NAME $STORAGE_DEST; fi
22+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./zcutil/build.sh -j 5; fi
23+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./zcutil/build-mac.sh -j 5; fi
5624
notifications:
57-
slack:
58-
secure: FiVlFhSw5xnDu1Cx2yAo3J7miFCSRyuzR/2+8LKFjdWl5+fyIGvQ9x5vgUg6dWbv3UP9iIMqQuWfotsg8H+NE8pYRZQ0zDVxZ5h9+PA028qGb3OF4TMFNcltP5DGtAZ6AqrMNRZ4ltatPUm5H9ig1bhzjsx+3pqlqQuVXTXPjaUryB5s/fk2CjrsV6zTLfPHiI30jeMjmQrJJLik1vSWF70sB6HkQhvaT6jymkO4Vuh+cja418W1xIgkkoRsOXiZ/JK4hIypFo/sBkmIOprGqoFUahFqJlsBoSrp9iAzkwbDItIqqvNCHTEeN7lj6kK43ZK72E4etjjNc0CXWeleXBJBCj5Prq2lEkQ4NwuDTos3KLyyr2vI7f54xhb5+wjzY9dByHXGuG5UaNz0+uukuJinAdazGaNmmfesv1wg9p3jGa/TLsfHLMcUti875DzkUHnenivP5cXrc6/uuZyyQNq5+Gn/3DA8k0y7d1e23nm3nDjCNfATAn3yu1jieYY2yYI6CYGEXcD+UbP61uG6no+mm/lkQbQosyDfE0sADqGryqXswRste+R0sSVMBQtTipAZOUoYNbEmhN4+L78SSp3zpmgkrIxAw7le8oj6Evp2ofvE2Kvh+Z0MVoEJx6mtZI6hheIFSS38NeUZr/HBfRSpaElOYTN/ZNf8QwThCWo=
59-
before_install:
60-
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then openssl aes-256-cbc -K $encrypted_11153c0bb86c_key -iv $encrypted_11153c0bb86c_iv
61-
-in AUTH_KEY.json.enc -out AUTH_KEY.json -d; fi
62-
- if [ ! -d "$HOME/google-cloud-sdk/bin" ]; then rm -rf $HOME/google-cloud-sdk; export
63-
CLOUDSDK_CORE_DISABLE_PROMPTS=1; curl https://sdk.cloud.google.com | bash; fi
64-
- source /home/travis/google-cloud-sdk/path.bash.inc
65-
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then gcloud auth activate-service-account --key-file AUTH_KEY.json; fi
66-
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then rm AUTH_KEY.json; fi
67-
- rm AUTH_KEY.json.enc
25+
irc:
26+
channels:
27+
- chat.freenode.net#komodoplatform
28+
template:
29+
- "%{repository}/%{branch} (%{commit} - %{author}): %{message}"
30+
- 'Alt Message : %{repository_slug} - (%{commit} - %{author}): %{message}, Build
31+
Time: %{duration}'
32+
- 'Change view : %{compare_url}'
33+
- 'Build details : %{build_url}'
34+
before_deploy:
35+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then git tag "linux-$(date +'%Y%m%d%H%M')-$(git log --format=%h -1)"; fi
36+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then git tag "osx-$(date +'%Y%m%d%H%M')-$(git log --format=%h -1)"; fi
37+
deploy:
38+
provider: releases
39+
api_key:
40+
secure: Jms7dz5GMZmuXUCHl5u6iZUtAybv86oW3x36DCJfdzbDiO4B9EWB04z7zA0qvoomefyujHTmQUHxyOKfd4h9/rVMFFv9hgmUxWkrcg7KyLNisOQRaovVOuNtu2lRNXTOSF16Cy+xFGkVh1ObBRhAoMsVKPhMl6PCDiKhNWIekRR9pBtjafKsClQ2ieknUYfqhuvgj7zmqCedeyVaVQyt2W/J65leD0BkfCUESTpANSprHs4bQB65VuQIKKMi+URKx2VgpDdUcWJySt9jAHVPIbI5cT5maAT6RUMnE4oha7Ca1Ox8StBqjQ/hkkMyDbN0keIlN7RjZlwdZQf/qUnT/dPQhsyUCdPXOxmEJ2jekezEK/LGr4Fb+v+vjd9dhLNkD5nVn9zp36biGSCjiMpffQ3fjMeM0YGmVEVRP9kZXLWVRYQoVKrzjyzg5dY8iChbiQEfYpTeBuU+e2rqj4mns+Jvy0zjUbMy6Tyva+iqdZ/PdsBDbiB7c+FIgB1IUTVOD+GgKx6dhCtBZEccn5EyWFwZF9IdQJHZCYV4PA7nuzfm1Ol9SDdZkGHd2OgRCqK/sTwyfTHv8exNqZ1k+epGJp2a0q4IOEknc9aPCAF+m9pHahk7s7VO5gmhO6pvbvuKoeEtEXRZHRzCkGkXfzJlBk+23X5gBexKb6inRdBlj6M=
41+
file:
42+
- src/komodod
43+
- src/komodo-cli
44+
skip_cleanup: true
45+
on:
46+
repo: KomodoPlatform/komodo

Makefile.am

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
3636
$(top_srcdir)/contrib/devtools/security-check.py
3737

3838

39+
3940
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
4041
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
4142
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp

README.md

+22-48
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,20 @@ The wallet downloads and stores the block chain or asset chain of the coin you s
2121
2222
- Support: [https://support.komodoplatform.com/support/home](https://support.komodoplatform.com/support/home)
2323
- Knowledgebase & How-to: [https://komodoplatform.atlassian.net/wiki/spaces/KPSD/pages](https://komodoplatform.atlassian.net/wiki/spaces/KPSD/pages)
24-
- API references: [http://docs.supernet.org/](http://docs.supernet.org/) #Not up to date.
25-
- Whitepaper: [Komodo Whitepaper](https://komodoplatform.com/wp-content/uploads/2018/06/Komodo-Whitepaper-June-3.pdf)
24+
- API references: [http://docs.komodoplatform.com/](http://docs.komodoplatform.com/)
25+
- Blog: [http://blog.komodoplatform.com/](http://blog.komodoplatform.com/)
26+
- Whitepaper: [Komodo Whitepaper](https://komodoplatform.com/wp-content/uploads/2018/03/2018-03-12-Komodo-White-Paper-Full.pdf)
2627
- Komodo Platform public material: [Komodo Platform public material](https://docs.google.com/document/d/1AbhWrtagu4vYdkl-vsWz-HSNyNvK-W-ZasHCqe7CZy0)
2728

2829
## List of Komodo Platform Technologies
29-
- Delayed Proof of Work (dPoW) - Additional security layer.
30-
- zk-SNARKs - Komodo Platform's privacy technology
30+
31+
- Delayed Proof of Work (dPoW) - Additional security layer and Komodos own consensus algorithm.
32+
- zk-SNARKs - Komodo Platform's privacy technology for shielded transactions
33+
- Tokens/Assets Technology - create "colored coins" on the Komodo Platform and use them as a layer for securites
34+
- Reward API - Komodo CC technology for securities
35+
- CC - Crypto Conditions to realize "smart contract" logic on top of the Komodo Platform
3136
- Jumblr - Decentralized tumbler for KMD and other cryptocurrencies
32-
- Assetchains - Easy way to fork Komodo coin
37+
- Assetchains - Create your own Blockchain that inherits all Komodo Platform functionalities and blockchain interoperability
3338
- Pegged Assets - Chains that maintain a peg to fiat currencies
3439
- Peerchains - Scalability solution where sibling chains form a network of blockchains
3540
- More in depth covered [here](https://docs.google.com/document/d/1AbhWrtagu4vYdkl-vsWz-HSNyNvK-W-ZasHCqe7CZy0)
@@ -40,14 +45,14 @@ The wallet downloads and stores the block chain or asset chain of the coin you s
4045
- Max Supply: 200 million KMD.
4146
- Block Time: 1M 2s
4247
- Block Reward: 3KMD
43-
- Mining Algorithm: Equihash
48+
- Mining Algorithm: Equihash
4449

4550
## About this Project
46-
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/.
51+
Komodo is based on Zcash and has been extended 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, our assetchain capabilities (one click plug and play blockchain solutions) and a set of financial decentralization and interoperability technologies. More details are available under https://komodoplatform.com/ and https://blog.komodoplatform.com.
4752

4853
## Getting started
49-
Dependencies
50-
------------
54+
55+
### Dependencies
5156

5257
```shell
5358
#The following packages are needed:
@@ -76,15 +81,17 @@ Building for Windows:
7681
```
7782
VerusCoin
7883
------
79-
We develop on dev and some other branches and produce releases of of the master branch, using pull requests to manage what goes into master.
84+
We develop on dev and some other branches and produce releases of of the master branch, using pull requests to manage what goes into master. The dev branch is considered the bleeding edge codebase, and may even be oncompatible from time to time, while the master-branch is considered tested (unit tests, runtime tests, functionality). At no point of time do the Komodo Platform developers or Verus Developers take any responsbility for any damage out of the usage of this software.
8085

86+
Verus builds for all operating systems out of the same codebase. Follow the OS specific instructions from below.
8187

88+
#### Linux
8289
```shell
8390
git clone https://github.com/VerusCoin/VerusCoin
8491
cd VerusCoin
8592
#you might want to: git checkout <branch>; git pull
8693
./zcutil/fetch-params.sh
87-
# -j8 uses 8 threads - replace 8 with number of threads you want to use
94+
# -j8 = using 8 threads for the compilation - replace 8 with number of threads you want to use
8895
./zcutil/build.sh -j8
8996
#This can take some time.
9097
```
@@ -111,11 +118,8 @@ The remaining text is from the komodo source we forked when creating VerusCoin/V
111118
**To change modes:**
112119

113120
a) backup all privkeys (launch komodod with `-exportdir=<path>` and `dumpwallet`)
114-
115121
b) start a totally new sync including `wallet.dat`, launch with same `exportdir`
116-
117122
c) stop it before it gets too far and import all the privkeys from a) using `komodo-cli importwallet filename`
118-
119123
d) resume sync till it gets to chaintip
120124

121125
For example:
@@ -127,41 +131,11 @@ mv ~/.komodo ~/.komodo.old && mkdir ~/.komodo && cp ~/.komodo.old/komodo.conf ~/
127131
./komodod -exchange -exportdir=/tmp &
128132
./komodo-cli importwallet /tmp/example
129133
```
134+
---
130135

131-
## JUMBLR
132-
komodod now has `jumblr_deposit` and `jumblr_secret` RPC calls.
133-
134-
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.
135-
136-
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.
137-
138-
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.
139-
140-
`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.
141-
142-
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.
143136

144-
`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.
137+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
145138

146-
#### Practical Advice:
147-
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.
139+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
148140

149-
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.
150-
151-
The advice is to setup a totally separate node!
152-
153-
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.
154-
155-
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.
156-
157-
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.
158-
159-
What if you have 100,000 KMD and you dont want others to know you are such a whale?
160-
Instead of generating 1 secret address, generate 100 and make a script file with:
161-
```shell
162-
./komodo-cli jumblr_secret <addr0>
163-
./komodo-cli jumblr_secret <addr1>
164-
...
165-
./komodo-cli jumblr_secret <addr99>
166-
```
167-
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.
141+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

doc/beefy-node-reference-komodo.conf

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
rpcuser=dontuseweakusernameoryougetrobbed
2+
rpcpassword=dontuseweakpasswordoryougetrobbed
3+
txindex=1
4+
server=1
5+
rpcworkqueue=64
6+
addnode=5.9.102.210
7+
addnode=78.47.196.146
8+
addnode=178.63.69.164
9+
addnode=88.198.65.74
10+
addnode=5.9.122.241
11+
addnode=144.76.94.38
12+
addnode=89.248.166.91

0 commit comments

Comments
 (0)