Code Monkey home page Code Monkey logo

sloth256-189's Introduction

sloth256-189

Encoder/decoder for the Subspace Network Blockchain based on the SLOTH permutation

CI Crates.io Docs

This is an adaptation of SLOTH (slow-timed hash function) into a time-asymmetric permutation using a standard CBC block cipher.

This library consists of 2 major implementations:

  • CPU
  • OpenCL (requires opencl feature to be enabled)

WebAssembly (no_std) is also supported, but llvm-ar command needs to be available for build.rs to succeed in that case.

CPU

CPU Implementation contains 3 flavors:

  • optimized assembly-assisted implementation for x86-64 processors with ADX ISA extension (Linux, macOS and Windows)
  • any 64-bt platform with support for __int128 C type (modern GCC/Clang, but not MSVC)
  • fallback for other platforms

For more details, README.md under src/cpu can be referred.

OpenCL

OpenCL is a universal implementation that supports AMD (ROCm), Nvidia (CUDA) and Intel GPUs, including support for multiple GPU vendors on the same machine at the same time.

Details of the OpenCL implementation can be found in mod.rs under src/opencl.

How to test

Simply run cargo test at the root folder

  • use cargo test --features=opencl for enabling opencl tests (openCL drivers must be installed on your device)

How to benchmark

Simply run cargo bench at the root folder

  • use cargo bench --features=opencl for enabling opencl tests (openCL drivers must be installed on your device)

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in cc-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

sloth256-189's People

Contributors

dot-asm avatar hellosupranational avatar i1i1 avatar nazar-pc avatar ozgunozerk avatar simonatsn avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

sloth256-189's Issues

Windows Farmer Errors in log gemini-1b-2022-jun-18

At clean start on Windows mashine.

