neonatura / shioncoin

The ShionCoin (SHC) Virtual Currency. A linux/win64/arm64 C/C++ Scrypt/SHA256d/Keccak/X11/Blake2S/Qubit/Greostl/Skein based virtual currency with extended transactions (certificates, SEXE programs, etc).

Home Page:https://shcoins.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

shioncoin

Programs Provided

The "shcoind" daemon provides RPC, Stratum, and Currency services.

The "shc" console utility program provides access to the daemon.

ShionCoin Service

The ShionCoin service "shcoind" provides the core SHC virtual currency server operations.

SHC Port: 24104

RPC Service

The ShionCoin package includes a command-line console program in order to run RPC commands against the server.

The RPC service is provided for the "shc" utility program to manage service or wallet operations.

Run the command "shc --prompt" in order to invoke a command-line processor.

RPC Port: 9447

Build Dependencies

The c++ boost shared library is required. To be specific, the "system", "filesystem", and "thread" boost libraries. To install boost on linux run 'yum install libboost*' or 'apt-get install libboost*'.

The GMP library is required. In order to install the GMP library; Run "yum install gmp-devel" on CentOS. Run "apt-get install libgmp-dev" on Ubuntu. Run "pacman -S libgmp-devel" from MSYS2 64-bit.

SHC Specifications

The shioncoin is unique in that it provides additional types of transactions than only coin transfers.

Address Alias ShionCoin provies the capability to create a global alias for a coin address in the format "@". The alias can be used anytime a normal coin address would be with the "shc" console utility.

Contextual Information ShionCoin provides the capability to record general contextual information on the block-chain. Contextual information is not limited and can be arbitrary (like word definitions) or more specific such as details about a public location.

Certificates, Licenses, and Assets ShionCoin provides a range of different concepts that include digital certification. These include generating certificates, granting licensing, tracking assets, and sending a ceritified coin transfer.

Smart Contracts ShionCoin utilizes a derivative of Lua which can be used to generate apps that can run on the block-chain. Albiet limited to imagination, two examples of these include coin tokens and apps capable of tracking theater tickets.

Alternate Blockchain Specialized block-chains may be generated on top of the ShionCoin block-chain layer. Each alternate block-chain is referenced by a 160-bit color code.

Redudant Verification ShionCoin includes three layers of block validation, beyond normal coin services, that are chained together. A "Validation Matrix" is required to be included in the coinbase every 27 blocks generated containing information about the previous state of the block-chain. In addition, an "automatic checkpoint" can be generated by mutal agreement between server nodes. The "BOLO" sub-system provides a mechanism to then publish this checkpoint onto the LiteCoin virtual currency network to further validate against.

Dynamic Parameters ShionCoin includes the ability for server nodes to vote on various parameters of the block-chain. These include variables such as the maximum block size of a ShoinCoin block and the minimum transaction fee.

The ShionCoin block defaults to a maximum size of 4 megabytes. The transaction fees for normal and extended operations are designed to be minimal. The intended block-rate is one minute, and a theoretical limit of 7 transactions per second is capable.

The ShionCoin supports signing coin transactions with the Dilithium-3 algorithm. Dilithium-3 is a quantum-proof private/public key signature method.

The shcoind SHC coin server recalcultes the block difficulty rate every block using the Kimoto Gravity Well algorythm. The target duration for blocks is one minute.

A maximum of half a billion (500,000,000) SHC coins will be generated. The reward life-time is expected to continue for around 40 years (~ 2055).

The SHC network requires 1 confirmation per transaction.

The SHC network block matures after 60 confirmations.

Quick Instructions

64-bit Cent-OS: Add '--libdir=/usr/local/lib64' as configure command-line option

Building the shioncoin programs:

git clone https://github.com/neonatura/shioncoin
cd shioncoin
./autogen.sh
./configure
make
make install

The binaries can be found under "src/shioncoin/shcoind" and "src/coin-console/shc"". Performing a 'make install' will install these programs into the bin and sbin directories respectively. The "shc" client program must be ran on the same machine as the "shcoind" daemon. When installed on a unix-like systems that supports the traditional /etc/init.d/rc.d/ hierarchy a 'shcoind' daemon will be registered with the system to load upon startup as the root user. Note: The client utility programs "shc" must be ran as the same user as the 'shcoind' daemon.

The shcoind daemon and client programs store data in the "/var/lib/share/blockchain/" directory on linux and the "%APPDATA%\share\blockchain" directory on windows. Commands are provided in order to import or export the entire block-chain, wallet transactions, and network peer addresses. No RPC access is permitted except via the local machine and only with the automatically generated rpc credentials (see "rpc.dat" file).

Run the "shc --prompt" for a textual UI interactive environment.

Features

Stratum Service

