mirror of
https://github.com/Expand-sys/CCash
synced 2025-12-17 00:22:14 +11:00
6.6 KiB
6.6 KiB
Building
Advice
as CCash is very lightweight it can run on practically any device but here are some tips:
- single core machines should toggle
MULTI_THREADEDtofalse - if your server is sufficiently active, such that each time save frequency is met, changes having been made is highly likely then
CONSERVATIVE_DISK_SAVEshould be toggled tofalse MAX_LOG_SIZEshould be adjusted as it takes up the most memory usage/storage of the ledger's features at ~157 bytes in memory and ~43 bytes in disk at default settings, so 6678 logs per Mb of RAM. Setting to 0 will disable logs- with no users memory usage is 8.47 Mb
- Saving frequency (a runtime argument) being set to 0 will disable frequency saving and only save on close
- make backups of your save files
Docker & Ansible
If you want to use the docker package, deploy information can be found here
Drogon Depedencies
Linux
Debian
sudo apt install libjsoncpp-dev uuid-dev openssl libssl-dev zlib1g-dev make cmake
CentOS 7.5
yum install git gcc gcc-c++
git clone https://github.com/Kitware/CMake
cd CMake/
./bootstrap
make
make install
yum install centos-release-scl devtoolset-8
scl enable devtoolset-8 bash
git clone https://github.com/open-source-parsers/jsoncpp
cd jsoncpp/
mkdir build
cd build
cmake ..
make
make install
yum install libuuid-devel openssl-devel zlib-devel
Other
anything that can download the appropriate dependencies
make & cmake
jsoncpp
libuuid
openssl
zlib
MacOS
brew install jsoncpp ossp-uuid openssl zlib
Actually, building
git clone --recurse-submodule https://github.com/EntireTwix/CCash/
cd CCash
cd third_party/base64
AVX2_CFLAGS=-mavx2 SSSE3_CFLAGS=-mssse3 SSE41_CFLAGS=-msse4.1 SSE42_CFLAGS=-msse4.2 AVX_CFLAGS=-mavx make lib/libbase64.o
cd ../..
mkdir build
cd build
CMake Flags
there are multiple flags responsible configuring CCash:
| name | default | description | pros | cons |
|---|---|---|---|---|
| USER_SAVE_LOC | "config/users.dat" | where the users are saved | N/A |
N/A |
| DROGON_CONFIG_LOC | "config/config.json" | where the config is located | N/A |
N/A |
| MAX_LOG_SIZE | 100 | max number of logs per user, last n transactions. If both this and pre log are toggled to 0 logs will not be compiled. |
large history | higher memory usage |
| CONSERVATIVE_DISK_SAVE | true |
when true only saves when changes are made |
low # of disk operations | some atomic overhead |
| MULTI_THREADED | true |
when true the program is compiled to utilize n threads which corresponds to how many Cores your CPU has, plus 1 for saving |
speed | memory lock overhead is wasteful on single core machines |
| RETURN_ON_DEL_NAME | N/A |
when defined, return on delete will be toggled and any accounts deleted will send their funds to the defined account, this prevent currency destruction | prevents destruction of currency | deleting accounts is made slower |
| ADD_USER_OPEN | true |
anybody can make a new account, if set to false only admins can add accounts via AdminAddUser() |
N/A |
spamming new users |
| API_VERSION | 2 | the maximum api version's endpoints to be compiled. By default API_VERSION is set to the newest version |
N/A |
N/A |
| MIN_API_SUPPORT | 1 | the minimum api version's endpoints to be compiled. By default set to 1 for full backwards compatibility, setting to the same value as API_VERSION would disable backwards compatiblity |
N/A |
N/A |
EXAMPLE:
cmake ..
sets these flags to their defaults, an example of setting a flag would be
cmake -DMULTI_THREADING=false ..
with -D
Finishing building
lastly type in
cmake <flags of your choice or none> ..
make -j<threads>
sudo ./bank
Certs
make sure to edit config.json adding the certificate location if you're using HTTPS, I personally use certbot.
{
"listeners": [
{
"address": "0.0.0.0",
"port": 80,
"https": false
},
{
"address": "0.0.0.0",
"port": 443,
"https": true,
"cert": "",
"key": ""
}
]
}
editing
"cert": "pubkey",
"key": "privkey"
Alternatively you can delete this entire section (Disabling HTTPS in the proccess)
{
"address": "0.0.0.0",
"port": 443,
"https": true,
"cert": "",
"key": ""
}
leaving
{
"listeners": [
{
"address": "0.0.0.0",
"port": 80,
"https": false
}
]
}
it is Highly recommened you secure your server