PS E:\bin> .\subspace-farmer-windows-x86_64-gemini-1b-2022-jun-18.exe --base-path E:\bin\subspace-farmer farm --reward-address st78r4V4hqLAfQVxtBD8yeKEPzMrj9STrR9xrJ7ZT7BfjDfhn --plot-size 500G --node-rpc-url ws://176.105.112.73:30335
←[2m2022-06-18T11:27:46.521424Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::commands::farm←[0m←[2m:←[0m Connecting to node at ws://176.105.112.73:30335
←[2m2022-06-18T11:27:46.543283Z←[0m ←[32m INFO←[0m ←[2mjsonrpsee_client_transport::ws←[0m←[2m:←[0m Connection established to target: Target { sockaddrs: [], host: "176.105.112.73", host_header: "176.105.112.73:30335", _mode: Plain, path_and_query: "/" }
←[2m2022-06-18T11:27:46.567081Z←[0m ←[32m INFO←[0m ←[2mjsonrpsee_client_transport::ws←[0m←[2m:←[0m Connection established to target: Target { sockaddrs: [], host: "176.105.112.73", host_header: "176.105.112.73:30335", _mode: Plain, path_and_query: "/" }
←[2m2022-06-18T11:27:46.593469Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::commands::farm←[0m←[2m:←[0m Opening object mapping
←[2m2022-06-18T11:27:46.651794Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening plot
←[2m2022-06-18T11:27:46.651876Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening plot
←[2m2022-06-18T11:27:46.652515Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening plot
←[2m2022-06-18T11:27:46.652645Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening plot
←[2m2022-06-18T11:27:46.709587Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening commitments
←[2m2022-06-18T11:27:46.709620Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening commitments
←[2m2022-06-18T11:27:46.709666Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening commitments
←[2m2022-06-18T11:27:46.709962Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::multi_farming←[0m←[2m:←[0m Opening commitments
←[2m2022-06-18T11:27:46.833594Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::farming←[0m←[2m:←[0m Subscribing to slot info notifications
←[2m2022-06-18T11:27:46.857839Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::farming←[0m←[2m:←[0m Subscribing to slot info notifications
←[2m2022-06-18T11:27:46.859758Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::farming←[0m←[2m:←[0m Subscribing to slot info notifications
←[2m2022-06-18T11:27:46.859847Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::farming←[0m←[2m:←[0m Subscribing to slot info notifications

Error while building OpenCL program:
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:153:5: error: implicit declaration of function '__asm__' is invalid in C99
    __asm__("v_mul_lo_u32 %0, %1, %2"
    ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:154:18: error: expected ')'
                 : "=v"(z.w[0]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:153:12: note: to match this '('
    __asm__("v_mul_lo_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:156:18: error: expected ')'
                 : "=v"(z.w[1]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:155:12: note: to match this '('
    __asm__("v_mul_hi_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:160:12: error: overloaded function 'mad' must have the 'overloadable' attribute
inline u64 mad(u64 z, u32 x, u32 y)
           ^
c:\constructicon\builds\gfx\seven\20.10\stream\opencl\compiler\clc2\ocl-headers\build\wNow64a\B_rel\opencl12_builtins.h:11680:49: note: previous overload of function is here
half16 const_func __attribute__((overloadable)) mad(half16 a, half16 b, half16 c);
                                                ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:165:18: error: expected ')'
                 : "+v" (z), "=s" (junk) : "v" (x), "v" (y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:164:12: note: to match this '('
    __asm__("v_mad_u64_u32 %0, %1, %2, %3, %0"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T0.cl:520:21: warning: initializing '__global uchar *' (aka '__global unsigned char *') with an expression of type 'const __global uchar *' (aka 'const __global unsigned char *') discards qualifiers
    __global uchar* iv = _iv + x * 32;
                    ^    ~~~~~~~~~~~~
1 warning and 5 errors generated.

error: Clang front-end compilation failed!
Frontend phase failed compilation.
Error: Compiling CL to IR


Error while building OpenCL program:
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:153:5: error: implicit declaration of function '__asm__' is invalid in C99
    __asm__("v_mul_lo_u32 %0, %1, %2"
    ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:154:18: error: expected ')'
                 : "=v"(z.w[0]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:153:12: note: to match this '('
    __asm__("v_mul_lo_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:156:18: error: expected ')'
                 : "=v"(z.w[1]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:155:12: note: to match this '('
    __asm__("v_mul_hi_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:160:12: error: overloaded function 'mad' must have the 'overloadable' attribute
inline u64 mad(u64 z, u32 x, u32 y)
           ^
c:\constructicon\builds\gfx\seven\20.10\stream\opencl\compiler\clc2\ocl-headers\build\wNow64a\B_rel\opencl12_builtins.h:11680:49: note: previous overload of function is here
half16 const_func __attribute__((overloadable)) mad(half16 a, half16 b, half16 c);
                                                ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:165:18: error: expected ')'
                 : "+v" (z), "=s" (junk) : "v" (x), "v" (y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:164:12: note: to match this '('
    __asm__("v_mad_u64_u32 %0, %1, %2, %3, %0"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T1.cl:520:21: warning: initializing '__global uchar *' (aka '__global unsigned char *') with an expression of type 'const __global uchar *' (aka 'const __global unsigned char *') discards qualifiers
    __global uchar* iv = _iv + x * 32;
                    ^    ~~~~~~~~~~~~
1 warning and 5 errors generated.

error: Clang front-end compilation failed!
Frontend phase failed compilation.
Error: Compiling CL to IR


Error while building OpenCL program:
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:153:5: error: implicit declaration of function '__asm__' is invalid in C99
    __asm__("v_mul_lo_u32 %0, %1, %2"
    ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:154:18: error: expected ')'
                 : "=v"(z.w[0]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:153:12: note: to match this '('
    __asm__("v_mul_lo_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:156:18: error: expected ')'
                 : "=v"(z.w[1]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:155:12: note: to match this '('
    __asm__("v_mul_hi_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:160:12: error: overloaded function 'mad' must have the 'overloadable' attribute
inline u64 mad(u64 z, u32 x, u32 y)
           ^
c:\constructicon\builds\gfx\seven\20.10\stream\opencl\compiler\clc2\ocl-headers\build\wNow64a\B_rel\opencl12_builtins.h:11680:49: note: previous overload of function is here
half16 const_func __attribute__((overloadable)) mad(half16 a, half16 b, half16 c);
                                                ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:165:18: error: expected ')'
                 : "+v" (z), "=s" (junk) : "v" (x), "v" (y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:164:12: note: to match this '('
    __asm__("v_mad_u64_u32 %0, %1, %2, %3, %0"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T2.cl:520:21: warning: initializing '__global uchar *' (aka '__global unsigned char *') with an expression of type 'const __global uchar *' (aka 'const __global unsigned char *') discards qualifiers
    __global uchar* iv = _iv + x * 32;
                    ^    ~~~~~~~~~~~~
1 warning and 5 errors generated.

error: Clang front-end compilation failed!
Frontend phase failed compilation.
Error: Compiling CL to IR


Error while building OpenCL program:
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:153:5: error: implicit declaration of function '__asm__' is invalid in C99
    __asm__("v_mul_lo_u32 %0, %1, %2"
    ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:154:18: error: expected ')'
                 : "=v"(z.w[0]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:153:12: note: to match this '('
    __asm__("v_mul_lo_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:156:18: error: expected ')'
                 : "=v"(z.w[1]) : "v"(x), "v"(y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:155:12: note: to match this '('
    __asm__("v_mul_hi_u32 %0, %1, %2"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:160:12: error: overloaded function 'mad' must have the 'overloadable' attribute
inline u64 mad(u64 z, u32 x, u32 y)
           ^
c:\constructicon\builds\gfx\seven\20.10\stream\opencl\compiler\clc2\ocl-headers\build\wNow64a\B_rel\opencl12_builtins.h:11680:49: note: previous overload of function is here
half16 const_func __attribute__((overloadable)) mad(half16 a, half16 b, half16 c);
                                                ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:165:18: error: expected ')'
                 : "+v" (z), "=s" (junk) : "v" (x), "v" (y));
                 ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:164:12: note: to match this '('
    __asm__("v_mad_u64_u32 %0, %1, %2, %3, %0"
           ^
C:\Users\xxxx\AppData\Local\Temp\\OCL16032T3.cl:520:21: warning: initializing '__global uchar *' (aka '__global unsigned char *') with an expression of type 'const __global uchar *' (aka 'const __global unsigned char *') discards qualifiers
    __global uchar* iv = _iv + x * 32;
                    ^    ~~~~~~~~~~~~
1 warning and 5 errors generated.

error: Clang front-end compilation failed!
Frontend phase failed compilation.
Error: Compiling CL to IR

←[2m2022-06-18T11:27:49.417846Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::archiving←[0m←[2m:←[0m Subscribing to archived segments
←[2m2022-06-18T11:27:49.435870Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::commands::farm←[0m←[2m:←[0m WS RPC server listening on 127.0.0.1:9955
←[2m2022-06-18T11:27:52.023345Z←[0m ←[32m INFO←[0m ←[2msubspace_farmer::archiving←[0m←[2m:←[0m Plotted segment ←[3msegment_index←[0m←[2m=←[0m0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.