The Stratum service provides full-capability gateway access for coin miner devices (ASIC) and programs (cpuminer). Typically, a seperate program is required in order to provide this service. In addition, capabilities for creating and managing wallet accounts is provided for web/API interfacing.

Note: The stratum service utilizes supplemental methods that are not standard, and require a compatible API client for full usage.

Stratum Port: 9448

The stratum status web-page will display a "verification fractal" which can be compared to other sites in order to verify the integrity of their block-chain.

Fast and affordable transaction fees.

ShionCoin has a 60-second block difficulty and has a smaller transaction fee than typical coin services in order to ensure sending transactions is possible for small and large fund transfers alike.

A 4mb allowance size for each blocks ensures that thousands of transactions can be stored in each block.

Coin Address Alias

Create aliases for coin addresses and store them on the global block-chain. This provides the ability for other users to directly reference your own established name without the need to remember a lengthy coin address.

Alias commands can be used in lue of a coin address by prepending a "@" character.

Creating a context initially cost around 20 SHC, and this fee goes down in cost over time. Aliases expire after 12 years.

Example "shc" console commands:

alias.set test <coin addr>
alias.get test
wallet.send bank @test 10

Context Data

Contextual data may be stored in the block-chain describing people places, or any other arbitrary information. This functionality has aspects similar to name-coin, except that the context data content has a larger 4k limit per record.

A context record will expire after two years. The owner can update the context with a new (or original) value which will reset the expiration date.

Creating a context initially cost around 20 SHC, and this fee goes down in cost over time.

Example "shc" console commands:

ctx.setloc bank "Missoula, MT" "geo:46.8787,113.9966" AREA US
ctx.getloc geo:46.8787,113.9966

Certification

Chained certificates may be created on the global block-chain which are linked to a particular coin address.

Certified fund transfers may be made by associating a transaction with a particular certificate. This allows the end-point to verify the origin of the funds.

A fee may also be associated with a certificate allowing for certificates derived from it to be purchased.

A certificate may also be derived into a license. Licensing can be used with SEXE scripts and also can be integrated into a application key via the libshare suite thereby requiring a license to be purchased from the sharecoin network in order to be executed.

Asset transactions may be created and optionally signed with a certificate. These transactions are meant to be used in order to provide a record for physical items such as property or equipment. An asset transaction will not expire.

Creating a certificate initially cost around 10 SHC, and this fee goes down in cost over time. Certificate transactions will expire after 48 years, and cannot be updated after creation.

Example "shc" console commands:

cert.new bank "test CA"
{ .. "certhash": "d9ac92d017b790eee16e3fd46c8e376318144a81" .. }
cert.get d9ac92d017b790eee16e3fd46c8e376318144a81
cert.derive "test certificate" d9ac92d017b790eee16e3fd46c8e376318144a81 1

Geodetic Stamping

The "spring matrix" contains bit-flags derived from over 1000000 geodetic landmark locations. Each time a geodetic stamp is performed on a particular location contained in the matrix the bit-flag representing that location is removed. As time progresses it will become more difficult to pinpoint unique locations that have not already been found.

A geodetic stamp is performed in order to "stamp" an identity derived from a coin address onto a particular geodetic location. Any valid latitude and longitude pair may be "stamped". If the location happens to be an unfround location stored in the spring matrix then the sharecoin network will automatically reward you ONE SHC to the account which stamped the location.

Example "shc" console commands:

wallet.stamp bank "geo:46.8787,113.9966"
"ident":  {
    "label":  "geo:46.8787,113.9966",
    "geo":  "46.878700,113.996600",
    "addr": "SM5JyMLR2RFzPnEBd2UXUWLzsKvGvxaDQL"
}

SEXE Scripting

Scripts associated with a particular coin server node may be created in the libshare SEXE programming language. These scripts allow for the tracking of information and creation of block transactions. An example script might be a simple coin faucet which collects and distributes coins, or a music ticket outlet.

A SEXE transaction will expire after 48 years.

Example SEXE facuet program:

function send(a, v)
  userdata.txout = { }
  userdata.txout.addr = a
  userdata.txout.value = v
  userdata.total = userdata.total - v
end
function donate(farg)
  if (farg.value >= 1) then
    userdata.total = userdata.total + farg.value
    userdata.stamp = 0
    return farg.value
  end
  return 0
end
function spigot(farg)
  local a = abs(time() / 60)
  local b = abs(userdata.stamp / 60)
  if (a == b) then
    -- 1 SHC / minute --
    return 0
  end
  if (userdata.total >= 1) then
    send(farg.sender, 1)
    userdata.stamp = time()
    return 1
  end
  return 0
end
function init(farg)
  userdata.owner = farg.sender
  userdata.total = 0
  userdata.donate = donate
  userdata.spigot = spigot
  return 0
end

