Go to Top

Bytecoin (BCN). Secure, private, untraceable

Bytecoin (BCN)

Bytecoin (BCN)

Bytecoin is an untraceable cryptocurrency that uses CryptoNote ring signatures to provide anonymous transactions. As a primarily peer-to-peer (p2p) payment system, Bytecoin has many of the same use-cases as Bitcoin.
Created in 2012, Bytecoin is one of the earliest developed cryptocurrencies. Until recently, the team behind the coin has kept themselves anonymous. Now, though, they’ve opened up multiple communication channels, removed some layers of anonymity, and even built several local communities.
The coin has a deep history with Monero, another popular privacy coin and fork of Bytecoin.

BCN Community Website

Emission
The emission of fiat currencies is a closed process where an issuer is engaging in its own capabilities. One can’t take part in the emission process.
Bytecoin emission is an open process which employs the computing powers of all network members. Any user can join the Bytecoin network and take part in the emission process (thus, becoming a miner).
Mining in the network results in the creation of new money, which serves as a reward for users who employ their computing power in order to process transactions.
All transactions are carried out every 120 seconds. The Miners ensure that the transactions are processed correctly and provide cryptographic protection of transactions and personal data. However, miners cannot access users’ financial data since Bytecoin protects the identity of the sender and the receiver, and conceals the sum transferred.

Specifications
Your can participate in the operation of the network by allocating the computing power of your computer. Due to this mechanism, transaction processing is decentralized, which allows a person to be not only a user, but also a participant.
The decision entirely your choice, you are able to choose to take part in network maintenance and get a reward for it, or buy BCN directly on exchanges.

AlgorithmCryptoNight
Block time: 120 seconds (2 minutes)
Difficulty retargets each block
Block reward decreases each block according to the formula: BaseReward = (MSupply – A)/218,  where MSupply = (264 – 1) atomic units and ‘A’ is amount of already generated coins

Bytecoin Transactions
Unlike fiat money transactions, where your money is processed through an intermediary, bank, or financial institution, transactions between Bytecoin users are carried out over the Internet which makes the transactions much more reliable. Transaction privacy is protected by secure cryptographic algorithms whereby no one can identify who sent the money, who the receiver was, and what amount of money was transferred.

Safety and Reliability
The reliability of Bytecoin is defined by the total computational power of all the computers that take part in the processing of transactions. The greater the processing power, the more reliable the network.
In so doing all of the money stored in your wallet is already protected during the transaction process and its safety doesn’t depend on the network’s reliability. Your money is always safe.

Deflation
Bytecoins are gradually getting more expensive over time, since the emission is limited to 184.47 billion BCN. The number of Bytecoin emitted each 120 seconds is slightly decreasing. As a result BCN gains value and the exchange rate increases.

While currencies with sharp decreases of reward per block are exposed to intense declines in network power, Bytecoin emissions are decreasing slowly, which protects the currency from economic shocks.

Bytecoin

About

Welcome to the repository of Bytecoin. Here you will find source code, instructions, wiki resources, and integration tutorials.

Contents
* Building on Linux 64-bit
* Building on Mac OSX
* Building on Windows
* Building on other platforms

Building on Linux 64-bit

All commands below are adapted for Ubuntu, other distributions may need an other command set.

Building with standard options

Create directory bcndev somewhere and go there:

$> mkdir bcndev
$> cd bcndev

To go futher you have to have a number of packages and utilities. You need at least gcc 5.4.

  • build-essential package:

    $bcndev> sudo apt-get install build-essential
    
  • CMake (3.5 or newer):

    $bcndev> sudo apt-get install cmake
    $bcndev> cmake --version
    

    If version is too old, follow instructions on the official site.

  • Boost (1.62 or newer):
    You need boost in bcndev folder. We do not configure to use boost installed by apt-get, because it is sometimes updated without your control by installing some unrelated packages. Also some users reported crashes after find_package finds headers from one version of boost and libraries from different version, or if installed boost uses dynamic linking.

    $bcndev> wget -c 'http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.tar.bz2/download'
    $bcndev> tar xf download
    $bcndev> rm download
    $bcndev> mv boost_1_67_0 boost
    $bcndev> cd boost
    $bcndev/boost> ./bootstrap.sh
    $bcndev/boost> ./b2 link=static -j 8 --build-dir=build64 --stagedir=stage
    cd ..
    
  • OpenSSL (1.1.1 or newer):
    Install OpenSSL to bcndev/openssl folder. (In below commands use switch linux-x86_64-clang instead of linux-x86_64 if using clang.)

    $bcndev> git clone https://github.com/openssl/openssl.git
    $bcndev> cd openssl
    $bcndev/openssl> ./Configure linux-x86_64 no-shared
    $bcndev/openssl> time make -j4
    $bcndev/openssl> cd ..
    

