From 5b2c8d4ca159d9ae6eeb647c7699f53800e94855 Mon Sep 17 00:00:00 2001 From: "progr76@gmail.com" Date: Sun, 10 Feb 2019 22:52:24 +0300 Subject: [PATCH] 0.884 --- LICENSE | 23 ++++ README.md | 215 ++++++++++++++++++++++++++++++++- Torrent/Tera-folder-DB.torrent | Bin 0 -> 16317 bytes 3 files changed, 235 insertions(+), 3 deletions(-) create mode 100644 LICENSE create mode 100644 Torrent/Tera-folder-DB.torrent diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b63c084 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2017-2018 The Tera Core developers (progr76@gmail.com) + +Not for evil. + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/README.md b/README.md index 681a9fe..cb63c59 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,212 @@ -# tera - -We have managed to create a blockchain with 1 second block time, 8 seconds for full confirmation of transfer and zero fees. On top of that TERA blockchain is capable of throughput of 1000 transactions per second while retaining all praised blockchain \ No newline at end of file +# TERA PLATFORM + +## Light-wallet (web-version) +https://terafoundation.org/web-wallet.html +* Note: the light wallet has a decentralized core - i.e. it works with all available nodes in the network + + +## Installing decentralized light wallet from setup on Windows: +* https://sourceforge.net/p/tera/code/ci/master/tree/Bin/Light/tera_light_setup.exe?format=raw +* [Light client (zip)](https://sourceforge.net/p/tera/code/ci/master/tree/Bin/Light/Tera-light.zip?format=raw) + +## Installing full node from source code by steps: + +Attention: +* For a quick initial download of the wallet, there is a [link](https://sourceforge.net/p/tera/code/ci/master/tree/Torrent/Tera-folder-DB.torrent?format=raw) to download the database via the P2P Protocol. Download the file via torrent and unzip it. Next, put the DB folder in the data directory of the wallet (with full replacement). +* After the installation shown below, enter the address your server in the browser. Example: 12.34.56.78:8080 +* For mining You must have a static (public) IP address and an open port. +* We recommend not storing private keys on remote servers. +* We recommend putting an additional password on the private key ("Set password" button) - in this case the private key will be stored in file in encrypted form. +* If you do not set http-password, you can access only from the local address: 127.0.0.1:8080 +* For remote access to the node only from the specified computer set the HTTP_IP_CONNECT constant (for example: "HTTP_IP_CONNECT": "122.22.33.11") +* When installing, pay attention to the **secp256k1** cryptographic library. There should be no errors when compiling it (with command: npm install) + + + +## Installing on Windows: + +1. Download and install Nodejs https://nodejs.org (v8.11 is recommended) +2. Download and install git https://git-scm.com/download/win +3. Then run the commands (in program: cmd or PowerShell): + +``` +cd ..\..\..\ +git clone https://git.code.sf.net/p/tera/code wallet +npm install --global --production windows-build-tools +npm install -g node-gyp +cd wallet/Source +npm install +node set httpport:8080 password: +run-node.bat + +``` +If you want to run the wallet as a background process, then instead of the last command (run-node.bat), do the following: +``` +npm install pm2 -g +pm2 start run-node.js +``` + +### Opening ports: +``` +netsh advfirewall firewall add rule name="Open 30000 port" protocol=TCP localport=30000 action=allow dir=IN +``` + +### Updates + +``` +cd wallet +git reset --hard +git clean -f +git pull +``` + + + +## Installation on Linux + +### CentOS 7: + + +``` +sudo yum install -y git +curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - +sudo yum install -y nodejs +sudo yum install gcc gcc-c++ +sudo npm install pm2 -g +sudo git clone https://git.code.sf.net/p/tera/code wallet +cd wallet/Source +sudo npm install +sudo node set httpport:8080 password: +sudo pm2 start run-node.js +``` + +### open ports (all): +``` +systemctl stop firewalld +systemctl disable firewalld +``` + +### Updates + +``` +cd wallet +sudo git reset --hard +sudo git clean -f +sudo git pull +``` + + + +### UBUNTU 18.4: + +``` +sudo apt-get install -y git +sudo apt-get install -y nodejs +sudo apt-get install -y npm +sudo npm install pm2 -g +sudo git clone https://git.code.sf.net/p/tera/code wallet +sudo apt install build-essential +sudo apt group install "Development Tools" +cd wallet/Source +sudo npm install +sudo node set httpport:8080 password: +sudo pm2 start run-node.js +``` + +### open ports: + +``` +sudo ufw allow 30000/tcp +sudo ufw allow 8080/tcp +``` + + + + +### Updates + +``` +cd wallet +sudo git reset --hard +sudo git pull +``` + +## MAIN NETWORK +Default values: +``` +port:30000 +httpport:8080 +``` + + + +## TEST NETWORK +Default values: +``` +port:40000 +httpport:8080 +``` +Launch: +``` +cp -a Source SourceTest +cd SourceTest +sudo node set-test httpport:8080 password:SecretWord +sudo pm2 start run-test.js +``` + + + + + + + + +## Specification + +* Name: TERA +* Consensus: PoW +* Algorithm:  Terahash (sha3 + Optimize RAM hashing) +* Total suplay: 1 Bln +* Reward for block: 1-20 coins, depends on miner power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the miner power) +* Block size 130 KB +* Premine: 5% +* Development fund: 1% of the mining amount +* Block generation time: 1 second +* Block confirmation time: 8 seconds +* Speed: from 1000 transactions per second +* Commission: free of charge +* Cryptography: sha3, secp256k1 +* Protection against DDoS: PoW (hash calculation) +* Platform: Node.JS + + +# FAQs + +## Mining is possible only on a public IP +* Check the presence of a direct ip-address (order from the provider) +* Check if the port is routed from the router to your computer +* Check the firewall (port must open on the computer) + + + +## Refs: +* Web: http://terafoundation.org +* Btt: https://bitcointalk.org/index.php?topic=4573801.0 +* Twitter: https://twitter.com/terafoundation +* Telegram: https://web.telegram.org/#/im?p=@terafoundation +* Discord: https://discord.gg/CvwrbeG +* [White Paper](https://docs.google.com/document/d/1EaqFg1ncIxsrNE2M9xJOSzQu8z3ANwMuNyTX0z_A1ow/edit?usp=sharing) +* [DApp Paper](https://docs.google.com/document/d/1PXVBbMKdpsAKPkO9UNB5B-LMwIDjylWoHvAAzzrXjvU/edit?usp=sharing) +* [DEX-guide](https://docs.google.com/document/d/1qvVRfLq3qcYYF6dcsAAAqoGyBFF4njXUYZXZfTPWd2w/edit?usp=sharing) +* [BTC for DEX](https://docs.google.com/document/d/19vRY6tkbTP8tubZxM01llwnMyz4P6IzY0zvnargrU6k/edit?usp=sharing) +* [Torrent of blockchain - DATA/DB folder](https://sourceforge.net/p/tera/code/ci/master/tree/Torrent/Tera-folder-DB.torrent?format=raw) +* [API](https://sourceforge.net/p/tera/code/ci/master/tree/Doc/Eng/API.md) +* [CONSTANTS](https://sourceforge.net/p/tera/code/ci/master/tree/Doc/Eng/CONSTANTS.MD) + +## Chinese +* [Mining guide (chinese PDF)](https://sourceforge.net/p/tera/code/ci/master/tree/Doc/Chinese/Mining.pdf?format=raw) +* [Tera White Paper (chinese PDF)](https://sourceforge.net/p/tera/code/ci/master/tree/Doc/Chinese/WP_chinese.pdf?format=raw) + +## RUS + [Эта же страница на русском](https://sourceforge.net/p/tera/code/ci/master/tree/Doc/Rus) + diff --git a/Torrent/Tera-folder-DB.torrent b/Torrent/Tera-folder-DB.torrent new file mode 100644 index 0000000000000000000000000000000000000000..95a481853f4a7b19656e04a0f1014fbc8c28792d GIT binary patch literal 16317 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