Coin Exchange Offers

A de-centralized exchange is provided in order to swap "color alt-chain coins" with SHC coins.

Client Utility Program

Run "shc help" to list command-line arguments:

Sending and receiving a funds transfer transaction:

shc wallet.new test
shc wallet.listaddr test

Send 1 SHC to address generated:

shc wallet.balance test
shc wallet.new test2
shc wallet.send test S9cXrHRUoDSJdNvBANSUVPKrMxCWGxHMuH 0.9998

Wait for transaction to be committed to a block:

shc wallet.unspent test
shc wallet.balance test2

Windows Build Instructions

In order to build the ShionCoin service download the MSYS2 64-bit build environment from "http://msys2.org/". Note: The ShionCoin service is a 64-bit program, and therefore requires the "64-bit" version of MSYS2.

Open a MSYS2 command consolie window and run the following to install some basic development packages: pacman -S autoconf automake gcc openssl openssl-devel git doxygen

Create a "release" directory where the share coin programs will be stored. The can be ran outside of the MSYS environment. mkdir ~/shc_bin

Copy the dependant DLLs for MSYS2 that will be required to the the service and utility programs: cp /usr/bin/msys-2.0.dll ~/shc_bin cp /usr/bin/msys-gcc_s-seh-1.dll ~/shc_bin

** Share Runtime Library **

Download and install the libshare library: git clone https://github.com/neonatura/share ./libshare mkdir libshare/build cd libshare/build ../configure --sbindir=/usr/bin --bindir=/usr/bin --libdir=/usr/lib make make install

Note: The library will automatically be downloaded and built under the default build ruleset for shioncoin.

** Boost C++ Runtime Library **

Download the boost source code from "http://www.boost.org/".

Open a MSYS2 command console window and run the following from where boost was extracted: ./bootstrap.sh gcc ./b2 toolset=gcc cp -fr stage/lib/.a /usr/lib cp -fr stage/lib/.dll ~/shc_bin mkdir -p /usr/include/boost find libs | grep "/include/boost$" | while read a; do cp -fr $a/* /usr/include/boost; done

** ShionCoin Installation **

From the shioncoin build directory, copy the service and executables to the temporary release directory: cp ~/bin/shcoind.exe ~/shc_bin cp ~/bin/shc.exe ~/shc_bin

Note: This directory is typically located at "C:\msys64\home<username>\shc_bin" under the windows directory hierarchy.

Note: If you experience any autoconf compatibility issues (i.e. an error occurs while building) try running "./autogen.sh" in the root source code directory in order to remake the "configure" script based on your own platform environment.

You can optionally install the shcoind.exe program as a service: shcoind.exe --install Note: The "shcoind.exe" must run as the same user when running the "shc.exe" utility program in order to communicate.

** ShionCoin Configuration **

Use "shcoind --help" in order to get a list of all configuration options.

The shioncoin configuration is applied in the following order:

A sharelib preference settings (see libshare "shpref" utility program).

On windows; "C:\ProgramData\ShionCoin\shc.conf", and on Linux; "/var/lib/shioncoin/shc.conf".

A path ".shc/shc.conf" relative to the user's home directory.

Environment variable settings.

A shcoind command-line argument.

Each stage will over-write previous options when specified. Therefore, a command-line argument will always over-ride a configuration file.

A default "shc.conf" datafile will be written to the "ProgramData" (windows) or "/var/lib/" (linux) area, when one does not previously exist. A new RPC key will be generated at this point in time.

Review the auto-generated "shc.conf" in order to become familar with the configuration options available.

In order to specify a libshare preference, use the "shpref" command in order to set a configuration value. Prepend the string "shcoind." to the preference name. For example: shpref shcoind.shc-port 24104

To specify a environment variable, prepend "SHCOIND_" and replace all punctuation with a underscore ("_") character. Linux/Bash example: export SHCOIND_DEBUG="1" Windows example: set SHCOIND_DEBUG=1

The "shc" coin-console RPC client program will read the two "shc" datafile locations specified above in order to retrieve the option "rpc-key".

About

The ShionCoin (SHC) Virtual Currency. A linux/win64/arm64 C/C++ Scrypt/SHA256d/Keccak/X11/Blake2S/Qubit/Greostl/Skein based virtual currency with extended transactions (certificates, SEXE programs, etc).

https://shcoins.com/

License:GNU General Public License v3.0


Languages

Language:C 69.3%Language:C++ 10.2%Language:Makefile 8.2%Language:Perl 5.4%Language:Assembly 2.4%Language:Shell 2.2%Language:M4 1.7%Language:DIGITAL Command Language 0.5%Language:Batchfile 0.1%Language:Lua 0.1%Language:XS 0.0%Language:eC 0.0%Language:Scheme 0.0%Language:sed 0.0%