Git-clone (or git-pull) Bytecoin source code in that folder:

$bcndev> git clone https://github.com/bcndev/bytecoin.git

Put LMDB source code in bcndev folder (source files are referenced via relative paths, so you do not need to separately build it):

$bcndev> git clone https://github.com/LMDB/lmdb.git

Create build directory inside bytecoin, go there and run CMake and Make:

$bcndev> mkdir bytecoin/build
$bcndev> cd bytecoin/build
$bcndev/bytecoin/build> cmake ..
$bcndev/bytecoin/build> time make -j4

Check built binaries by running them from ../bin folder

$bcndev/bytecoin/build> ../bin/bytecoind -v

Building with specific options

Download amalgamated SQLite 3 and unpack it into bcndev/sqlite folder (source files are referenced via relative paths, so you do not need to separately build it).

Below are the commands which remove OpenSSL support and switch from LMDB to SQLite by providing options to CMake:

$bcndev> mkdir bytecoin/build
$bcndev> cd bytecoin/build
$bcndev/bytecoin/build> cmake -DUSE_SSL=0 -DUSE_SQLITE=1 ..
$bcndev/bytecoin/build> time make -j4

Building on Mac OSX

Building with standard options (10.11 El Capitan or newer)

You need command-line tools. Either get XCode from an App Store or run ‘xcode-select –install’ in terminal and follow instructions. First of all, you need Homebrew.

Then open terminal and install CMake and Boost:

  • brew install cmake
  • brew install boost

Create directory bcndev somewhere and go there:

$~/Downloads> mkdir bcndev
$~/Downloads> cd bcndev

Git-clone (or git-pull) Bytecoin source code in that folder:

$bcndev> git clone https://github.com/bcndev/bytecoin.git

Put LMDB source code in bcndev folder (source files are referenced via relative paths, so you do not need to separately build it):

$bcndev> git clone https://github.com/LMDB/lmdb.git

Create build directory inside bytecoin, go there and run CMake and Make:

$bcndev> mkdir bytecoin/build
$bcndev> cd bytecoin/build
$bcndev/bytecoin/build> cmake -DUSE_SSL=0 ..
$bcndev/bytecoin/build> time make -j4

Check built binaries by running them from ../bin folder:

$bcndev/bytecoin/build> ../bin/bytecoind -v

Building with specific options

Binaries linked with Boost installed by Homebrew will work only on your computer’s OS X version or newer, but not on older versions like El Capitan.

If you need binaries to run on all versions of OS X starting from El Capitan, you need to build boost yourself targeting El Capitan SDK.

Download Mac OSX 10.11 SDK and unpack to it into Downloads folder

Download and unpack Boost to Downloads folder.

Then build and install Boost:

