When a trade occurs, two native blockchain transfers will always occur. Take the example of a BTC/USNBT trade. For an order on the BTC/USNBT pair to be valid by protocol, it must originate from an account that has a BTC deposit address and an NBT deposit address associated with it. The proceeds of a trade remain on exchange in a signer controlled multisig address that is eligible for another trade after the configurable number of required confirmations exist. The proceeds of the trade are processed exactly like a deposit.
If the trade order is always not fulfilled, the BTCs are still multisig held in signers, we can configure how long time to give back BTC to trade order originator. Is it right?
Then can we configure number of required confirmation to 1000 confirmations, this will delay the deposite to customers. i.e Signers still hold the BTC after a trade occurs.
My ASRock Beebox arrived and I started configuring and testing it.
One hint for those who want to follow this path: in difference to the specifications, Ubuntu 14.04.3 LTS doesnāt run on it.
Installation was fine, but I ran into trouble booting it, which I couldnāt solve. Alas, Iām no sysadminā¦
I equipped it with 16 GB RAM (just in case I might need it; 8 GB should be totally sufficient), a small SSD for the operating system and a 500 GB HDD for the blockchain appdata files.
Hereās some output from it running daemons for processing BKC, BKS, BTC, LTC, NBT, NSR, PPC
<top>
top - 08:40:21 up 1:41, 1 user, load average: 0.35, 0.44, 0.73
Tasks: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.8 sy, 3.7 ni, 94.0 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem: 16098776 total, 6037796 used, 10060980 free, 127320 buffers
KiB Swap: 0 total, 0 used, 0 free. 3731056 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2742 user 20 0 1272788 577820 47096 S 10.3 3.6 7:22.39 bcexchanged
2745 user 20 0 1751556 443896 38480 S 3.7 2.8 7:11.58 bitcoind
2764 user 20 0 2238616 418456 30340 S 1.3 2.6 11:14.72 nud
2771 user 20 0 852504 152620 47832 S 1.3 0.9 1:10.09 peerunityd
2760 user 20 0 1371780 408888 112704 S 0.7 2.5 0:55.90 litecoind
</top>
<daemons>
bcexchanged getinfo | grep version
"version" : "v4.0.1-beta",
"protocolversion" : "2.0",
"walletversion" : 1,
bitcoin-cli getinfo | grep version
"version": 120000,
"protocolversion": 70012,
"walletversion": 60000,
litecoin-cli getinfo | grep version
"version" : 100400,
"protocolversion" : 70003,
"walletversion" : 60000,
nud getinfo | grep version
"version" : "v2.1.1-RC1-beta",
"protocolversion" : 2000000,
"walletversion" : 1,
peerunityd getinfo | grep version
"version" : "v0.2.0",
"protocolversion" : 60006,
"walletversion" : 60000,
</daemons>
<cpuinfo>
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Celeron(R) CPU N3150 @ 1.60GHz
stepping : 3
microcode : 0x34c
cpu MHz : 2165.474
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bugs :
bogomips : 3199.92
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Celeron(R) CPU N3150 @ 1.60GHz
stepping : 3
microcode : 0x34c
cpu MHz : 538.065
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bugs :
bogomips : 3199.92
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Celeron(R) CPU N3150 @ 1.60GHz
stepping : 3
microcode : 0x34c
cpu MHz : 537.805
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bugs :
bogomips : 3199.92
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 76
model name : Intel(R) Celeron(R) CPU N3150 @ 1.60GHz
stepping : 3
microcode : 0x34c
cpu MHz : 760.112
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bugs :
bogomips : 3199.92
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
</cpuinfo>
<openssl speed>
OpenSSL 1.0.2d 9 Jul 2015
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
mdc2 0.00 0.00 0.00 0.00 0.00
md4 30874.55k 96455.81k 238143.57k 376982.87k 456422.74k
md5 21850.36k 69179.67k 170851.75k 268739.58k 323799.72k
hmac(md5) 20203.08k 64765.99k 163406.51k 263462.91k 322800.30k
sha1 23597.31k 65787.88k 140077.57k 195022.34k 219829.59k
rmd160 16504.53k 40561.11k 76020.99k 97589.94k 106255.70k
rc4 137162.86k 233299.29k 291951.02k 313582.25k 320492.89k
des cbc 32183.90k 34414.06k 35138.56k 35319.47k 35343.02k
des ede3 12884.37k 13318.98k 13415.00k 13445.46k 13469.43k
idea cbc 0.00 0.00 0.00 0.00 0.00
seed cbc 40441.59k 43816.06k 44673.37k 44860.42k 44968.62k
rc2 cbc 22819.91k 24181.23k 24527.53k 24603.99k 24616.96k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 59774.85k 67966.14k 70255.27k 70889.47k 71136.60k
cast cbc 55593.77k 62434.62k 65003.09k 65610.41k 65803.61k
aes-128 cbc 33490.70k 37427.31k 38959.18k 102791.85k 104622.76k
aes-192 cbc 28638.42k 31331.46k 32363.78k 86855.34k 88268.80k
aes-256 cbc 24600.37k 26834.88k 27752.11k 75196.76k 76128.26k
camellia-128 cbc 34325.21k 60886.24k 75174.01k 80054.88k 81179.99k
camellia-192 cbc 30249.55k 48666.71k 57977.60k 60938.58k 62116.73k
camellia-256 cbc 30316.05k 48988.02k 57824.77k 61067.95k 61967.02k
sha256 19580.59k 43797.38k 75966.98k 93543.77k 100433.92k
sha512 12346.91k 49256.51k 74737.32k 104489.64k 118084.95k
whirlpool 11353.48k 24669.06k 41644.63k 50266.45k 53600.26k
aes-128 ige 34216.57k 36811.88k 37471.57k 37741.08k 37724.16k
aes-192 ige 29053.92k 30848.70k 31359.66k 31515.99k 31536.47k
aes-256 ige 25130.95k 26457.58k 26944.34k 27139.42k 27118.25k
ghash 235084.51k 462642.28k 630902.10k 697310.44k 717630.12k
sign verify sign/s verify/s
rsa 512 bits 0.000221s 0.000016s 4531.5 62479.4
rsa 1024 bits 0.000753s 0.000047s 1327.9 21118.2
rsa 2048 bits 0.005593s 0.000163s 178.8 6121.1
rsa 4096 bits 0.040648s 0.000616s 24.6 1622.3
sign verify sign/s verify/s
dsa 512 bits 0.000194s 0.000202s 5155.0 4938.3
dsa 1024 bits 0.000505s 0.000588s 1978.7 1701.9
dsa 2048 bits 0.001691s 0.002067s 591.4 483.8
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0002s 0.0007s 4841.9 1369.7
192 bit ecdsa (nistp192) 0.0002s 0.0009s 4170.8 1087.5
224 bit ecdsa (nistp224) 0.0003s 0.0007s 3054.2 1366.3
256 bit ecdsa (nistp256) 0.0002s 0.0005s 5146.7 2162.4
384 bit ecdsa (nistp384) 0.0008s 0.0034s 1195.6 294.9
521 bit ecdsa (nistp521) 0.0019s 0.0033s 529.2 303.5
163 bit ecdsa (nistk163) 0.0005s 0.0015s 1994.6 655.6
233 bit ecdsa (nistk233) 0.0010s 0.0020s 989.2 509.2
283 bit ecdsa (nistk283) 0.0016s 0.0037s 631.3 270.7
409 bit ecdsa (nistk409) 0.0037s 0.0063s 271.8 158.4
571 bit ecdsa (nistk571) 0.0081s 0.0145s 122.8 68.9
163 bit ecdsa (nistb163) 0.0005s 0.0016s 1989.5 627.5
233 bit ecdsa (nistb233) 0.0010s 0.0020s 998.6 489.9
283 bit ecdsa (nistb283) 0.0016s 0.0039s 633.4 254.8
409 bit ecdsa (nistb409) 0.0037s 0.0068s 270.4 147.6
571 bit ecdsa (nistb571) 0.0081s 0.0157s 123.0 63.8
op op/s
160 bit ecdh (secp160r1) 0.0006s 1646.7
192 bit ecdh (nistp192) 0.0007s 1358.6
224 bit ecdh (nistp224) 0.0005s 1891.1
256 bit ecdh (nistp256) 0.0003s 3038.1
384 bit ecdh (nistp384) 0.0028s 355.6
521 bit ecdh (nistp521) 0.0024s 415.7
163 bit ecdh (nistk163) 0.0007s 1357.8
233 bit ecdh (nistk233) 0.0009s 1061.4
283 bit ecdh (nistk283) 0.0018s 556.5
409 bit ecdh (nistk409) 0.0031s 324.6
571 bit ecdh (nistk571) 0.0070s 143.2
163 bit ecdh (nistb163) 0.0008s 1297.8
233 bit ecdh (nistb233) 0.0010s 1021.9
283 bit ecdh (nistb283) 0.0019s 522.1
409 bit ecdh (nistb409) 0.0033s 303.4
571 bit ecdh (nistb571) 0.0076s 130.9
</openssl speed>
If you want to have additional information, please ask.
So far Iām confident that this Beebox has sufficient power to host a lot of blockchains for the signing, although the N3150 is at the very low end of x86 computing power.
Gladly not much computing is necessary for that.
Itās a quite cheap device, running below 10 Watts at average, requiring only a dirt-cheap UPS.
Regarding purchase costs - the numbers are just ballpark figures and depend on where you buy:
Beebox $150 (barebone incl. power supply)
RAM $70 (careful - not all modules work; follow the ASRock specification)
SSD $40
HDD $40
For $300 you get a device, which is not significantly more expensive than running each blockchain on a dedicated RaspberryPi or equivalent plus maintenance is much easier. The benefit of an army of RaPis would be an improved resiliency against hardware defects - with one spare RaPi you could replace any failed RaPi (if you have an image of the SD card this could be done quite fast - but how to create an image without downtime? ).
I will try KVM next to split the blockchains into separate VMs.
My ultimate goal is to have a second Beebox and run the VMs as high availability cluster.
With a UPS and a redundant internet access, this should do as reliable signing environment.
The second Beebox has to wait until I know the requirements for becoming a signer.
If I canāt provide enough collateral this Beebox will make an excellent media centre (remote contol included in the Beebox package )
Iāll keep you updated.
The Beebox seems like a very nice device ā
The Beebox is indeed a nice piece of hardware.
The N3150 version (which I have) has active cooling, but the fan is very silent. The N3000 Beebox is passively cooled and should do as well (is 10 to 15 bucks cheaper than the N3150 and has only 2 cores).
What I especially liked is the support for up to 16 GB RAM (2 SO-DIMM slots), the support for 1.35 V and 1.5 V RAM modules and having a SATA and a mSATA connector.
- You can never have too much RAM.
- With support for 1.5 V modules you can operate it with old modules as well as new ones and donāt have to care.
- Using a small mSATA SDD for the operating system and a SATA (2.5") HDD for the data is a split I like.
I have no use for the 3 display connectors - which are nice if you intend to make an office computer out of it.
If you like to play with that type of gadgets, you will love the Beebox!
Very much look forward to how it will go on your side with the beebox
Yah, I wish I had more time.
Thereās so much to do and to test.
E.g. encryption for the drive with the blockchain application folders should be no big deal with dm-crypt/cryptsetup, because that little Intel CPU has not much computing power, but support for AES-NI, which should result in sufficient I/O speed without much CPU load.
Of course that needs to be tested.
Even thinking of making the Beebox a host for VMs via KVM and using disk encryption might seem strange.
But the combination of hardware features (VT-x, AES-NI, up to 16 GB RAM) call for testing this!