$~> cd ~/Downloads/boost_1_67_0/
$~/Downloads/boost_1_67_0> ./bootstrap.sh
$~/Downloads/boost_1_67_0> ./b2 -a -j 4 cxxflags="-stdlib=libc++ -std=c++14 -mmacosx-version-min=10.11 -isysroot/Users/user/Downloads/MacOSX10.11.sdk" install`

Install OpenSSL to bcndev/openssl folder:

$~/Downloads/bcndev> git clone https://github.com/openssl/openssl.git
$~/Downloads/bcndev> cd openssl

If you need binaries to run on all versions of OS X starting from El Capitan, you need to build OpenSSL targeting El Capitan SDK.

$bcndev/openssl> ./Configure darwin64-x86_64-cc no-shared -mmacosx-version-min=10.11 -isysroot/Users/user/Downloads/MacOSX10.11.sdk

Otherwise just use

$bcndev/openssl> ./Configure darwin64-x86_64-cc no-shared
$bcndev/openssl> time make -j4
$bcndev/openssl> cd ..

Download amalgamated SQLite 3 and unpack it into bcndev/sqlite folder (source files are referenced via relative paths, so you do not need to separately build it).

You add OpenSSL support or switch from LMDB to SQLite by providing options to CMake:

$bcndev> mkdir bytecoin/build
$bcndev> cd bytecoin/build
$bcndev/bytecoin/build> cmake -DUSE_SSL=1 -DUSE_SQLITE=1 ..
$bcndev/bytecoin/build> time make -j4

Building on Windows

You need Microsoft Visual Studio Community 2017. Download and install it selecting C++, git, cmake integration packages.
Run Visual Studio x64 command prompt from start menu.

Create directory bcndev somewhere:

$C:\> mkdir bcndev
$C:\> cd bcndev

Get Boost and unpack it into a folder inside bcndev and rename it from boost_1_66_0 or similar to just boost.

Build boost (build 32-bit boost version only if you need 32-bit bytecoin binaries).

$> cd boost
$C:\bcndev\boost> bootstrap.bat
$C:\bcndev\boost> b2.exe address-model=64 link=static -j 8 --build-dir=build64 --stagedir=stage
$C:\bcndev\boost> b2.exe address-model=32 link=static -j 8 --build-dir=build32 --stagedir=stage32
cd ..

Git-clone (or git-pull) Bytecoin source code in that folder:

$C:\bcndev> git clone https://github.com/bcndev/bytecoin.git

Put LMDB in the same folder (source files are referenced via relative paths, so you do not need to separately build it):

$C:\bcndev> git clone https://github.com/LMDB/lmdb.git

You need to build openssl, first install ActivePerl (select “add to PATH” option, then restart console):

$C:\bcndev> git clone https://github.com/openssl/openssl.git
$C:\bcndev> cd openssl
$C:\bcndev\openssl> perl Configure VC-WIN64A no-shared no-asm
$C:\bcndev\openssl> nmake
$C:\bcndev\openssl> cd ..

If you want to build 32-bit binaries, you will also need 32-bit build of openssl in separate folder (configuring openssl changes header files, so there is no way to have both 32-bit and 64-bit versions in the same folder):

$C:\bcndev> git clone https://github.com/openssl/openssl.git openssl32
$C:\bcndev> cd openssl32
$C:\bcndev\openssl> perl Configure VC-WIN32 no-shared no-asm
$C:\bcndev\openssl> nmake
$C:\bcndev\openssl> cd ..

Now launch Visual Studio, in File menu select Open Folder, select C:\bcndev\bytecoin folder.
Wait until CMake finishes running and Build appears in main menu.
Select x64-Debug or x64-Release from standard toolbar, and then Build/Build Solution from the main menu.

You cannot add options to CMake running inside Visual Studio so just edit CMakeLists.txt and set USE_SSL or USE_SQLITE to ON if you wish to build with them.

Building on 32-bit x86 platforms, iOS, Android and other ARM platforms

Bytecoin works on 32-bit systems if SQLite is used instead of LMDB (we’ve experienced lots of problems building and running with lmdb in 32-bit compatibility mode, especially on iOS).

Therefore SQLite option is automatically selected by CMake on 32-bit platforms and you must have SQLite downloaded as explained in appropriate sections above.

We build official x86 32-bit version for Windows only, because there is zero demand for 32-bit version for Linux or Mac.

Building source code for iOS, Android, Raspberry PI, etc is possible (we have experimental bytecoind and walletd running on ARM64 iPhone) but requires major skills on your part. TBD

Building on Big-Endian platforms

Currently it is impossible to run Bytecoin on any Big-Endian platform, due to lots of endianess-dependent code. This may be fixed in the future. If you wish to run on Big-Endian platform, please contact us.

Building with parameters

If you want to use tools like clang-tidy, run cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. instead of cmake ..

, , ,

Leave a Reply

Your email address will not be published. Required fields are marked *